From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web11.35633.1675061144139410057 for ; Sun, 29 Jan 2023 22:45:44 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=neoTN7x9; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: bob.c.feng@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675061144; x=1706597144; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=RabGevUIWHz3eMt3jj9FniqksfeBVg9Po8Y6kBaDcNE=; b=neoTN7x9MJ3M/ShaZphSTCYY+VG5ZDJohNFKYFnL+QgTKzxEDChx8COt MT3UIK+uOXD0ObfzYoOx+3hnv72//zM43wz6J6JFCgQoemzmqo/VHuSvo KCPVQrNKiojJCAzNPCSzqHb3rjSWtMEkDFzuNeJcAciqpmR3Rrw1Zr+77 Pi7g8pP5UQAB01txoHTHz6KiO5dpTwZW3XA7dDY3pGXoYVlcMgK4FivVn iCko5PT+wJFkB4mc5pDRIbO44emOsd2ciSc8K9+YhxSFsxqhHOsOgF8pW 6THhvJ1nRdDWOgHMLcKhX0o6eHb1EikqFAA+H4/zBGYdAVOzjF9GtIVpf w==; X-IronPort-AV: E=McAfee;i="6500,9779,10605"; a="325184438" X-IronPort-AV: E=Sophos;i="5.97,257,1669104000"; d="scan'208";a="325184438" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jan 2023 22:45:41 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10605"; a="665970084" X-IronPort-AV: E=Sophos;i="5.97,257,1669104000"; d="scan'208";a="665970084" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga007.fm.intel.com with ESMTP; 29 Jan 2023 22:45:41 -0800 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Sun, 29 Jan 2023 22:45:39 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Sun, 29 Jan 2023 22:45:39 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.101) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Sun, 29 Jan 2023 22:45:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QfYSn9SNUnhHMl2eRzXw7YdKg0BBGYeNhB3QmK88xxru+5OgiATkTOh8cngBVvZnNAZ1Bv3MFEjG24JL74mVA/ZxhKEB73jesvUVcAAWxQw1TzXvQmH6EOIblSc99VVsFPOEgRd10rgWHOzD6l+KKnSrVgf+t5a/49+xfUuVjlsUNZV7i9JCZ11Q9+xH5StzajZdwr9I7c8c47IGlBEmYnnnJXBkkE4eP7FevcAdY6rse9+1sHcki9TNpA9r+BevYCt9eiBBWGDOWaVMa3lpESFbsK9l74oSGocaBLRSVnbKI3goplg9vbIzYaTD+RvOdL9PUOiIlyvIIFSFGJwhpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RabGevUIWHz3eMt3jj9FniqksfeBVg9Po8Y6kBaDcNE=; b=LW4/Y6ydY81/O3hlzNRatx7vDyKEqQTNyIp9jQlYwXgUqxjW599EGIVgkrlc2+F6DbKiz4jESacYVIAUe1h8oRfbgkiuybduvbQNY3Cy2I4tl1pAlCzcQKTFo8fURAef84i+MnJLLmrUuW+NZE/pTX/KN6gHJv/ZGdRDUKyfNlSQPylP3t42UZY9IwBTDIvuZd1sNsb3gyLl2hBZThlIQqvfDN0uBaaeQtczfR99LLZEOAou9gQFsPJ4higs6Nb0RUH/DR/MviebY+x9u0VIPrnGoe3xuD9ycMgf+yikJTBoHFnacPy9OGjVelxA0ugwWVI+2vnKyAs9KZ454/m3nw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from PH7PR11MB5863.namprd11.prod.outlook.com (2603:10b6:510:135::11) by PH0PR11MB5594.namprd11.prod.outlook.com (2603:10b6:510:e4::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.30; Mon, 30 Jan 2023 06:45:09 +0000 Received: from PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::1736:fe5c:ecff:e73a]) by PH7PR11MB5863.namprd11.prod.outlook.com ([fe80::1736:fe5c:ecff:e73a%4]) with mapi id 15.20.6043.033; Mon, 30 Jan 2023 06:45:09 +0000 From: "Bob Feng" To: "Chen, Christine" , "devel@edk2.groups.io" CC: "Yang, Yuting2" , "Gao, Liming" Subject: Re: [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Topic: [Patch V2 1/3] [edk2-staging]BaseTools: Add Python VfrCompiler tool Thread-Index: AQHZNHPWDZaogkgMWkuGz5UJ4oHkda62g6Sg Date: Mon, 30 Jan 2023 06:45:08 +0000 Message-ID: References: <20230130062613.980-1-yuwei.chen@intel.com> In-Reply-To: <20230130062613.980-1-yuwei.chen@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB5863:EE_|PH0PR11MB5594:EE_ x-ms-office365-filtering-correlation-id: c927a811-6381-4732-45c5-08db028d874b x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OgZd0NtQavyUgaF010+hpR8efu2KHc9nnpi6dzTI6BbpHPAs8+zPqsb1Q0+ZDWM7JdVx45yCC70DIG0w3ja+fzbQdudkOY7Tumvs2aiskqnHoMxY+l1tpKliT6z9EE23/YGYboA1sPY/xA8lCjmUtgiGgfPsgbvY5+39qrqviwyL3jlHvGC685E7svZhUJ8VQ8S+3qRR6cmBvoVbTkEJw1yBmPCrN591txbEqSaezTQLpTOOjRLEj+VXK2ej6skg4K6wWL8SM7M/WHBaeZZYaivWBsXmpV4iQ3JbpJw+nt6y/ErMHl3ncBm8RJeuq+sOKLSQFvd1/BvCQMR3xgRSkGaa6uhCPbjkrKSZjV+/j7LZczGFF4tV2VoY1uoHLNvmd1cqkGaOrFNbNeTPrpzcylKMGw0P7d8DbAQEnvAt8sm2jE6i/M0EDQaJKd82NAfb0JXmqG5yEHNCYfykxCgwTi04luIqE9wd+/1oEY/JyEX3Rjiq88cNy4OidBivOPUgjC+rR4NcIVIAOSBCL5wAa8y7s3Ja35+UUSgZOqg8ff3iTpY0HitoGQ9TFOhjbaxlMxLE+rmjSN5WH5WgJDaIoIFIMv4LpuSGnMx6XqiEmbpYdioikyeV6xqL7R/OWGYe4/QQbNtDjnxCoObqJdPF14JpLMn5EQO+Nzs3BBmZHGedIQlzZ5c9SjtrXQOEoN9G1tzasbIT15enoTqihJ2xAo4xCAIi9W7yssa12U1NCCg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5863.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199018)(2906002)(83380400001)(7696005)(71200400001)(478600001)(38070700005)(26005)(9686003)(82960400001)(110136005)(966005)(122000001)(53546011)(6506007)(66446008)(4326008)(64756008)(66556008)(66476007)(41300700001)(8676002)(66946007)(76116006)(38100700002)(52536014)(33656002)(30864003)(5660300002)(8936002)(186003)(86362001)(19627235002)(316002)(55016003)(54906003)(66899018)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b2dKb1cwdjNtNUR5ODhvd2ZJMExNcW9sQWdqVzJ1UVZkWVlMRmZ4b3kwcXpS?= =?utf-8?B?WExjYmZETXFDbUxtRnd0SmkrZmlCalhoclo4TWtMTFd1MGJDbmthb0prUkRr?= =?utf-8?B?cTM4VVFheGRlR25BYnZvT0ZNYjFIYzRSdnNHUmFEejg1dlB3SDVNT1ZGTDBp?= =?utf-8?B?M0UzMGpDU1pBQ1V5a2FzdUJLL1NyQXk5Y2lSWE0yWVFVbDdnMkdOSWF2VVNE?= =?utf-8?B?U0RnMWZaUFVxOTVUdkxIUmk2NGp4VVRqM2dJek1aQUZ0cGFrbEljYWVNNXo4?= =?utf-8?B?Z2VVMmF4MlV6bUZqdVdHZndkOFpmbXRlYUJjb3UvOWxFTjlNa2tmQ3FsVkl4?= =?utf-8?B?eWZjbzZhNlZHMnVtV0lDT3QrZHFHcXlLa1g2bXpibXRmL3RHZmV4ZnhlWWpp?= =?utf-8?B?MW9lV0NpQ2JRSHhDNUVBck1rODcwS05qbjlSNWJkc0V1M0Z3cVZ4Sm05ZlYy?= =?utf-8?B?dmk2T0dpRnRiTldKS0ZUVmUyQUNDcWUvdlRWZGZzcFBRd2Fyd29xemhHNmRi?= =?utf-8?B?UUpaV1JlNUtock5vOFU0OGptY0ZZUkFsZ2NGajdVSGdsTzJ0OHQ5b3Foak1p?= =?utf-8?B?Nm5lMkRrOTJ5a2E5ZVBDL2RWdzFmQkN1YW9jL1VvQzN6eWFZanRTRmF3cldj?= =?utf-8?B?T1pMZnA4SmEvSFpVSFYrK2tEQU1HNDRPa2NiMElYRU13QjlESnNJUXN2aFdV?= =?utf-8?B?aDFIMk54MXZya0Y2QTdnaVA3eDJxbmVsUlVLOFo2cXkrQ1Y1UUxiUjlNWEJU?= =?utf-8?B?T2N1MFl0YmRaYndrNHR1d3JUbjlwNW14OHgwWXZoNWF5cHB2c0J5UWhITWND?= =?utf-8?B?OVpBVEV1d1k4YXViRG1kajRUcllxTHlPeXBLWU42UGRMbVBVS2czT2FBbFNm?= =?utf-8?B?Yk1hWFhzNTlZT3UyeWZaUnpwTXIwaENKaFg5YkllQmdOQ3lHci9YV1d2cjN6?= =?utf-8?B?NTcrczhuZ3FEOEZHaXlvbFNLbVN4TS9sS3ZnbGRrb0VVdlNkdDJ2MkFyUXlE?= =?utf-8?B?Q1FhdkU4YVo2UmJIUjFnMGp6NDRkN0RVVUc1YTRoam54SDJqb25pdGJKS1Jq?= =?utf-8?B?d2tMcmJjTmYvQjhwMlNseGxkS2FiQUoyRHQxUFBPV3ZNUlNZczFNK2lMY1VO?= =?utf-8?B?cC9OOWRTaEdudUcwTVZnQUI1bHFPNC9hU0RWTkIwSVoxaEY3TVc3b21HT21s?= =?utf-8?B?WWJsMWtHaGFBOWE3VldQNTlaMFkxOUlEMW5lb284ZTVUeVdzaStDQ1c0bDhE?= =?utf-8?B?aVpBOXhaZHI3N1ZWU082QlJwcjJyUUQxdFR4SSt4N2RsUlZhQUVyWXN3MGNS?= =?utf-8?B?a25XVS9QckUvUTcrWGdOTnZRdm4vZjRBQWVrU0luelo0ODlOSERsNWVjK1RU?= =?utf-8?B?dUh4MXROS2FFVFY0ZTNSQThHZEhzVWF6U1hwRmplOG9MVXJvdHFEQTlabU1j?= =?utf-8?B?bXVPUTM3Q28vNUpiOWp0VXVldCtLeTEyNHprY1BpQWxwelozdk5odkxXTm92?= =?utf-8?B?ekVsYnplWkJuVThJRGg0b2s4N1QxVi9Mb1E0WGxKMk1zV0hvUjExQ2JPNU1n?= =?utf-8?B?S2dJbHVvNDRwclJzZW5BUXhjeFViczZLK25NU2o2cGF5ZXZ0R0h6TVFDaSsz?= =?utf-8?B?OXRKcFFlRE1BaUhFYkJEcjJhZEJ4bnlyNUh0VzdYY1IyYXpmaWlQMmJsTjZS?= =?utf-8?B?R0NvVHJHU0p0U3NMa2dOT2p5SXU4WHhJSVNQZ2oyYm5UMVZNSU9tSTJzUWp6?= =?utf-8?B?SjEzdEEwYlphcHZ0MGVoNnY5WlN1M2E4Q1VqTHcweERrQmZJdDJNWXg4S29j?= =?utf-8?B?a0h0eldBakVtazV0YzJqQWNyNDFJR2ZhTXk0dGFuSkxoUnNFTWhoL2N5STRl?= =?utf-8?B?ZUpyWFo1cGRiQmt3Qm5CM3ZvamJzMkJ0VkJmZ20vOEx1RzlGdGhlTG9OaUc5?= =?utf-8?B?a3pKQnFrcXBYSDVUZVlIMjlvSm56aGdCdVJyOXhBZkgxOW1SUXBrNVJqcVdu?= =?utf-8?B?bjh1QmU0MUM1NUljcWI4Yk8wMUIydy9JcUZ0S2IyazRqY0ExeDQvdHpvYTYx?= =?utf-8?B?bkk2UHVnWVRuaDJtekIzQXVhemovdUlNRS9xN3hieFJ1c2RDQlpjd2xwaER0?= =?utf-8?Q?dRXBcIQ+FJXD+B6h2279hmEe5?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5863.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c927a811-6381-4732-45c5-08db028d874b X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2023 06:45:08.5933 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: DtQ59VODC2joafuAkHYLIXkiCyJThVwfsASWk8uIFk5tQoSE5xvMTtwU4kJwJx8bX404wbI45wMYxwArICs38w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5594 Return-Path: bob.c.feng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEJvYiBGZW5nIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCg0KLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IENoZW4sIENocmlzdGluZSA8eXV3ZWkuY2hlbkBpbnRl bC5jb20+IA0KU2VudDogTW9uZGF5LCBKYW51YXJ5IDMwLCAyMDIzIDI6MjYgUE0NClRvOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbw0KQ2M6IFlhbmcsIFl1dGluZzIgPHl1dGluZzIueWFuZ0BpbnRlbC5j b20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2Fv bGltaW5nQGJ5b3NvZnQuY29tLmNuPg0KU3ViamVjdDogW1BhdGNoIFYyIDEvM10gW2VkazItc3Rh Z2luZ11CYXNlVG9vbHM6IEFkZCBQeXRob24gVmZyQ29tcGlsZXIgdG9vbA0KDQpGcm9tOiBZdXRp bmcgWWFuZyA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCg0KVGhpcyBpcyB0aGUgcHl0aG9uIGlt cGxlbWVudGF0aW9uIG9mIHRoZSBDIFZmckNvbXBpbGVyIHRvb2wuDQpDdXJyZW50bHksIHRoaXMg cHl0aG9uIHRvb2wgd2lsbCBnZW5lcmF0ZSB5YW1sL2pzb24gZmlsZXMNCmZvciBiZXR0ZXIgdmFy aWFibGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBwcmVzZW50YXRpb24uDQpJbiBmdXR1cmUsIGl0IHdp bGwgY292ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIEMgdG9vbC4NCg0KQ2M6IEJvYiBGZW5nIDxi b2IuYy5mZW5nQGludGVsLmNvbT4NCkNjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+DQpDYzogWXV3ZWkgQ2hlbiA8eXV3ZWkuY2hlbkBpbnRlbC5jb20+DQpTaWduZWQtb2Zm LWJ5OiBZdXRpbmcgWWFuZyA8eXV0aW5nMi55YW5nQGludGVsLmNvbT4NCi0tLQ0KIEJhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL0NvbW1vbkN0eXBlcy5weSAgICAgfCAgMTM5NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUkVBRE1FLm1kICAg ICAgICAgICB8ICAgIDIwICsNCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9W ZnJFcnJvci5weSAgICAgICAgIHwgICAxNjIgKysrKysrKysNCiBCYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5ICAgICAgIHwgIDI3MzggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysN CiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQgICAgICAg IHwgIDE4ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkgICB8ICAxNzA5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5 bnRheFBhcnNlci5weSAgfCAyMDQ2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQogQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weSB8ICA1MTA2ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVHJlZS5weSAgICAg ICAgICB8ICAgIDg4ICsrKysrDQogQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIv VmZyVXRpbGl0eS5weSAgICAgICB8ICAxOTkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysNCiBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9tYWluLnB5ICAgICAg ICAgICAgIHwgICAgMjcgKysNCiAxMSBmaWxlcyBjaGFuZ2VkLCAzNTU4MiBpbnNlcnRpb25zKCsp DQoNCmRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21t b25DdHlwZXMucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21tb25D dHlwZXMucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi43MzFhZTE1 NjA5DQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21w aWxlci9Db21tb25DdHlwZXMucHkNCkBAIC0wLDAgKzEsMTM5NCBAQA0KK2Zyb20gY3R5cGVzIGlt cG9ydCAqDQoNCitmcm9tIHJlIGltcG9ydCBBLCBYDQoNCitmcm9tIHRlbG5ldGxpYiBpbXBvcnQg WDNQQUQNCg0KK2Zyb20gdGtpbnRlciBpbXBvcnQgWVZpZXcNCg0KK2ltcG9ydCB1dWlkDQoNCitm cm9tIFZmckNvbXBpbGVyLlZmckVycm9yIGltcG9ydCAqDQoNCitmcm9tIHN0cnVjdCBpbXBvcnQg Kg0KDQorDQoNCitFRklfU1RSSU5HX0lEX0lOVkFMSUQgPSAweDANCg0KK0VGSV9ISUlfREVGQVVM VF9DTEFTU19TVEFOREFSRCA9IDB4MDAwMA0KDQorRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVG QUNUVVJJTkcgPSAweDAwMDENCg0KK0VGSV9JRlJfTUFYX0xFTkdUSCA9IDB4RkYNCg0KK0VGSV9W QVJTVE9SRV9JRF9JTlZBTElEID0gMA0KDQorRUZJX1ZBUlNUT1JFX0lEX1NUQVJUID0gMHgyMA0K DQorRUZJX1ZBUk9GRlNFVF9JTlZBTElEID0gMHhGRkZGDQoNCitFRklfSU1BR0VfSURfSU5WQUxJ RCA9IDB4RkZGRg0KDQorDQoNCitFRklfTk9OX0RFVklDRV9DTEFTUyA9IDB4MDANCg0KK0VGSV9E SVNLX0RFVklDRV9DTEFTUyA9IDB4MDENCg0KK0VGSV9WSURFT19ERVZJQ0VfQ0xBU1MgPSAweDAy DQoNCitFRklfTkVUV09SS19ERVZJQ0VfQ0xBU1MgPSAweDA0DQoNCitFRklfSU5QVVRfREVWSUNF X0NMQVNTID0gMHgwOA0KDQorRUZJX09OX0JPQVJEX0RFVklDRV9DTEFTUyA9IDB4MTANCg0KK0VG SV9PVEhFUl9ERVZJQ0VfQ0xBU1MgPSAweDIwDQoNCisNCg0KK0VGSV9TRVRVUF9BUFBMSUNBVElP Tl9TVUJDTEFTUyA9IDB4MDANCg0KK0VGSV9HRU5FUkFMX0FQUExJQ0FUSU9OX1NVQkNMQVNTID0g MHgwMQ0KDQorRUZJX0ZST05UX1BBR0VfU1VCQ0xBU1MgPSAweDAyDQoNCitFRklfU0lOR0xFX1VT RV9TVUJDTEFTUyA9IDB4MDMNCg0KKw0KDQorIyBFRklfSElJX1BBQ0tBR0VfVFlQRV94Lg0KDQor DQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9BTEwgPSAweDAwDQoNCitFRklfSElJX1BBQ0tBR0Vf VFlQRV9HVUlEID0gMHgwMQ0KDQorRUZJX0hJSV9QQUNLQUdFX0ZPUk0gPSAweDAyDQoNCitFRklf SElJX1BBQ0tBR0VfS0VZQk9BUkRfTEFZT1VUID0gMHgwMw0KDQorRUZJX0hJSV9QQUNLQUdFX1NU UklOR1MgPSAweDA0DQoNCitFRklfSElJX1BBQ0tBR0VfRk9OVFMgPSAweDA1DQoNCitFRklfSElJ X1BBQ0tBR0VfSU1BR0VTID0gMHgwNg0KDQorRUZJX0hJSV9QQUNLQUdFX1NJTVBMRV9GT05UUyA9 IDB4MDcNCg0KK0VGSV9ISUlfUEFDS0FHRV9ERVZJQ0VfUEFUSCA9IDB4MDgNCg0KK0VGSV9ISUlf UEFDS0FHRV9FTkQgPSAweERGDQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1fQkVHSU4g PSAweEUwDQoNCitFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1fRU5EID0gMHhGRg0KDQorDQoN CitFRklfSUZSX0VYVEVORF9PUF9MQUJFTCA9IDB4MA0KDQorRUZJX0lGUl9FWFRFTkRfT1BfQkFO TkVSID0gMHgxDQoNCitFRklfSUZSX0VYVEVORF9PUF9USU1FT1VUID0gMHgyDQoNCitFRklfSUZS X0VYVEVORF9PUF9DTEFTUyA9IDB4Mw0KDQorRUZJX0lGUl9FWFRFTkRfT1BfU1VCQ0xBU1MgPSAw eDQNCg0KKw0KDQorTUFYX0lGUl9FWFBSRVNTSU9OX0RFUFRIID0gMHg5DQoNCisNCg0KK0lOVkFM SURfQVJSQVlfSU5ERVggPSAweEZGRkZGRkZGDQoNCisNCg0KK0VGSV9JRlJfVFlQRV9OVU1fU0la RV84ID0gMHgwMA0KDQorRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2ID0gMHgwMQ0KDQorRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyID0gMHgwMg0KDQorRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0ID0g MHgwMw0KDQorRUZJX0lGUl9UWVBFX0JPT0xFQU4gPSAweDA0DQoNCitFRklfSUZSX1RZUEVfVElN RSA9IDB4MDUNCg0KK0VGSV9JRlJfVFlQRV9EQVRFID0gMHgwNg0KDQorRUZJX0lGUl9UWVBFX1NU UklORyA9IDB4MDcNCg0KK0VGSV9JRlJfVFlQRV9PVEhFUiA9IDB4MDgNCg0KK0VGSV9JRlJfVFlQ RV9VTkRFRklORUQgPSAweDA5DQoNCitFRklfSUZSX1RZUEVfQUNUSU9OID0gMHgwQQ0KDQorRUZJ X0lGUl9UWVBFX0JVRkZFUiA9IDB4MEINCg0KK0VGSV9JRlJfVFlQRV9SRUYgPSAweDBDDQoNCisN Cg0KKw0KDQorRUZJX0lGUl9GTEFHU19IT1JJWk9OVEFMID0gMHgwMQ0KDQorDQoNCitFRklfSUZS X0ZMQUdfUkVBRF9PTkxZID0gMHgwMQ0KDQorRUZJX0lGUl9GTEFHX0NBTExCQUNLID0gMHgwNA0K DQorRUZJX0lGUl9GTEFHX1JFU0VUX1JFUVVJUkVEID0gMHgxMA0KDQorRUZJX0lGUl9GTEFHX1JF U1RfU1RZTEUgPSAweDIwDQoNCitFRklfSUZSX0ZMQUdfUkVDT05ORUNUX1JFUVVJUkVEID0gMHg0 MA0KDQorRUZJX0lGUl9GTEFHX09QVElPTlNfT05MWSA9IDB4ODANCg0KKw0KDQorRUZJX0lGUl9T VFJJTkdfTVVMVElfTElORSA9IDB4MDENCg0KKw0KDQorRURLSUlfSUZSX0RJU1BMQVlfQklUID0g MHhDMA0KDQorRURLSUlfSUZSX0RJU1BMQVlfSU5UX0RFQ19CSVQgPSAweDAwDQoNCitFREtJSV9J RlJfRElTUExBWV9VSU5UX0RFQ19CSVQgPSAweDQwDQoNCitFREtJSV9JRlJfRElTUExBWV9VSU5U X0hFWF9CSVQgPSAweDgwDQoNCisNCg0KK0VES0lJX0lGUl9OVU1FUklDX1NJWkVfQklUID0gMHgz Rg0KDQorDQoNCitFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgPSAweDEwDQoNCisNCg0KKw0KDQor Y2xhc3MgRUZJX0dVSUQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2Zp ZWxkc18gPSBbDQoNCisgICAgICAgICgnRGF0YTEnLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgn RGF0YTInLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnRGF0YTMnLCBjX3VpbnQxNiksDQoNCisg ICAgICAgICgnRGF0YTQnLCBjX3VieXRlICogOCksDQoNCisgICAgXQ0KDQorDQoNCisgICAgZGVm IGZyb21fbGlzdChzZWxmLCBsaXN0Zm9ybWF0OiBsaXN0KSAtPiBOb25lOg0KDQorICAgICAgICBz ZWxmLkRhdGExID0gbGlzdGZvcm1hdFswXQ0KDQorICAgICAgICBzZWxmLkRhdGEyID0gbGlzdGZv cm1hdFsxXQ0KDQorICAgICAgICBzZWxmLkRhdGEzID0gbGlzdGZvcm1hdFsyXQ0KDQorICAgICAg ICBmb3IgaSBpbiByYW5nZSg4KToNCg0KKyAgICAgICAgICAgIHNlbGYuRGF0YTRbaV0gPSBsaXN0 Zm9ybWF0W2kgKyAzXQ0KDQorDQoNCisgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXJndWlkKSAt PiBib29sOg0KDQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlcmd1aWQsIEVGSV9HVUlE KToNCg0KKyAgICAgICAgICAgIHJldHVybiAnSW5wdXQgaXMgbm90IHRoZSBHVUlEIGluc3RhbmNl IScNCg0KKyAgICAgICAgcnQgPSBGYWxzZQ0KDQorICAgICAgICBpZiBzZWxmLkRhdGExID09IG90 aGVyZ3VpZC5EYXRhMSBhbmQgc2VsZi5EYXRhMiA9PSBvdGhlcmd1aWQuRGF0YTIgYW5kIHNlbGYu RGF0YTMgPT0gb3RoZXJndWlkLkRhdGEzOg0KDQorICAgICAgICAgICAgcnQgPSBUcnVlDQoNCisg ICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToNCg0KKyAgICAgICAgICAgICAgICBydCA9IHJ0 ICYgKHNlbGYuRGF0YTRbaV0gPT0gb3RoZXJndWlkLkRhdGE0W2ldKQ0KDQorICAgICAgICByZXR1 cm4gcnQNCg0KKw0KDQorDQoNCitHdWlkQXJyYXkgPSBjX3VieXRlICogOA0KDQorRUZJX0hJSV9Q TEFURk9STV9TRVRVUF9GT1JNU0VUX0dVSUQgPSBFRklfR1VJRCgNCg0KKyAgICAweDkzMDM5OTcx LCAweDg1NDUsIDB4NGIwNCwNCg0KKyAgICBHdWlkQXJyYXkoMHhiNCwgMHg1ZSwgMHgzMiwgMHhl YiwgMHg4MywgMHgyNiwgMHg0LCAweGUpKQ0KDQorDQoNCitFRklfSUZSX1RJQU5PX0dVSUQgPSBF RklfR1VJRCgNCg0KKyAgICAweGYwYjE3MzUsIDB4ODdhMCwgMHg0MTkzLA0KDQorICAgIEd1aWRB cnJheSgweGIyLCAweDY2LCAweDUzLCAweDhjLCAweDM4LCAweGFmLCAweDQ4LCAweGNlKSkNCg0K Kw0KDQorRURLSUlfSUZSX0JJVF9WQVJTVE9SRV9HVUlEID0gKDB4ODJEREQ2OEIsIDB4OTE2Mywg MHg0MTg3LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgweDlC LCAweDI3LCAweDIwLCAweEE4LCAweEZELCAweDYwLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAweEE3LCAweDFEKSkNCg0KKw0KDQorRUZJX0lGUl9GUkFNRVdP UktfR1VJRCA9ICgweDMxY2E1ZDFhLCAweGQ1MTEsIDB4NDkzMSwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgR3VpZEFycmF5KDB4YjcsIDB4ODIsIDB4YWUsIDB4NmIsIDB4MmIsIDB4MTcs IDB4OGMsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGQ3KSkNCg0K Kw0KDQorY2xhc3MgRUZJX0lGUl9PUF9IRUFERVIoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18g PSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnT3BDb2RlJywgY191Ynl0ZSks DQoNCisgICAgICAgICgnTGVuZ3RoJywgY191Ynl0ZSwgNyksICAjDQoNCisgICAgICAgICgnU2Nv cGUnLCBjX3VieXRlLCAxKSwgICMNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lG Ul9GT1JNX1NFVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRz XyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAg ICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdGb3JtU2V0VGl0bGUnLCBjX3Vp bnQxNiksDQoNCisgICAgICAgICgnSGVscCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdGbGFn cycsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0dVSURf Q0xBU1MoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAo J0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgICAgICgnRXh0ZW5kT3BDb2RlJywgY191Ynl0ZSks DQoNCisgICAgICAgICgnQ2xhc3MnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfR1VJRF9TVUJDTEFTUyhTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdF eHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCg0KKyAgICAgICAgKCdTdWJDbGFzcycsIGNfdWludDE2 KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9ERUZBVUxUU1RPUkUoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0RlZmF1bHRO YW1lJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0RlZmF1bHRJZCcsIGNfdWludDE2KSwNCg0K KyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQVJTVE9SRShTdHJ1Y3R1cmUpOg0K DQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwN Cg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1NpemUn LCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnTmFtZScsIGNfd2NoYXJfcCksDQoNCisgICAgXQ0K DQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVjdHVyZSk6DQoNCisg ICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KDQor ICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnQXR0cmlidXRl cycsIGNfdWludDMyKSwNCg0KKyAgICAgICAgKCdTaXplJywgY191aW50MTYpLA0KDQorICAgICAg ICAoJ05hbWUnLCBjX3djaGFyX3ApLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklf SUZSX0dVSUQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18g PSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAg ICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9I SUlfUEFDS0FHRV9IRUFERVIoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAg X2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnTGVuZ3RoJywgY191aW50MzIsIDI0KSwNCg0KKyAg ICAgICAgKCdUeXBlJywgY191aW50MzIsIDgpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSElJX1NUUklOR19QQUNLQUdFX0hEUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSElJX1BB Q0tBR0VfSEVBREVSKSwNCg0KKyAgICAgICAgKCdIZHJTaXplJywgY191aW50MzIpLA0KDQorICAg ICAgICAoJ1N0cmluZ0luZm9PZmZzZXQnLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgnTGFuZ3Vh Z2VXaW5kb3cnLCBjX3VzaG9ydCAqIDE2KSwNCg0KKyAgICAgICAgKCdMYW5ndWFnZU5hbWUnLCBj X3VpbnQxNiksDQoNCisgICAgICAgICgnTGFuZ3VhZ2UnLCBjX2NoYXIgKiAyKSwNCg0KKyAgICBd DQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKFN0cnVjdHVy ZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywg Y191aW50MTYpLA0KDQorICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfRk9STShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQoNCisgICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAo J0Zvcm1UaXRsZScsIGNfdWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJ X0lGUl9HVUlEX0JBTk5FUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBf ZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRPcENvZGUn LCBjX3VieXRlKSwNCg0KKyAgICAgICAgKCdUaXRsZScsIGNfdWludDE2KSwNCg0KKyAgICAgICAg KCdMaW5lTnVtYmVyJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0FsaWdubWVudCcsIGNfdWJ5 dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0dVSURfVElNRU9VVChT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcs IEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCg0KKyAg ICAgICAgKCdUaW1lT3V0JywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSUZSX0dVSURfTEFCRUwoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KDQorICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQoNCisgICAgICAgICgnRXh0ZW5kT3BD b2RlJywgY191Ynl0ZSksDQoNCisgICAgICAgICgnTnVtYmVyJywgY191aW50MTYpLA0KDQorICAg IF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1JVTEUoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1J1bGVJZCcsIGNfdWJ5dGUpLA0KDQorICAg IF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn UHJvbXB0JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0hlbHAnLCBjX3VpbnQxNiksDQoNCisg ICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1VCVElUTEUoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1N0YXRlbWVudCcsIEVGSV9JRlJf U1RBVEVNRU5UX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0KKyAg ICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9URVhUKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdTdGF0ZW1lbnQnLCBFRklfSUZSX1NUQVRF TUVOVF9IRUFERVIpLA0KDQorICAgICAgICAoJ1RleHRUd28nLCBjX3VpbnQxNiksDQoNCisgICAg XQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfSU1BR0UoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0lkJywgY191aW50MTYpLA0KDQorICAgIF0N Cg0KKw0KDQorDQoNCitjbGFzcyBWYXJTdG9yZUluZm9Ob2RlKFVuaW9uKToNCg0KKyAgICBfcGFj a18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnVmFyTmFtZScsIGNfdWlu dDE2KSwNCg0KKyAgICAgICAgKCdWYXJPZmZzZXQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKFN0cnVjdHVyZSk6DQoNCisg ICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfU1RBVEVNRU5UX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb25JZCcsIGNf dWludDE2KSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQorICAgICAg ICAoJ1ZhclN0b3JlSW5mbycsIFZhclN0b3JlSW5mb05vZGUpLA0KDQorICAgICAgICAoJ0ZsYWdz JywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIHU4Tm9kZShTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdNaW5WYWx1ZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ01heFZhbHVlJywgY191Ynl0ZSks DQoNCisgICAgICAgICgnU3RlcCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyB1MTZOb2RlKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVs ZHNfID0gWw0KDQorICAgICAgICAoJ01pblZhbHVlJywgY191aW50MTYpLA0KDQorICAgICAgICAo J01heFZhbHVlJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1N0ZXAnLCBjX3VpbnQxNiksDQoN CisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIHUzMk5vZGUoU3RydWN0dXJlKToNCg0KKyAgICBf cGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnTWluVmFsdWUnLCBj X3VpbnQzMiksDQoNCisgICAgICAgICgnTWF4VmFsdWUnLCBjX3VpbnQzMiksDQoNCisgICAgICAg ICgnU3RlcCcsIGNfdWludDMyKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgdTY0Tm9k ZShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0K KyAgICAgICAgKCdNaW5WYWx1ZScsIGNfdWludDY0KSwNCg0KKyAgICAgICAgKCdNYXhWYWx1ZScs IGNfdWludDY0KSwNCg0KKyAgICAgICAgKCdTdGVwJywgY191aW50NjQpLA0KDQorICAgIF0NCg0K Kw0KDQorDQoNCitjbGFzcyBNSU5NQVhTVEVQX0RBVEEoVW5pb24pOg0KDQorICAgIF9wYWNrXyA9 IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCd1OCcsIHU4Tm9kZSksDQoNCisg ICAgICAgICgndTE2JywgdTE2Tm9kZSksDQoNCisgICAgICAgICgndTMyJywgdTMyTm9kZSksDQoN CisgICAgICAgICgndTY0JywgdTY0Tm9kZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK0VGSV9J RlJfTlVNRVJJQ19TSVpFID0gMHgwMw0KDQorRUZJX0lGUl9OVU1FUklDX1NJWkVfMSA9IDB4MDAN Cg0KK0VGSV9JRlJfTlVNRVJJQ19TSVpFXzIgPSAweDAxDQoNCitFRklfSUZSX05VTUVSSUNfU0la RV80ID0gMHgwMg0KDQorRUZJX0lGUl9OVU1FUklDX1NJWkVfOCA9IDB4MDMNCg0KKw0KDQorRUZJ X0lGUl9ESVNQTEFZID0gMHgzMA0KDQorRUZJX0lGUl9ESVNQTEFZX0lOVF9ERUMgPSAweDAwDQoN CitFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMgPSAweDEwDQoNCitFRklfSUZSX0RJU1BMQVlfVUlO VF9IRVggPSAweDIwDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfT05FX09GKFN0cnVjdHVyZSk6DQoN CisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJf UVVFU1RJT05fSEVBREVSKSwNCg0KKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0KDQorICAg ICAgICAoJ2RhdGEnLCBNSU5NQVhTVEVQX0RBVEEpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitF RklfSUZSX0NIRUNLQk9YX0RFRkFVTFQgPSAweDAxDQoNCitFRklfSUZSX0NIRUNLQk9YX0RFRkFV TFRfTUZHID0gMHgwMg0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQ0hFQ0tCT1goU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9uJywg RUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSks DQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTlVNRVJJQyhTdHJ1Y3R1cmUp Og0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklf SUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0K KyAgICAgICAgKCdEYXRhJywgTUlOTUFYU1RFUF9EQVRBKSwNCg0KKyAgICBdDQoNCisNCg0KKw0K DQorY2xhc3MgRUZJX0lGUl9QQVNTV09SRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiks DQoNCisgICAgICAgICgnTWluU2l6ZScsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdNYXhTaXpl JywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSElJX1RJTUUo U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSG91cicsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ01pbnV0ZScsIGNfdWJ5dGUp LA0KDQorICAgICAgICAoJ1NlY29uZCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSElJX0RBVEUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnWWVhcicsIGNfdWludDE2KSwNCg0KKyAgICAg ICAgKCdNb250aCcsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ0RheScsIGNfdWJ5dGUpLA0KDQor ICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSElJX1JFRihTdHJ1Y3R1cmUpOg0KDQorICAg IF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdRdWVzdGlvbklk JywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCg0KKyAgICAg ICAgKCdGb3JtU2V0R3VpZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdEZXZpY2VQYXRoJywg Y191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RZUEVfVkFM VUUoVW5pb24pOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCd1OCcsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ3UxNicsIGNfdWludDE2KSwNCg0K KyAgICAgICAgKCd1MzInLCBjX3VpbnQzMiksDQoNCisgICAgICAgICgndTY0JywgY191aW50NjQp LA0KDQorICAgICAgICAoJ2InLCBjX2Jvb2wpLA0KDQorICAgICAgICAoJ3RpbWUnLCBFRklfSElJ X1RJTUUpLA0KDQorICAgICAgICAoJ2RhdGUnLCBFRklfSElJX0RBVEUpLA0KDQorICAgICAgICAo J3N0cmluZycsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdyZWYnLCBFRklfSElJX1JFRiksDQoN CisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfT05FX09GX09QVElPTihTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnT3B0aW9uJywgY191 aW50MTYpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQoNCisgICAgICAgICgnVHlw ZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ1ZhbHVlJywgRUZJX0lGUl9UWVBFX1ZBTFVFKSwN Cg0KKyAgICBdDQoNCisNCg0KK2RlZiBSZWZpbmVfRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKE51bXMp Og0KDQorICAgIGNsYXNzIEVGSV9JRlJfT05FX09GX09QVElPTihTdHJ1Y3R1cmUpOg0KDQorICAg ICAgICBfcGFja18gPSAxDQoNCisgICAgICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICAgICAoJ09wdGlvbics IGNfdWludDE2KSwNCg0KKyAgICAgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0KKyAgICAg ICAgICAgICgnVHlwZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAgICAgKCdWYWx1ZScsIEVGSV9J RlJfVFlQRV9WQUxVRSAqIE51bXMpLA0KDQorICAgICAgICBdDQoNCisgICAgcmV0dXJuIEVGSV9J RlJfT05FX09GX09QVElPTg0KDQorDQoNCisNCg0KK0VGSV9JRlJfT1BUSU9OX0RFRkFVTFQgPSAw eDEwDQoNCitFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRyA9IDB4MjANCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX1NVUFBSRVNTX0lGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9MT0NLRUQoU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX0FDVElPTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAg ICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiks DQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisg ICAgICAgICgnUXVlc3Rpb25Db25maWcnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfUkVGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQor ICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVS KSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCg0K KyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2Ns YXNzIEVGSV9JRlJfUkVGMihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBf ZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAg ICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3Vp bnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUkVGMyhTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBF RklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAgICAgICgnRm9ybUlkJywgY191aW50MTYp LA0KDQorICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnRm9y bVNldElkJywgRUZJX0dVSUQpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZS X1JFRjQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAo J1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAoJ0Zvcm1J ZCcsIGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQor ICAgICAgICAoJ0Zvcm1TZXRJZCcsIEVGSV9HVUlEKSwNCg0KKyAgICAgICAgKCdEZXZpY2VQYXRo JywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1JFRjUo U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1F1ZXN0 aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX1JFU0VUX0JVVFRPTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgICAgICgnU3RhdGVtZW50JywgRUZJX0lGUl9TVEFURU1FTlRfSEVBREVS KSwNCg0KKyAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfTk9fU1VCTUlUX0lGKFN0cnVjdHVyZSk6DQoNCisgICAgX3Bh Y2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdFcnJvcicsIGNfdWludDE2KSwNCg0KKyAgICBd DQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUYoU3RydWN0dXJlKToN Cg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ0Vycm9yJywgY191aW50MTYp LA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0VRX0lEX1ZBTChTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb25JZCcs IGNfdWludDE2KSwNCg0KKyAgICAgICAgKCdWYWx1ZScsIGNfdWludDE2KSwNCg0KKyAgICBdDQoN CisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9FUV9JRF9JRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9w YWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb25JZDEnLCBjX3VpbnQxNiksDQoN CisgICAgICAgICgnUXVlc3Rpb25JZDInLCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCitj bGFzcyBFRklfSUZSX0VRX0lEX1ZBTF9MSVNUKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQorICAgICAg ICAoJ0xpc3RMZW5ndGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnVmFsdWVMaXN0JywgY191 aW50MTYpLCAgIw0KDQorICAgIF0NCg0KKw0KDQorDQoNCitkZWYgUmVmaW5lX0VGSV9JRlJfRVFf SURfVkFMX0xJU1QoTnVtcyk6DQoNCisgICAgY2xhc3MgRUZJX0lGUl9FUV9JRF9WQUxfTElTVChT dHJ1Y3R1cmUpOg0KDQorICAgICAgICBfcGFja18gPSAxDQoNCisgICAgICAgIF9maWVsZHNfID0g Ww0KDQorICAgICAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAg ICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICAgICAoJ0xpc3RM ZW5ndGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICAgICAoJ1ZhbHVlTGlzdCcsIGNfdWludDE2 ICogTnVtcyksICAjDQoNCisgICAgICAgIF0NCg0KKyAgICByZXR1cm4gRUZJX0lGUl9FUV9JRF9W QUxfTElTVA0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQU5EKFN0cnVjdHVyZSk6DQoNCisg ICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lG Ul9PUihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQor DQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTk9UKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9HUkFZX09VVF9J RihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0K KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoN CisNCg0KK2NsYXNzIEVGSV9JRlJfREFURShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiks DQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQor RUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVTUyA9IDB4MDENCg0KK0VGSV9RRl9EQVRFX01PTlRIX1NV UFBSRVNTID0gMHgwMg0KDQorRUZJX1FGX0RBVEVfREFZX1NVUFBSRVNTID0gMHgwNA0KDQorDQoN CitFRklfUUZfREFURV9TVE9SQUdFID0gMHgzMA0KDQorUUZfREFURV9TVE9SQUdFX05PUk1BTCA9 IDB4MDANCg0KK1FGX0RBVEVfU1RPUkFHRV9USU1FID0gMHgxMA0KDQorUUZfREFURV9TVE9SQUdF X1dBS0VVUCA9IDB4MjANCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RJTUUoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJ X0lGUl9RVUVTVElPTl9IRUFERVIpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQoN CisgICAgXQ0KDQorDQoNCisNCg0KK1FGX1RJTUVfSE9VUl9TVVBQUkVTUyA9IDB4MDENCg0KK1FG X1RJTUVfTUlOVVRFX1NVUFBSRVNTID0gMHgwMg0KDQorUUZfVElNRV9TRUNPTkRfU1VQUFJFU1Mg PSAweDA0DQoNCitRRl9USU1FX1NUT1JBR0UgPSAweDMwDQoNCitRRl9USU1FX1NUT1JBR0VfTk9S TUFMID0gMHgwMA0KDQorUUZfVElNRV9TVE9SQUdFX1RJTUUgPSAweDEwDQoNCitRRl9USU1FX1NU T1JBR0VfV0FLRVVQID0gMHgyMA0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1RSSU5HKFN0 cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlv bicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCg0KKyAgICAgICAgKCdNaW5TaXplJywgY191 Ynl0ZSksDQoNCisgICAgICAgICgnTWF4U2l6ZScsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ0Zs YWdzJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfUkVG UkVTSChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgn UmVmcmVzaEludGVydmFsJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNz IEVGSV9JRlJfRElTQUJMRV9JRihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAg ICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiks DQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVE9fTE9XRVIoU3RydWN0dXJl KToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFz cyBFRklfSUZSX1RPX1VQUEVSKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAg IF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NQVAoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklf SUZSX09SREVSRURfTElTVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBf ZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQoNCisgICAg ICAgICgnTWF4Q29udGFpbmVycycsIGNfdWJ5dGUpLA0KDQorICAgICAgICAoJ0ZsYWdzJywgY191 Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK0VGSV9JRlJfVU5JUVVFX1NFVCA9IDB4MDEN Cg0KK0VGSV9JRlJfTk9fRU1QVFlfU0VUID0gMHgwMg0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9J RlJfVkFSU1RPUkVfREVWSUNFKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAg IF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cg0KKyAgICAgICAgKCdEZXZpY2VQYXRoJywgY191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1ZFUlNJT04oU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0VORChTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2Ns YXNzIEVGSV9JRlJfTUFUQ0goU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAg X2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K DQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0dFVChTdHJ1Y3R1cmUpOg0KDQor ICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnVmFyU3RvcmVJZCcsIGNfdWludDE2 KSwNCg0KKyAgICAgICAgKCdWYXJTdG9yZUluZm8nLCBWYXJTdG9yZUluZm9Ob2RlKSwgICMjIyMj IyMjIyMNCg0KKyAgICAgICAgKCdWYXJTdG9yZVR5cGUnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoN CisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9TRVQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18g PSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KDQorICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQoNCisgICAg ICAgICgnVmFyU3RvcmVJbmZvJywgVmFyU3RvcmVJbmZvTm9kZSksICAjIyMjIyMjIyMjDQoNCisg ICAgICAgICgnVmFyU3RvcmVUeXBlJywgY191Ynl0ZSksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfUkVBRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAg ICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiks DQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfV1JJVEUoU3RydWN0dXJlKToN Cg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBF RklfSUZSX0VRVUFMKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVs ZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAg ICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9OT1RfRVFVQUwoU3RydWN0dXJlKToNCg0K KyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklf SUZSX0dSRUFURVJfVEhBTihTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBf ZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoN CisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfR1JFQVRFUl9FUVVBTChTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2Ns YXNzIEVGSV9JRlJfTEVTU19FUVVBTChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTEVTU19USEFOKFN0cnVj dHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAg ICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQor Y2xhc3MgRUZJX0lGUl9CSVRXSVNFX0FORChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfQklUV0lTRV9PUihT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfQklUV0lTRV9OT1QoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18g PSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1NISUZUX0xF RlQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoN CisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0K DQorDQoNCitjbGFzcyBFRklfSUZSX1NISUZUX1JJR0hUKFN0cnVjdHVyZSk6DQoNCisgICAgX3Bh Y2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9BREQo U3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQor DQoNCitjbGFzcyBFRklfSUZSX1NVQlRSQUNUKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0g MQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NVUxUSVBMWShT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisN Cg0KK2NsYXNzIEVGSV9JRlJfRElWSURFKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NT0RVTE8oU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX1JVTEVfUkVGKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQor ICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVS KSwNCg0KKyAgICAgICAgKCdSdWxlSWQnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0KKw0K DQorY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYxKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQorICAg IF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjIoU3RydWN0dXJlKToN Cg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBF RklfSUZSX1FVRVNUSU9OX1JFRjMoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjNfMihT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRGV2aWNl UGF0aCcsIGNfdWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9R VUVTVElPTl9SRUYzXzMoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2Zp ZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQor ICAgICAgICAoJ0RldmljZVBhdGgnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnR3VpZCcsIEVG SV9HVUlEKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9VSU5UOChTdHJ1 Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnVmFsdWUnLCBj X3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9VSU5UMTYoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgICAgICAoJ1ZhbHVlJywg Y191aW50MTYpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1VJTlQzMihT dHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnVmFsdWUn LCBjX3VpbnQzMiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVUlOVDY0 KFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQor ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdWYWx1 ZScsIGNfdWludDY0KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9UUlVF KFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQor ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0K Kw0KDQorY2xhc3MgRUZJX0lGUl9GQUxTRShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDEN Cg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfVE9fVUlOVChTdHJ1 Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfVE9fU1RSSU5HKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0K DQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCg0KKyAgICAgICAgKCdGb3JtYXQnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0K Kw0KDQorY2xhc3MgRUZJX0lGUl9UT19CT09MRUFOKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJf T1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9NSUQoU3Ry dWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSUZSX0ZJTkQoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisg ICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KDQorICAgICAgICAoJ0Zvcm1hdCcsIGNfdWJ5dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfSUZSX1RPS0VOKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQor ICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVS KSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9TVFJJTkdfUkVGMShTdHJ1 Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnU3RyaW5nSWQn LCBjX3VpbnQxNiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1RSSU5H X1JFRjIoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBb DQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0K Kw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0NPTkRJVElPTkFMKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9a RVJPKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0K DQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisN Cg0KKw0KDQorY2xhc3MgRUZJX0lGUl9PTkUoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAx DQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX09ORVMoU3RydWN0 dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitj bGFzcyBFRklfSUZSX1VOREVGSU5FRChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0K KyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfTEVOR1RIKFN0cnVjdHVy ZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xh c3MgRUZJX0lGUl9EVVAoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2Zp ZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQor ICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX1RISVMoU3RydWN0dXJlKToNCg0KKyAg ICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitFRklfSUZSX0ZMQUdT X0ZJUlNUX01BVENISU5HID0gMHgwMA0KDQorRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJ TkcgPSAweDAxDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJfU1BBTihTdHJ1Y3R1cmUpOg0KDQorICAg IF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCg0KKyAg ICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9WQUxVRShTdHJ1Y3R1cmUpOg0KDQorICAg IF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNzIEVGSV9JRlJf REVGQVVMVChTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9 IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAg ICgnRGVmYXVsdElkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ1R5cGUnLCBjX3VieXRlKSwN Cg0KKyAgICAgICAgKCdWYWx1ZScsIEVGSV9JRlJfVFlQRV9WQUxVRSksDQoNCisgICAgXQ0KDQor DQoNCitkZWYgUmVmaW5lX0VGSV9JRlJfREVGQVVMVChOdW1zKToNCg0KKyAgICBjbGFzcyBFRklf SUZSX0RFRkFVTFQoU3RydWN0dXJlKToNCg0KKyAgICAgICAgX3BhY2tfID0gMQ0KDQorICAgICAg ICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFE RVIpLA0KDQorICAgICAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQoNCisgICAgICAg ICAgICAoJ1R5cGUnLCBjX3VieXRlKSwNCg0KKyAgICAgICAgICAgICgnVmFsdWUnLCBFRklfSUZS X1RZUEVfVkFMVUUgKiBOdW1zKSwNCg0KKyAgICAgICAgXQ0KDQorICAgIHJldHVybiBFRklfSUZS X0RFRkFVTFQNCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX0RFRkFVTFRfMihTdHJ1Y3R1cmUp Og0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnRGVmYXVsdElkJywgY191 aW50MTYpLA0KDQorICAgICAgICAoJ1R5cGUnLCBjX3VieXRlKSwNCg0KKyAgICBdDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfRk9STV9NQVAoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoN CisgICAgX2ZpZWxkc18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFE RVIpLA0KDQorICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCg0KKyAgICBdDQoNCisNCg0K K2NsYXNzIEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tf ID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ01ldGhvZFRpdGxlJywgY191 aW50MTYpLA0KDQorICAgICAgICAoJ01ldGhvZElkZW50aWZpZXInLCBFRklfR1VJRCksDQoNCisg ICAgXQ0KDQorDQoNCitjbGFzcyBFRklfSUZSX0NBVEVOQVRFKFN0cnVjdHVyZSk6DQoNCisgICAg X3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9T RUNVUklUWShTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9 IFsNCg0KKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAg ICgnUGVybWlzc2lvbnMnLCBFRklfR1VJRCksDQoNCisgICAgXQ0KDQorDQoNCisNCg0KK2NsYXNz IEVGSV9JRlJfTU9EQUxfVEFHKFN0cnVjdHVyZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAg IF9maWVsZHNfID0gWw0KDQorICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cg0KKyAgICBdDQoNCisNCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9SRUZSRVNIX0lEKFN0cnVjdHVy ZSk6DQoNCisgICAgX3BhY2tfID0gMQ0KDQorICAgIF9maWVsZHNfID0gWw0KDQorICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCg0KKyAgICAgICAgKCdSZWZyZXNoRXZlbnRH cm91cElkJywgRUZJX0dVSUQpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZS X1dBUk5JTkdfSUYoU3RydWN0dXJlKToNCg0KKyAgICBfcGFja18gPSAxDQoNCisgICAgX2ZpZWxk c18gPSBbDQoNCisgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KDQorICAg ICAgICAoJ1dhcm5pbmcnLCBjX3VpbnQxNiksDQoNCisgICAgICAgICgnVGltZU91dCcsIGNfdWJ5 dGUpLA0KDQorICAgIF0NCg0KKw0KDQorDQoNCitjbGFzcyBFRklfSUZSX01BVENIMihTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnU3ludGF4VHlwZScs IEVGSV9HVUlEKSwNCg0KKyAgICBdDQoNCisNCg0KKw0KDQorRUZJX0lGUl9GT1JNX09QID0gMHgw MQ0KDQorRUZJX0lGUl9TVUJUSVRMRV9PUCA9IDB4MDINCg0KK0VGSV9JRlJfVEVYVF9PUCA9IDB4 MDMNCg0KK0VGSV9JRlJfSU1BR0VfT1AgPSAweDA0DQoNCitFRklfSUZSX09ORV9PRl9PUCA9IDB4 MDUNCg0KK0VGSV9JRlJfQ0hFQ0tCT1hfT1AgPSAweDA2DQoNCitFRklfSUZSX05VTUVSSUNfT1Ag PSAweDA3DQoNCitFRklfSUZSX1BBU1NXT1JEX09QID0gMHgwOA0KDQorRUZJX0lGUl9PTkVfT0Zf T1BUSU9OX09QID0gMHgwOQ0KDQorRUZJX0lGUl9TVVBQUkVTU19JRl9PUCA9IDB4MEENCg0KK0VG SV9JRlJfTE9DS0VEX09QID0gMHgwQg0KDQorRUZJX0lGUl9BQ1RJT05fT1AgPSAweDBDDQoNCitF RklfSUZSX1JFU0VUX0JVVFRPTl9PUCA9IDB4MEQNCg0KK0VGSV9JRlJfRk9STV9TRVRfT1AgPSAw eDBFDQoNCitFRklfSUZSX1JFRl9PUCA9IDB4MEYNCg0KK0VGSV9JRlJfTk9fU1VCTUlUX0lGX09Q ID0gMHgxMA0KDQorRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1AgPSAweDExDQoNCitFRklfSUZS X0VRX0lEX1ZBTF9PUCA9IDB4MTINCg0KK0VGSV9JRlJfRVFfSURfSURfT1AgPSAweDEzDQoNCitF RklfSUZSX0VRX0lEX1ZBTF9MSVNUX09QID0gMHgxNA0KDQorRUZJX0lGUl9BTkRfT1AgPSAweDE1 DQoNCitFRklfSUZSX09SX09QID0gMHgxNg0KDQorRUZJX0lGUl9OT1RfT1AgPSAweDE3DQoNCitF RklfSUZSX1JVTEVfT1AgPSAweDE4DQoNCitFRklfSUZSX0dSQVlfT1VUX0lGX09QID0gMHgxOQ0K DQorRUZJX0lGUl9EQVRFX09QID0gMHgxQQ0KDQorRUZJX0lGUl9USU1FX09QID0gMHgxQg0KDQor RUZJX0lGUl9TVFJJTkdfT1AgPSAweDFDDQoNCitFRklfSUZSX1JFRlJFU0hfT1AgPSAweDFEDQoN CitFRklfSUZSX0RJU0FCTEVfSUZfT1AgPSAweDFFDQoNCitFRklfSUZSX1RPX0xPV0VSX09QID0g MHgyMA0KDQorRUZJX0lGUl9UT19VUFBFUl9PUCA9IDB4MjENCg0KK0VGSV9JRlJfTUFQX09QID0g MHgyMg0KDQorRUZJX0lGUl9PUkRFUkVEX0xJU1RfT1AgPSAweDIzDQoNCitFRklfSUZSX1ZBUlNU T1JFX09QID0gMHgyNA0KDQorRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QID0gMHgyNQ0K DQorRUZJX0lGUl9WQVJTVE9SRV9FRklfT1AgPSAweDI2DQoNCitFRklfSUZSX1ZBUlNUT1JFX0RF VklDRV9PUCA9IDB4MjcNCg0KK0VGSV9JRlJfVkVSU0lPTl9PUCA9IDB4MjgNCg0KK0VGSV9JRlJf RU5EX09QID0gMHgyOQ0KDQorRUZJX0lGUl9NQVRDSF9PUCA9IDB4MkENCg0KK0VGSV9JRlJfR0VU X09QID0gMHgyQg0KDQorRUZJX0lGUl9TRVRfT1AgPSAweDJDDQoNCitFRklfSUZSX1JFQURfT1Ag PSAweDJEDQoNCitFRklfSUZSX1dSSVRFX09QID0gMHgyRQ0KDQorRUZJX0lGUl9FUVVBTF9PUCA9 IDB4MkYNCg0KK0VGSV9JRlJfTk9UX0VRVUFMX09QID0gMHgzMA0KDQorRUZJX0lGUl9HUkVBVEVS X1RIQU5fT1AgPSAweDMxDQoNCitFRklfSUZSX0dSRUFURVJfRVFVQUxfT1AgPSAweDMyDQoNCitF RklfSUZSX0xFU1NfVEhBTl9PUCA9IDB4MzMNCg0KK0VGSV9JRlJfTEVTU19FUVVBTF9PUCA9IDB4 MzQNCg0KK0VGSV9JRlJfQklUV0lTRV9BTkRfT1AgPSAweDM1DQoNCitFRklfSUZSX0JJVFdJU0Vf T1JfT1AgPSAweDM2DQoNCitFRklfSUZSX0JJVFdJU0VfTk9UX09QID0gMHgzNw0KDQorRUZJX0lG Ul9TSElGVF9MRUZUX09QID0gMHgzOA0KDQorRUZJX0lGUl9TSElGVF9SSUdIVF9PUCA9IDB4MzkN Cg0KK0VGSV9JRlJfQUREX09QID0gMHgzQQ0KDQorRUZJX0lGUl9TVUJUUkFDVF9PUCA9IDB4M0IN Cg0KK0VGSV9JRlJfTVVMVElQTFlfT1AgPSAweDNDDQoNCitFRklfSUZSX0RJVklERV9PUCA9IDB4 M0QNCg0KK0VGSV9JRlJfTU9EVUxPX09QID0gMHgzRQ0KDQorRUZJX0lGUl9SVUxFX1JFRl9PUCA9 IDB4M0YNCg0KK0VGSV9JRlJfUVVFU1RJT05fUkVGMV9PUCA9IDB4NDANCg0KK0VGSV9JRlJfUVVF U1RJT05fUkVGMl9PUCA9IDB4NDENCg0KK0VGSV9JRlJfVUlOVDhfT1AgPSAweDQyDQoNCitFRklf SUZSX1VJTlQxNl9PUCA9IDB4NDMNCg0KK0VGSV9JRlJfVUlOVDMyX09QID0gMHg0NA0KDQorRUZJ X0lGUl9VSU5UNjRfT1AgPSAweDQ1DQoNCitFRklfSUZSX1RSVUVfT1AgPSAweDQ2DQoNCitFRklf SUZSX0ZBTFNFX09QID0gMHg0Nw0KDQorRUZJX0lGUl9UT19VSU5UX09QID0gMHg0OA0KDQorRUZJ X0lGUl9UT19TVFJJTkdfT1AgPSAweDQ5DQoNCitFRklfSUZSX1RPX0JPT0xFQU5fT1AgPSAweDRB DQoNCitFRklfSUZSX01JRF9PUCA9IDB4NEINCg0KK0VGSV9JRlJfRklORF9PUCA9IDB4NEMNCg0K K0VGSV9JRlJfVE9LRU5fT1AgPSAweDREDQoNCitFRklfSUZSX1NUUklOR19SRUYxX09QID0gMHg0 RQ0KDQorRUZJX0lGUl9TVFJJTkdfUkVGMl9PUCA9IDB4NEYNCg0KK0VGSV9JRlJfQ09ORElUSU9O QUxfT1AgPSAweDUwDQoNCitFRklfSUZSX1FVRVNUSU9OX1JFRjNfT1AgPSAweDUxDQoNCitFRklf SUZSX1pFUk9fT1AgPSAweDUyDQoNCitFRklfSUZSX09ORV9PUCA9IDB4NTMNCg0KK0VGSV9JRlJf T05FU19PUCA9IDB4NTQNCg0KK0VGSV9JRlJfVU5ERUZJTkVEX09QID0gMHg1NQ0KDQorRUZJX0lG Ul9MRU5HVEhfT1AgPSAweDU2DQoNCitFRklfSUZSX0RVUF9PUCA9IDB4NTcNCg0KK0VGSV9JRlJf VEhJU19PUCA9IDB4NTgNCg0KK0VGSV9JRlJfU1BBTl9PUCA9IDB4NTkNCg0KK0VGSV9JRlJfVkFM VUVfT1AgPSAweDVBDQoNCitFRklfSUZSX0RFRkFVTFRfT1AgPSAweDVCDQoNCitFRklfSUZSX0RF RkFVTFRTVE9SRV9PUCA9IDB4NUMNCg0KK0VGSV9JRlJfRk9STV9NQVBfT1AgPSAweDVEDQoNCitF RklfSUZSX0NBVEVOQVRFX09QID0gMHg1RQ0KDQorRUZJX0lGUl9HVUlEX09QID0gMHg1Rg0KDQor RUZJX0lGUl9TRUNVUklUWV9PUCA9IDB4NjANCg0KK0VGSV9JRlJfTU9EQUxfVEFHX09QID0gMHg2 MQ0KDQorRUZJX0lGUl9SRUZSRVNIX0lEX09QID0gMHg2Mg0KDQorRUZJX0lGUl9XQVJOSU5HX0lG X09QID0gMHg2Mw0KDQorRUZJX0lGUl9NQVRDSDJfT1AgPSAweDY0DQoNCisNCg0KK0NvbmRpdGlv bk9wcyA9IFtFRklfSUZSX05PX1NVQk1JVF9JRl9PUCwgRUZJX0lGUl9ESVNBQkxFX0lGX09QLCBF RklfSUZSX1NVUFBSRVNTX0lGX09QLCBFRklfSUZSX0dSQVlfT1VUX0lGX09QLCBFRklfSUZSX0lO Q09OU0lTVEVOVF9JRl9PUF0NCg0KK0Jhc2ljRGF0YVR5cGVzID0gWydVSU5UOCcsICdVSU5UMTYn LCAnVUlOVDMyJywgJ1VJTlQ2NCcsICdFRklfSElJX0RBVEUnLCAnRUZJX0hJSV9USU1FJywgJ0VG SV9ISUlfUkVGJ10NCg0KKw0KDQorY2xhc3MgRUZJX0lGUl9HVUlEX09QVElPTktFWShTdHJ1Y3R1 cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsNCg0KKyAgICAgICAg KCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQoNCisgICAgICAgICgnR3VpZCcsIEVGSV9H VUlEKSwNCg0KKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VpbnQ4KSwNCg0KKyAgICAgICAg KCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ09wdGlvblZhbHVlJywgRUZJ X0lGUl9UWVBFX1ZBTFVFKSwNCg0KKyAgICAgICAgKCdLZXlWYWx1ZScsIGNfdWludDE2KSwNCg0K KyAgICBdDQoNCisNCg0KKw0KDQorRUZJX0lGUl9FWFRFTkRfT1BfT1BUSU9OS0VZID0gMHgwDQoN CitFRklfSUZSX0VYVEVORF9PUF9WQVJFUU5BTUUgPSAweDENCg0KKw0KDQorY2xhc3MgRUZJX0NP TVBBUkVfVFlQRShFbnVtKToNCg0KKyAgICBFUVVBTCA9IDANCg0KKyAgICBMRVNTX0VRVUFMID0g MQ0KDQorICAgIExFU1NfVEhBTiA9IDINCg0KKyAgICBHUkVBVEVSX1RIQU4gPSAzDQoNCisgICAg R1JFQVRFUl9FUVVBTCA9IDQNClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdp dCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZCBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZA0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLmNmNjAwNTgxYzkNCi0tLSAvZGV2L251bGwNCisrKyBi L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1JFQURNRS5tZA0KQEAgLTAsMCAr MSwyMCBAQA0KKyMgUHl0aG9uIFZmckNvbXBpbGVyIFRvb2wNCg0KKyMjIE92ZXJ2aWV3DQoNCitU aGlzIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZWRrMiBWZnJDb21waWxlciB0b29sIHdoaWNoIGxvY2F0ZXMgYXQgaHR0cHM6Ly9naXRodWIuY29t L3RpYW5vY29yZS9lZGsyL3RyZWUvbWFzdGVyL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxl Lg0KDQorDQoNCisjIyMgSW50cm9kdWN0aW9uDQoNCitUaGUgY29yZSBmdW5jdGlvbiBvZiB0aGUg b3JpZ2luYWwgQyBWZnJDb21waWxlciB0b29sIGlzIHRvIGNvbnZlcnQgdGhlIHZmciBmaWxlIGlu dG8gSUZSIGJpbmFyeSBhcnJheS4gSG93ZXZlciwgdGhlIHZmciBmb3JtYXQgZmlsZSBzeW50YXgg aXMgcmVsYXRpdmVseSB1bmNvbW1vbiBhbmQgaGFzIHBvb3IgcmVhZGFiaWxpdHkgZm9yIHVzZXJz LiBXaGF0J3MgbW9yZSwgdGhlIEMgdG9vbCBkb2VzIG5vdCBjb2xsZWN0IGFuZCBzdG9yZSBleHRy YSBpbmZvcm1hdGlvbiBleGNlcHQgZm9yIGJpbmFyeSBnZW5lcmF0aW9uLiBXaGVuIGFueSBtb2Rp ZmljYXRpb24gaXMgbmVlZGVkLCBkZXZlbG9wZXJzIGhhdmUgdG8gcmVhZCBhbmQgZGVhbCB3aXRo IHRoZSBJRlIgYmluYXJ5LCB3aGljaCBpcyBxdWl0ZSBpbmVmZmljaWVudC4gVG8gc29sdmUgdGhp cyBpc3N1ZSwgdGhpcyBweXRob24gVmZyQ29tcGlsZXIgdG9vbCBwcm9wb3NlcyB0byBnZW5lcmF0 ZSB0aGUgeWFtbCBmb3JtYXQgZmlsZSBvbiB0aGUgYmFzaXMgb2YgdGhlIHZmciBmb3JtYXQgZmls ZS4gV2l0aCB0aGUgeWFtbCBmaWxlLCAgdGhlIGxheW91dCBhbmQgaGllcmFyY2h5IG9mIGFsbCBP cGNvZGVzIGluIHRoZSB2ZnIgZmlsZSB3aWxsIGJlIHNhdmVkLiBUaGVuIG1vZGlmaWNhdGlvbiB3 aWxsIGJlIG11Y2ggZWFpc2VyLiBJbiBhZGRpdGlvbiwgYW4gZXh0cmEganNvbiBmaWxlIHdpbGwg YmUgZ2VuZXJhdGVkIGZvciBiZXR0ZXIgdmFyaWFibGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBwcmVz ZW50YXRpb24uIFNvIHRoZSBsb25nLXRlcm0gYWltIG9mIHRoaXMgdG9vbCBpcyB0byBjb3ZlciB0 aGUgc2FtZSB1c2FnZSBhcyB0aGUgZWRrMiBDIFZmckNvbXBpbGVyIGFuZCBleHRlbmQgdGhlIHlh bWwvanNvbiBvdXRwdXQgZm9yIGJldHRlciByZWFkYWJpbGl0eSBhbmQgdmFyaWFiaWxpdHkuDQoN CisNCg0KKyMjIyBNYWluIHVwZGF0ZSBpbiB0aGlzIGNvbW1pdG1lbnQNCg0KKy0gVXBkYXRlIHRo ZSB2ZnIgcGFyc2VyIGdlbmVyYXRvciBmcm9tIEFOVExSIHRvIEFOVExSIHY0LCB3aGljaCBpcyBt b3JlIHJlYWRhYmxlIGFuZCBpcyBlYWlzZXIgdG8gYWRkIG9uIG5ldyBmdW5jdGlvbnMuDQoNCist IEdlbmVyYXRlIGEgeWFtbCBmaWxlIGZvciBlYWNoIHZmciBmaWxlLiBUaGUgeWFtbCBmaWxlIGRp c3BsYXlzIGFsbCB0aGUgY29udGVudHMgaW4gdGhlIFZmciBmaWxlIGJ5IGRpZmZlcmVudCBPcGNv ZGUgdHlwZXMgaW4gc2VxdWVuY2UuDQoNCistIEdlbmVyYXRlIGEganNvbiBmaWxlIGZvciBlYWNo IHZmciBmaWxlLiBUaGUganNvbiBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZGVmYXVsdCB2YWx1ZXMg Zm9yIGRpZmZlcmVudCBPcGNvZGUgdHlwZXMgaW4gdmZyIGZpbGVzLg0KDQorDQoNCisjIyMgS25v d24gaXNzdWVzDQoNCisNCg0KKy0gVGhlIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGFpbXMgdG8g Y292ZXIgdGhlIHNhbWUgdXNhZ2UgYXMgdGhlIGVkazIgQyBWZnJDb21waWxlci4gQnV0IGN1cnJl bnRseSwgdGhlIHB5dGhvbiBWZnJDb21waWxlciB0b29sIGRvZXMgbm90IHN1cHBvcnQgSUZSIGJp bmFyeSBnZW5lcmF0aW9uIGZlYXR1cmUsIHRoaXMgZmVhdHVyZSB3aWxsIGJlIGFkZGVkIGluIGZ1 dHVyZSB1cGRhdGUuDQoNCistIFRoZSBweXRob24gVmZyQ29tcGlsZXIgdG9vbCB3aWxsIGV4dGVu ZCBuZXcgZnVuY3Rpb25zLCB3aGljaCBpcyBhYmxlIHRvIGNvbXBpbGUgYm90aCB0aGUgdmZyIGFu ZCB5YW1sIGZpbGVzLiBUaGlzIGZlYXR1cmUgd2lsbCBiZSBhZGRlZCBpbiBmdXR1cmUgdXBkYXRl Lg0KDQorDQoNCisjIyMgVXNlIHdpdGggQnVpbGQgU3lzdGVtDQoNCistIFRvIHVzZSB0aGUgVmZy Q29tcGlsZXIgUHl0aG9uIFRvb2wgd2l0aCBCdWlsZCBTeXN0ZW0sICBwbGVhc2UgYWRkIHRoZSAq KionLS12ZnIteWFtbC1lbmFibGUnKioqICBvcHRpb24gaW4gdGhlIGJ1aWxkIGNvbW1hbmQuDQoN CistIEZvciBFeGFtcGxlOiAqKipidWlsZCAtcCBPdm1mUGtnXE92bWZQa2dJYTMyWDY0LmRzYyAt YSBJQTMyIC1hIFg2NCAtaiBidWlsZC5sb2cgLS12ZnIteWFtbC1lbmFibGUqKioNClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL1ZmckVycm9yLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvVmZyRXJyb3IucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw Li41M2I5NjBiNGUxDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9WZnJFcnJvci5weQ0KQEAgLTAsMCArMSwxNjIgQEANCitpbXBvcnQgaW1w DQoNCitpbXBvcnQgc3lzDQoNCitpbXBvcnQgb3MNCg0KK2Zyb20gZW51bSBpbXBvcnQgRW51bQ0K DQorZnJvbSBDb21tb24uQnVpbGRUb29sRXJyb3IgaW1wb3J0ICoNCg0KK2ltcG9ydCBDb21tb24u RWRrTG9nZ2VyIGFzIEVka0xvZ2dlcg0KDQorDQoNCisNCg0KK2NsYXNzIFZmclJldHVybkNvZGUo RW51bSk6DQoNCisgICAgVkZSX1JFVFVSTl9TVUNDRVNTID0gMA0KDQorICAgIFZGUl9SRVRVUk5f RVJST1JfU0tJUEVEID0gMQ0KDQorICAgIFZGUl9SRVRVUk5fRkFUQUxfRVJST1IgPSAyDQoNCisg ICAgVkZSX1JFVFVSTl9NSVNNQVRDSEVEID0gMw0KDQorICAgIFZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIgPSA0DQoNCisgICAgVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUyA9IDUNCg0K KyAgICBWRlJfUkVUVVJOX1VOU1VQUE9SVEVEID0gNg0KDQorICAgIFZGUl9SRVRVUk5fUkVERUZJ TkVEID0gNw0KDQorICAgIFZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRCA9IDgNCg0KKyAgICBW RlJfUkVUVVJOX1FVRVNUSU9OSURfUkVERUZJTkVEID0gOQ0KDQorICAgIFZGUl9SRVRVUk5fVkFS U1RPUkVJRF9SRURFRklORUQgPSAxMA0KDQorICAgIFZGUl9SRVRVUk5fVU5ERUZJTkVEID0gMTEN Cg0KKyAgICBWRlJfUkVUVVJOX1ZBUl9OT1RERUZJTkVEX0JZX1FVRVNUSU9OID0gMTINCg0KKyAg ICBWRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUiA9IDEzDQoNCisg ICAgVkZSX1JFVFVSTl9HRVRfRUZJVkFSU1RPUkVfRVJST1IgPSAxNA0KDQorICAgIFZGUl9SRVRV Uk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SID0gMTUNCg0KKyAgICBWRlJfUkVUVVJOX0VGSVZBUlNU T1JFX1NJWkVfRVJST1IgPSAxNg0KDQorICAgIFZGUl9SRVRVUk5fR0VUX05WVkFSU1RPUkVfRVJS T1IgPSAxNw0KDQorICAgIFZGUl9SRVRVUk5fUVZBUl9SRVVTRSA9IDE4DQoNCisgICAgVkZSX1JF VFVSTl9GTEFHU19VTlNVUFBPUlRFRCA9IDE5DQoNCisgICAgVkZSX1JFVFVSTl9FUlJPUl9BUlJB UllfTlVNID0gMjANCg0KKyAgICBWRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SID0gMjENCg0K KyAgICBWRlJfUkVUVVJOX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEID0gMjINCg0KKyAgICBWRlJf UkVUVVJOX0NPTlNUQU5UX09OTFkgPSAyMw0KDQorICAgIFZGUl9SRVRVUk5fVkFSU1RPUkVfTkFN RV9SRURFRklORURfRVJST1IgPSAyNA0KDQorICAgIFZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9S ID0gMjUNCg0KKyAgICBWRlJfUkVUVVJOX1NUUklOR19UT19VSU5UX09WRVJGTE9XID0gMjYNCg0K KyAgICBWRlJfUkVUVVJOX0NPREVVTkRFRklORUQgPSAyNw0KDQorDQoNCisNCg0KK3ZmckVycm9y TWVzc2FnZSA9IHsNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzogJycs DQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRDogJycsDQoNCisg ICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SOiAnZmF0YWwgZXJyb3IhIScs DQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX01JU01BVENIRUQ6ICd1bmV4cGVjdGVk IHRva2VuJywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVI6ICdpbnZhbGlkIHBhcmFtZXRlcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X09VVF9GT1JfUkVTT1VSQ0VTOiAnc3lzdGVtIG91dCBvZiBtZW1vcnknLA0KDQorICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRDogJ3Vuc3VwcG9ydGVkJywNCg0KKyAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEOiAnYWxyZWFkeSBkZWZpbmVkJywNCg0K KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRDogJ2Zvcm0gaWQg YWxyZWFkeSBkZWZpbmVkJywNCg0KKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUVVFU1RJ T05JRF9SRURFRklORUQ6DQoNCisgICAgJ3F1ZXN0aW9uIGlkIGFscmVhZHkgZGVmaW5lZCcsDQoN CisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJTkVEOg0KDQor ICAgICd2YXJzdG9yZSBpZCBhbHJlYWR5IGRlZmluZWQnLA0KDQorICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTkRFRklORUQ6ICd1bmRlZmluZWQnLA0KDQorICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9WQVJfTk9UREVGSU5FRF9CWV9RVUVTVElPTjoNCg0KKyAgICAnc29tZSB2YXJp YWJsZSBoYXMgbm90IGRlZmluZWQgYnkgYSBxdWVzdGlvbicsDQoNCisgICAgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUjoNCg0KKyAgICAn RGF0YSBTdHJ1Y3R1cmUgaXMgZGVmaW5lZCBieSBtb3JlIHRoYW4gb25lIHZhcnN0b3JlczogaXQg Y2FuXCd0IGJlIHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3JlIG5hbWUgY291bGQg YmUgdXNlZC4nLA0KDQorICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9HRVRfRUZJVkFSU1RP UkVfRVJST1I6ICdnZXQgZWZpIHZhcnN0b3JlIGVycm9yJywNCg0KKyAgICBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fRUZJVkFSU1RPUkVfVVNFX0VSUk9SOg0KDQorICAgICdjYW4gbm90IHVzZSB0 aGUgZWZpIHZhcnN0b3JlIGxpa2UgdGhpcycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0VGSVZBUlNUT1JFX1NJWkVfRVJST1I6DQoNCisgICAgJ3Vuc3VwcG9ydCBlZmkgdmFyc3Rv cmUgc2l6ZSBzaG91bGQgYmUgPD0gOCBieXRlcycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0dFVF9OVlZBUlNUT1JFX0VSUk9SOg0KDQorICAgICdnZXQgbmFtZSB2YWx1ZSB2YXJz dG9yZSBlcnJvcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1FWQVJfUkVVU0U6 DQoNCisgICAgJ3ZhcmlhYmxlIHJldXNlZCBieSBtb3JlIHRoYW4gb25lIHF1ZXN0aW9uJywNCg0K KyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQ6ICdmbGFncyB1 bnN1cHBvcnRlZCcsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFS WV9OVU06DQoNCisgICAgJ2FycmF5IG51bWJlciBlcnJvcjogdGhlIHZhbGlkIHZhbHVlIGlzIGlu ICgwIH4gTUFYX0lOREVYLTEgZm9yIFVFRkkgdmZyIGFuZCBpbiAoMSB+IE1BWF9JTkRFWCBmb3Ig RnJhbWV3b3JrIFZmcicsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RBVEFfU1RS SU5HX0VSUk9SOg0KDQorICAgICdkYXRhIGZpZWxkIHN0cmluZyBlcnJvciBvciBub3Qgc3VwcG9y dCcsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RFRkFVTFRfVkFMVUVfUkVERUZJ TkVEOg0KDQorICAgICdkZWZhdWx0IHZhbHVlIHJlLWRlZmluZWQgd2l0aCBkaWZmZXJlbnQgdmFs dWUnLA0KDQorICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9DT05TVEFOVF9PTkxZOg0KDQor ICAgICdvbmx5IGNvbnN0YW50IGlzIGFsbG93ZWQgaW4gdGhlIGV4cHJlc3Npb24nLA0KDQorICAg IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUjoN Cg0KKyAgICAnVmFyc3RvcmUgbmFtZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhhbiBvbmUgdmFyc3Rv cmVzOiBpdCBjYW5cJ3QgYmUgcmVmZXJyZWQgYXMgdmFyc3RvcmU6IG9ubHkgdmFyc3RvcmUgc3Ry dWN0dXJlIG5hbWUgY291bGQgYmUgdXNlZC4nLA0KDQorICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9CSVRfV0lEVEhfRVJST1I6DQoNCisgICAgJ2JpdCB3aWR0aCBtdXN0IGJlIDw9IHNpemVv ZiAodHlwZSAqIDggYW5kIHRoZSBtYXggd2lkdGggY2FuIG5vdCA+IDMyJywNCg0KKyAgICBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1RSSU5HX1RPX1VJTlRfT1ZFUkZMT1c6DQoNCisgICAgJ1N0 cmluZyB0byBVSU5UKiBPdmVyZmxvdycsDQoNCisgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0NPREVVTkRFRklORUQ6ICd1bmRlZmluZWQgRXJyb3IgQ29kZScNCg0KK30NCg0KKw0KDQorDQoN CitjbGFzcyBFRklfVkZSX1dBUk5JTkdfQ09ERShFbnVtKToNCg0KKyAgICBWRlJfV0FSTklOR19E RUZBVUxUX1ZBTFVFX1JFREVGSU5FRCA9IDANCg0KKyAgICBWRlJfV0FSTklOR19BQ1RJT05fV0lU SF9URVhUX1RXTyA9IDENCg0KKyAgICBWRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09Q Q09ERSA9IDINCg0KKyAgICBWRlJfV0FSTklOR19DT0RFVU5ERUZJTkVEID0gMw0KDQorDQoNCisN Cg0KK3Zmcldhcm5pbmdNZXNzYWdlID0gew0KDQorICAgIEVGSV9WRlJfV0FSTklOR19DT0RFLlZG Ul9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEOg0KDQorICAgICI6IGRlZmF1bHQgdmFs dWUgcmUtZGVmaW5lZCB3aXRoIGRpZmZlcmVudCB2YWx1ZSIsDQoNCisgICAgRUZJX1ZGUl9XQVJO SU5HX0NPREUuVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV086DQoNCisgICAgIjogQWN0 aW9uIG9wY29kZSBzaG91bGQgbm90IGhhdmUgVGV4dFR3byBwYXJ0IiwNCg0KKyAgICBFRklfVkZS X1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERToNCg0K KyAgICAiOiBOb3QgcmVjb21tZW5kIHRvIHVzZSBvYnNvbGV0ZWQgZnJhbWV3b3JrIG9wY29kZSIs DQoNCisgICAgRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQ09ERVVOREVGSU5FRDog IjogdW5kZWZpbmVkIFdhcm5pbmcgQ29kZSINCg0KK30NCg0KKw0KDQorDQoNCitjbGFzcyBDVmZy RXJyb3JIYW5kbGUoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAg ICAgc2VsZi5fX0lucHV0RmlsZU5hbWUgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX192ZnJFcnJv ck1lc3NhZ2UgPSB2ZnJFcnJvck1lc3NhZ2UNCg0KKyAgICAgICAgc2VsZi5fX3Zmcldhcm5pbmdN ZXNzYWdlID0gdmZyV2FybmluZ01lc3NhZ2UNCg0KKyAgICAgICAgc2VsZi5fX1dhcm5pbmdBc0Vy cm9yID0gRmFsc2UNCg0KKw0KDQorICAgIGRlZiBTZXRXYXJuaW5nQXNFcnJvcihzZWxmLCBXYXJu aW5nQXNFcnJvcik6DQoNCisgICAgICAgIHNlbGYuX19XYXJuaW5nQXNFcnJvciA9IFdhcm5pbmdB c0Vycm9yDQoNCisNCg0KKyAgICBkZWYgU2V0SW5wdXRGaWxlKHNlbGYsIElucHV0RmlsZSk6DQoN CisgICAgICAgIHNlbGYuX19JbnB1dEZpbGVOYW1lID0gSW5wdXRGaWxlDQoNCisNCg0KKyAgICBk ZWYgSGFuZGxlV2FybmluZyhzZWxmLCBXYXJuaW5nQ29kZSwgTGluZU51bSwgVG9rZW5WYWx1ZT1O b25lKToNCg0KKyAgICAgICAgaWYgc2VsZi5fX3Zmcldhcm5pbmdNZXNzYWdlID09IE5vbmU6DQoN CisgICAgICAgICAgICByZXR1cm4gMQ0KDQorICAgICAgICBXYXJuaW5nTXNnID0gJycNCg0KKyAg ICAgICAgZm9yIGtleSBpbiBzZWxmLl9fdmZyV2FybmluZ01lc3NhZ2Uua2V5cygpOg0KDQorICAg ICAgICAgICAgaWYgV2FybmluZ0NvZGUgPT0gc2VsZi5fX3Zmcldhcm5pbmdNZXNzYWdlW2tleV06 DQoNCisgICAgICAgICAgICAgICAgV2FybmluZ01zZyA9IHNlbGYuX192ZnJXYXJuaW5nTWVzc2Fn ZVtrZXldDQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0KKyAgICAgICAgaWYgV2FybmluZ01z ZyAhPSAnJzoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19XYXJuaW5nQXNFcnJvcjoNCg0KKyAg ICAgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoJ1ZmckNvbXBpbGVyJywgV2FybmluZ0NvZGUs IFdhcm5pbmdNc2csDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19J bnB1dEZpbGVOYW1lLCBMaW5lTnVtLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAid2FybmluZyB0cmVhdGVkIGFzIGVycm9yIikNCg0KKyAgICAgICAgICAgIEVka0xvZ2dlci53 YXJuKCdWZnJDb21waWxlcicsIFdhcm5pbmdNc2csIHNlbGYuX19JbnB1dEZpbGVOYW1lLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZU51bSwgVG9rZW5WYWx1ZSkNCg0KKw0KDQor ICAgIGRlZiBQcmludE1zZyhzZWxmLA0KDQorICAgICAgICAgICAgICAgICBMaW5lTnVtLA0KDQor ICAgICAgICAgICAgICAgICBNc2dUeXBlPSdFcnJvcicsDQoNCisgICAgICAgICAgICAgICAgIEVy cm9yTXNnPU5vbmUsDQoNCisgICAgICAgICAgICAgICAgIFRva2VuVmFsdWU9Tm9uZSk6DQoNCisg ICAgICAgIGlmIE1zZ1R5cGUgPT0gJ1dhcm5pbmcnOg0KDQorICAgICAgICAgICAgRWRrTG9nZ2Vy LnZlcmJvc2UoRXJyb3JNc2cpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBFZGtM b2dnZXIuZXJyb3IoJ1ZmckNvbXBpbGVyJywgMHgzMDAwLCBFcnJvck1zZywNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSW5wdXRGaWxlTmFtZSwgTGluZU51bSwgVG9rZW5W YWx1ZSkNCg0KKw0KDQorICAgIGRlZiBIYW5kbGVFcnJvcihzZWxmLCBFcnJvckNvZGUsIExpbmVO dW09Tm9uZSwgVG9rZW5WYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgaWYgc2VsZi5fX3ZmckVycm9y TWVzc2FnZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIDENCg0KKyAgICAgICAgRXJy b3JNc2cgPSAnJw0KDQorICAgICAgICBmb3Iga2V5IGluIHNlbGYuX192ZnJFcnJvck1lc3NhZ2Uu a2V5cygpOg0KDQorICAgICAgICAgICAgaWYgRXJyb3JDb2RlID09IHNlbGYuX192ZnJFcnJvck1l c3NhZ2Vba2V5XToNCg0KKyAgICAgICAgICAgICAgICBFcnJvck1zZyA9IHNlbGYuX192ZnJFcnJv ck1lc3NhZ2Vba2V5XQ0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAgICAgIGlmIEVy cm9yTXNnICE9ICcnOg0KDQorICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdWZnJDb21waWxl cicsIEVycm9yQ29kZSwgRXJyb3JNc2csDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5fX0lucHV0RmlsZU5hbWUsIExpbmVOdW0sIFRva2VuVmFsdWUpDQoNCisgICAgICAgICAg ICByZXR1cm4gMQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIDANCg0K Kw0KDQorDQoNCitnQ1ZmckVycm9ySGFuZGxlID0gQ1ZmckVycm9ySGFuZGxlKCkNClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9u L1ZmckNvbXBpbGVyL1ZmckZvcm1Qa2cucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9WZnJGb3JtUGtnLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMC4uZWZhODEyOWQ5MA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vVmZyQ29tcGlsZXIvVmZyRm9ybVBrZy5weQ0KQEAgLTAsMCArMSwyNzM4IEBADQorZnJv bSBhc3QgaW1wb3J0IEZvcg0KDQorZnJvbSByZSBpbXBvcnQgTA0KDQorZnJvbSBzcmVfcGFyc2Ug aW1wb3J0IEZMQUdTDQoNCitmcm9tIHN0YXQgaW1wb3J0IEZJTEVfQVRUUklCVVRFX1NQQVJTRV9G SUxFDQoNCitmcm9tIFZmckNvbXBpbGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0KDQorZnJvbSBW ZnJDb21waWxlci5WZnJFcnJvciBpbXBvcnQgVmZyUmV0dXJuQ29kZQ0KDQorZnJvbSBWZnJDb21w aWxlci5WZnJVdGlsaXR5IGltcG9ydCAqDQoNCisNCg0KK2Zyb20gY3R5cGVzIGltcG9ydCAqDQoN CisNCg0KKw0KDQorY2xhc3MgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoKToNCg0KKw0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBTaXplLCBTY29wZSk6DQoNCisgICAgICAgIHNlbGYuU2l6ZSA9IFNp emUNCg0KKyAgICAgICAgc2VsZi5TY29wZSA9IFNjb3BlDQoNCisNCg0KKw0KDQorZ09wY29kZVNp emVzU2NvcGVUYWJsZSA9IFsNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZSgwLCAwKSwgICMg RUZJX0lGUl9JTlZBTElEIC0gMHgwMA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9GT1JNKSwgMSksICAjIEVGSV9JRlJfRk9STV9PUA0KDQorICAgIE9w Y29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVUJUSVRMRSksDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfU1VCVElUTEVfT1ANCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVEVYVCksIDApLCAg IyBFRklfSUZSX1RFWFRfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfSU1BR0UpLCAwKSwgICMgRUZJX0lGUl9JTUFHRV9PUA0KDQorICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PTkVfT0YpLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX09ORV9PRl9PUCAtIDB4MDUNCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfQ0hFQ0tCT1gpLA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0NIRUNLQk9YX09QDQoN CisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX05VTUVSSUMp LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX05VTUVSSUNfT1AN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUEFTU1dP UkQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1BBU1NXT1JE X09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX09O RV9PRl9PUFRJT04pLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZS X09ORV9PRl9PUFRJT05fT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfU1VQUFJFU1NfSUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEp LCAgIyBFRklfSUZSX1NVUFBSRVNTX0lGIC0gMHgwQQ0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MT0NLRUQpLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDApLCAgIyBFRklfSUZSX0xPQ0tFRF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BQ1RJT04pLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDEpLCAgIyBFRklfSUZSX0FDVElPTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SRVNFVF9CVVRUT04pLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUA0KDQorICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GT1JNX1NFVCksDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfRk9STV9TRVRfT1AgLTB4RQ0KDQor ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SRUYpLCAwKSwg ICMgRUZJX0lGUl9SRUZfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfTk9fU1VCTUlUX0lGKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAx KSwgICMgRUZJX0lGUl9OT19TVUJNSVRfSUZfT1AgLTB4MTANCg0KKyAgICBPcGNvZGVTaXplc1Nj b3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKSwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ANCg0K KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFfSURfVkFM KSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9FUV9JRF9WQUxf T1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFf SURfSUQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0VRX0lE X0lEX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0VRX0lEX1ZBTF9MSVNUKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJ X0lGUl9FUV9JRF9MSVNUX09QIC0gMHgxNA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0 eXBlcy5zaXplb2YoRUZJX0lGUl9BTkQpLCAwKSwgICMgRUZJX0lGUl9BTkRfT1ANCg0KKyAgICBP cGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT1IpLCAwKSwgICMgRUZJ X0lGUl9PUl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9OT1QpLCAwKSwgICMgRUZJX0lGUl9OT1RfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUlVMRSksIDEpLCAgIyBFRklfSUZSX1JVTEVfT1AN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1JBWV9P VVRfSUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX0dSQVlP VVRfSUZfT1AgLSAweDE5DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVv ZihFRklfSUZSX0RBVEUpLCAxKSwgICMgRUZJX0lGUl9EQVRFX09QDQoNCisgICAgT3Bjb2RlU2l6 ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RJTUUpLCAxKSwgICMgRUZJX0lGUl9U SU1FX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X1NUUklORyksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfU1RS SU5HX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X1JFRlJFU0gpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1JF RlJFU0hfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfRElTQUJMRV9JRiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9J RlJfRElTQUJMRV9JRl9PUCAtIDB4MUUNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZSgwLCAw KSwgICMgMHgxRg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9UT19MT1dFUiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfVE9fTE9XRVJfT1AgLSAweDIwDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX1RPX1VQUEVSKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAw KSwgICMgRUZJX0lGUl9UT19VUFBFUl9PUCAtIDB4MjENCg0KKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTUFQKSwgMSksICAjIEVGSV9JRlJfTUFQIC0gMHgy Mg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PUkRF UkVEX0xJU1QpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX09S REVSRURfTElTVF9PUCAtIDB4MjMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkUpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDAp LCAgIyBFRklfSUZSX1ZBUlNUT1JFX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5 cGVzLnNpemVvZihFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUUpLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1ANCg0KKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkVfRUZJ KSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9WQVJTVE9SRV9F RklfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf VkFSU1RPUkVfREVWSUNFKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJ X0lGUl9WQVJTVE9SRV9ERVZJQ0VfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfVkVSU0lPTiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfVkVSU0lPTl9PUCAtIDB4MjgNCg0KKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRU5EKSwgMCksICAjIEVGSV9JRlJfRU5EX09QDQoN CisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01BVENIKSwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9NQVRDSF9PUCAtIDB4 MkENCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR0VU KSwgMCksICAjIEVGSV9JRlJfR0VUIC0gMHgyQg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TRVQpLCAwKSwgICMgRUZJX0lGUl9TRVQgLSAweDJDDQoN CisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JFQUQpLA0K DQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1JFQUQgLSAweDJEDQoN CisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1dSSVRFKSwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9XUklURSAtIDB4MkUN Cg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRVFVQUwp LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0VRVUFMX09QIC0g MHgyRg0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9O T1RfRVFVQUwpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX05P VF9FUVVBTF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9HUkVBVEVSX1RIQU4pLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX0dSRUFURVJfVEhBTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9HUkVBVEVSX0VRVUFMKSwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAwKSwgICMgRUZJX0lGUl9HUkVBVEVSX0VRVUFMX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0xFU1NfVEhBTiksDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTEVTU19USEFOX09QDQoNCisgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0xFU1NfRVFVQUwpLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0xFU1NfRVFVQUxfT1AgLSAweDM0 DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0JJVFdJ U0VfQU5EKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9CSVRX SVNFX0FORF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9CSVRXSVNFX09SKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJ X0lGUl9CSVRXSVNFX09SX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNp emVvZihFRklfSUZSX0JJVFdJU0VfTk9UKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAw KSwgICMgRUZJX0lGUl9CSVRXSVNFX05PVF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TSElGVF9MRUZUKSwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAwKSwgICMgRUZJX0lGUl9TSElGVF9MRUZUX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NISUZUX1JJR0hUKSwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TSElGVF9SSUdIVF9PUA0KDQorICAgIE9w Y29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BREQpLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0FERF9PUCAtIDB4M0ENCg0KKyAgICBP cGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU1VCVFJBQ1QpLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1NVQlRSQUNUX09QDQoNCisg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01VTFRJUExZKSwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9NVUxUSVBMWV9PUA0K DQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9ESVZJREUp LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RJVklERV9PUA0K DQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9NT0RVTE8p LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX01PRFVMT19PUCAt IDB4M0UNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf UlVMRV9SRUYpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1JV TEVfUkVGX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX1FVRVNUSU9OX1JFRjEpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX1FVRVNUSU9OX1JFRjFfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGMiksDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfUVVFU1RJT05fUkVGMl9PUCAtIDB4NDENCg0KKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDgpLCAwKSwgICMgRUZJ X0lGUl9VSU5UOA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9VSU5UMTYpLCAwKSwgICMgRUZJX0lGUl9VSU5UMTYNCg0KKyAgICBPcGNvZGVTaXplc1Nj b3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDMyKSwgMCksICAjIEVGSV9JRlJfVUlO VDMyDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1VJ TlQ2NCksIDApLCAgIyBFRklfSUZSX1VUTlQ2NA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9UUlVFKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAwKSwgICMgRUZJX0lGUl9UUlVFX09QIC0gMHg0Ng0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GQUxTRSksIDApLCAgIyBFRklfSUZSX0ZBTFNFX09Q DQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RPX1VJ TlQpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1RPX1VJTlRf T1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVE9f U1RSSU5HKSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9UT19T VFJJTkdfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfVE9fQk9PTEVBTiksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfVE9fQk9PTEVBTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9NSUQpLCAwKSwgICMgRUZJX0lGUl9NSURfT1ANCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRklORCksIDApLCAgIyBFRklfSUZSX0ZJ TkRfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf VE9LRU4pLCAwKSwgICMgRUZJX0lGUl9UT0tFTl9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVFJJTkdfUkVGMSksDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfU1RSSU5HX1JFRjFfT1AgLSAweDRFDQoNCisgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NUUklOR19SRUYyKSwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TVFJJTkdfUkVGMl9P UA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9DT05E SVRJT05BTCksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfQ09O RElUSU9OQUxfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfUVVFU1RJT05fUkVGMyksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAj IEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0 eXBlcy5zaXplb2YoRUZJX0lGUl9aRVJPKSwgMCksICAjIEVGSV9JRlJfWkVST19PUA0KDQorICAg IE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9PTkUpLCAwKSwgICMg RUZJX0lGUl9PTkVfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfT05FUyksIDApLCAgIyBFRklfSUZSX09ORVNfT1ANCg0KKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVU5ERUZJTkVEKSwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9VTkRFRklORURfT1ANCg0KKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTEVOR1RIKSwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9MRU5HVEhfT1ANCg0KKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfRFVQKSwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9EVVBfT1AgLSAweDU3DQoNCisgICAgT3Bj b2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RISVMpLCAwKSwgICMgRUZJ X0lGUl9USElTX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihF RklfSUZSX1NQQU4pLCAwKSwgICMgRUZJX0lGUl9TUEFOX09QDQoNCisgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1ZBTFVFKSwgMSksICAjIEVGSV9JRlJfVkFM VUVfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf REVGQVVMVCksDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfREVG QVVMVF9PUA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9ERUZBVUxUU1RPUkUpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX0RFRkFVTFRTVE9SRV9PUCAtIDB4NUMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfRk9STV9NQVApLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgIDEpLCAgIyBFRklfSUZSX0ZPUk1fTUFQX09QIC0gMHg1RA0KDQorICAgIE9wY29kZVNpemVz U2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9DQVRFTkFURSksDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfQ0FURU5BVEVfT1ANCg0KKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRCksIDApLCAgIyBFRklfSUZS X0dVSURfT1ANCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9J RlJfU0VDVVJJVFkpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZS X1NFQ1VSSVRZX09QIC0gMHg2MA0KDQorICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9NT0RBTF9UQUcpLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgIDAp LCAgIyBFRklfSUZSX01PREFMX1RBR19PUCAtIDB4NjENCg0KKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfUkVGUkVTSF9JRCksDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfUkVGUkVTSF9JRF9PUCAtIDB4NjINCg0KKyAgICBP cGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfV0FSTklOR19JRiksDQoN CisgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfV0FSTklOR19JRl9PUCAt IDB4NjMNCg0KKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf TUFUQ0gyKSwgMCkNCg0KK10NCg0KKw0KDQorDQoNCitjbGFzcyBTQnVmZmVyTm9kZSgpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIEJ1ZmZlcj0nJywgTmV4dD1Ob25lKToNCg0KKyAg ICAgICAgc2VsZi5CdWZmZXIgPSBCdWZmZXINCg0KKyAgICAgICAgc2VsZi5OZXh0ID0gTmV4dA0K DQorDQoNCisNCg0KK2NsYXNzIENGb3JtUGtnKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwgQnVmZmVyU2l6ZT00MDk2KToNCg0KKw0KDQorICAgICAgICBOb2RlID0gU0J1ZmZlck5v ZGUoKQ0KDQorICAgICAgICBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlSGVhZCA9IE5vZGUNCg0KKyAg ICAgICAgc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwgPSBOb2RlDQoNCisgICAgICAgIHNlbGYu X19DdXJyQnVmZmVyTm9kZSA9IE5vZGUNCg0KKyAgICAgICAgc2VsZi5fX1JlYWRCdWZmZXJOb2Rl ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fUmVhZEJ1ZmZlck9mZnNldCA9IDANCg0KKyAgICAg ICAgc2VsZi5fX1BrZ0xlbmd0aCA9IDANCg0KKyAgICAgICAgc2VsZi5fX1BlbmRpbmdBc3NpZ25M aXN0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fQnVmZmVyU2l6ZSA9IEJ1ZmZlclNpemUNCg0K Kw0KDQorICAgIGRlZiBHZXRQa2dMZW5ndGgoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fUGtnTGVuZ3RoDQoNCisNCg0KKyAgICBkZWYgX19jcmVhdGVOZXdOb2RlKHNlbGYpOg0KDQor ICAgICAgICBOb2RlID0gU0J1ZmZlck5vZGUoKQ0KDQorICAgICAgICByZXR1cm4gTm9kZQ0KDQor DQoNCisgICAgZGVmIF9fR2V0Tm9kZUJlZm9yZShzZWxmLCBDdXJyZW50Tm9kZSk6DQoNCisgICAg ICAgIEZpcnN0Tm9kZSA9IHNlbGYuX19CdWZmZXJOb2RlUXVldWVIZWFkDQoNCisgICAgICAgIExh c3ROb2RlID0gc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZUhlYWQNCg0KKyAgICAgICAgd2hpbGUgRmly c3ROb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBGaXJzdE5vZGUgPT0gQ3VycmVudE5v ZGU6DQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0KKw0KDQorICAgICAgICAgICAgTGFzdE5v ZGUgPSBGaXJzdE5vZGUNCg0KKyAgICAgICAgICAgIEZpcnN0Tm9kZSA9IEZpcnN0Tm9kZS5OZXh0 DQoNCisNCg0KKyAgICAgICAgaWYgRmlyc3ROb2RlID09IE5vbmU6DQoNCisgICAgICAgICAgICBM YXN0Tm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICByZXR1cm4gTGFzdE5vZGUNCg0KKw0KDQor ICAgIGRlZiBfX0luc2VydE5vZGVCZWZvcmUoc2VsZiwgQ3VycmVudE5vZGUsIE5ld05vZGUpOg0K DQorICAgICAgICBMYXN0Tm9kZSA9IHNlbGYuX19HZXROb2RlQmVmb3JlKEN1cnJlbnROb2RlKQ0K DQorICAgICAgICBpZiBMYXN0Tm9kZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9NSVNNQVRDSEVEDQoNCisNCg0KKyAgICAgICAgTmV3Tm9k ZS5OZXh0ID0gTGFzdE5vZGUuTmV4dA0KDQorICAgICAgICBMYXN0Tm9kZS5OZXh0ID0gTmV3Tm9k ZQ0KDQorDQoNCisgICAgZGVmIElmckJpbkJ1ZmZlckdldChzZWxmLCBMZW4pOg0KDQorICAgICAg ICBpZiBMZW4gPT0gMCBvciBMZW4gPiBzZWxmLl9fQnVmZmVyU2l6ZToNCg0KKyAgICAgICAgICAg IHJldHVybiBOb25lDQoNCisgICAgICAgIGlmIGxlbihzZWxmLl9fQ3VyckJ1ZmZlck5vZGUuQnVm ZmVyKSArIExlbiA+IHNlbGYuX19CdWZmZXJTaXplOg0KDQorICAgICAgICAgICAgTm9kZSA9IHNl bGYuX19jcmVhdGVOZXdOb2RlKCkNCg0KKyAgICAgICAgICAgIGlmIE5vZGUgPT0gTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQ0KDQorDQoNCisgICAgICAgICAgICBpZiBzZWxm Ll9fQnVmZmVyTm9kZVF1ZXVlVGFpbCA9PSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19CdWZmZXJOb2RlUXVldWVIZWFkID0gc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwgPSBOb2Rl DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19CdWZmZXJO b2RlUXVldWVUYWlsLk5leHQgPSBOb2RlDQoNCisgICAgICAgICAgICAgICAgbUJ1ZmZlck5vZGVR dWV1ZVRhaWwgPSBOb2RlDQoNCisgICAgICAgICAgICBzZWxmLl9fQ3VyckJ1ZmZlck5vZGUgPSBO b2RlDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX1BrZ0xlbmd0aCArPSBMZW4NCg0KKw0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX0N1cnJCdWZmZXJOb2RlLkJ1ZmZlcg0KDQorDQoNCisNCg0KKw0K DQorZ0NGb3JtUGtnID0gQ0Zvcm1Qa2coKQ0KDQorZ0NyZWF0ZU9wID0gVHJ1ZQ0KDQorDQoNCitn SWZyT2JqUHJpbnREZWJ1Z1RhYmxlID0gWw0KDQorICAgICJFRklfSUZSX0lOVkFMSUQiLA0KDQor ICAgICJFRklfSUZSX0ZPUk0iLA0KDQorICAgICJFRklfSUZSX1NVQlRJVExFIiwNCg0KKyAgICAi RUZJX0lGUl9URVhUIiwNCg0KKyAgICAiRUZJX0lGUl9JTUFHRSIsDQoNCisgICAgIkVGSV9JRlJf T05FX09GIiwNCg0KKyAgICAiRUZJX0lGUl9DSEVDS0JPWCIsDQoNCisgICAgIkVGSV9JRlJfTlVN RVJJQyIsDQoNCisgICAgIkVGSV9JRlJfUEFTU1dPUkQiLA0KDQorICAgICJFRklfSUZSX09ORV9P Rl9PUFRJT04iLA0KDQorICAgICJFRklfSUZSX1NVUFBSRVNTX0lGIiwNCg0KKyAgICAiRUZJX0lG Ul9MT0NLRUQiLA0KDQorICAgICJFRklfSUZSX0FDVElPTiIsDQoNCisgICAgIkVGSV9JRlJfUkVT RVRfQlVUVE9OIiwNCg0KKyAgICAiRUZJX0lGUl9GT1JNX1NFVCIsDQoNCisgICAgIkVGSV9JRlJf UkVGIiwNCg0KKyAgICAiRUZJX0lGUl9OT19TVUJNSVRfSUYiLA0KDQorICAgICJFRklfSUZSX0lO Q09OU0lTVEVOVF9JRiIsDQoNCisgICAgIkVGSV9JRlJfRVFfSURfVkFMIiwNCg0KKyAgICAiRUZJ X0lGUl9FUV9JRF9JRCIsDQoNCisgICAgIkVGSV9JRlJfRVFfSURfTElTVCIsDQoNCisgICAgIkVG SV9JRlJfQU5EIiwNCg0KKyAgICAiRUZJX0lGUl9PUiIsDQoNCisgICAgIkVGSV9JRlJfTk9UIiwN Cg0KKyAgICAiRUZJX0lGUl9SVUxFIiwNCg0KKyAgICAiRUZJX0lGUl9HUkFZX09VVF9JRiIsDQoN CisgICAgIkVGSV9JRlJfREFURSIsDQoNCisgICAgIkVGSV9JRlJfVElNRSIsDQoNCisgICAgIkVG SV9JRlJfU1RSSU5HIiwNCg0KKyAgICAiRUZJX0lGUl9SRUZSRVNIIiwNCg0KKyAgICAiRUZJX0lG Ul9ESVNBQkxFX0lGIiwNCg0KKyAgICAiRUZJX0lGUl9JTlZBTElEIiwNCg0KKyAgICAiRUZJX0lG Ul9UT19MT1dFUiIsDQoNCisgICAgIkVGSV9JRlJfVE9fVVBQRVIiLA0KDQorICAgICJFRklfSUZS X01BUCIsDQoNCisgICAgIkVGSV9JRlJfT1JERVJFRF9MSVNUIiwNCg0KKyAgICAiRUZJX0lGUl9W QVJTVE9SRSIsDQoNCisgICAgIkVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRSIsDQoNCisgICAg IkVGSV9JRlJfVkFSU1RPUkVfRUZJIiwNCg0KKyAgICAiRUZJX0lGUl9WQVJTVE9SRV9ERVZJQ0Ui LA0KDQorICAgICJFRklfSUZSX1ZFUlNJT04iLA0KDQorICAgICJFRklfSUZSX0VORCIsDQoNCisg ICAgIkVGSV9JRlJfTUFUQ0giLA0KDQorICAgICJFRklfSUZSX0dFVCIsDQoNCisgICAgIkVGSV9J RlJfU0VUIiwNCg0KKyAgICAiRUZJX0lGUl9SRUFEIiwNCg0KKyAgICAiRUZJX0lGUl9XUklURSIs DQoNCisgICAgIkVGSV9JRlJfRVFVQUwiLA0KDQorICAgICJFRklfSUZSX05PVF9FUVVBTCIsDQoN CisgICAgIkVGSV9JRlJfR1JFQVRFUl9USEFOIiwNCg0KKyAgICAiRUZJX0lGUl9HUkVBVEVSX0VR VUFMIiwNCg0KKyAgICAiRUZJX0lGUl9MRVNTX1RIQU4iLA0KDQorICAgICJFRklfSUZSX0xFU1Nf RVFVQUwiLA0KDQorICAgICJFRklfSUZSX0JJVFdJU0VfQU5EIiwNCg0KKyAgICAiRUZJX0lGUl9C SVRXSVNFX09SIiwNCg0KKyAgICAiRUZJX0lGUl9CSVRXSVNFX05PVCIsDQoNCisgICAgIkVGSV9J RlJfU0hJRlRfTEVGVCIsDQoNCisgICAgIkVGSV9JRlJfU0hJRlRfUklHSFQiLA0KDQorICAgICJF RklfSUZSX0FERCIsDQoNCisgICAgIkVGSV9JRlJfU1VCVFJBQ1QiLA0KDQorICAgICJFRklfSUZS X01VTFRJUExZIiwNCg0KKyAgICAiRUZJX0lGUl9ESVZJREUiLA0KDQorICAgICJFRklfSUZSX01P RFVMTyIsDQoNCisgICAgIkVGSV9JRlJfUlVMRV9SRUYiLA0KDQorICAgICJFRklfSUZSX1FVRVNU SU9OX1JFRjEiLA0KDQorICAgICJFRklfSUZSX1FVRVNUSU9OX1JFRjIiLA0KDQorICAgICJFRklf SUZSX1VJTlQ4IiwNCg0KKyAgICAiRUZJX0lGUl9VSU5UMTYiLA0KDQorICAgICJFRklfSUZSX1VJ TlQzMiIsDQoNCisgICAgIkVGSV9JRlJfVUlOVDY0IiwNCg0KKyAgICAiRUZJX0lGUl9UUlVFIiwN Cg0KKyAgICAiRUZJX0lGUl9GQUxTRSIsDQoNCisgICAgIkVGSV9JRlJfVE9fVUlOVCIsDQoNCisg ICAgIkVGSV9JRlJfVE9fU1RSSU5HIiwNCg0KKyAgICAiRUZJX0lGUl9UT19CT09MRUFOIiwNCg0K KyAgICAiRUZJX0lGUl9NSUQiLA0KDQorICAgICJFRklfSUZSX0ZJTkQiLA0KDQorICAgICJFRklf SUZSX1RPS0VOIiwNCg0KKyAgICAiRUZJX0lGUl9TVFJJTkdfUkVGMSIsDQoNCisgICAgIkVGSV9J RlJfU1RSSU5HX1JFRjIiLA0KDQorICAgICJFRklfSUZSX0NPTkRJVElPTkFMIiwNCg0KKyAgICAi RUZJX0lGUl9RVUVTVElPTl9SRUYzIiwNCg0KKyAgICAiRUZJX0lGUl9aRVJPIiwNCg0KKyAgICAi RUZJX0lGUl9PTkUiLA0KDQorICAgICJFRklfSUZSX09ORVMiLA0KDQorICAgICJFRklfSUZSX1VO REVGSU5FRCIsDQoNCisgICAgIkVGSV9JRlJfTEVOR1RIIiwNCg0KKyAgICAiRUZJX0lGUl9EVVAi LA0KDQorICAgICJFRklfSUZSX1RISVMiLA0KDQorICAgICJFRklfSUZSX1NQQU4iLA0KDQorICAg ICJFRklfSUZSX1ZBTFVFIiwNCg0KKyAgICAiRUZJX0lGUl9ERUZBVUxUIiwNCg0KKyAgICAiRUZJ X0lGUl9ERUZBVUxUU1RPUkUiLA0KDQorICAgICJFRklfSUZSX0ZPUk1fTUFQIiwNCg0KKyAgICAi RUZJX0lGUl9DQVRFTkFURSIsDQoNCisgICAgIkVGSV9JRlJfR1VJRCIsDQoNCisgICAgIkVGSV9J RlJfU0VDVVJJVFkiLA0KDQorICAgICJFRklfSUZSX01PREFMX1RBRyIsDQoNCisgICAgIkVGSV9J RlJfUkVGUkVTSF9JRCIsDQoNCisgICAgIkVGSV9JRlJfV0FSTklOR19JRiIsDQoNCisgICAgIkVG SV9JRlJfTUFUQ0gyIiwNCg0KK10NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT2JqKCk6DQoNCisN Cg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgT2JqPU5vbmUsIE9wQ29kZT1Ob25lLCBPYmpCaW5M ZW49MCwgRGVsYXlFbWl0PUZhbHNlLCBMaW5lTm89MCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi5f X0RlbGF5RW1pdCA9IERlbGF5RW1pdA0KDQorICAgICAgICBzZWxmLl9fUGtnT2Zmc2V0ID0gZ0NG b3JtUGtnLkdldFBrZ0xlbmd0aCgpDQoNCisgICAgICAgIHNlbGYuX19PYmpCaW5MZW4gPSBnT3Bj b2RlU2l6ZXNTY29wZVRhYmxlWw0KDQorICAgICAgICAgICAgT3BDb2RlXS5TaXplIGlmIE9iakJp bkxlbiA9PSAwIGVsc2UgT2JqQmluTGVuDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX09iakJpbkJ1 ZiA9IE9iag0KDQorICAgICAgICBzZWxmLl9fTGluZU5vID0gTGluZU5vDQoNCisNCg0KKyAgICAg ICAgIyBwcmludCAoIj09PT09PUNyZWF0ZSBJRlIgWyVzXVxuIiwgZ0lmck9ialByaW50RGVidWdU YWJsZVtPcENvZGVdKQ0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09iakJpbkJ1Zg0KDQorDQoN CisgICAgZGVmIFNldE9iakJpbihzZWxmLCBPYmpCaW5MZW4pOg0KDQorDQoNCisgICAgICAgIHNl bGYuX19PYmpCaW5MZW4gPSBPYmpCaW5MZW4NCg0KKyAgICAgICAgaWYgc2VsZi5fX0RlbGF5RW1p dCA9PSBGYWxzZSBhbmQgZ0NyZWF0ZU9wID09IFRydWU6DQoNCisgICAgICAgICAgICBzZWxmLl9f T2JqQmluQnVmID0gZ0NGb3JtUGtnLklmckJpbkJ1ZmZlckdldChzZWxmLl9fT2JqQmluTGVuKQ0K DQorDQoNCisgICAgZGVmIFNldExpbmVObyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxm Ll9fTGluZU5vID0gTGluZU5vDQoNCisNCg0KKyAgICBkZWYgR2V0T2JqQmluQWRkcihzZWxmLCBB ZGRyKToNCg0KKyAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IEFkZHINCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19PYmpCaW5CdWYNCg0KKw0KDQorICAgIGRlZiBHZXRPYmpCaW5PZmZzZXQoc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUGtnT2Zmc2V0DQoNCisNCg0KKyAgICBkZWYg R2V0T2JqQmluTGVuKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09iakJpbkxlbg0K DQorDQoNCisgICAgZGVmIEV4cGVuZE9iakJpbihzZWxmLCBTaXplKToNCg0KKyAgICAgICAgaWYg KHNlbGYuX19EZWxheUVtaXQpID09IFRydWUgYW5kICgNCg0KKyAgICAgICAgICAgIChzZWxmLl9f T2JqQmluTGVuICsgU2l6ZSkgPiBzZWxmLl9fT2JqQmluTGVuKToNCg0KKyAgICAgICAgICAgIHNl bGYuX19PYmpCaW5MZW4gPSBzZWxmLl9fT2JqQmluTGVuICsgU2l6ZQ0KDQorICAgICAgICAgICAg cmV0dXJuIFRydWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBGYWxz ZQ0KDQorDQoNCisgICAgZGVmIFNocmlua09iakJpbihzZWxmLCBTaXplKToNCg0KKyAgICAgICAg aWYgKHNlbGYuX19EZWxheUVtaXQpID09IFRydWUgYW5kIChzZWxmLl9fT2JqQmluTGVuID4gU2l6 ZSk6DQoNCisgICAgICAgICAgICBzZWxmLl9fT2JqQmluTGVuID0gc2VsZi5fX09iakJpbkxlbiAt IFNpemUNCg0KKw0KDQorICAgIGRlZiBHZXRPYmpCaW4oc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fT2JqQmluQnVmDQoNCisNCg0KKyAgICBkZWYgRU1JVF9QRU5ESU5HX09CSihzZWxm KToNCg0KKyAgICAgICAgaWYgc2VsZi5fX0RlbGF5RW1pdCA9PSBGYWxzZSBvciBnQ3JlYXRlT3Ag PT0gRmFsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBzZWxmLl9f UGtnT2Zmc2V0ID0gZ0NGb3JtUGtnLkdldFBrZ0xlbmd0aCgpDQoNCisgICAgICAgICMgdXBkYXRl IGRhdGEgYnVmZmVyIHRvIHBhY2thZ2UgZGF0YQ0KDQorICAgICAgICBzZWxmLl9fT2JqQmluQnVm ID0gZ0NGb3JtUGtnLklmckJpbkJ1ZmZlckdldChzZWxmLl9fT2JqQmluTGVuKQ0KDQorDQoNCisg ICAgICAgIHNlbGYuX19EZWxheUVtaXQgPSBGYWxzZQ0KDQorDQoNCisNCg0KK2dTY29wZUNvdW50 ID0gMA0KDQorZ0lzT3JkZXJlZExpc3QgPSBGYWxzZQ0KDQorZ0lzU3RyaW5nT3AgPSBGYWxzZQ0K DQorZ0N1cnJlbnRRdWVzdGlvbiA9IE5vbmUNCg0KK2dDdXJyZW50TWluTWF4RGF0YSA9IE5vbmUN Cg0KKw0KDQorDQoNCitkZWYgU2V0Q3VycmVudFF1ZXN0aW9uKFF1ZXN0aW9uKToNCg0KKw0KDQor ICAgIGdDdXJyZW50UXVlc3Rpb24gPSBRdWVzdGlvbg0KDQorICAgIHJldHVybiBnQ3VycmVudFF1 ZXN0aW9uDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck9wSGVhZGVyKCk6DQoNCisNCg0KKyAgICBk ZWYgX19pbml0X18oc2VsZiwgT3BIZWFkZXI6IEVGSV9JRlJfT1BfSEVBREVSLCBPcENvZGU9Tm9u ZSwgTGVuZ3RoPTApOg0KDQorICAgICAgICBzZWxmLl9fT3BIZWFkZXIgPSBPcEhlYWRlcg0KDQor ICAgICAgICBpZiBPcENvZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19PcEhlYWRl ci5PcENvZGUgPSBPcENvZGUNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5fX09wSGVhZGVyLkxl bmd0aCA9IGdPcGNvZGVTaXplc1Njb3BlVGFibGVbDQoNCisgICAgICAgICAgICAgICAgT3BDb2Rl XS5TaXplIGlmIExlbmd0aCA9PSAwIGVsc2UgTGVuZ3RoDQoNCisgICAgICAgICAgICBzZWxmLl9f T3BIZWFkZXIuU2NvcGUgPSAxIGlmICgNCg0KKyAgICAgICAgICAgICAgICBnT3Bjb2RlU2l6ZXNT Y29wZVRhYmxlW09wQ29kZV0uU2NvcGUgKyBnU2NvcGVDb3VudCA+IDApIGVsc2UgMA0KDQorDQoN CisgICAgZGVmIEdldExlbmd0aChzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19PcEhl YWRlci5MZW5ndGgNCg0KKw0KDQorICAgIGRlZiBTZXRTY29wZShzZWxmLCBTY29wZSk6DQoNCisg ICAgICAgIHNlbGYuX19PcEhlYWRlci5TY29wZSA9IFNjb3BlDQoNCisNCg0KKyAgICBkZWYgR2V0 U2NvcGUoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT3BIZWFkZXIuU2NvcGUNCg0K Kw0KDQorICAgIGRlZiBVcGRhdGVIZWFkZXIoc2VsZiwgSGVhZGVyKToNCg0KKyAgICAgICAgc2Vs Zi5fX09wSGVhZGVyID0gSGVhZGVyDQoNCisNCg0KKyAgICBkZWYgSW5jTGVuZ3RoKHNlbGYsIFNp emUpOg0KDQorICAgICAgICBzZWxmLl9fT3BIZWFkZXIuTGVuZ3RoICs9IFNpemUNCg0KKw0KDQor ICAgIGRlZiBEZWNMZW5ndGgoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19PcEhlYWRl ci5MZW5ndGggLT0gU2l6ZQ0KDQorDQoNCisgICAgZGVmIEdldE9wQ29kZShzZWxmKToNCg0KKyAg ICAgICAgcmV0dXJuIHNlbGYuX19PcEhlYWRlci5PcENvZGUNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyU3RhdGVtZW50SGVhZGVyKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgc0hl YWRlcjogRUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKToNCg0KKyAgICAgICAgc2VsZi5fX3NIZWFk ZXIgPSBzSGVhZGVyDQoNCisgICAgICAgIHNlbGYuX19zSGVhZGVyLkhlbHAgPSBFRklfU1RSSU5H X0lEX0lOVkFMSUQNCg0KKyAgICAgICAgc2VsZi5fX3NIZWFkZXIuUHJvbXB0ID0gRUZJX1NUUklO R19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgR2V0U3RhdGVtZW50SGVhZGVyKHNlbGYpOg0K DQorICAgICAgICByZXR1cm4gc2VsZi5fX3NIZWFkZXINCg0KKw0KDQorICAgIGRlZiBTZXRQcm9t cHQoc2VsZiwgUHJvbXB0KToNCg0KKyAgICAgICAgc2VsZi5fX3NIZWFkZXIuUHJvbXB0ID0gUHJv bXB0DQoNCisNCg0KKyAgICBkZWYgU2V0SGVscChzZWxmLCBIZWxwKToNCg0KKyAgICAgICAgc2Vs Zi5fX3NIZWFkZXIuSGVscCA9IEhlbHANCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTWluTWF4U3Rl cERhdGEoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBNaW5NYXhTdGVwRGF0YSwg TnVtZXJpY09wY29kZT1GYWxzZSk6DQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YSA9 IE1pbk1heFN0ZXBEYXRhDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWlu VmFsdWUgPSAwDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFsdWUg PSAwDQoNCisgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuU3RlcCA9IDANCg0KKyAg ICAgICAgc2VsZi5fX1ZhbHVlSXNTZXQgPSBGYWxzZQ0KDQorICAgICAgICBzZWxmLl9fSXNOdW1l cmljID0gTnVtZXJpY09wY29kZQ0KDQorICAgICAgICBzZWxmLl9fVmFyVHlwZSA9IEVGSV9JRlJf VFlQRV9OVU1fU0laRV82NA0KDQorDQoNCisgICAgZGVmIFNldE1pbk1heFN0ZXBEYXRhKHNlbGYs IE1pblZhbHVlLCBNYXhWYWx1ZSwgU3RlcCwgVmFyVHlwZSk6DQoNCisgICAgICAgIHNlbGYuX19W YXJUeXBlID0gVmFyVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19WYWx1ZUlzU2V0ID09 IEZhbHNlOg0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5W YWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRh LnU2NC5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnU2NC5TdGVwID0gU3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5TdGVwID0gU3RlcA0KDQorICAgICAgICAg ICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NYXhWYWx1ZSA9IE1heFZh bHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5TdGVwID0g U3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf ODoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWluVmFsdWUg PSBNaW5WYWx1ZQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5N YXhWYWx1ZSA9IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBE YXRhLnU4LlN0ZXAgPSBTdGVwDQoNCisgICAgICAgICAgICBzZWxmLl9fVmFsdWVJc1NldCA9IFRy dWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIGlmIE1pblZhbHVlIDwgc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZToNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAg ICAgICAgICAgaWYgTWF4VmFsdWUgPiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1heFZhbHVl Og0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1heFZh bHVlID0gTWF4VmFsdWUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEu dTY0LlN0ZXAgPSBTdGVwDQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICBpZiBNaW5WYWx1ZSA8IHNlbGYuX19N aW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWU6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYu X19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KDQorICAgICAgICAgICAg ICAgIGlmIE1heFZhbHVlID4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZToNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZSA9 IE1heFZhbHVlDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5T dGVwID0gU3RlcA0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfMTY6DQoNCisgICAgICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4 U3RlcERhdGEudTE2Lk1pblZhbHVlOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTWlu TWF4U3RlcERhdGEudTE2Lk1pblZhbHVlID0gTWluVmFsdWUNCg0KKyAgICAgICAgICAgICAgICBp ZiBNYXhWYWx1ZSA+IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYuTWF4VmFsdWU6DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYuTWF4VmFsdWUgPSBNYXhW YWx1ZQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MTYuU3RlcCA9 IFN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpF Xzg6DQoNCisgICAgICAgICAgICAgICAgaWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4U3RlcERh dGEudTguTWluVmFsdWU6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVw RGF0YS51OC5NaW5WYWx1ZSA9IE1pblZhbHVlDQoNCisgICAgICAgICAgICAgICAgaWYgTWF4VmFs dWUgPiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWF4VmFsdWU6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NYXhWYWx1ZSA9IE1heFZhbHVlDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU4LlN0ZXAgPSBTdGVwDQoNCisN Cg0KKyAgICBkZWYgR2V0VmFyVHlwZShzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19W YXJUeXBlDQoNCisNCg0KKyAgICBkZWYgSXNOdW1lcmljT3Bjb2RlKHNlbGYpOg0KDQorICAgICAg ICByZXR1cm4gc2VsZi5fX0lzTnVtZXJpYw0KDQorDQoNCisgICAgZGVmIFVwZGF0ZUNJZnJNaW5N YXhTdGVwRGF0YShzZWxmLCBNaW5NYXhTdGVwRGF0YSk6DQoNCisgICAgICAgIHNlbGYuX19NaW5N YXhTdGVwRGF0YSA9IE1pbk1heFN0ZXBEYXRhDQoNCisNCg0KKyAgICBkZWYgR2V0TWluRGF0YShz ZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQoNCisNCg0KKyAgICAgICAgaWYgSXNCaXRWYXI6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZQ0K DQorDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01p bk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZQ0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu X19NaW5NYXhTdGVwRGF0YS51MzIuTWluVmFsdWUNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLl9fTWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVlDQoNCisgICAgICAgICAgICBpZiBWYXJU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWluVmFsdWUNCg0KKw0KDQorICAgICAgICByZXR1 cm4gMA0KDQorDQoNCisgICAgZGVmIEdldE1heERhdGEoc2VsZiwgVmFyVHlwZSwgSXNCaXRWYXIp Og0KDQorDQoNCisgICAgICAgIGlmIElzQml0VmFyOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWF4VmFsdWUNCg0KKw0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFs dWUNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMy Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLk1h eFZhbHVlDQoNCisgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0la RV8xNjoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUx Ni5NYXhWYWx1ZQ0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRh LnU4Lk1heFZhbHVlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIDANCg0KKw0KDQorICAgIGRlZiBH ZXRTdGVwRGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQoNCisNCg0KKyAgICAgICAgaWYg SXNCaXRWYXI6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUz Mi5TdGVwDQoNCisNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLl9fTWluTWF4U3RlcERhdGEudTY0LlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLl9fTWluTWF4U3RlcERhdGEudTE2LlN0ZXANCg0KKyAgICAgICAgICAgIGlmIFZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51OC5TdGVwDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIDANCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyRm9ybVNldChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KDQorICAgICAgICBzZWxmLl9fRm9y bVNldCA9IEVGSV9JRlJfRk9STV9TRVQoKQ0KDQorICAgICAgICBDSWZyT2JqLl9faW5pdF9fKHNl bGYsIHNlbGYuX19Gb3JtU2V0LCBFRklfSUZSX0ZPUk1fU0VUX09QKQ0KDQorICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Zvcm1TZXQuSGVhZGVyLCBFRklfSUZSX0ZP Uk1fU0VUX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkNCg0KKyAg ICAgICAgc2VsZi5fX0Zvcm1TZXQuSGVscCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAg ICAgICBzZWxmLl9fRm9ybVNldC5Gb3JtU2V0VGl0bGUgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQN Cg0KKyAgICAgICAgc2VsZi5fX0Zvcm1TZXQuRmxhZ3MgPSAwDQoNCisgICAgICAgIHNlbGYuX19G b3JtU2V0Lkd1aWQgPSBFRklfR1VJRCgwLCAwLCAwLA0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KDQor ICAgICAgICBzZWxmLl9fQ2xhc3NHdWlkID0gW10NCg0KKw0KDQorICAgIGRlZiBTZXRHdWlkKHNl bGYsIEd1aWQpOg0KDQorICAgICAgICBzZWxmLl9fRm9ybVNldC5HdWlkID0gR3VpZA0KDQorDQoN CisgICAgZGVmIEdldEd1aWQoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRm9ybVNl dC5HdWlkDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybVNldFRpdGxlKHNlbGYsIEZvcm1TZXRUaXRs ZSk6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEZvcm1TZXRUaXRs ZQ0KDQorDQoNCisgICAgZGVmIEdldEZvcm1TZXRUaXRsZShzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZQ0KDQorDQoNCisgICAgZGVmIFNldEhlbHAo c2VsZiwgSGVscCk6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtU2V0LkhlbHAgPSBIZWxwDQoNCisN Cg0KKyAgICBkZWYgR2V0SGVscChzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19Gb3Jt U2V0LkhlbHANCg0KKw0KDQorICAgIGRlZiBTZXRDbGFzc0d1aWQoc2VsZiwgR3VpZCk6DQoNCisg ICAgICAgIHNlbGYuX19DbGFzc0d1aWQuYXBwZW5kKEd1aWQpDQoNCisgICAgICAgIHNlbGYuX19G b3JtU2V0LkZsYWdzICs9IDENCg0KKw0KDQorICAgIGRlZiBHZXRDbGFzc0d1aWQoc2VsZik6DQoN CisgICAgICAgIHJldHVybiBzZWxmLl9fQ2xhc3NHdWlkDQoNCisNCg0KKyAgICBkZWYgR2V0Rmxh Z3Moc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRm9ybVNldC5GbGFncw0KDQorDQoN CisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRm9ybVNl dA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVPZk9wdGlvbihDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KDQorICAgICAgICBz ZWxmLl9fT25lT2ZPcHRpb24gPSBFRklfSUZSX09ORV9PRl9PUFRJT04oKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09uZU9mT3B0aW9uLkhlYWRlciwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfT05FX09GX09QVElPTl9PUCwg U2l6ZSkNCg0KKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KDQorICAgICAg ICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisg ICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQoNCisg ICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5WYWx1ZSA9IEVGSV9JRlJfVFlQRV9WQUxVRSgpDQoN CisNCg0KKyAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIE9wdGlvbik6DQoNCisgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5PcHRpb24gPSBPcHRpb24NCg0KKw0KDQorICAgIGRlZiBTZXRUeXBlKHNl bGYsIFR5cGUpOg0KDQorICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uVHlwZSA9IFR5cGUNCg0K Kw0KDQorICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQoNCisgICAgICAgIHNlbGYuX19P bmVPZk9wdGlvbi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6 DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MNCg0KKw0KDQorICAg IGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KDQorDQoNCisgICAgICAgIHNlbGYuX19PbmVP Zk9wdGlvbi5GbGFncyA9IDANCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQpDQoNCisgICAgICAgIGlmIFJl dDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX09Q VElPTl9ERUZBVUxUDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FO RF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHKQ0KDQorICAgICAgICBp ZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lG Ul9PUFRJT05fREVGQVVMVF9NRkcNCg0KKw0KDQorICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihM RmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV84KQ0KDQorICAgICAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84DQoNCisNCg0KKyAgICAg ICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAg ICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYp DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzE2DQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdz LCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZP cHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyDQoNCisNCg0KKyAgICAgICAg ZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAg TEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQpDQoN CisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0DQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX0JP T0xFQU46DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9J RlJfVFlQRV9CT09MRUFOKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdz IHw9IEVGSV9JRlJfVFlQRV9CT09MRUFODQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0g RUZJX0lGUl9UWVBFX1RJTUU6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihM RmxhZ3MsIEVGSV9JRlJfVFlQRV9USU1FKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0 aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9USU1FDQoNCisNCg0KKyAgICAgICAgZWxpZiBMRmxh Z3MgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9EQVRFKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9EQVRFDQoNCisNCg0KKyAgICAgICAgZWxp ZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCg0KKyAgICAgICAgICAgIExGbGFncyA9 IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX1NUUklORykNCg0KKyAgICAgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfU1RSSU5HDQoNCisNCg0K KyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAgICAgICAg ICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfT1RIRVIpDQoNCisg ICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX09USEVS DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT IGlmIExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQ UE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJu IHNlbGYuX19PbmVPZk9wdGlvbg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVPZk9wdGlvbjIo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBT aXplLCBOdW1zLCBWYWx1ZVR5cGUsIFZhbHVlTGlzdD1bXSk6DQoNCisgICAgICAgIHNlbGYuX19P bmVPZk9wdGlvbiA9IFJlZmluZV9FRklfSUZSX09ORV9PRl9PUFRJT04oTnVtcykNCg0KKyAgICAg ICAgSGVhZGVyID0gRUZJX0lGUl9PUF9IRUFERVIoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgSGVhZGVyLCBFRklfSUZSX09ORV9PRl9PUFRJT05fT1AsIFNpemUpDQoN CisgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5IZWFkZXIgPSBIZWFkZXINCg0KKyAgICAgICAg c2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KDQorICAgICAgICBzZWxmLl9fT25lT2ZPcHRp b24uT3B0aW9uID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYuX19PbmVP Zk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVSDQoNCisgICAgICAgIHNlbGYuX19WYWx1 ZVR5cGUgPSBWYWx1ZVR5cGUNCg0KKyAgICAgICAgaWYgVmFsdWVMaXN0ICE9IFtdOg0KDQorICAg ICAgICAgICAgQXJyYXlUeXBlID0gRUZJX0lGUl9UWVBFX1ZBTFVFICogTnVtcw0KDQorICAgICAg ICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQoNCisgICAgICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQoNCisgICAgICAgICAgICAgICAgVmFsdWVBcnJheVtp XSA9IFZhbHVlTGlzdFtpXQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLlZhbHVl ID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIFNldE9wdGlvbihzZWxmLCBPcHRpb24pOg0K DQorICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gT3B0aW9uDQoNCisNCg0KKyAg ICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCg0KKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9u LlR5cGUgPSBUeXBlDQoNCisNCg0KKyAgICBkZWYgR2V0VmFsdWVUeXBlKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX1ZhbHVlVHlwZQ0KDQorDQoNCisgICAgZGVmIFNldFZhbHVlKHNl bGYsIFZhbHVlTGlzdCk6DQoNCisgICAgICAgIEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQRV9WQUxV RSAqIChsZW4oVmFsdWVMaXN0KSkNCg0KKyAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgp DQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCg0KKyAgICAg ICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIEdldEZsYWdzKHNl bGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzDQoNCisNCg0K KyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgTEZsYWdzKToNCg0KKw0KDQorICAgICAgICBzZWxmLl9f T25lT2ZPcHRpb24uRmxhZ3MgPSAwDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX09QVElPTl9ERUZBVUxUKQ0KDQorICAgICAgICBp ZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lG Ul9PUFRJT05fREVGQVVMVA0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVT VF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCg0KKyAgICAg ICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVG SV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHDQoNCisNCg0KKyAgICAgICAgaWYgTEZsYWdzID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xF QVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCkNCg0KKyAgICAgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOA0KDQorDQoNCisg ICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAg ICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpF XzE2KQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8xNg0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExG bGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyKQ0KDQorICAgICAgICAgICAgc2VsZi5fX09u ZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMg0KDQorDQoNCisgICAg ICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAg ICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0 KQ0KDQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV82NA0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQ RV9CT09MRUFOOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBF RklfSUZSX1RZUEVfQk9PTEVBTikNCg0KKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5G bGFncyB8PSBFRklfSUZSX1RZUEVfQk9PTEVBTg0KDQorDQoNCisgICAgICAgIGVsaWYgTEZsYWdz ID09IEVGSV9JRlJfVFlQRV9USU1FOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xF QVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfVElNRSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19PbmVP Zk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisgICAgICAgIGVsaWYg TEZsYWdzID09IEVGSV9JRlJfVFlQRV9EQVRFOg0KDQorICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCg0KKyAgICAgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfREFURQ0KDQorDQoNCisgICAgICAg IGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAgICBMRmxh Z3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9TVFJJTkcpDQoNCisgICAgICAg ICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX1NUUklORw0KDQor DQoNCisgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAg ICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX09USEVSKQ0K DQorICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9P VEhFUg0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19V TlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJl dHVybiBzZWxmLl9fT25lT2ZPcHRpb24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT3B0aW9uS2V5 KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwg UXVlc3Rpb25JZCwgT3B0aW9uVmFsdWUsIEtleVZhbHVlKToNCg0KKw0KDQorICAgICAgICBzZWxm Ll9fT3B0aW9uS2V5ID0gRUZJX0lGUl9HVUlEX09QVElPTktFWSgpDQoNCisgICAgICAgIENJZnJP cEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT3B0aW9uS2V5LkhlYWRlciwgRUZJX0lGUl9H VUlEX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNpemVvZihF RklfSUZSX0dVSURfT1BUSU9OS0VZKSkNCg0KKyAgICAgICAgc2VsZi5fX09wdGlvbktleS5FeHRl bmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9PUFRJT05LRVkNCg0KKyAgICAgICAgc2VsZi5f X09wdGlvbktleS5HdWlkID0gRUZJX0lGUl9GUkFNRVdPUktfR1VJRA0KDQorICAgICAgICBzZWxm Ll9fT3B0aW9uS2V5LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHNlbGYuX19P cHRpb25LZXkuT3B0aW9uVmFsdWUgPSBPcHRpb25WYWx1ZQ0KDQorICAgICAgICBzZWxmLl9fT3B0 aW9uS2V5LktleVZhbHVlID0gS2V5VmFsdWUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYp Og0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX09wdGlvbktleQ0KDQorDQoNCisNCg0KK2NsYXNz IENJZnJDbGFzcyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19DbGFzcyA9IEVGSV9JRlJfR1VJRF9DTEFT UygpICAjIHN0YXRpYyBndWlkDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fQ2xhc3MuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRF9DTEFTUykpDQoNCisg ICAgICAgIHNlbGYuX19DbGFzcy5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9DTEFT Uw0KDQorICAgICAgICBzZWxmLl9fQ2xhc3MuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJRA0KDQor ICAgICAgICBzZWxmLl9fQ2xhc3MuQ2xhc3MgPSBFRklfTk9OX0RFVklDRV9DTEFTUw0KDQorDQoN CisgICAgZGVmIFNldENsYXNzKHNlbGYsIENsYXNzKToNCg0KKyAgICAgICAgc2VsZi5fX0NsYXNz LkNsYXNzID0gQ2xhc3MNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAg ICByZXR1cm4gc2VsZi5fX0NsYXNzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclN1YkNsYXNzKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToN Cg0KKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzID0gRUZJX0lGUl9HVUlEX1NVQkNMQVNTKCkgICMg c3RhdGljIGd1aWQNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19TdWJDbGFzcy5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX1NVQkNMQVNTKSkNCg0KKyAg ICAgICAgc2VsZi5fX1N1YkNsYXNzLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX1NV QkNMQVNTDQoNCisgICAgICAgIHNlbGYuX19TdWJDbGFzcy5HdWlkID0gRUZJX0lGUl9USUFOT19H VUlEDQoNCisgICAgICAgIHNlbGYuX19TdWJDbGFzcy5TdWJDbGFzcyA9IEVGSV9TRVRVUF9BUFBM SUNBVElPTl9TVUJDTEFTUw0KDQorDQoNCisgICAgZGVmIFNldFN1YkNsYXNzKHNlbGYsIFN1YkNs YXNzKToNCg0KKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLlN1YkNsYXNzID0gU3ViQ2xhc3MNCg0K Kw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1N1 YkNsYXNzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckRlZmF1bHRTdG9yZShDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoNCisgICAgICAg IHNlbGYuX19EZWZhdWx0U3RvcmUgPSBFRklfSUZSX0RFRkFVTFRTVE9SRSgpDQoNCisgICAgICAg IENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGVmYXVsdFN0b3JlLkhlYWRlciwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfREVGQVVMVFNUT1JFX09Q KQ0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHROYW1lID0gRUZJX1NUUklO R19JRF9JTlZBTElEDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUuRGVmYXVsdElkID0g RUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0TmFtZShz ZWxmLCBEZWZhdWx0TmFtZSk6DQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUuRGVmYXVs dE5hbWUgPSBEZWZhdWx0TmFtZQ0KDQorDQoNCisgICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBE ZWZhdWx0SWQpOg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHRJZCA9IERl ZmF1bHRJZA0KDQorDQoNCisgICAgZGVmIEdldERlZmF1bHRTdG9yZShzZWxmKToNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19EZWZhdWx0U3RvcmUNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0 U3RvcmUoc2VsZiwgRGVmYXVsdFN0b3JlOiBFRklfSUZSX0RFRkFVTFRTVE9SRSk6DQoNCisgICAg ICAgIHNlbGYuX19EZWZhdWx0U3RvcmUgPSBEZWZhdWx0U3RvcmUNCg0KKw0KDQorICAgIGRlZiBH ZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHRTdG9yZQ0KDQor DQoNCisNCg0KK2NsYXNzIENJZnJWYXJTdG9yZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19WYXJzdG9y ZSA9IEVGSV9JRlJfVkFSU1RPUkUoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5fX1ZhcnN0b3JlLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9JRlJfVkFSU1RPUkVfT1ApDQoNCisgICAgICAgIHNlbGYuX19WYXJzdG9yZS5W YXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAgICAgc2VsZi5fX1Zh cnN0b3JlLlNpemUgPSAwDQoNCisgICAgICAgIHNlbGYuX19WYXJzdG9yZS5OYW1lID0gJycNCg0K Kw0KDQorICAgIGRlZiBTZXRHdWlkKHNlbGYsIEd1aWQpOg0KDQorICAgICAgICBzZWxmLl9fVmFy c3RvcmUuR3VpZCA9IEd1aWQNCg0KKw0KDQorICAgIGRlZiBTZXRTaXplKHNlbGYsIFNpemUpOg0K DQorICAgICAgICBzZWxmLl9fVmFyc3RvcmUuU2l6ZSA9IFNpemUNCg0KKw0KDQorICAgIGRlZiBT ZXRWYXJTdG9yZUlkKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorICAgICAgICBzZWxmLl9fVmFyc3Rv cmUuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCg0KKw0KDQorICAgIGRlZiBTZXROYW1lKHNlbGYs IE5hbWUpOg0KDQorICAgICAgICBzZWxmLl9fVmFyc3RvcmUuTmFtZSA9IE5hbWUNCg0KKw0KDQor ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZhcnN0b3Jl DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclZhclN0b3JlRWZpKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5f X1ZhclN0b3JlRWZpID0gRUZJX0lGUl9WQVJTVE9SRV9FRkkoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1ZhclN0b3JlRWZpLkhlYWRlciwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfVkFSU1RPUkVfRUZJX09QKQ0KDQorICAg ICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuVmFyU3RvcmVJZCA9IEVGSV9WQVJPRkZTRVRfSU5WQUxJ RA0KDQorICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuU2l6ZSA9IDANCg0KKyAgICAgICAgc2Vs Zi5fX1ZhclN0b3JlRWZpLk5hbWUgPSAnJw0KDQorDQoNCisgICAgZGVmIFNldEd1aWQoc2VsZiwg R3VpZCk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5HdWlkID0gR3VpZA0KDQorDQoN CisgICAgZGVmIFNldFNpemUoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9y ZUVmaS5TaXplID0gU2l6ZQ0KDQorDQoNCisgICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFy U3RvcmVJZCk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5WYXJTdG9yZUlkID0gVmFy U3RvcmVJZA0KDQorDQoNCisgICAgZGVmIFNldE5hbWUoc2VsZiwgTmFtZSk6DQoNCisgICAgICAg IHNlbGYuX19WYXJTdG9yZUVmaS5OYW1lID0gTmFtZQ0KDQorDQoNCisgICAgZGVmIFNldEF0dHJp YnV0ZXMoc2VsZiwgQXR0cmlidXRlcyk6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5B dHRyaWJ1dGVzID0gQXR0cmlidXRlcw0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoN CisgICAgICAgIHJldHVybiBzZWxmLl9fVmFyU3RvcmVFZmkNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyVmFyU3RvcmVOYW1lVmFsdWUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVl ID0gRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1ZS5IZWFkZXIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1Ap DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1ZS5WYXJTdG9yZUlkID0gRUZJX1ZB Uk9GRlNFVF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlkKToNCg0K KyAgICAgICAgc2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVlLkd1aWQgPSBHdWlkDQoNCisNCg0KKyAg ICBkZWYgU2V0VmFyU3RvcmVJZChzZWxmLCBWYXJTdG9yZUlkKToNCg0KKyAgICAgICAgc2VsZi5f X1ZhclN0b3JlTmFtZVZhbHVlLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQoNCisNCg0KKyAgICBk ZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19WYXJTdG9yZU5hbWVW YWx1ZQ0KDQorDQoNCisNCg0KK0VGSV9CSVRTX1BFUl9VSU5UMzIgPSAxIDw8IEVGSV9CSVRTX1NI SUZUX1BFUl9VSU5UMzINCg0KK0VGSV9GT1JNX0lEX01BWCA9IDB4RkZGRg0KDQorDQoNCitFRklf RlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFID0gaW50KChFRklfRk9STV9JRF9NQVggKyAxKSAvIEVG SV9CSVRTX1BFUl9VSU5UMzIpDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckZvcm1JZCgpOg0KDQor DQoNCisgICAgRm9ybUlkQml0TWFwID0gW10NCg0KKyAgICBmb3IgaSBpbiByYW5nZSgwLCBFRklf RlJFRV9GT1JNX0lEX0JJVE1BUF9TSVpFKToNCg0KKyAgICAgICAgRm9ybUlkQml0TWFwLmFwcGVu ZCgwKQ0KDQorDQoNCisgICAgQGNsYXNzbWV0aG9kDQoNCisgICAgZGVmIENoZWNrRm9ybUlkRnJl ZShjbHMsIEZvcm1JZCk6DQoNCisNCg0KKyAgICAgICAgSW5kZXggPSBpbnQoRm9ybUlkIC8gRUZJ X0JJVFNfUEVSX1VJTlQzMikNCg0KKyAgICAgICAgT2Zmc2V0ID0gRm9ybUlkICUgRUZJX0JJVFNf UEVSX1VJTlQzMg0KDQorDQoNCisgICAgICAgIHJldHVybiAoY2xzLkZvcm1JZEJpdE1hcFtJbmRl eF0gJiAoMHg4MDAwMDAwMCA+PiBPZmZzZXQpKSA9PSAwDQoNCisNCg0KKyAgICBAY2xhc3NtZXRo b2QNCg0KKyAgICBkZWYgTWFya0Zvcm1JZFVzZWQoY2xzLCBGb3JtSWQpOg0KDQorDQoNCisgICAg ICAgIEluZGV4ID0gaW50KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQoNCisgICAgICAg IE9mZnNldCA9IEZvcm1JZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCg0KKyAgICAgICAgY2xzLkZv cm1JZEJpdE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KQ0KDQorDQoNCisNCg0K K2NsYXNzIENJZnJGb3JtKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYg X19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19Gb3JtID0gRUZJX0lGUl9GT1JNKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Gb3JtLkhlYWRl ciwgRUZJX0lGUl9GT1JNX09QKQ0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtSWQgPSAwDQoN CisgICAgICAgIHNlbGYuX19Gb3JtLkZvcm1UaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0K DQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KDQorICAgICAgICAjIEZv cm1JZCBjYW4ndCBiZSAwLg0KDQorICAgICAgICBpZiBGb3JtSWQgPT0gMDoNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCg0K KyAgICAgICAgaWYgQ0lmckZvcm1JZC5DaGVja0Zvcm1JZEZyZWUoRm9ybUlkKSA9PSBGYWxzZToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9STUlEX1JF REVGSU5FRA0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtSWQgPSBGb3JtSWQNCg0KKyAgICAg ICAgQ0lmckZvcm1JZC5NYXJrRm9ybUlkVXNlZChGb3JtSWQpDQoNCisgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIFNldEZvcm1U aXRsZShzZWxmLCBGb3JtVGl0bGUpOg0KDQorICAgICAgICBzZWxmLl9fRm9ybS5Gb3JtVGl0bGUg PSBGb3JtVGl0bGUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICBy ZXR1cm4gc2VsZi5fX0Zvcm0NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRm9ybU1hcChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAg ICAgICBzZWxmLl9fRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KDQorICAgICAgICBzZWxm Ll9fTWV0aG9kTWFwTGlzdCA9IFtdICAjIEVGSV9JRlJfRk9STV9NQVBfTUVUSE9EKCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Gb3JtTWFwLkhlYWRlciwg RUZJX0lGUl9GT1JNX01BUF9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0Zvcm1NYXAuRm9ybUlkID0g MA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KDQorICAgICAgICBp ZiBGb3JtSWQgPT0gMDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCg0KKw0KDQorICAgICAgICBpZiBDSWZyRm9ybUlkLkNo ZWNrRm9ybUlkRnJlZShGb3JtSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEDQoNCisgICAgICAgIHNlbGYu X19Gb3JtTWFwLkZvcm1JZCA9IEZvcm1JZA0KDQorICAgICAgICBDSWZyRm9ybUlkLk1hcmtGb3Jt SWRVc2VkKEZvcm1JZCkNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybU1hcE1ldGhvZChzZWxmLCBNZXRob2RU aXRsZSwgTWV0aG9kR3VpZDogRUZJX0dVSUQpOg0KDQorICAgICAgICBNZXRob2RNYXAgPSBFRklf SUZSX0ZPUk1fTUFQX01FVEhPRCgpDQoNCisgICAgICAgIE1ldGhvZE1hcC5NZXRob2RUaXRsZSA9 IE1ldGhvZFRpdGxlDQoNCisgICAgICAgIE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyID0gTWV0 aG9kR3VpZA0KDQorICAgICAgICBzZWxmLl9fTWV0aG9kTWFwTGlzdC5hcHBlbmQoTWV0aG9kTWFw KQ0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fRm9ybU1hcCwgc2VsZi5fX01ldGhvZE1hcExpc3QNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZy RW5kKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgKToNCg0KKyAgICAgICAgc2VsZi5fX0VuZCA9IEVGSV9JRlJfRU5EKCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19FbmQuSGVhZGVyLCBFRklfSUZSX0VO RF9PUCkNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQmFubmVyKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5f X0Jhbm5lciA9IEVGSV9JRlJfR1VJRF9CQU5ORVIoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX0Jhbm5lci5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlE X0JBTk5FUikpDQoNCisgICAgICAgIHNlbGYuX19CYW5uZXIuRXh0ZW5kT3BDb2RlID0gRUZJX0lG Ul9FWFRFTkRfT1BfQkFOTkVSDQoNCisgICAgICAgIHNlbGYuX19CYW5uZXIuR3VpZCA9IEVGSV9J RlJfVElBTk9fR1VJRA0KDQorDQoNCisgICAgZGVmIFNldFRpdGxlKHNlbGYsIFN0cmluZ0lkKToN Cg0KKyAgICAgICAgc2VsZi5fX0Jhbm5lci5UaXRsZSA9IFN0cmluZ0lkDQoNCisNCg0KKyAgICBk ZWYgU2V0TGluZShzZWxmLCBMaW5lKToNCg0KKyAgICAgICAgc2VsZi5fX0Jhbm5lci5MaW5lTnVt YmVyID0gTGluZQ0KDQorDQoNCisgICAgZGVmIFNldEFsaWduKHNlbGYsIEFsaWduKToNCg0KKyAg ICAgICAgc2VsZi5fX0Jhbm5lci5BbGlnbm1lbnQgPSBBbGlnbg0KDQorDQoNCisgICAgZGVmIEdl dEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fQmFubmVyDQoNCisNCg0KKw0K DQorY2xhc3MgQ0lmclRpbWVvdXQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBUaW1lb3V0PTApOg0KDQorICAgICAgICBzZWxmLl9fVGltZW91 dCA9IEVGSV9JRlJfR1VJRF9USU1FT1VUKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19UaW1lb3V0LkhlYWRlciwgRUZJX0lGUl9HVUlEX09QLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dVSURfVElN RU9VVCkpDQoNCisgICAgICAgIHNlbGYuX19UaW1lb3V0LkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJf RVhURU5EX09QX1RJTUVPVVQNCg0KKyAgICAgICAgc2VsZi5fX1RpbWVvdXQuR3VpZCA9IEVGSV9J RlJfVElBTk9fR1VJRA0KDQorICAgICAgICBzZWxmLl9fVGltZW91dC5UaW1lT3V0ID0gVGltZW91 dA0KDQorDQoNCisgICAgZGVmIFNldFRpbWVvdXQoc2VsZiwgVGltZW91dCk6DQoNCisgICAgICAg IHNlbGYuX19UaW1lb3V0LlRpbWVPdXQgPSBUaW1lb3V0DQoNCisNCg0KKyAgICBkZWYgR2V0SW5m byhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19UaW1lb3V0DQoNCisNCg0KKw0KDQor Y2xhc3MgQ0lmckxhYmVsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYg X19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5fX0xhYmVsID0gRUZJX0lGUl9HVUlE X0xBQkVMKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19M YWJlbC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eXBlcy5zaXplb2YoRUZJX0lGUl9HVUlEX0xBQkVMKSkNCg0KKyAgICAgICAgc2Vs Zi5fX0xhYmVsLkV4dGVuZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX0xBQkVMDQoNCisgICAg ICAgIHNlbGYuX19MYWJlbC5HdWlkID0gRUZJX0lGUl9USUFOT19HVUlEDQoNCisNCg0KKyAgICBk ZWYgU2V0TnVtYmVyKHNlbGYsIE51bWJlcik6DQoNCisgICAgICAgIHNlbGYuX19MYWJlbC5OdW1i ZXIgPSBOdW1iZXINCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICBy ZXR1cm4gc2VsZi5fX0xhYmVsDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJ1bGUoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAg ICAgICBzZWxmLl9fUnVsZSA9IEVGSV9JRlJfUlVMRSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUnVsZS5IZWFkZXIsIEVGSV9JRlJfUlVMRV9PUCkNCg0K KyAgICAgICAgc2VsZi5fX1J1bGUuUnVsZUlkID0gRUZJX1JVTEVfSURfSU5WQUxJRA0KDQorDQoN CisgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KDQorICAgICAgICBzZWxmLl9fUnVs ZS5SdWxlSWQgPSBSdWxlSWQNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX1J1bGUNCg0KKw0KDQorDQoNCitkZWYgX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoRmxhZ3MsIE1hc2spOg0KDQorDQoNCisgICAgUmV0ID0gRmxhZ3MgJiBNYXNrDQoNCisg ICAgRmxhZ3MgJj0gKH5NYXNrKQ0KDQorICAgIHJldHVybiBGbGFncywgUmV0DQoNCisNCg0KKw0K DQorZGVmIF9GTEFHX0NMRUFSKEZsYWdzLCBNYXNrKToNCg0KKw0KDQorICAgIEZsYWdzICY9ICh+ TWFzaykNCg0KKyAgICByZXR1cm4gRmxhZ3MNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyU3VidGl0 bGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyU3RhdGVtZW50SGVhZGVyKToNCg0KKw0KDQor ICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fU3VidGl0bGUgPSBF RklfSUZSX1NVQlRJVExFKCkNCg0KKw0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5fX1N1YnRpdGxlLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9JRlJfU1VCVElUTEVfT1ApDQoNCisgICAgICAgIENJZnJTdGF0ZW1lbnRIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRpdGxlLlN0YXRlbWVudCkNCg0KKw0KDQorICAg ICAgICBzZWxmLl9fU3VidGl0bGUuRmxhZ3MgPSAwDQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Mo c2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBGbGFncywgUmVzdWx0ID0gX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCkNCg0KKyAgICAgICAgaWYgUmVz dWx0Og0KDQorICAgICAgICAgICAgc2VsZi5fX1N1YnRpdGxlLkZsYWdzIHw9IEVGSV9JRlJfRkxB R1NfSE9SSVpPTlRBTA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUyBpZiBGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0ZMQUdTX1VOU1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAg ICAgICAgcmV0dXJuIHNlbGYuX19TdWJ0aXRsZQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJJbWFn ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYs ICk6DQoNCisgICAgICAgIHNlbGYuX19JbWFnZSA9IEVGSV9JRlJfSU1BR0UoKQ0KDQorICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0ltYWdlLkhlYWRlciwgRUZJX0lG Ul9JTUFHRV9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0ltYWdlLklkID0gRUZJX0lNQUdFX0lEX0lO VkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXRJbWFnZUlkKHNlbGYsIEltYWdlSWQpOg0KDQorICAg ICAgICBzZWxmLl9fSW1hZ2UuSWQgPSBJbWFnZUlkDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhz ZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19JbWFnZQ0KDQorDQoNCisNCg0KK2NsYXNz IENJZnJMb2NrZWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2lu aXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fTG9jayA9IEVGSV9JRlJfTE9DS0VEKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Mb2NrLkhlYWRl ciwgRUZJX0lGUl9MT0NLRURfT1ApDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck1vZGFsKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0K KyAgICAgICAgc2VsZi5fX01vZGFsID0gRUZJX0lGUl9NT0RBTF9UQUcoKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01vZGFsLkhlYWRlciwgRUZJX0lGUl9N T0RBTF9UQUdfT1ApDQoNCisNCg0KKw0KDQorRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFVTFQg PSAwDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclF1ZXN0aW9uSGVhZGVyKENJZnJTdGF0ZW1lbnRI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHFIZWFkZXIsIEZsYWdzPUVG SV9JRlJfUVVFU1RJT05fRkxBR19ERUZBVUxUKToNCg0KKw0KDQorICAgICAgICBzZWxmLl9fcUhl YWRlciA9IHFIZWFkZXINCg0KKyAgICAgICAgQ0lmclN0YXRlbWVudEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fcUhlYWRlci5IZWFkZXIpDQoNCisgICAgICAgIHNlbGYuX19xSGVhZGVyLlF1 ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fcUhl YWRlci5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAgICAgc2Vs Zi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck5hbWUgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQN Cg0KKyAgICAgICAgc2VsZi5fX3FIZWFkZXIuVmFyU3RvcmVJbmZvLlZhck9mZnNldCA9IEVGSV9W QVJPRkZTRVRfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFncyA9IEZsYWdz DQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb25JZChzZWxmKToNCg0KKyAgICAgICAgcmV0dXJu IHNlbGYuX19xSGVhZGVyLlF1ZXN0aW9uSWQNCg0KKw0KDQorICAgIGRlZiBTZXRRdWVzdGlvbklk KHNlbGYsIFF1ZXN0aW9uSWQpOg0KDQorDQoNCisgICAgICAgIHNlbGYuX19xSGVhZGVyLlF1ZXN0 aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAgICBkZWYgR2V0VmFyU3RvcmVJZChzZWxmKToN Cg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSWQNCg0KKw0KDQorICAg IGRlZiBTZXRWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm8pOg0KDQorDQoNCisgICAgICAgIHNl bGYuX19xSGVhZGVyLlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQoNCisgICAgICAg IHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5WYXJOYW1lID0gQmFzZUluZm8uSW5mby5WYXJO YW1lDQoNCisgICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5WYXJPZmZzZXQgPSBC YXNlSW5mby5JbmZvLlZhck9mZnNldA0KDQorDQoNCisgICAgZGVmIEdldFZhclN0b3JlSW5mbyhz ZWxmLCBJbmZvKTogICMgQnVnDQoNCisNCg0KKyAgICAgICAgSW5mby5WYXJTdG9yZUlkID0gc2Vs Zi5fX3FIZWFkZXIuVmFyU3RvcmVJZA0KDQorICAgICAgICBJbmZvLlZhclN0b3JlSW5mbyA9IHNl bGYuX19xSGVhZGVyLlZhclN0b3JlSW5mbw0KDQorICAgICAgICByZXR1cm4gSW5mbw0KDQorDQoN CisgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX3FIZWFk ZXIuRmxhZ3MNCg0KKw0KDQorICAgIGRlZiBTZXRGbGFncyhzZWxmLCBGbGFncyk6DQoNCisNCg0K KyAgICAgICAgRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLCBFRklfSUZS X0ZMQUdfUkVBRF9PTkxZKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxm Ll9fcUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfUkVBRF9PTkxZDQoNCisNCg0KKyAgICAg ICAgRmxhZ3MgPSBfRkxBR19DTEVBUihGbGFncywgMHgwMikNCg0KKw0KDQorICAgICAgICBGbGFn cywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIEVGSV9JRlJfRkxBR19DQUxMQkFD SykNCg0KKyAgICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX3FIZWFkZXIuRmxh Z3MgfD0gRUZJX0lGUl9GTEFHX0NBTExCQUNLDQoNCisNCg0KKyAgICAgICAgIyBpZ25vcmUgTlZB Y2Nlc3NGbGFnDQoNCisgICAgICAgIEZsYWdzID0gX0ZMQUdfQ0xFQVIoRmxhZ3MsIDB4MDgpDQoN CisNCg0KKyAgICAgICAgRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLCBF RklfSUZSX0ZMQUdfUkVTRVRfUkVRVUlSRUQpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAg ICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRVNFVF9SRVFVSVJF RA0KDQorDQoNCisgICAgICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFn cywNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf RkxBR19SRUNPTk5FQ1RfUkVRVUlSRUQpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAg ICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19SRUNPTk5FQ1RfUkVRVUlS RUQNCg0KKw0KDQorICAgICAgICAjIFNldCBMYXRlQ2hlY2sgRmxhZyB0byBjb21wYXRpYmxlIGZv ciBmcmFtZXdvcmsgZmxhZw0KDQorICAgICAgICAjIGJ1dCBpdCB1c2VzIDB4MjAgYXMgaXRzIGZs YWcsIGlmIGluIHRoZSBmdXR1cmUgVUVGSSBtYXkgdGFrZSB0aGlzIGZsYWcNCg0KKw0KDQorICAg ICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIDB4MjApDQoNCisg ICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IDB4 MjANCg0KKw0KDQorICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxh Z3MsIEVGSV9JRlJfRkxBR19PUFRJT05TX09OTFkpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAg ICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19PUFRJT05TX09O TFkNCg0KKw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MgaWYgRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNV UFBPUlRFRA0KDQorDQoNCisgICAgZGVmIFVwZGF0ZUNJZnJRdWVzdGlvbkhlYWRlcihzZWxmLCBx SGVhZGVyKToNCg0KKyAgICAgICAgc2VsZi5fX3FIZWFkZXIgPSBxSGVhZGVyDQoNCisNCg0KKw0K DQorY2xhc3MgQ0lmclJlZihDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCg0KKyAgICAgICAgc2VsZi5f X1JlZiA9IEVGSV9JRlJfUkVGKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19SZWYuSGVhZGVyLCBFRklfSUZSX1JFRl9PUCkNCg0KKyAgICAgICAgQ0lmclF1 ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWYuUXVlc3Rpb24pDQoNCisgICAg ICAgIHNlbGYuX19SZWYuRm9ybUlkID0gMA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxm LCBGb3JtSWQpOg0KDQorICAgICAgICBzZWxmLl9fUmVmLkZvcm1JZCA9IEZvcm1JZA0KDQorDQoN CisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUmVmDQoN CisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVl c3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQoNCisgICAg ICAgIHNlbGYuX19SZWYyID0gRUZJX0lGUl9SRUYyKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWYyLkhlYWRlciwgRUZJX0lGUl9SRUZfT1ApDQoNCisg ICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmMi5RdWVz dGlvbikNCg0KKyAgICAgICAgc2VsZi5fX1JlZjIuRm9ybUlkID0gMA0KDQorICAgICAgICBzZWxm Ll9fUmVmMi5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCg0KKw0KDQorICAg IGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCg0KKyAgICAgICAgc2VsZi5fX1JlZjIuRm9y bUlkID0gRm9ybUlkDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlv bklkKToNCg0KKw0KDQorICAgICAgICBzZWxmLl9fUmVmMi5RdWVzdGlvbklkID0gUXVlc3Rpb25J ZA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fUmVmMg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWYzKENJZnJPYmosIENJZnJPcEhlYWRl ciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAp Og0KDQorICAgICAgICBzZWxmLl9fUmVmMyA9IEVGSV9JRlJfUkVGMygpDQoNCisgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmMy5IZWFkZXIsIEVGSV9JRlJfUkVG X09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X1JlZjMuUXVlc3Rpb24pDQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1JZCA9IDANCg0KKyAg ICAgICAgc2VsZi5fX1JlZjMuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQoN CisgICAgICAgIEVGSV9JRlJfREVGQVVMVF9HVUlEID0gRUZJX0dVSUQoMCwgMCwgMCwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlkQXJyYXkoMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCkpDQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1TZXRJZCA9IEVGSV9J RlJfREVGQVVMVF9HVUlEDQoNCisNCg0KKyAgICBkZWYgU2V0Rm9ybUlkKHNlbGYsIEZvcm1JZCk6 DQoNCisgICAgICAgIHNlbGYuX19SZWYzLkZvcm1JZCA9IEZvcm1JZA0KDQorDQoNCisgICAgZGVm IFNldFF1ZXN0aW9uSWQoc2VsZiwgUXVlc3Rpb25JZCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi5f X1JlZjMuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKw0KDQorICAgIGRlZiBTZXRGb3JtU2V0 SWQoc2VsZiwgRm9ybVNldElkKToNCg0KKyAgICAgICAgc2VsZi5fX1JlZjMuRm9ybVNldElkID0g Rm9ybVNldElkDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19SZWYzDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjQoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQoNCisgICAgICAgIHNlbGYuX19SZWY0ID0gRUZJX0lGUl9SRUY0KCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY0LkhlYWRlciwgRUZJ X0lGUl9SRUZfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fUmVmNC5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRm9ybUlkID0g MA0KDQorICAgICAgICBzZWxmLl9fUmVmNC5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lO VkFMSUQNCg0KKyAgICAgICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAwLCAw LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgw LCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRm9ybVNldElk ID0gRUZJX0lGUl9ERUZBVUxUX0dVSUQNCg0KKyAgICAgICAgc2VsZi5fX1JlZjQuRGV2aWNlUGF0 aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIFNldEZvcm1JZChzZWxm LCBGb3JtSWQpOg0KDQorICAgICAgICBzZWxmLl9fUmVmNC5Gb3JtSWQgPSBGb3JtSWQNCg0KKw0K DQorICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KDQorDQoNCisgICAg ICAgIHNlbGYuX19SZWY0LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAgICBkZWYg U2V0Rm9ybVNldElkKHNlbGYsIEZvcm1TZXRJZCk6DQoNCisgICAgICAgIHNlbGYuX19SZWY0LkZv cm1TZXRJZCA9IEZvcm1TZXRJZA0KDQorDQoNCisgICAgZGVmIFNldERldmljZVBhdGgoc2VsZiwg RGV2aWNlUGF0aCk6DQoNCisgICAgICAgIHNlbGYuX19SZWY0LkRldmljZVBhdGggPSBEZXZpY2VQ YXRoDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19SZWY0DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlZjUoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYs ICk6DQoNCisgICAgICAgIHNlbGYuX19SZWY1ID0gRUZJX0lGUl9SRUY1KCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY1LkhlYWRlciwgRUZJX0lGUl9S RUZfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fUmVmNS5RdWVzdGlvbikNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi5fX1JlZjUNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQWN0aW9uKENJ ZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCg0KKw0KDQorICAgIGRl ZiBfX2luaXRfXyhzZWxmLCApOg0KDQorICAgICAgICBzZWxmLl9fQWN0aW9uID0gRUZJX0lGUl9B Q1RJT04oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Fj dGlvbi5IZWFkZXIsIEVGSV9JRlJfQUNUSU9OX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25I ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbikNCg0KKyAgICAgICAg c2VsZi5fX0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQor DQoNCisgICAgZGVmIFNldFF1ZXN0aW9uQ29uZmlnKHNlbGYsIFF1ZXN0aW9uQ29uZmlnKToNCg0K KyAgICAgICAgc2VsZi5fX0FjdGlvbi5RdWVzdGlvbkNvbmZpZyA9IFF1ZXN0aW9uQ29uZmlnDQoN CisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19B Y3Rpb24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVGV4dChDSWZyT2JqLCBDSWZyT3BIZWFkZXIs IENJZnJTdGF0ZW1lbnRIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6 DQoNCisgICAgICAgIHNlbGYuX19UZXh0ID0gRUZJX0lGUl9URVhUKCkNCg0KKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UZXh0LkhlYWRlciwgRUZJX0lGUl9URVhU X09QKQ0KDQorICAgICAgICBDSWZyU3RhdGVtZW50SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19UZXh0LlN0YXRlbWVudCkNCg0KKyAgICAgICAgc2VsZi5fX1RleHQuVGV4dFR3byA9IEVGSV9T VFJJTkdfSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIFNldFRleHRUd28oc2VsZiwgU3RyaW5n SWQpOg0KDQorICAgICAgICBzZWxmLl9fVGV4dC5UZXh0VHdvID0gU3RyaW5nSWQNCg0KKw0KDQor ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1RleHQNCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyR3VpZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoN CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIFNpemUsIERhdGFidWZmPU5vbmUpOg0KDQorICAgICAg ICBzZWxmLl9fR3VpZCA9IEVGSV9JRlJfR1VJRCgpDQoNCisgICAgICAgIHNlbGYuX19EYXRhID0g RGF0YWJ1ZmYNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19H dWlkLkhlYWRlciwgRUZJX0lGUl9HVUlEX09QLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dVSUQpICsgU2l6ZSkNCg0KKyAgICAgICAgRUZJ X0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAwLCAwLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLCAw KSkNCg0KKyAgICAgICAgc2VsZi5fX0d1aWQuR3VpZCA9IEVGSV9JRlJfREVGQVVMVF9HVUlEDQoN CisNCg0KKyAgICBkZWYgU2V0R3VpZChzZWxmLCBHdWlkKToNCg0KKyAgICAgICAgc2VsZi5fX0d1 aWQuR3VpZCA9IEd1aWQNCg0KKw0KDQorICAgIGRlZiBTZXREYXRhKHNlbGYsIERhdGFidWZmKToN Cg0KKyAgICAgICAgc2VsZi5fX0RhdGEgPSBEYXRhYnVmZg0KDQorDQoNCisgICAgZGVmIEdldElu Zm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fR3VpZA0KDQorDQoNCisNCg0KK2Ns YXNzIENJZnJPcmRlcmVkTGlzdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhl YWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYu X19PcmRlcmVkTGlzdCA9IEVGSV9JRlJfT1JERVJFRF9MSVNUKCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PcmRlcmVkTGlzdC5IZWFkZXIsDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX09SREVSRURfTElTVF9PUCkNCg0KKyAg ICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PcmRlcmVkTGlz dC5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0Lk1heENvbnRhaW5lcnMg PSAwDQoNCisgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdC5GbGFncyA9IDANCg0KKw0KDQorICAg IGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYNCg0KKw0KDQor ICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBDSWZyUXVl c3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQoNCisNCg0KKyAgICBkZWYgU2V0TWF4 Q29udGFpbmVycyhzZWxmLCBNYXhDb250YWluZXJzKToNCg0KKyAgICAgICAgc2VsZi5fX09yZGVy ZWRMaXN0Lk1heENvbnRhaW5lcnMgPSBNYXhDb250YWluZXJzDQoNCisNCg0KKyAgICBkZWYgU2V0 RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KDQorDQoNCisgICAgICAgIFJldHVybkNvZGUg PSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KDQorICAgICAgICBp ZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxB R19URVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVU5JUVVFX1NFVCkNCg0KKyAgICAgICAg aWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0LkZsYWdzIHw9IEVGSV9J RlJfVU5JUVVFX1NFVA0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9B TkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX05PX0VNUFRZX1NFVCkNCg0KKyAgICAgICAgaWYgUmV0 Og0KDQorICAgICAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0LkZsYWdzIHw9IEVGSV9JRlJfTk9f RU1QVFlfU0VUDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZM QUdTX1VOU1VQUE9SVEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYuX19PcmRlcmVkTGlzdA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTdHJp bmcoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisg ICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fU3RyID0gRUZJX0lGUl9T VFJJTkcoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0 ci5IZWFkZXIsIEVGSV9JRlJfU1RSSU5HX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0ci5RdWVzdGlvbikNCg0KKyAgICAgICAgc2VsZi5f X1N0ci5GbGFncyA9IDANCg0KKyAgICAgICAgc2VsZi5fX1N0ci5NaW5TaXplID0gMA0KDQorICAg ICAgICBzZWxmLl9fU3RyLk1heFNpemUgPSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb24o c2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0UUhlYWRl ckZsYWdzKHNlbGYsIEZsYWdzKToNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZs YWdzKHNlbGYsIEZsYWdzKQ0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywg TEZsYWdzKToNCg0KKw0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVy LlNldEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1 cm5Db2RlDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVB UihMRmxhZ3MsIEVGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUpDQoNCisgICAgICAgIGlmIFJldDoN Cg0KKyAgICAgICAgICAgIHNlbGYuX19TdHIuRmxhZ3MgfD0gRUZJX0lGUl9TVFJJTkdfTVVMVElf TElORQ0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19V TlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIFNldE1pblNpemUoc2VsZiwgTWluU2l6ZSk6DQoN CisgICAgICAgIHNlbGYuX19TdHIuTWluU2l6ZSA9IE1pblNpemUNCg0KKw0KDQorICAgIGRlZiBT ZXRNYXhTaXplKHNlbGYsIE1heFNpemUpOg0KDQorICAgICAgICBzZWxmLl9fU3RyLk1heFNpemUg PSBNYXhTaXplDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0 dXJuIHNlbGYuX19TdHINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUGFzc3dvcmQoQ0lmck9iaiwg Q0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fUGFzc3dvcmQgPSBFRklfSUZSX1BBU1NXT1JE KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19QYXNzd29y ZC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1BBU1NX T1JEX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1Bhc3N3b3JkLlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fUGFzc3dvcmQuTWluU2l6 ZSA9IDANCg0KKyAgICAgICAgc2VsZi5fX1Bhc3N3b3JkLk1heFNpemUgPSAwDQoNCisNCg0KKyAg ICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0K KyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCg0KKyAgICAgICAgQ0lmclF1 ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KDQorDQoNCisgICAgZGVmIFNldE1p blNpemUoc2VsZiwgTWluU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuX19QYXNzd29yZC5NaW5TaXpl ID0gTWluU2l6ZQ0KDQorDQoNCisgICAgZGVmIFNldE1heFNpemUoc2VsZiwgTWF4U2l6ZSk6DQoN CisgICAgICAgIHNlbGYuX19QYXNzd29yZC5NYXhTaXplID0gTWF4U2l6ZQ0KDQorDQoNCisgICAg ZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUGFzc3dvcmQNCg0K Kw0KDQorDQoNCitjbGFzcyBDSWZyRGVmYXVsdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIFNpemUsDQoN CisgICAgICAgICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRB UkQsDQoNCisgICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KDQorICAg ICAgICAgICAgICAgICBWYWx1ZT1FRklfSUZSX1RZUEVfVkFMVUUoKSk6DQoNCisgICAgICAgIHNl bGYuX19EZWZhdWx0ID0gRUZJX0lGUl9ERUZBVUxUKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19EZWZhdWx0LkhlYWRlciwgRUZJX0lGUl9ERUZBVUxUX09Q LA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkNCg0KKyAgICAgICAgc2Vs Zi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVs dElkID0gRGVmYXVsdElkDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LlZhbHVlID0gVmFsdWUN Cg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVmYXVsdElkKToNCg0KKyAgICAg ICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElkDQoNCisNCg0KKyAgICBkZWYg U2V0VHlwZShzZWxmLCBUeXBlKToNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5 cGUNCg0KKw0KDQorICAgIGRlZiBTZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQoNCisgICAgICAgIHNl bGYuX19EZWZhdWx0LlZhbHVlID0gVmFsdWUNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYp Og0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHQNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyRGVmYXVsdDMoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2lu aXRfXyhzZWxmLA0KDQorICAgICAgICAgICAgICAgICBTaXplLA0KDQorICAgICAgICAgICAgICAg ICBOdW1zLA0KDQorICAgICAgICAgICAgICAgICBWYWx1ZVR5cGUsDQoNCisgICAgICAgICAgICAg ICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsDQoNCisgICAgICAg ICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KDQorICAgICAgICAgICAgICAgICBW YWx1ZUxpc3Q9W10pOg0KDQorICAgICAgICBIZWFkZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQoN CisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBIZWFkZXIsIEVGSV9JRlJfREVG QVVMVF9PUCwgU2l6ZSkNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBSZWZpbmVfRUZJX0lG Ul9ERUZBVUxUKE51bXMpDQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LkhlYWRlciA9IEhlYWRl cg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdC5UeXBlID0gVHlwZQ0KDQorICAgICAgICBzZWxm Ll9fRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCg0KKyAgICAgICAgc2VsZi5fX1ZhbHVl VHlwZSA9IFZhbHVlVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIFZhbHVlTGlzdCAhPSBbXToNCg0K KyAgICAgICAgICAgIEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQRV9WQUxVRSAqIE51bXMNCg0KKyAg ICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KDQorICAgICAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KDQorICAgICAgICAgICAgICAgIFZhbHVlQXJy YXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgICAgIHNlbGYuX19EZWZhdWx0LlZhbHVl ID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIFNldERlZmF1bHRJZChzZWxmLCBEZWZhdWx0 SWQpOg0KDQorICAgICAgICBzZWxmLl9fRGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCg0K Kw0KDQorICAgIGRlZiBHZXRWYWx1ZVR5cGUoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fVmFsdWVUeXBlDQoNCisNCg0KKyAgICBkZWYgU2V0VHlwZShzZWxmLCBUeXBlKToNCg0KKyAg ICAgICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCg0KKw0KDQorICAgIGRlZiBTZXRWYWx1 ZShzZWxmLCBWYWx1ZUxpc3QpOg0KDQorICAgICAgICBBcnJheVR5cGUgPSBFRklfSUZSX1RZUEVf VkFMVUUgKiAobGVuKFZhbHVlTGlzdCkpDQoNCisgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5 cGUoKQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQoNCisg ICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQoNCisgICAgICAgIHNlbGYu X19EZWZhdWx0LlZhbHVlID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fRGVmYXVsdA0KDQorDQoNCisNCg0KK2NsYXNz IENJZnJEZWZhdWx0MihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9f aW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFV TFRfQ0xBU1NfU1RBTkRBUkQsDQoNCisgICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBF X09USEVSKToNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBFRklfSUZSX0RFRkFVTFRfMigp DQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGVmYXVsdC5I ZWFkZXIsIEVGSV9JRlJfREVGQVVMVF9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVHlw ZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElkID0gRGVmYXVsdElk DQoNCisNCg0KKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQoNCisgICAg ICAgIHNlbGYuX19EZWZhdWx0LkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KDQorDQoNCisgICAgZGVm IFNldFR5cGUoc2VsZiwgVHlwZSk6DQoNCisgICAgICAgIHNlbGYuX19EZWZhdWx0LlR5cGUgPSBU eXBlDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19EZWZhdWx0DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckluY29uc2lzdGVudElmKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisg ICAgICAgIHNlbGYuX19JbmNvbnNpc3RlbnRJZiA9IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19JbmNvbnNpc3Rl bnRJZi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0lO Q09OU0lTVEVOVF9JRl9PUCkNCg0KKyAgICAgICAgc2VsZi5fX0luY29uc2lzdGVudElmLkVycm9y ID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0RXJyb3Ioc2VsZiwg RXJyb3IpOg0KDQorICAgICAgICBzZWxmLl9fSW5jb25zaXN0ZW50SWYuRXJyb3IgPSBFcnJvcg0K DQorDQoNCisNCg0KK2NsYXNzIENJZnJOb1N1Ym1pdElmKENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19Ob1N1 Ym1pdElmID0gRUZJX0lGUl9OT19TVUJNSVRfSUYoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX05vU3VibWl0SWYuSGVhZGVyLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0lGUl9OT19TVUJNSVRfSUZfT1ApDQoNCisgICAgICAgIHNl bGYuX19Ob1N1Ym1pdElmLkVycm9yID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAg ICBkZWYgU2V0RXJyb3Ioc2VsZiwgRXJyb3IpOg0KDQorICAgICAgICBzZWxmLl9fTm9TdWJtaXRJ Zi5FcnJvciA9IEVycm9yDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckRpc2FibGVJZihDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAg ICAgICBzZWxmLl9fRGlzYWJsZUlmID0gRUZJX0lGUl9ESVNBQkxFX0lGKCkNCg0KKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EaXNhYmxlSWYuSGVhZGVyLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9ESVNBQkxFX0lGX09QKQ0KDQor DQoNCisNCg0KK2NsYXNzIENJZnJTdXBwcmVzc0lmKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoN CisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19TdXBwcmVz c0lmID0gRUZJX0lGUl9TVVBQUkVTU19JRigpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fU3VwcHJlc3NJZi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KDQorDQoNCisNCg0KK2NsYXNz IENJZnJHcmF5T3V0SWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBf X2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX0dyYXlPdXRJZiA9IEVGSV9JRlJfR1JB WV9PVVRfSUYoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0dyYXlPdXRJZi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf SUZSX0dSQVlfT1VUX0lGX09QKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJWYWx1ZShDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAg ICAgICBzZWxmLl9fVmFsdWUgPSBFRklfSUZSX1ZBTFVFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYWx1ZS5IZWFkZXIsIEVGSV9JRlJfVkFMVUVfT1Ap DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclJlYWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0K Kw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1JlYWQgPSBF RklfSUZSX1JFQUQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1JlYWQuSGVhZGVyLCBFRklfSUZSX1JFQURfT1ApDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lm cldyaXRlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZik6DQoNCisgICAgICAgIHNlbGYuX19Xcml0ZSA9IEVGSV9JRlJfV1JJVEUoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dyaXRlLkhlYWRlciwgRUZJ X0lGUl9XUklURV9PUCkNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyV2FybmluZ0lmKENJZnJPYmos IENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAg ICAgIHNlbGYuX19XYXJuaW5nSWYgPSBFRklfSUZSX1dBUk5JTkdfSUYoKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dhcm5pbmdJZi5IZWFkZXIsDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1dBUk5JTkdfSUZfT1ApDQoNCisg ICAgICAgIHNlbGYuX19XYXJuaW5nSWYuV2FybmluZyA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0K DQorICAgICAgICBzZWxmLl9fV2FybmluZ0lmLlRpbWVPdXQgPSAwDQoNCisNCg0KKyAgICBkZWYg U2V0V2FybmluZyhzZWxmLCBXYXJuaW5nKToNCg0KKyAgICAgICAgc2VsZi5fX1dhcm5pbmdJZi5X YXJuaW5nID0gV2FybmluZw0KDQorDQoNCisgICAgZGVmIFNldFRpbWVPdXQoc2VsZiwgVGltZU91 dCk6DQoNCisgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuVGltZU91dCA9IFRpbWVPdXQNCg0KKw0K DQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1dhcm5p bmdJZg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWZyZXNoKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19S ZWZyZXNoID0gRUZJX0lGUl9SRUZSRVNIKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19SZWZyZXNoLkhlYWRlciwgRUZJX0lGUl9SRUZSRVNIX09QKQ0KDQor ICAgICAgICBzZWxmLl9fUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSAwDQoNCisNCg0KKyAgICBk ZWYgU2V0UmVmcmVzaEludGVydmFsKHNlbGYsIFJlZnJlc2hJbnRlcnZhbCk6DQoNCisgICAgICAg IHNlbGYuX19SZWZyZXNoLlJlZnJlc2hJbnRlcnZhbCA9IFJlZnJlc2hJbnRlcnZhbA0KDQorDQoN CisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUmVmcmVz aA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJSZWZyZXNoSWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1Jl ZnJlc2hJZCA9IEVGSV9JRlJfUkVGUkVTSF9JRCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmcmVzaElkLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVGSV9JRlJfUkVGUkVTSF9JRF9PUCkNCg0KKyAgICAgICAgc2VsZi5f X1JlZnJlc2hJZC5SZWZyZXNoRXZlbnRHcm91cElkID0gRUZJX0dVSUQoDQoNCisgICAgICAgICAg ICAwLCAwLCAwLCBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpDQoNCisNCg0KKyAg ICBkZWYgU2V0UmVmcmVzaEV2ZW50R3JvdXRJZChzZWxmLCBSZWZyZXNoRXZlbnRHcm91cElkKToN Cg0KKyAgICAgICAgc2VsZi5fX1JlZnJlc2hJZC5SZWZyZXNoRXZlbnRHcm91cElkID0gUmVmcmVz aEV2ZW50R3JvdXBJZA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmLl9fUmVmcmVzaElkDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclZhclN0b3Jl RGV2aWNlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZik6DQoNCisgICAgICAgIHNlbGYuX19WYXJTdG9yZURldmljZSA9IEVGSV9JRlJfVkFSU1RP UkVfREVWSUNFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19WYXJTdG9yZURldmljZS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCkNCg0KKyAgICAgICAgc2VsZi5fX1ZhclN0b3Jl RGV2aWNlLkRldmljZVBhdGggPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRl ZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgpOg0KDQorICAgICAgICBzZWxmLl9fVmFy U3RvcmVEZXZpY2UuRGV2aWNlUGF0aCA9IERldmljZVBhdGgNCg0KKw0KDQorICAgIGRlZiBHZXRJ bmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZhclN0b3JlRGV2aWNlDQoNCisN Cg0KKw0KDQorY2xhc3MgQ0lmckRhdGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rp b25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBz ZWxmLl9fRGF0ZSA9IEVGSV9JRlJfREFURSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fRGF0ZS5IZWFkZXIsIEVGSV9JRlJfREFURV9PUCkNCg0KKyAgICAg ICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EYXRlLlF1ZXN0aW9u KQ0KDQorICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyA9IDANCg0KKw0KDQorICAgIGRlZiBTZXRG bGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQoNCisNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9 IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQoNCisgICAgICAgIGlm IFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAg ICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0g X0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfUUZfREFURV9ZRUFSX1NVUFBSRVNTKQ0K DQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBF RklfUUZfREFURV9ZRUFSX1NVUFBSRVNTDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBf RkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsIEVGSV9RRl9EQVRFX01PTlRIX1NVUFBSRVNTKQ0K DQorICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBF RklfUUZfREFURV9NT05USF9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0g X0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfUUZfREFURV9EQVlfU1VQUFJFU1MpDQoN CisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9IEVG SV9RRl9EQVRFX0RBWV9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZM QUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9EQVRFX1NUT1JBR0VfTk9STUFMKQ0KDQorICAg ICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRF X1NUT1JBR0VfTk9STUFMDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNU X0FORF9DTEVBUihMRmxhZ3MsIFFGX0RBVEVfU1RPUkFHRV9USU1FKQ0KDQorICAgICAgICBpZiBS ZXQ6DQoNCisgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NUT1JBR0Vf VElNRQ0KDQorDQoNCisgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIo TEZsYWdzLCBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisg ICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NUT1JBR0VfV0FLRVVQDQoN CisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlm IExGbGFncyA9PSAwIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9S VEVEDQoNCisNCg0KKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYuX19EYXRlDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclRpbWUoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYp Og0KDQorICAgICAgICBzZWxmLl9fVGltZSA9IEVGSV9JRlJfVElNRSgpDQoNCisgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVGltZS5IZWFkZXIsIEVGSV9JRlJfVElN RV9PUCkNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19UaW1lLlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fVGltZS5GbGFncyA9IDANCg0KKw0K DQorICAgIGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQoNCisNCg0KKyAgICAg ICAgUmV0dXJuQ29kZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3Mp DQoNCisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAg IExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9USU1FX0hPVVJf U1VQUFJFU1MpDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1l LkZsYWdzIHw9IFFGX1RJTUVfSE9VUl9TVVBQUkVTUw0KDQorDQoNCisgICAgICAgIExGbGFncywg UmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBRRl9USU1FX01JTlVURV9TVVBQUkVT UykNCg0KKyAgICAgICAgaWYgUmV0Og0KDQorICAgICAgICAgICAgc2VsZi5fX1RpbWUuRmxhZ3Mg fD0gUUZfVElNRV9NSU5VVEVfU1VQUFJFU1MNCg0KKw0KDQorICAgICAgICBMRmxhZ3MsIFJldCA9 IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywgUUZfVElNRV9TRUNPTkRfU1VQUFJFU1MpDQoN CisgICAgICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFG X1RJTUVfU0VDT05EX1NVUFBSRVNTDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxB R19URVNUX0FORF9DTEVBUihMRmxhZ3MsIFFGX1RJTUVfU1RPUkFHRV9OT1JNQUwpDQoNCisgICAg ICAgIGlmIFJldDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVf U1RPUkFHRV9OT1JNQUwNCg0KKw0KDQorICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1Rf QU5EX0NMRUFSKExGbGFncywgUUZfVElNRV9TVE9SQUdFX1RJTUUpDQoNCisgICAgICAgIGlmIFJl dDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9U SU1FDQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihM RmxhZ3MsIFFGX1RJTUVfU1RPUkFHRV9XQUtFVVApDQoNCisgICAgICAgIGlmIFJldDoNCg0KKyAg ICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9XQUtFVVANCg0K Kw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MgaWYg TEZsYWdzID09IDAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JU RUQNCg0KKw0KDQorICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2Vs Zi5fX1RpbWUNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTnVtZXJpYyhDSWZyT2JqLCBDSWZyT3BI ZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgIENJZnJNaW5N YXhTdGVwRGF0YSk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAg IHNlbGYuX19OdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkgICMgZGF0YQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX051bWVyaWMuSGVhZGVyLCBFRklfSUZS X05VTUVSSUNfT1ApDQoNCisgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fTnVtZXJpYy5RdWVzdGlvbikNCg0KKyAgICAgICAgQ0lmck1pbk1heFN0ZXBEYXRh Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19OdW1lcmljLkRhdGEsIFRydWUpDQoNCisgICAgICAgIHNl bGYuX19OdW1lcmljLkZsYWdzID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMSB8IEVGSV9JRlJfRElT UExBWV9VSU5UX0RFQw0KDQorDQoNCisgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZg0KDQorDQoNCisgICAgZGVmIEdldE1pbk1heERhdGEoc2VsZik6DQoN CisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNl bGYsIEZsYWdzKToNCg0KKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYs IEZsYWdzKQ0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdzLCBE aXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KDQorICAgICAgICBSZXR1cm5Db2RlID0g Q0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYg UmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAg ICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQoNCisgICAgICAgIGlmIERpc3BsYXlTZXR0aW5nc1Nw ZWNpZmllZCA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0g TEZsYWdzIHwgRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDDQoNCisgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICBzZWxmLl9fTnVtZXJpYy5GbGFncyA9IExGbGFncw0KDQorICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBTZXRG bGFnc0ZvckJpdEZpZWxkKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEZs YWdzLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExGbGFncywNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KDQor ICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhG bGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQoNCisgICAgICAg IGlmIERpc3BsYXlTZXR0aW5nc1NwZWNpZmllZCA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgIHNl bGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNf QklUDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBzZWxmLl9fTnVtZXJpYy5GbGFn cyA9IExGbGFncw0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXROdW1lcmljRmxhZ3Moc2VsZik6DQoNCisgICAgICAg IHJldHVybiBzZWxmLl9fTnVtZXJpYy5GbGFncw0KDQorDQoNCisgICAgZGVmIFNocmlua0JpblNp emUoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAgIHNlbGYuU2hyaW5rQmluU2l6ZShTaXplKQ0KDQor ICAgICAgICBzZWxmLkRlY0xlbmd0aChTaXplKQ0KDQorICAgICAgICAjICBfRU1JVF9QRU5ESU5H X09CSigpOw0KDQorICAgICAgICBOdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkNCg0KKyAgICAg ICAgc2VsZi5VcGRhdGVIZWFkZXIoTnVtZXJpYy5IZWFkZXIpDQoNCisNCg0KKyAgICBkZWYgR2V0 SW5mbyhzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19OdW1lcmljDQoNCisNCg0KKw0K DQorY2xhc3MgQ0lmck9uZU9mKA0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIsDQoNCisg ICAgICAgIENJZnJPYmosDQoNCisgICAgICAgIENJZnJPcEhlYWRlciwNCg0KKyk6DQoNCisNCg0K KyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNlbGYuX19PbmVPZiA9IEVGSV9J RlJfT05FX09GKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19PbmVPZi5IZWFkZXIsIEVGSV9JRlJfT05FX09GX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rp b25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09uZU9mLlF1ZXN0aW9uKQ0KDQorICAgICAg ICBzZWxmLl9fT25lT2YuRmxhZ3MgPSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb24oc2Vs Zik6DQoNCisgICAgICAgIHJldHVybiBzZWxmDQoNCisNCg0KKyAgICBkZWYgR2V0TWluTWF4RGF0 YShzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYNCg0KKw0KDQorICAgIGRlZiBTZXRRSGVh ZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0 RmxhZ3Moc2VsZiwgRmxhZ3MpDQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdz LCBMRmxhZ3MpOg0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNl dEZsYWdzKHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5D b2RlDQoNCisgICAgICAgIGlmIExGbGFncyAmIEVGSV9JRlJfRElTUExBWToNCg0KKyAgICAgICAg ICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0KDQorICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgc2VsZi5fX09uZU9mLkZsYWdzID0gTEZsYWdzIHwgRUZJX0lGUl9ESVNQTEFZX1VJ TlRfREVDDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KDQorDQoNCisgICAgZGVmIFNldEZsYWdzRm9yQml0RmllbGQoc2VsZiwgSEZsYWdzLCBMRmxh Z3MpOg0KDQorICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdz KHNlbGYsIEhGbGFncykNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQoN CisgICAgICAgIGlmIExGbGFncyAmIEVES0lJX0lGUl9ESVNQTEFZX0JJVDoNCg0KKyAgICAgICAg ICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0KDQorICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgc2VsZi5fX09uZU9mLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJU1BMQVlf VUlOVF9ERUNfQklUDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fT25lT2YNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQ2hlY2tCb3goQ0lmck9iaiwg Q0lmck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fQ2hlY2tCb3ggPSBFRklfSUZSX0NIRUNLQk9Y KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19DaGVja0Jv eC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0NIRUNL Qk9YX09QKQ0KDQorICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0NoZWNrQm94LlF1ZXN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3Mg PSAwDQoNCisNCg0KKyAgICBkZWYgR2V0UXVlc3Rpb24oc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmDQoNCisNCg0KKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCg0K KyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KDQorDQoN CisgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0NoZWNr Qm94LkZsYWdzDQoNCisNCg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZsYWdzLCBMRmxhZ3Mp Og0KDQorDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0Rmxh Z3Moc2VsZiwgSEZsYWdzKQ0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUN Cg0KKw0KDQorICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFn cywgRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUKQ0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAg ICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxU DQoNCisNCg0KKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxh Z3MsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lG Ul9DSEVDS0JPWF9ERUZBVUxUX01GRykNCg0KKw0KDQorICAgICAgICBpZiBSZXQ6DQoNCisgICAg ICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxU X01GRw0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19V TlNVUFBPUlRFRA0KDQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJl dHVybiBzZWxmLl9fQ2hlY2tCb3gNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUmVzZXRCdXR0b24o Q0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyU3RhdGVtZW50SGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2VsZi5fX1Jlc2V0QnV0dG9uID0gRUZJ X0lGUl9SRVNFVF9CVVRUT04oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX1Jlc2V0QnV0dG9uLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9JRlJfUkVTRVRfQlVUVE9OX09QKQ0KDQorICAgICAgICBDSWZyU3RhdGVtZW50 SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZXNldEJ1dHRvbi5TdGF0ZW1lbnQpDQoNCisg ICAgICAgIHNlbGYuX19SZXNldEJ1dHRvbi5EZWZhdWx0SWQgPSBFRklfSElJX0RFRkFVTFRfQ0xB U1NfU1RBTkRBUkQNCg0KKw0KDQorICAgIGRlZiBTZXREZWZhdWx0SWQoc2VsZiwgRGVmYXVsdElk KToNCg0KKyAgICAgICAgc2VsZi5fX1Jlc2V0QnV0dG9uLkRlZmF1bHRJZCA9IERlZmF1bHRJZA0K DQorDQoNCisgICAgZGVmIEdldEluZm8oc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f UmVzZXRCdXR0b24NCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyT3IoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAg ICBzZWxmLl9fT3IgPSBFRklfSUZSX09SKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19Pci5IZWFkZXIsIEVGSV9JRlJfT1JfT1ApDQoNCisgICAgICAgIHNl bGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQW5kKENJZnJPYmos IENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cg0KKyAgICAgICAgc2VsZi5fX0FuZCA9IEVGSV9JRlJfQU5EKCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19BbmQuSGVhZGVyLCBFRklfSUZSX0FORF9PUCkN Cg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJ ZnJCaXRXaXNlT3IoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fQml0V2lzZU9yID0gRUZJX0lG Ul9CSVRXSVNFX09SKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19CaXRXaXNlT3IuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RUZJX0lGUl9CSVRXSVNFX09SX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8p DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckNhdGVuYXRlKENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2Vs Zi5fX0NhdGVuYXRlID0gRUZJX0lGUl9DQVRFTkFURSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQ2F0ZW5hdGUuSGVhZGVyLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRUZJX0lGUl9DQVRFTkFURV9PUCkNCg0KKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJEaXZpZGUoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0K DQorICAgICAgICBzZWxmLl9fRGl2aWRlID0gRUZJX0lGUl9ESVZJREUoKQ0KDQorICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0RpdmlkZS5IZWFkZXIsIEVGSV9JRlJf RElWSURFX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0K DQorY2xhc3MgQ0lmckVxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0VxdWFsID0gRUZJ X0lGUl9FUVVBTCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fRXF1YWwuSGVhZGVyLCBFRklfSUZSX0VRVUFMX09QKQ0KDQorICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckdyZWF0ZXJFcXVhbChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6 DQoNCisgICAgICAgIHNlbGYuX19HcmVhdGVyRXF1YWwgPSBFRklfSUZSX0dSRUFURVJfRVFVQUwo KQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0dyZWF0ZXJF cXVhbC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0dS RUFURVJfRVFVQUxfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0K DQorDQoNCitjbGFzcyBDSWZyR3JlYXRlclRoYW4oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0K Kw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9f R3JlYXRlclRoYW4gPSBFRklfSUZSX0dSRUFURVJfVEhBTigpDQoNCisgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fR3JlYXRlclRoYW4uSGVhZGVyLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9HUkVBVEVSX1RIQU5fT1ApDQoNCisgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTGVzc0Vx dWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0xlc3NFcXVhbCA9IEVGSV9JRlJfTEVTU19F UVVBTCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTGVz c0VxdWFsLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJf TEVTU19FUVVBTF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoN CisNCg0KK2NsYXNzIENJZnJMZXNzVGhhbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoN CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19MZXNz VGhhbiA9IEVGSV9JRlJfTEVTU19USEFOKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5p dF9fKHNlbGYsIHNlbGYuX19MZXNzVGhhbi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRklfSUZSX0xFU1NfVEhBTl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJNYXAoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAg ICBzZWxmLl9fTWFwID0gRUZJX0lGUl9NQVAoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX01hcC5IZWFkZXIsIEVGSV9JRlJfTUFQX09QKQ0KDQorICAgICAg ICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck1hdGNoKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01hdGNoID0gRUZJX0lGUl9NQVRDSCgpDQoNCisgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTWF0Y2guSGVhZGVyLCBFRklf SUZSX01BVENIX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmck1hdGNoMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObywgR3VpZCk6DQoNCisgICAgICAgIHNlbGYuX19N YXRjaDIgPSBFRklfSUZSX01BVENIMigpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fTWF0Y2gyLkhlYWRlciwgRUZJX0lGUl9NQVRDSDJfT1ApDQoNCisgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAgICAgICAgc2VsZi5fX01hdGNoMi5TeW50 YXhUeXBlID0gR3VpZA0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJNdWx0aXBseShDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19NdWx0aXBseSA9IEVGSV9JRlJfTVVMVElQTFkoKQ0KDQorICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX011bHRpcGx5LkhlYWRlciwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfTVVMVElQTFlfT1ApDQoNCisg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyTW9k dWxvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01vZHVsbyA9IEVGSV9JRlJfTU9EVUxPKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Nb2R1bG8uSGVh ZGVyLCBFRklfSUZSX01PRFVMT19PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJOb3RFcXVhbChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNl bGYuX19Ob3RFcXVhbCA9IEVGSV9JRlJfTk9UX0VRVUFMKCkNCg0KKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob3RFcXVhbC5IZWFkZXIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfSUZSX05PVF9FUVVBTF9PUCkNCg0KKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTaGlmdExlZnQoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KDQorICAgICAgICBzZWxmLl9fU2hpZnRMZWZ0ID0gRUZJX0lGUl9TSElGVF9MRUZUKCkN Cg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19TaGlmdExlZnQu SGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9TSElGVF9M RUZUX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQor Y2xhc3MgQ0lmclNoaWZ0UmlnaHQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU2hpZnRSaWdo dCA9IEVGSV9JRlJfU0hJRlRfUklHSFQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5fX1NoaWZ0UmlnaHQuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX0lGUl9TSElGVF9SSUdIVF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTdWJ0cmFjdChDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19TdWJ0cmFjdCA9IEVGSV9JRlJfU1VCVFJBQ1QoKQ0KDQorICAgICAg ICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRyYWN0LkhlYWRlciwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU1VCVFJBQ1RfT1ApDQoNCisg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQ29u ZGl0aW9uYWwoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fQ29uZGl0aW9uYWwgPSBFRklfSUZS X0NPTkRJVElPTkFMKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19Db25kaXRpb25hbC5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX0NPTkRJVElPTkFMX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5l Tm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckZpbmQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToN Cg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxm Ll9fRmluZCA9IEVGSV9JRlJfRklORCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fRmluZC5IZWFkZXIsIEVGSV9JRlJfRklORF9PUCkNCg0KKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldEZvcm1hdChzZWxmLCBG b3JtYXQpOg0KDQorICAgICAgICBzZWxmLl9fRmluZC5Gb3JtYXQgPSBGb3JtYXQNCg0KKw0KDQor DQoNCitjbGFzcyBDSWZyTWlkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX01pZCA9IEVGSV9J RlJfTUlEKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19N aWQuSGVhZGVyLCBFRklfSUZSX01JRF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGlu ZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb2tlbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNl bGYuX19Ub2tlbiA9IEVGSV9JRlJfVE9LRU4oKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1Rva2VuLkhlYWRlciwgRUZJX0lGUl9UT0tFTl9PUCkNCg0KKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTcGFu KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwg TGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1NwYW4gPSBFRklfSUZSX1NQQU4oKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NwYW4uSGVhZGVyLCBFRklf SUZSX1NQQU5fT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAgICAg ICAgc2VsZi5fX1NwYW4uRmxhZ3MgPSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HDQoNCisN Cg0KKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgTEZsYWdzKToNCg0KKyAgICAgICAgaWYgTEZsYWdz ID09IEVGSV9JRlJfRkxBR1NfRklSU1RfTUFUQ0hJTkc6DQoNCisgICAgICAgICAgICBzZWxmLl9f U3Bhbi5GbGFncyB8PSBFRklfSUZSX0ZMQUdTX0ZJUlNUX01BVENISU5HDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKA0K DQorICAgICAgICAgICAgICAgIExGbGFncywgRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJ TkcpDQoNCisgICAgICAgICAgICBpZiBSZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX1Nw YW4uRmxhZ3MgfD0gRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcNCg0KKw0KDQorICAg ICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MgaWYgTEZsYWdzID09 IDAgZWxzZSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCg0KKw0K DQorDQoNCitjbGFzcyBDSWZyQml0V2lzZUFuZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19C aXRXaXNlQW5kID0gRUZJX0lGUl9CSVRXSVNFX0FORCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQml0V2lzZUFuZC5IZWFkZXIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJVFdJU0VfQU5EX09QKQ0KDQorICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckJpdFdpc2VPcihD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQoNCisgICAgICAgIHNlbGYuX19CaXRXaXNlT3IgPSBFRklfSUZSX0JJVFdJU0VfT1Io KQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0JpdFdpc2VP ci5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJVFdJ U0VfT1JfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoN CitjbGFzcyBDSWZyQWRkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0FkZCA9IEVGSV9JRlJf QUREKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19BZGQu SGVhZGVyLCBFRklfSUZSX0FERF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb1N0cmluZyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNl bGYuX19Ub1N0cmluZyA9IEVGSV9JRlJfVE9fU1RSSU5HKCkNCg0KKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ub1N0cmluZy5IZWFkZXIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1RPX1NUUklOR19PUCkNCg0KKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldEZvcm1hdChzZWxmLCBGb3Jt YXQpOg0KDQorICAgICAgICBzZWxmLl9fVG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmclRvVXBwZXIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQor ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fVG9VcHBw ZXIgPSBFRklfSUZSX1RPX1VQUEVSKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19Ub1VwcHBlci5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX1RPX1VQUEVSX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhM aW5lTm8pDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclRvVWludChDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAg IHNlbGYuX19Ub1VpbnQgPSBFRklfSUZSX1RPX1VJTlQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RvVWludC5IZWFkZXIsIEVGSV9JRlJfVE9fVUlOVF9P UCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNz IENJZnJUb0xvd2VyKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19p bml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1RvTG93ZXIgPSBFRklfSUZS X1RPX0xPV0VSKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19Ub0xvd2VyLkhlYWRlciwgRUZJX0lGUl9UT19MT1dFUl9PUCkNCg0KKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUb0Jvb2xlYW4oQ0lmck9i aiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8p Og0KDQorICAgICAgICBzZWxmLl9fQm9vbGVhbiA9IEVGSV9JRlJfVE9fQk9PTEVBTigpDQoNCisg ICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQm9vbGVhbi5IZWFkZXIs DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1RPX0JPT0xFQU5fT1Ap DQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyTm90KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX05vdCA9IEVGSV9JRlJfTk9UKCkNCg0K KyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob3QuSGVhZGVyLCBF RklfSUZSX05PVF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoN CisNCg0KK2NsYXNzIENJZnJEdXAoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fRHVwID0gRUZJ X0lGUl9EVVAoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0R1cC5IZWFkZXIsIEVGSV9JRlJfRFVQX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhM aW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1 cm4gc2VsZi5fX0R1cC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRXFJZElkKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5v KToNCg0KKyAgICAgICAgc2VsZi5fX0VxSWRJZCA9IEVGSV9JRlJfRVFfSURfSUQoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VxSWRJZC5IZWFkZXIsIEVG SV9JRlJfRVFfSURfSURfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0K KyAgICAgICAgc2VsZi5fX0VxSWRJZC5RdWVzdGlvbklkMSA9IEVGSV9RVUVTVElPTl9JRF9JTlZB TElEDQoNCisgICAgICAgIHNlbGYuX19FcUlkSWQuUXVlc3Rpb25JZDIgPSBFRklfUVVFU1RJT05f SURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAg cmV0dXJuIHNlbGYuX19FcUlkSWQuSGVhZGVyDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25J ZDEoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExpbmVObyk6DQoNCisgICAgICAgIGlmIFF1 ZXN0aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICBzZWxm Ll9fRXFJZElkLlF1ZXN0aW9uSWQxID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgZGVmIFNldFF1ZXN0aW9uSWQyKHNlbGYsIFF1 ZXN0aW9uSWQsIFZhcklkU3RyLCBMaW5lTm8pOg0KDQorICAgICAgICBpZiBRdWVzdGlvbklkICE9 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgc2VsZi5fX0VxSWRJZC5R dWVzdGlvbklkMiA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg IHBhc3MNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyRXFJZFZhbChDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAg IHNlbGYuX19FcUlkVmFsID0gRUZJX0lGUl9FUV9JRF9WQUwoKQ0KDQorICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VxSWRWYWwuSGVhZGVyLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9FUV9JRF9WQUxfT1ApDQoNCisgICAgICAgIHNl bGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAgICAgICAgc2VsZi5fX0VxSWRWYWwuUXVlc3Rpb25J ZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25J ZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAgaWYgUXVl c3Rpb25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHNlbGYu X19FcUlkVmFsLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0K DQorICAgICAgICBzZWxmLl9fRXFJZFZhbC5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYg R2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0VxSWRWYWwuSGVhZGVy DQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckVxSWRMaXN0KENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBOdW1zLCBWYWx1ZUxpc3Q9 W10pOg0KDQorICAgICAgICBzZWxmLl9fRXFJZFZMaXN0ID0gUmVmaW5lX0VGSV9JRlJfRVFfSURf VkFMX0xJU1QoTnVtcykNCg0KKyAgICAgICAgSGVhZGVyID0gRUZJX0lGUl9PUF9IRUFERVIoKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgSGVhZGVyLCBFRklfSUZSX0VR X0lEX1ZBTF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorICAgICAg ICBzZWxmLl9fRXFJZFZMaXN0LkhlYWRlciA9IEhlYWRlcg0KDQorICAgICAgICBzZWxmLl9fRXFJ ZFZMaXN0LlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBz ZWxmLl9fRXFJZFZMaXN0Lkxpc3RMZW5ndGggPSAwDQoNCisgICAgICAgIGlmIFZhbHVlTGlzdCAh PSBbXToNCg0KKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2ICogTnVtcw0KDQorICAg ICAgICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQoNCisgICAgICAgICAgICBmb3IgaSBp biByYW5nZSgwLCBsZW4oVmFsdWVMaXN0KSk6DQoNCisgICAgICAgICAgICAgICAgVmFsdWVBcnJh eVtpXSA9IFZhbHVlTGlzdFtpXQ0KDQorICAgICAgICAgICAgc2VsZi5fX0VxSWRWTGlzdC5WYWx1 ZUxpc3QgPSBWYWx1ZUFycmF5DQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBR dWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAgaWYgUXVlc3Rpb25JZCAh PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcUlkVkxp c3QuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgIHBhc3MNCg0KKw0KDQorICAgIGRlZiBTZXRMaXN0TGVuZ3RoKHNlbGYsIExpc3RMZW5ndGgp Og0KDQorICAgICAgICBzZWxmLl9fRXFJZFZMaXN0Lkxpc3RMZW5ndGggPSBMaXN0TGVuZ3RoDQoN CisNCg0KKyAgICBkZWYgU2V0VmFsdWVMaXN0KHNlbGYsIFZhbHVlTGlzdCk6DQoNCisgICAgICAg IGlmIFZhbHVlTGlzdCAhPSBbXToNCg0KKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2 ICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUo KQ0KDQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KDQor ICAgICAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAg ICAgIHNlbGYuX19FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KDQorDQoNCisgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlkVkxpc3Qu SGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclVpbnQ4KENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAg c2VsZi5fX1VpbnQ4ID0gRUZJX0lGUl9VSU5UOCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fVWludDguSGVhZGVyLCBFRklfSUZSX1VJTlQ4X09QKQ0KDQor ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgU2V0VmFsdWUo c2VsZiwgVmFsdWUpOg0KDQorICAgICAgICBzZWxmLl9fVWludDguVmFsdWUgPSBWYWx1ZQ0KDQor DQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19V aW50OC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVWludDE2KENJZnJPYmosIENJZnJP cEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAg ICAgICAgc2VsZi5fX1VpbnQxNiA9IEVGSV9JRlJfVUlOVDE2KCkNCg0KKyAgICAgICAgQ0lmck9w SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50MTYuSGVhZGVyLCBFRklfSUZSX1VJTlQx Nl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVm IFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQxNi5WYWx1ZSA9 IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1 cm4gc2VsZi5fX1VpbnQxNi5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVWludDMyKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQzMiA9IEVGSV9JRlJfVUlOVDMyKCkNCg0KKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50MzIuSGVhZGVyLCBF RklfSUZSX1VJTlQzMl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQor DQoNCisgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0KKyAgICAgICAgc2VsZi5fX1Vp bnQzMi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQor ICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQzMi5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBD SWZyVWludDY0KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1VpbnQ2NCA9IEVGSV9JRlJfVUlO VDY0KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50 NjQuSGVhZGVyLCBFRklfSUZSX1VJTlQ2NF9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KDQorDQoNCisgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCg0KKyAgICAg ICAgc2VsZi5fX1VpbnQ2NC5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVy KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQ2NC5IZWFkZXINCg0KKw0KDQor DQoNCitjbGFzcyBDSWZyUXVlc3Rpb25SZWYxKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisN Cg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1F1 ZXN0aW9uUmVmMSA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMSgpDQoNCisgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYxLkhlYWRlciwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGMV9PUCkNCg0KKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25S ZWYxLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVm IEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjEu SGVhZGVyDQoNCisNCg0KKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBW YXJJZFN0ciwgTGluZU5vKToNCg0KKyAgICAgICAgaWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJ T05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjEuUXVlc3Rp b25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHBhc3MN Cg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUXVlc3Rpb25SZWYyKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAg c2VsZi5fX1F1ZXN0aW9uUmVmMiA9IEVGSV9JRlJfUVVFU1RJT05fUkVGMigpDQoNCisgICAgICAg IENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYyLkhlYWRlciwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGMl9P UCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIEdl dEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjIuSGVh ZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclF1ZXN0aW9uUmVmMyhDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAg ICAgIHNlbGYuX19RdWVzdGlvblJlZjMgPSBFRklfSUZSX1FVRVNUSU9OX1JFRjMoKQ0KDQorICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1F1ZXN0aW9uUmVmMy5IZWFk ZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1FVRVNUSU9OX1JF RjNfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRl ZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fUXVlc3Rpb25SZWYz LkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJRdWVzdGlvblJlZjNfMihDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMiA9IEVGSV9JRlJfUVVFU1RJT05fUkVGM18y KCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19RdWVzdGlv blJlZjNfMi5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X1FVRVNUSU9OX1JFRjNfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0K KyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmM18yLkRldmljZVBhdGggPSBFRklfU1RSSU5HX0lE X0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgp Og0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzIuRGV2aWNlUGF0aCA9IERldmljZVBh dGgNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBz ZWxmLl9fUXVlc3Rpb25SZWYzXzIuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclF1ZXN0 aW9uUmVmM18zKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0 X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmM18zID0gRUZJ X0lGUl9RVUVTVElPTl9SRUYzXzMoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18o c2VsZiwgc2VsZi5fX1F1ZXN0aW9uUmVmM18zLkhlYWRlciwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkNCg0KKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuRGV2aWNl UGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25S ZWYzXzMuR3VpZCA9IEVGSV9HVUlEKA0KDQorICAgICAgICAgICAgMCwgMCwgMCwgR3VpZEFycmF5 KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KDQorDQoNCisgICAgZGVmIFNldERldmljZVBhdGgo c2VsZiwgRGV2aWNlUGF0aCk6DQoNCisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMy5EZXZp Y2VQYXRoID0gRGV2aWNlUGF0aA0KDQorDQoNCisgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6 DQoNCisgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMy5HdWlkID0gR3VpZA0KDQorDQoNCisg ICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlv blJlZjNfMy5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyUnVsZVJlZihDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoN CisgICAgICAgIHNlbGYuX19SdWxlUmVmID0gRUZJX0lGUl9SVUxFX1JFRigpDQoNCisgICAgICAg IENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUnVsZVJlZi5IZWFkZXIsIEVGSV9J RlJfUlVMRV9SRUZfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKyAg ICAgICAgc2VsZi5fX1J1bGVSZWYuUnVsZUlkID0gRUZJX1JVTEVfSURfSU5WQUxJRA0KDQorDQoN CisgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KDQorICAgICAgICBzZWxmLl9fUnVs ZVJlZi5SdWxlSWQgPSBSdWxlSWQNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoN CisgICAgICAgIHJldHVybiBzZWxmLl9fUnVsZVJlZi5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFz cyBDSWZyU3RyaW5nUmVmMShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19TdHJpbmdSZWYxID0g RUZJX0lGUl9TVFJJTkdfUkVGMSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fU3RyaW5nUmVmMS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX1NUUklOR19SRUYxX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVO byhMaW5lTm8pDQoNCisgICAgICAgIHNlbGYuX19TdHJpbmdSZWYxLlN0cmluZ0lkID0gRUZJX1NU UklOR19JRF9JTlZBTElEDQoNCisNCg0KKyAgICBkZWYgU2V0U3RyaW5nSWQoc2VsZiwgU3RyaW5n SWQpOg0KDQorICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMS5TdHJpbmdJZCA9IFN0cmluZ0lkDQoN CisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5f X1N0cmluZ1JlZjEuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmclN0cmluZ1JlZjIoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KDQorICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMiA9IEVGSV9JRlJfU1RSSU5HX1JFRjIo KQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0cmluZ1Jl ZjIuSGVhZGVyLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9TVFJJ TkdfUkVGMl9PUCkNCg0KKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisg ICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYuX19TdHJpbmdS ZWYyLkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJUaGlzKENJZnJPYmosIENJZnJPcEhl YWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAg ICAgc2VsZi5fX1RoaXMgPSBFRklfSUZSX1RISVMoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX1RoaXMuSGVhZGVyLCBFRklfSUZSX1RISVNfT1ApDQoNCisg ICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIo c2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fVGhpcy5IZWFkZXINCg0KKw0KDQorDQoN CitjbGFzcyBDSWZyU2VjdXJpdHkoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAgICAgICBzZWxmLl9fU2VjdXJpdHkg PSBFRklfSUZSX1NFQ1VSSVRZKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19TZWN1cml0eS5IZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFRklfSUZSX1NFQ1VSSVRZX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5l Tm8pDQoNCisgICAgICAgIHNlbGYuX19TZWN1cml0eS5QZXJtaXNzaW9ucyA9IEVGSV9HVUlEKA0K DQorICAgICAgICAgICAgMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp KQ0KDQorDQoNCisgICAgZGVmIFNldFBlcm1pc3Npb25zKHNlbGYsIFBlcm1pc3Npb25zKToNCg0K KyAgICAgICAgc2VsZi5fX1NlY3VyaXR5LlBlcm1pc3Npb25zID0gUGVybWlzc2lvbnMNCg0KKw0K DQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fU2Vj dXJpdHkuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmckdldChDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAg ICAgIHNlbGYuX19HZXQgPSBFRklfSUZSX0dFVCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fR2V0LkhlYWRlciwgRUZJX0lGUl9HRVRfT1ApDQoNCisgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBTZXRWYXJJbmZvKHNl bGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQoNCisgICAgICAgIHNlbGYuX19HZXQu VmFyU3RvcmVJZCA9IEJhc2VJbmZvLlZhclN0b3JlSWQNCg0KKyAgICAgICAgc2VsZi5fX0dldC5W YXJTdG9yZUluZm8uVmFyTmFtZSA9IEJhc2VJbmZvLkluZm8uVmFyTmFtZQ0KDQorICAgICAgICBz ZWxmLl9fR2V0LlZhclN0b3JlSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNl dA0KDQorICAgICAgICBzZWxmLl9fR2V0LlZhclN0b3JlVHlwZSA9IEJhc2VJbmZvLlZhclR5cGUN Cg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxm Ll9fR2V0LkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJTZXQoQ0lmck9iaiwgQ0lmck9w SGVhZGVyKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KDQorICAg ICAgICBzZWxmLl9fU2V0ID0gRUZJX0lGUl9TRVQoKQ0KDQorICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX1NldC5IZWFkZXIsIEVGSV9JRlJfU0VUX09QKQ0KDQorICAg ICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgU2V0VmFySW5mbyhz ZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KDQorICAgICAgICBzZWxmLl9fU2V0 LlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQoNCisgICAgICAgIHNlbGYuX19TZXQu VmFyU3RvcmVJbmZvLlZhck5hbWUgPSBCYXNlSW5mby5JbmZvLlZhck5hbWUNCg0KKyAgICAgICAg c2VsZi5fX1NldC5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5mby5WYXJPZmZz ZXQNCg0KKyAgICAgICAgc2VsZi5fX1NldC5WYXJTdG9yZVR5cGUgPSBCYXNlSW5mby5WYXJUeXBl DQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2Vs Zi5fX1NldC5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVHJ1ZShDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisg ICAgICAgIHNlbGYuX19UcnVlID0gRUZJX0lGUl9UUlVFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UcnVlLkhlYWRlciwgRUZJX0lGUl9UUlVFX09QKQ0K DQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1RydWUuSGVhZGVyDQoNCisNCg0K Kw0KDQorY2xhc3MgQ0lmckZhbHNlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAg ICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX0ZhbHNlID0g RUZJX0lGUl9UUlVFKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19GYWxzZS5IZWFkZXIsIEVGSV9JRlJfRkFMU0VfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0 TGluZU5vKExpbmVObykNCg0KKw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAg ICAgIHJldHVybiBzZWxmLl9fRmFsc2UuSGVhZGVyDQoNCisNCg0KKw0KDQorY2xhc3MgQ0lmck9u ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19PbmUgPSBFRklfSUZSX09ORSgpDQoNCisgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT25lLkhlYWRlciwgRUZJX0lG Ul9PTkVfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0KKw0KDQorICAg IGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fT25lLkhlYWRl cg0KDQorDQoNCisNCg0KK2NsYXNzIENJZnJPbmVzKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoN CisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5f X09uZXMgPSBFRklfSUZSX09ORSgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhz ZWxmLCBzZWxmLl9fT25lcy5IZWFkZXIsIEVGSV9JRlJfT05FU19PUCkNCg0KKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KDQorDQoNCisgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCg0K KyAgICAgICAgcmV0dXJuIHNlbGYuX19PbmVzLkhlYWRlcg0KDQorDQoNCisNCg0KK2NsYXNzIENJ ZnJaZXJvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCg0KKyAgICAgICAgc2VsZi5fX1plcm8gPSBFRklfSUZSX1pFUk8oKQ0K DQorICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1plcm8uSGVhZGVy LCBFRklfSUZSX1pFUk9fT1ApDQoNCisgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCg0K Kw0KDQorICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9f WmVyby5IZWFkZXINCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyVW5kZWZpbmVkKENJZnJPYmosIENJ ZnJPcEhlYWRlcik6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCg0K KyAgICAgICAgc2VsZi5fX1VuZGVmaW5lZCA9IEVGSV9JRlJfWkVSTygpDQoNCisgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVW5kZWZpbmVkLkhlYWRlciwNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfVU5ERUZJTkVEX09QKQ0KDQorICAg ICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNl bGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1VuZGVmaW5lZC5IZWFkZXINCg0KKw0KDQor DQoNCitjbGFzcyBDSWZyVmVyc2lvbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19WZXJzaW9u ID0gRUZJX0lGUl9WRVJTSU9OKCkNCg0KKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19WZXJzaW9uLkhlYWRlciwgRUZJX0lGUl9WRVJTSU9OX09QKQ0KDQorICAgICAg ICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYp Og0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX1ZlcnNpb24uSGVhZGVyDQoNCisNCg0KKw0KDQor Y2xhc3MgQ0lmckxlbmd0aChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVm IF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQoNCisgICAgICAgIHNlbGYuX19MZW5ndGggPSBFRklf SUZSX0xFTkdUSCgpDQoNCisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fTGVuZ3RoLkhlYWRlciwgRUZJX0lGUl9MRU5HVEhfT1ApDQoNCisgICAgICAgIHNlbGYuU2V0 TGluZU5vKExpbmVObykNCg0KKw0KDQorDQoNCitjbGFzcyBDSWZyQml0V2lzZU5vdChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6 DQoNCisgICAgICAgIHNlbGYuX19CaXRXaXNlTm90ID0gRUZJX0lGUl9CSVRXSVNFX05PVCgpDQoN CisgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fQml0V2lzZU5vdC5I ZWFkZXIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0JJVFdJU0Vf Tk9UX09QKQ0KDQorICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQoNCisNCg0KKw0KDQor Y2xhc3MgRXhwcmVzc2lvbkluZm8oKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToN Cg0KKyAgICAgICAgc2VsZi5Sb290TGV2ZWwgPSAwDQoNCisgICAgICAgIHNlbGYuRXhwT3BDb3Vu dCA9IDANClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNCBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQN CmluZGV4IDAwMDAwMDAwMDAuLjg5YzllNjdiNTkNCi0tLSAvZGV2L251bGwNCisrKyBiL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheC5nNA0KQEAgLTAsMCArMSwx ODg3IEBADQorZ3JhbW1hciBWZnJTeW50YXg7DQoNCitvcHRpb25zIHsNCg0KKyAgICBsYW5ndWFn ZT1QeXRob247DQoNCit9DQoNCitAaGVhZGVyew0KDQorDQoNCitmcm9tIFZmckNvbXBpbGVyLkNv bW1vbkN0eXBlcyBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJGb3JtUGtnIGltcG9y dCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclV0aWxpdHkgaW1wb3J0ICoNCg0KK2Zyb20gVmZy Q29tcGlsZXIuVmZyVHJlZSBpbXBvcnQgKg0KDQorfQ0KDQorDQoNCit2ZnJQcm9ncmFtDQoNCisg ICAgOiAgICh2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiB8IHZmckRhdGFTdHJ1Y3REZWZpbml0aW9u IHwgdmZyRGF0YVVuaW9uRGVmaW5pdGlvbikqIHZmckZvcm1TZXREZWZpbml0aW9uDQoNCisgICAg Ow0KDQorDQoNCitwcmFnbWFQYWNrU2hvd0RlZg0KDQorICAgIDogICAnc2hvdycNCg0KKyAgICA7 DQoNCisNCg0KK3ByYWdtYVBhY2tTdGFja0RlZg0KDQorICAgIDogICAoJ3B1c2gnIHwgJ3BvcCcp ICAoJywnIFN0cmluZ0lkZW50aWZpZXIpPyAoJywnIE51bWJlcik/DQoNCisgICAgOw0KDQorDQoN CitwcmFnbWFQYWNrTnVtYmVyDQoNCisgICAgOiAgIE51bWJlcj8NCg0KKyAgICA7DQoNCisNCg0K K3ZmclByYWdtYVBhY2tEZWZpbml0aW9uDQoNCisgICAgOiAgICcjcHJhZ21hJyAncGFjaycgJygn DQoNCisgICAgICAgICggICBwcmFnbWFQYWNrU2hvd0RlZg0KDQorICAgICAgICB8ICAgcHJhZ21h UGFja1N0YWNrRGVmDQoNCisgICAgICAgIHwgICBwcmFnbWFQYWNrTnVtYmVyDQoNCisgICAgICAg ICk/DQoNCisgICAgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJEYXRhU3RydWN0RGVmaW5pdGlv bg0KDQorICAgIDogICAoVHlwZURlZik/IFN0cnVjdCBOb25OdkRhdGFNYXA/IE4xPVN0cmluZ0lk ZW50aWZpZXI/ICd7JyB2ZnJEYXRhU3RydWN0RmllbGRzW0ZhbHNlXSAnfScgIE4yPVN0cmluZ0lk ZW50aWZpZXI/ICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyRGF0YVVuaW9uRGVmaW5pdGlvbg0K DQorICAgIDogICAoVHlwZURlZik/IFVuaW9uIE5vbk52RGF0YU1hcD8gTjE9U3RyaW5nSWRlbnRp Zmllcj8gJ3snIHZmckRhdGFTdHJ1Y3RGaWVsZHNbVHJ1ZV0nfScgTjI9U3RyaW5nSWRlbnRpZmll cj8gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJEYXRhU3RydWN0RmllbGRzW0ZpZWxkSW5Vbmlv bl0NCg0KKyAgICA6DQoNCisgICAgKCAgIGRhdGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0N Cg0KKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkMzJbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBk YXRhU3RydWN0RmllbGQxNltGaWVsZEluVW5pb25dDQoNCisgICAgfCAgIGRhdGFTdHJ1Y3RGaWVs ZDhbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0RmllbGRCb29sW0ZpZWxkSW5V bmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0NCg0K KyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkRGF0ZVtGaWVsZEluVW5pb25dDQoNCisgICAgfCAgIGRh dGFTdHJ1Y3RGaWVsZFRpbWVbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0Rmll bGRSZWZbRmllbGRJblVuaW9uXQ0KDQorICAgIHwgICBkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxk SW5Vbmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVjdEJpdEZpZWxkNjRbRmllbGRJblVuaW9uXQ0K DQorICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25dDQoNCisgICAgfCAg IGRhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICB8ICAgZGF0YVN0cnVj dEJpdEZpZWxkOFtGaWVsZEluVW5pb25dDQoNCisgICAgKSoNCg0KKyAgICA7DQoNCisNCg0KK2Rh dGFTdHJ1Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgJ1VJTlQ2NCcgTj1TdHJp bmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KDQorICAgIDsNCg0KKw0KDQorZGF0 YVN0cnVjdEZpZWxkMzJbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnVUlOVDMyJyBOPVN0cmlu Z0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQoNCisgICAgOw0KDQorDQoNCitkYXRh U3RydWN0RmllbGQxNltGaWVsZEluVW5pb25dDQoNCisgICAgOiAgICdVSU5UMTYnIE49U3RyaW5n SWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2RhdGFT dHJ1Y3RGaWVsZDhbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnVUlOVDgnIE49U3RyaW5nSWRl bnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2RhdGFTdHJ1 Y3RGaWVsZEJvb2xbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnQk9PTEVBTicgTj1TdHJpbmdJ ZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KDQorICAgIDsNCg0KKw0KDQorZGF0YVN0 cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgJ0VGSV9TVFJJTkdfSUQn IE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisN Cg0KK2RhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJblVuaW9uXQ0KDQorICAgIDogICAnRUZJX0hJ SV9EQVRFJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQoNCisgICAg Ow0KDQorDQoNCitkYXRhU3RydWN0RmllbGRUaW1lW0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAg J0VGSV9ISUlfVElNRScgTj1TdHJpbmdJZGVudGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0K DQorICAgIDsNCg0KKw0KDQorZGF0YVN0cnVjdEZpZWxkUmVmW0ZpZWxkSW5Vbmlvbl0NCg0KKyAg ICA6ICAgJ0VGSV9ISUlfUkVGJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8g JzsnDQoNCisgICAgOw0KDQorDQoNCitkYXRhU3RydWN0RmllbGRVc2VyW0ZpZWxkSW5Vbmlvbl0N Cg0KKyAgICA6ICAgVD1TdHJpbmdJZGVudGlmaWVyIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51 bWJlciAnXScpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KK2RhdGFTdHJ1Y3RCaXRGaWVsZDY0W0Zp ZWxkSW5Vbmlvbl0NCg0KKyAgICA6ICAgRD0nVUlOVDY0JyAgTj1TdHJpbmdJZGVudGlmaWVyPyAn OicgTnVtYmVyICc7Jw0KDQorICAgIDsNCg0KK2RhdGFTdHJ1Y3RCaXRGaWVsZDMyW0ZpZWxkSW5V bmlvbl0NCg0KKyAgICA6ICAgRD0nVUlOVDMyJyBOPVN0cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1i ZXIgJzsnDQoNCisgICAgOw0KDQorZGF0YVN0cnVjdEJpdEZpZWxkMTZbRmllbGRJblVuaW9uXQ0K DQorICAgIDogICBEPSdVSU5UMTYnIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJlciAnOycN Cg0KKyAgICA7DQoNCitkYXRhU3RydWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlvbl0NCg0KKyAgICA6 ICAgRD0nVUlOVDgnIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJlciAnOycNCg0KKyAgICA7 DQoNCisNCg0KKy8vIDIuNCBWRlIgRm9ybVNldCBEZWZpbml0aW9uDQoNCit2ZnJGb3JtU2V0RGVm aW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX1NFVF9PUCld DQoNCisgICAgOiAgICdmb3Jtc2V0Jw0KDQorICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0 aW9uICcsJw0KDQorICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCg0KKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCg0KKyAgICAgICAgKCdjbGFzc2d1aWQnICc9JyBjbGFzc2d1aWREZWZpbml0aW9u W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQoNCisgICAgICAgICgnY2xhc3MnICc9JyBjbGFzc0RlZmlu aXRpb24gJywnKT8NCg0KKyAgICAgICAgKCdzdWJjbGFzcycgJz0nIHN1YmNsYXNzRGVmaW5pdGlv biAnLCcpPw0KDQorICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAg ICAgICAnZW5kZm9ybXNldCcgJzsnDQoNCisgICAgOw0KDQorDQoNCitjbGFzc2d1aWREZWZpbml0 aW9uW05vZGVdDQoNCitsb2NhbHNbR3VpZExpc3Q9W11dDQoNCisgICAgOiAgIGd1aWREZWZpbml0 aW9uICgnfCcgZ3VpZERlZmluaXRpb24pPyAoJ3wnIGd1aWREZWZpbml0aW9uKT8oJ3wnIGd1aWRE ZWZpbml0aW9uKT8NCg0KKyAgICA7DQoNCisNCg0KK2NsYXNzRGVmaW5pdGlvbg0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKV0NCg0KKyAgICA6ICAgdmFsaWRDbGFz c05hbWVzICgnfCcgdmFsaWRDbGFzc05hbWVzKSoNCg0KKyAgICA7DQoNCisNCg0KK3ZhbGlkQ2xh c3NOYW1lcw0KDQorbG9jYWxzW0NsYXNzTmFtZT0wXQ0KDQorICAgIDogICBDbGFzc05vbkRldmlj ZQ0KDQorICAgIHwgICBDbGFzc0Rpc2tEZXZpY2UNCg0KKyAgICB8ICAgQ2xhc3NWaWRlb0Rldmlj ZQ0KDQorICAgIHwgICBDbGFzc05ldHdvcmtEZXZpY2UNCg0KKyAgICB8ICAgQ2xhc3NJbnB1dERl dmljZQ0KDQorICAgIHwgICBDbGFzc09uQm9hcmREZXZpY2UNCg0KKyAgICB8ICAgQ2xhc3NPdGhl ckRldmljZQ0KDQorICAgIHwgICBOdW1iZXINCg0KKyAgICA7DQoNCisNCg0KK3N1YmNsYXNzRGVm aW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKV0NCg0K KyAgICA6ICAgU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uDQoNCisgICAgfCAgIFN1YmNsYXNzR2Vu ZXJhbEFwcGxpY2F0aW9uDQoNCisgICAgfCAgIFN1YmNsYXNzRnJvbnRQYWdlDQoNCisgICAgfCAg IFN1YmNsYXNzU2luZ2xlVXNlDQoNCisgICAgfCAgIE51bWJlcg0KDQorICAgIDsNCg0KKw0KDQor DQoNCit2ZnJGb3JtU2V0TGlzdFtOb2RlXQ0KDQorICAgIDogKHZmckZvcm1TZXQpKg0KDQorICAg IDsNCg0KKw0KDQorLy8yLjUgVkZSIEZvcm1TZXQgTGlzdCBEZWZpbml0aW9uDQoNCit2ZnJGb3Jt U2V0DQoNCitsb2NhbHNbTm9kZT1Ob25lXQ0KDQorICAgIDoNCg0KKyAgICAoICAgdmZyRm9ybURl ZmluaXRpb24NCg0KKyAgICB8ICAgdmZyRm9ybU1hcERlZmluaXRpb24NCg0KKyAgICB8ICAgdmZy U3RhdGVtZW50SW1hZ2UNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXINCg0K KyAgICB8ICAgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWUNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlDQoN CisgICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCg0KKyAgICB8ICAgdmZyU3Rh dGVtZW50U3VwcHJlc3NJZkZvcm1TZXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5zaW9u DQoNCisgICAgKQ0KDQorICAgIDsNCg0KKw0KDQorDQoNCisvLzIuNiBWRlIgRGVmYXVsdCBTdG9y ZXMgRGVmaW5pdGlvbg0KDQordmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlDQoNCitsb2NhbHNbTm9k ZT1WZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCldDQoNCisgICAgOiAgICdkZWZh dWx0c3RvcmUnIE49U3RyaW5nSWRlbnRpZmllciAnLCcNCg0KKyAgICAgICAgJ3Byb21wdCcgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBTPU51bWJlciAnKScNCg0KKyAgICAgICAgKCcsJyAnYXR0cmli dXRlJyAnPScgQT1OdW1iZXIpPyAnOycNCg0KKyAgICA7DQoNCisNCg0KKy8vMi43IFZGUiBWYXJp YWJsZSBTdG9yZSBEZWZpbml0aW9uDQoNCit2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KDQor bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9PUCldDQoNCisgICAgOiAg ICd2YXJzdG9yZScNCg0KKyAgICAgICAgKCAgIFROPVN0cmluZ0lkZW50aWZpZXIgJywnDQoNCisg ICAgICAgIHwgICAnVUlOVDgnICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQxNicgJywnDQoNCisg ICAgICAgIHwgICAnVUlOVDMyJyAnLCcNCg0KKyAgICAgICAgfCAgICdVSU5UNjQnICcsJw0KDQor ICAgICAgICB8ICAgJ0VGSV9ISUlfREFURScgJywnDQoNCisgICAgICAgIHwgICAnRUZJX0hJSV9U SU1FJyAnLCcNCg0KKyAgICAgICAgfCAgICdFRklfSElJX1JFRicgJywnDQoNCisgICAgICAgICkN Cg0KKyAgICAgICAgKCd2YXJpZCcgJz0nIElEPU51bWJlciAnLCcpPw0KDQorICAgICAgICAnbmFt ZScgJz0nIFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQoNCisgICAgICAgICdndWlkJyAnPScgZ3Vp ZERlZmluaXRpb24gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVm aQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9FRklfT1ApXQ0K DQorICAgIDogICAnZWZpdmFyc3RvcmUnDQoNCisgICAgICAgICggICBUTj1TdHJpbmdJZGVudGlm aWVyICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQ4JyAnLCcNCg0KKyAgICAgICAgfCAgICdVSU5U MTYnICcsJw0KDQorICAgICAgICB8ICAgJ1VJTlQzMicgJywnDQoNCisgICAgICAgIHwgICAnVUlO VDY0JyAnLCcNCg0KKyAgICAgICAgfCAgICdFRklfSElJX0RBVEUnICcsJw0KDQorICAgICAgICB8 ICAgJ0VGSV9ISUlfVElNRScgJywnDQoNCisgICAgICAgIHwgICAnRUZJX0hJSV9SRUYnICcsJw0K DQorICAgICAgICApDQoNCisgICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIgJywnKT8NCg0K KyAgICAgICAgJ2F0dHJpYnV0ZScgJz0nIHZmclZhclN0b3JlRWZpQXR0ciAoJ3wnIHZmclZhclN0 b3JlRWZpQXR0cikqICcsJw0KDQorICAgICAgICAoICAgJ25hbWUnICc9JyBTTj1TdHJpbmdJZGVu dGlmaWVyICcsJw0KDQorICAgICAgICB8ICAgJ25hbWUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcg Vk49TnVtYmVyICcpJyAnLCcgICd2YXJzaXplJyAnPScgTj1OdW1iZXIgJywnDQoNCisgICAgICAg ICkNCg0KKyAgICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCg0KKyAgICA7DQoN CisNCg0KK3ZmclZhclN0b3JlRWZpQXR0cg0KDQorbG9jYWxzW0F0dHI9MF0NCg0KKyAgICA6ICAg TnVtYmVyOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QKV0NCg0KKyAg ICA6ICAgJ25hbWV2YWx1ZXZhcnN0b3JlJyBTTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAg ICAgICAoJ3ZhcmlkJyAnPScgSUQ9TnVtYmVyICcsJyk/DQoNCisgICAgICAgICgnbmFtZScgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJykrDQoNCisgICAgICAgICdndWlkJyAn PScgZ3VpZERlZmluaXRpb24gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnREaXNh YmxlSWZGb3JtU2V0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVf SUZfT1ApXQ0KDQorICAgIDogICAnZGlzYWJsZWlmJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7 Jw0KDQorICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAn ZW5kaWYnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1T ZXQNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApXQ0K DQorICAgIDogICAnc3VwcHJlc3NpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCg0KKyAg ICAgICAgdmZyRm9ybVNldExpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAgICAgJ2VuZGlmJyAn OycNCg0KKyAgICA7DQoNCisNCg0KK2d1aWRTdWJEZWZpbml0aW9uW0d1aWRdDQoNCisgICAgOiAg IE51bWJlciAnLCcgTnVtYmVyICcsJyBOdW1iZXIgJywnIE51bWJlciAnLCcNCg0KKyAgICAgICAg TnVtYmVyICcsJyBOdW1iZXIgJywnIE51bWJlciAnLCcgTnVtYmVyDQoNCisgICAgOw0KDQorDQoN CitndWlkRGVmaW5pdGlvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoKSwgR3VpZD1FRklf R1VJRCgpXQ0KDQorICAgIDogICAneycNCg0KKyAgICAgICAgTnVtYmVyICcsJyBOdW1iZXIgJywn IE51bWJlciAnLCcNCg0KKyAgICAgICAgKCAgICd7JyBndWlkU3ViRGVmaW5pdGlvbltsb2NhbGN0 eC5HdWlkXSAnfScNCg0KKyAgICAgICAgfCAgIGd1aWRTdWJEZWZpbml0aW9uW2xvY2FsY3R4Lkd1 aWRdDQoNCisgICAgICAgICkNCg0KKyAgICAgICAgJ30nDQoNCisgICAgOw0KDQorDQoNCitnZXRT dHJpbmdJZA0KDQorbG9jYWxzW1N0cmluZ0lkPScnXQ0KDQorICAgIDogICAnU1RSSU5HX1RPS0VO JyAnKCcgTnVtYmVyICcpJw0KDQorICAgIDsNCg0KKw0KDQordmZyUXVlc3Rpb25IZWFkZXJbT3BP YmosIFFUeXBlXQ0KDQorICAgIDogICB2ZnJRdWVzdGlvbkJhc2VJbmZvW09wT2JqLCBRVHlwZV0N Cg0KKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW09wT2JqXQ0KDQorICAgIDsNCg0KKw0KDQor dmZyUXVlc3Rpb25CYXNlSW5mb1tPcE9iaiwgUVR5cGVdDQoNCitsb2NhbHNbQmFzZUluZm89RUZJ X1ZBUlNUT1JFX0lORk8oKSwgUUlkPUVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBDaGVja0ZsYWc9 VHJ1ZV0NCg0KKyAgICA6ICAgKCduYW1lJyAnPScgUU49U3RyaW5nSWRlbnRpZmllciAnLCcpPw0K DQorICAgICAgICAoJ3ZhcmlkJyAnPScgdmZyU3RvcmFnZVZhcklkW2xvY2FsY3R4LkJhc2VJbmZv LCBsb2NhbGN0eC5DaGVja0ZsYWddICcsJyk/DQoNCisgICAgICAgICgncXVlc3Rpb25pZCcgJz0n IElEPU51bWJlciAnLCcpPw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50SGVhZGVyW09w T2JqXQ0KDQorICAgIDogICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQoNCisgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScNCg0KKyAgICA7DQoNCisNCg0KK3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQorbG9jYWxz W1FIRmxhZz0wXQ0KDQorICAgIDogICBSZWFkT25seUZsYWcNCg0KKyAgICB8ICAgSW50ZXJhY3Rp dmVGbGFnDQoNCisgICAgfCAgIFJlc2V0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIFJlc3RTdHls ZUZsYWcNCg0KKyAgICB8ICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIE89T3B0 aW9uT25seUZsYWcNCg0KKyAgICB8ICAgTj1OVkFjY2Vzc0ZsYWcNCg0KKyAgICB8ICAgTD1MYXRl Q2hlY2tGbGFnDQoNCisgICAgOw0KDQorLy8yLjEwLjUNCg0KK3ZmclN0b3JhZ2VWYXJJZFtCYXNl SW5mbywgQ2hlY2tGbGFnXQ0KDQorbG9jYWxzW1ZhcklkU3RyPScnXQ0KDQorICAgIDogICAoU04x PVN0cmluZ0lkZW50aWZpZXIgJ1snIEk9TnVtYmVyICddJykgICAgIyB2ZnJTdG9yYWdlVmFySWRS dWxlMQ0KDQorICAgIHwgICAoU04yPVN0cmluZ0lkZW50aWZpZXIgKCcuJyBhcnJheU5hbWUpKiAp ICMgdmZyU3RvcmFnZVZhcklkUnVsZTINCg0KKyAgICA7DQoNCisNCg0KK3ZmckNvbnN0YW50VmFs dWVGaWVsZA0KDQorbG9jYWxzW1ZhbHVlPUVGSV9JRlJfVFlQRV9WQUxVRSgpLCBWYWx1ZUxpc3Q9 W10sIExpc3RUeXBlPUZhbHNlXQ0KDQorICAgIDogICAoJy0nKT8gTnVtYmVyDQoNCisgICAgfCAg ICdUUlVFJw0KDQorICAgIHwgICAnRkFMU0UnDQoNCisgICAgfCAgICdPTkUnDQoNCisgICAgfCAg ICdPTkVTJw0KDQorICAgIHwgICAnWkVSTycNCg0KKyAgICB8ICAgTnVtYmVyICc6JyBOdW1iZXIg JzonIE51bWJlcg0KDQorICAgIHwgICBOdW1iZXIgJy8nIE51bWJlciAnLycgTnVtYmVyDQoNCisg ICAgfCAgIE51bWJlciAnOycgTnVtYmVyICc7JyBndWlkRGVmaW5pdGlvbiAnOycgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScNCg0KKyAgICB8ICAgJ1NUUklOR19UT0tFTicgJygnIE51bWJl ciAnKScNCg0KKyAgICB8ICAgJ3snIE51bWJlciAoJywnIE51bWJlcikqICd9Jw0KDQorICAgIDsN Cg0KKw0KDQordmZySW1hZ2VUYWcNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf SU1BR0VfT1ApXQ0KDQorICAgIDogICAnaW1hZ2UnICc9JyAnSU1BR0VfVE9LRU4nICcoJyBOdW1i ZXIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJMb2NrZWRUYWcNCg0KK2xvY2Fsc1tOb2RlPVZm clRyZWVOb2RlKEVGSV9JRlJfTE9DS0VEX09QKV0NCg0KKyAgICA6ICAgJ2xvY2tlZCcNCg0KKyAg ICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFN0YXRUYWcNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAg IDogICB2ZnJJbWFnZVRhZyB8IHZmckxvY2tlZFRhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3RbTm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50U3RhdFRhZyAo JywnIHZmclN0YXRlbWVudFN0YXRUYWcpKg0KDQorICAgIDsNCg0KKw0KDQordmZyRm9ybURlZmlu aXRpb24NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9PUCldDQoNCisg ICAgOiAgICdmb3JtJyAnZm9ybWlkJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAndGl0bGUn ICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnOycNCg0KKyAgICAgICAgKHZmckZv cm0pKg0KDQorICAgICAgICAnZW5kZm9ybScgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJGb3Jt DQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6DQoNCisgICAgKCAgIHZmclN0YXRlbWVudEltYWdl DQoNCisgICAgfCAgIHZmclN0YXRlbWVudExvY2tlZA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRS dWxlcw0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0DQoNCisgICAgfCAgIHZmclN0YXRl bWVudFN0YXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25zDQoNCisgICAgfCAgIHZm clN0YXRlbWVudENvbmRpdGlvbmFsDQoNCisgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQoNCisg ICAgfCAgIHZmclN0YXRlbWVudEJhbm5lcg0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlk DQoNCisgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorICAgIHwgICB2ZnJTdGF0ZW1l bnRNb2RhbA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQgJzsnDQoNCisgICAg KQ0KDQorICAgIDsNCg0KKw0KDQordmZyRm9ybU1hcERlZmluaXRpb24NCg0KK2xvY2Fsc1tOb2Rl PVZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9NQVBfT1ApXQ0KDQorICAgIDogICAnZm9ybW1hcCcg J2Zvcm1pZCcgJz0nIFMxPU51bWJlciAnLCcNCg0KKyAgICAgICAgKCAgICdtYXB0aXRsZScgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICc7Jw0KDQorICAgICAgICAgICAgJ21hcGd1 aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCg0KKyAgICAgICAgKSoNCg0KKyAgICAgICAgKHZm ckZvcm0pKg0KDQorICAgICAgICAnZW5kZm9ybScgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJT dGF0ZW1lbnRJbWFnZQ0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmckltYWdlVGFnICc7 Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50TG9ja2VkDQoNCitsb2NhbHNbTm9kZV0N Cg0KKyAgICA6ICAgdmZyTG9ja2VkVGFnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVt ZW50UnVsZXMNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUlVMRV9PUCldDQoN CisgICAgOiAgICdydWxlJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICB2ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICdlbmRydWxlJyAnOycNCg0KKyAgICA7DQoNCisN Cg0KK3ZmclN0YXRlbWVudFN0YXQNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0 ZW1lbnRTdWJUaXRsZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQoNCisgICAg fCAgIHZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0 ZW1lbnRTdWJUaXRsZQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9TVUJUSVRM RV9PUCksIE9wT2JqPUNJZnJTdWJ0aXRsZSgpXQ0KDQorICAgIDogICAnc3VidGl0bGUnDQoNCisN Cg0KKyAgICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KDQor ICAgICAgICAoJywnICdmbGFncycgJz0nIHZmclN1YnRpdGxlRmxhZ3MpPw0KDQorICAgICAgICAo ICAgKCcsJyB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtsb2NhbGN0eC5Ob2RlXSk/ICc7Jw0KDQor ICAgICAgICB8DQoNCisgICAgICAgICAgICAoJywnIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xv Y2FsY3R4Lk5vZGVdKT8NCg0KKyAgICAgICAgICAgICgnLCcgKHZmclN0YXRlbWVudFN1YlRpdGxl Q29tcG9uZW50KSogKT8NCg0KKyAgICAgICAgICAgICdlbmRzdWJ0aXRsZScgJzsnDQoNCisgICAg ICAgICkNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50DQoN Citsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICB2ZnJTdGF0ZW1lbnRTdGF0IHwgdmZyU3RhdGVtZW50 UXVlc3Rpb25zDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdWJ0aXRsZUZsYWdzDQoNCitsb2NhbHNb U3ViRmxhZ3M9MF0NCg0KKyAgICA6ICAgc3VidGl0bGVGbGFnc0ZpZWxkICgnfCcgc3VidGl0bGVG bGFnc0ZpZWxkKSoNCg0KKyAgICA7DQoNCitzdWJ0aXRsZUZsYWdzRmllbGQNCg0KK2xvY2Fsc1tG bGFnPTBdDQoNCisgICAgOiAgIE51bWJlciB8ICdIT1JJWk9OVEFMJw0KDQorICAgIDsNCg0KKw0K DQordmZyU3RhdGVtZW50U3RhdGljVGV4dA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9URVhUX09QKV0NCg0KKyAgICA6ICAgJ3RleHQnDQoNCisgICAgICAgICdoZWxwJyAnPScg J1NUUklOR19UT0tFTicgJygnIFMxPU51bWJlciAnKScgJywnDQoNCisgICAgICAgICd0ZXh0JyAn PScgJ1NUUklOR19UT0tFTicgJygnIFMyPU51bWJlciAnKScNCg0KKyAgICAgICAgKCcsJyAndGV4 dCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBTMz1OdW1iZXIgJyknKT8NCg0KKyAgICAgICAgKCcs JyBGPSdmbGFncycgJz0nIHN0YXRpY1RleHRGbGFnc0ZpZWxkICgnfCcgc3RhdGljVGV4dEZsYWdz RmllbGQpKiAnLCcgJ2tleScgJz0nIFM0PU51bWJlcik/DQoNCisgICAgICAgICgnLCcgdmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3RbbG9jYWxjdHguTm9kZV0pPyAnOycNCg0KKyAgICA7DQoNCisNCg0K K3N0YXRpY1RleHRGbGFnc0ZpZWxkDQoNCitsb2NhbHNbRmxhZz0wXQ0KDQorICAgIDogICBOPU51 bWJlciB8IHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQorICAgIDsNCg0KKw0KDQordmZyU3Rh dGVtZW50Q3Jvc3NSZWZlcmVuY2UNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0 ZW1lbnRHb3RvIHwgdmZyU3RhdGVtZW50UmVzZXRCdXR0b24NCg0KKyAgICA7DQoNCisNCg0KK3Zm clN0YXRlbWVudEdvdG8NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVGX09Q KSwgT3BPYmo9Tm9uZSwgT0hPYmo9Tm9uZSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9SRUZdDQoNCisgICAgOiAgICdnb3RvJw0KDQorICAgICAgICAoICAgKCAgIERldmljZVBhdGgg Jz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAgICAgICAgICAgICAg IEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcNCg0KKyAgICAgICAgICAgICAgICBG b3JtSWQgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgICAgICAgICBRdWVzdGlvbiAnPScgTnVt YmVyICcsJw0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQorICAgICAgICAg ICAgKCAgIEZvcm1TZXRHdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcNCg0KKyAgICAgICAgICAg ICAgICBGb3JtSWQgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgICAgICAgICBRdWVzdGlvbiAn PScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQorICAg ICAgICAgICAgKCAgIEZvcm1JZCAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAgICAgIFF1 ZXN0aW9uICc9JyAoUU49U3RyaW5nSWRlbnRpZmllciAnLCcgfCBOdW1iZXIgJywnKQ0KDQorICAg ICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQorICAgICAgICAgICAgKCAgIE51bWJlciAn LCcgKQ0KDQorICAgICAgICApPw0KDQorICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0 eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdDQoNCisgICAgICAgICgnLCcgJ2ZsYWdzJyAnPScgdmZy R290b0ZsYWdzW2xvY2FsY3R4Lk9wT2JqXSk/DQoNCisgICAgICAgICgnLCcgJ2tleScgJz0nIE51 bWJlcik/DQoNCisgICAgICAgICgnLCcgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xv Y2FsY3R4Lk5vZGVdKT8gJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJHb3RvRmxhZ3NbT2JqXQ0K DQorbG9jYWxzW0dvdG9GbGFncz0wXQ0KDQorICAgIDogICBnb3RvRmxhZ3NGaWVsZCgnfCcgZ290 b0ZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorZ290b0ZsYWdzRmllbGQNCg0KK2xvY2Fs c1tGbGFnPTBdDQoNCisgICAgOiAgTj1OdW1iZXIgfCBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQN Cg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQoNCitsb2NhbHNbTm9k ZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCksIE9wT2JqPUNJZnJSZXNldEJ1 dHRvbigpXQ0KDQorICAgIDogICdyZXNldGJ1dHRvbicNCg0KKyAgICAgICAnZGVmYXVsdHN0b3Jl JyAnPScgTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgIHZmclN0YXRlbWVudEhlYWRl cltsb2NhbGN0eC5PcE9ial0gJywnDQoNCisgICAgICAgKHZmclN0YXRlbWVudFN0YXRUYWdMaXN0 W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQoNCisgICAgICAgJ2VuZHJlc2V0YnV0dG9uJyAnOycNCg0K KyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9ucw0KDQorbG9jYWxzW05vZGVdDQoN CisgICAgOiAgIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQoNCisgICAgfCAgIHZmclN0YXRlbWVu dERhdGUNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUNCg0KKyAgICB8ICAgdmZy U3RhdGVtZW50U3RyaW5nVHlwZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdA0K DQorICAgIHwgICB2ZnJTdGF0ZW1lbnRUaW1lDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZw0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudFN0 YXRUYWcgJywnDQoNCisgICAgfCAgIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmDQoNCisgICAg fCAgIHZmclN0YXRlbWVudE5vU3VibWl0SWYNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50RGlzYWJs ZUlmUXVlc3QNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UmVmcmVzaA0KDQorICAgIHwgICB2ZnJT dGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24N Cg0KKyAgICB8ICAgdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50DQoNCisgICAgfCAgIHZmclN0YXRl bWVudFdhcm5pbmdJZg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWYNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09Q KV0NCg0KKyAgICA6ICAgJ2luY29uc2lzdGVudGlmJw0KDQorICAgICAgICAncHJvbXB0JyAnPScg J1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnDQoNCisgICAgICAgICgnZmxhZ3MnICc9 JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRl bWVudEV4cHJlc3Npb24NCg0KKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCg0KKyAgICA7DQoNCisN Cg0KK3ZmclN0YXRlbWVudE5vU3VibWl0SWYNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVG SV9JRlJfTk9fU1VCTUlUX0lGX09QKV0NCg0KKyAgICA6ICAgJ25vc3VibWl0aWYnDQoNCisgICAg ICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAg ICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSogJywnKT8NCg0K KyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KDQorICAgICAgICAnZW5kaWYnICgnOycp Pw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCg0KK2xvY2Fs c1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCldDQoNCisgICAgOiAgICdk aXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgICAgIHZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAnZW5kaWYn ICgnOycpPw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50UmVmcmVzaA0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9SRUZSRVNIX09QKV0NCg0KKyAgICA6ICAgJ3JlZnJl c2gnICdpbnRlcnZhbCcgJz0nIE51bWJlcg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50 VmFyc3RvcmVEZXZpY2UNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RP UkVfREVWSUNFX09QKV0NCg0KKyAgICA6ICAgJ3ZhcnN0b3JlZGV2aWNlJyAnPScgJ1NUUklOR19U T0tFTicgJygnIE51bWJlciAnKScgJywnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRS ZWZyZXNoRXZlbnQNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9J RF9PUCldDQoNCisgICAgOiAgICdyZWZyZXNoZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uICcsJw0K DQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50V2FybmluZ0lmDQoNCitsb2NhbHNbTm9kZT1W ZnJUcmVlTm9kZShFRklfSUZSX1dBUk5JTkdfSUZfT1ApXQ0KDQorICAgIDogICAnd2FybmluZ2lm Jw0KDQorICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScg JywnDQoNCisgICAgICAgICgndGltZW91dCcgJz0nIE51bWJlciAnLCcpPw0KDQorICAgICAgICB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICdlbmRpZicgKCc7Jyk/DQoNCisgICAg Ow0KDQorDQoNCit2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbTm9kZV0NCg0KKyAgICA6ICAg KHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKSoNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uVGFnDQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVt ZW50U3VwcHJlc3NJZlF1ZXN0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0 DQoNCisgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQoNCisgICAgfCAgIHZmclN0YXRlbWVudERl ZmF1bHQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50T3B0aW9ucw0KDQorICAgIHwgICB2ZnJTdGF0 ZW1lbnRSZWFkDQoNCisgICAgfCAgIHZmclN0YXRlbWVudFdyaXRlDQoNCisgICAgOw0KDQorDQoN CitmbGFnc0ZpZWxkDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBJbnRlcmFjdGl2ZUZs YWcNCg0KKyAgICB8ICAgTWFudWZhY3R1cmluZ0ZsYWcNCg0KKyAgICB8ICAgRGVmYXVsdEZsYWcN Cg0KKyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCg0KKyAgICB8ICAgUmVjb25uZWN0UmVxdWly ZWRGbGFnDQoNCisgICAgfCAgIE49TlZBY2Nlc3NGbGFnDQoNCisgICAgfCAgIEw9TGF0ZUNoZWNr RmxhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQoNCits b2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKV0NCg0KKyAgICA6 ICAgJ3N1cHByZXNzaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgICAgICgn ZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KDQorICAgICAg ICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAg ICAgJ2VuZGlmJyAoJzsnKT8NCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudEdyYXlPdXRJ ZlF1ZXN0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09Q KV0NCg0KKyAgICA6ICAgJ2dyYXlvdXRpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCg0K KyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkICkqICcsJyk/ DQoNCisgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2Rl XQ0KDQorICAgICAgICAnZW5kaWYnICgnOycpPw0KDQorICAgIDsNCg0KKw0KDQorDQoNCit2ZnJT dGF0ZW1lbnREZWZhdWx0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RFRkFV TFRfT1ApXQ0KDQorICAgIDogICBEPSdkZWZhdWx0Jw0KDQorICAgICAgICAoICAgKCAgIHZmclN0 YXRlbWVudFZhbHVlICcsJw0KDQorICAgICAgICAgICAgfCAgICc9JyB2ZnJDb25zdGFudFZhbHVl RmllbGQgJywnDQoNCisgICAgICAgICAgICApDQoNCisgICAgICAgICAgICAoICAgJ2RlZmF1bHRz dG9yZScgJz0nIFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQoNCisgICAgICAgICAgICApPw0KDQor ICAgICAgICApDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRWYWx1ZQ0KDQorbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9WQUxVRV9PUCldDQoNCisgICAgOiAgICd2YWx1ZScg Jz0nIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVu dE9wdGlvbnMNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0ZW1lbnRPbmVPZk9w dGlvbg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50T25lT2ZPcHRpb24NCg0KK2xvY2Fs c1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QVElPTl9PUCldDQoNCisgICAgOiAg ICdvcHRpb24nDQoNCisgICAgICAgICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJl ciAnKScgJywnDQoNCisgICAgICAgICd2YWx1ZScgJz0nIHZmckNvbnN0YW50VmFsdWVGaWVsZCAn LCcNCg0KKyAgICAgICAgRj0nZmxhZ3MnICc9JyB2ZnJPbmVPZk9wdGlvbkZsYWdzICgnLCcgJ2tl eScgJz0nIEtOPU51bWJlcikgPyAoJywnIHZmckltYWdlVGFnKSogJzsnDQoNCisgICAgOw0KDQor DQoNCit2ZnJPbmVPZk9wdGlvbkZsYWdzDQoNCitsb2NhbHNbSEZsYWdzPTAsIExGbGFncz0wXQ0K DQorICAgIDogICBvbmVvZm9wdGlvbkZsYWdzRmllbGQgKCd8JyBvbmVvZm9wdGlvbkZsYWdzRmll bGQpKjsNCg0KKw0KDQorb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQoNCisJbG9jYWxzW0hGbGFnPTAs IExGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBPcHRpb25EZWZhdWx0DQoN CisgICAgfCAgIE9wdGlvbkRlZmF1bHRNZmcNCg0KKyAgICB8ICAgSW50ZXJhY3RpdmVGbGFnDQoN CisgICAgfCAgIFJlc2V0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIFJlc3RTdHlsZUZsYWcNCg0K KyAgICB8ICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnDQoNCisgICAgfCAgIE1hbnVmYWN0dXJpbmdG bGFnDQoNCisgICAgfCAgIERlZmF1bHRGbGFnDQoNCisgICAgfCAgIEE9TlZBY2Nlc3NGbGFnDQoN CisgICAgfCAgIEw9TGF0ZUNoZWNrRmxhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50 UmVhZA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9SRUFEX09QKV0NCg0KKyAg ICA6ICAgJ3JlYWQnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgOw0KDQorDQoN Cit2ZnJTdGF0ZW1lbnRXcml0ZQ0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9X UklURV9PUCldDQoNCisgICAgOiAgICd3cml0ZScgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycN Cg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtOb2RlXQ0K DQorICAgIDogICAodmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pKg0KDQorICAgIDsNCg0KKw0K DQorDQoNCisNCg0KK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uDQoNCitsb2NhbHNbTm9kZV0N Cg0KKyAgICA6ICAgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcgfCB2ZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvblRhZw0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50Qm9vbGVhblR5cGUNCg0K K2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogICB2ZnJTdGF0ZW1lbnRDaGVja0JveCB8IHZmclN0YXRl bWVudEFjdGlvbg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50Q2hlY2tCb3gNCg0KK2xv Y2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hfT1ApLCBPcE9iaj1DSWZyQ2hl Y2tCb3goKSwgUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQoNCisgICAg OiAgIEw9J2NoZWNrYm94Jw0KDQorICAgICAgICB2ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4 Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0NCg0KKyAgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xv Y2FsY3R4Lk9wT2JqXSAnLCcNCg0KKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyQ2hlY2tCb3hG bGFncyAnLCcpPw0KDQorICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcpPw0KDQorICAgICAg ICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAg ICAgJ2VuZGNoZWNrYm94JyAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmckNoZWNrQm94RmxhZ3MN Cg0KK2xvY2Fsc1tMRmxhZ3M9MCwgSEZsYWdzPTBdDQoNCisgICAgOiAgIGNoZWNrYm94RmxhZ3NG aWVsZCAoJ3wnIGNoZWNrYm94RmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorDQoNCitjaGVja2Jv eEZsYWdzRmllbGQNCg0KK2xvY2Fsc1tMRmxhZz0wLCBIRmxhZz0wXQ0KDQorICAgIDogICBOdW1i ZXINCg0KKyAgICB8ICAgRD0nREVGQVVMVCcNCg0KKyAgICB8ICAgTT0nTUFOVUZBQ1RVUklORycN Cg0KKyAgICB8ICAgJ0NIRUNLQk9YX0RFRkFVTFQnDQoNCisgICAgfCAgICdDSEVDS0JPWF9ERUZB VUxUX01GRycNCg0KKyAgICB8ICAgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQoNCisgICAgOw0K DQorDQoNCit2ZnJTdGF0ZW1lbnRBY3Rpb24NCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVG SV9JRlJfQUNUSU9OX09QKSxPcE9iaj1DSWZyQWN0aW9uKCksIFFUeXBlPUVGSV9RVUVTSU9OX1RZ UEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAnYWN0aW9uJw0KDQorICAgICAgICB2ZnJR dWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KDQorICAg ICAgICAoJ2ZsYWdzJyAnPScgdmZyQWN0aW9uRmxhZ3MgJywnKT8NCg0KKyAgICAgICAgJ2NvbmZp ZycgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAgICAgICB2ZnJT dGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbbG9jYWxjdHguTm9kZV0NCg0KKyAgICAgICAgJ2VuZGFj dGlvbicgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJBY3Rpb25GbGFncw0KDQorbG9jYWxzW0hG bGFncz0wXQ0KDQorICAgIDogICBhY3Rpb25GbGFnc0ZpZWxkICgnfCcgYWN0aW9uRmxhZ3NGaWVs ZCkqDQoNCisgICAgOw0KDQorYWN0aW9uRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hGbGFnPTBdDQoN CisgICAgOiAgIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQoNCisgICAgOw0K DQorDQoNCit2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KDQorbG9jYWxzW05vZGVdDQoNCisgICAg OiAgIHZmclN0YXRlbWVudE51bWVyaWMgfCB2ZnJTdGF0ZW1lbnRPbmVPZg0KDQorICAgIDsNCg0K Kw0KDQordmZyU3RhdGVtZW50TnVtZXJpYw0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9OVU1FUklDX09QKSwgT3BPYmo9Q0lmck51bWVyaWMoKSwgUVR5cGU9RUZJX1FVRVNJT05f VFlQRS5RVUVTVElPTl9OT1JNQUxdDQoNCisgICAgOiAgICdudW1lcmljJw0KDQorICAgICAgICB2 ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0NCg0KKyAg ICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCg0KKyAgICAgICAg KEY9J2ZsYWdzJyAnPScgdmZyTnVtZXJpY0ZsYWdzICcsJyk/DQoNCisgICAgICAgICgna2V5JyAn PScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgIHZmclNldE1pbk1heFN0ZXBbbG9jYWxjdHguT3BP YmpdDQoNCisgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5O b2RlXQ0KDQorICAgICAgICAnZW5kbnVtZXJpYycgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJT ZXRNaW5NYXhTdGVwW09wT2JqXSAvLyBDSWZyTWluTWF4U3RlcERhdGENCg0KKyAgICA6ICAgJ21p bmltdW0nICc9JyAoTjE9Jy0nKT8gST1OdW1iZXIgJywnDQoNCisgICAgICAgICdtYXhpbXVtJyAn PScgKE4yPSctJyk/IEE9TnVtYmVyICcsJw0KDQorICAgICAgICAoJ3N0ZXAnICc9JyBTPU51bWJl ciAnLCcpPw0KDQorICAgIDsNCg0KKw0KDQordmZyTnVtZXJpY0ZsYWdzDQoNCitsb2NhbHNbSEZs YWdzPTAsIExGbGFncz0wLElzRGlzcGxheVNwZWNpZmllZD1GYWxzZV0NCg0KKyAgICA6ICAgbnVt ZXJpY0ZsYWdzRmllbGQgKCd8JyBudW1lcmljRmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorDQoN CitudW1lcmljRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hGbGFnPTAsSXNTZXRUeXBlPUZhbHNlLElz RGlzcGxheVNwZWNpZmllZD1GYWxzZV0NCg0KKyAgICA6ICAgTj1OdW1iZXINCg0KKyAgICB8ICAg J05VTUVSSUNfU0laRV8xJw0KDQorICAgIHwgICAnTlVNRVJJQ19TSVpFXzInDQoNCisgICAgfCAg ICdOVU1FUklDX1NJWkVfNCcNCg0KKyAgICB8ICAgJ05VTUVSSUNfU0laRV84Jw0KDQorICAgIHwg ICAnRElTUExBWV9JTlRfREVDJw0KDQorICAgIHwgICAnRElTUExBWV9VSU5UX0RFQycNCg0KKyAg ICB8ICAgJ0RJU1BMQVlfVUlOVF9IRVgnDQoNCisgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZA0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50T25lT2YNCg0KK2xvY2Fsc1tOb2Rl PVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QKSwgT3BPYmo9Q0lmck9uZU9mKCksIFFUeXBl PUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAnb25lb2YnDQoN CisgICAgICAgIHZmclF1ZXN0aW9uQmFzZUluZm9bbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFU eXBlXQ0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbbG9jYWxjdHguT3BPYmpdICcsJw0K DQorICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJPbmVvZkZsYWdzRmllbGQgJywnKT8NCg0KKyAg ICAgICAgKHZmclNldE1pbk1heFN0ZXBbbG9jYWxjdHguT3BPYmpdKT8NCg0KKyAgICAgICAgdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQoNCisgICAgICAgICdl bmRvbmVvZicgJzsnDQoNCisgICAgOw0KDQorDQoNCit2ZnJPbmVvZkZsYWdzRmllbGQNCg0KK2xv Y2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQoNCisgICAgOiAgIG51bWVyaWNGbGFnc0ZpZWxkICgn fCcgbnVtZXJpY0ZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3Ry aW5nVHlwZQ0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudFN0cmluZyB8 IHZmclN0YXRlbWVudFBhc3N3b3JkDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRTdHJp bmcNCg0KK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5HX09QKSwgT3BPYmo9 Q0lmclN0cmluZygpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCg0K KyAgICA6ICAgJ3N0cmluZycNCg0KKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9jYWxjdHgu T3BPYmosIGxvY2FsY3R4LlFUeXBlXSAnLCcNCg0KKyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZy U3RyaW5nRmxhZ3NGaWVsZCAnLCcpPw0KDQorICAgICAgICAoJ2tleScgJz0nIE51bWJlciAnLCcp Pw0KDQorICAgICAgICBNaW49J21pbnNpemUnICc9JyBOdW1iZXIgJywnDQoNCisgICAgICAgIE1h eD0nbWF4c2l6ZScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rp b25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQoNCisgICAgICAgICdlbmRzdHJpbmcnICc7Jw0K DQorICAgIDsNCg0KKw0KDQordmZyU3RyaW5nRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hGbGFncz0w LCBMRmxhZ3M9MF0NCg0KKyAgICA6ICAgc3RyaW5nRmxhZ3NGaWVsZCAoJ3wnIHN0cmluZ0ZsYWdz RmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorc3RyaW5nRmxhZ3NGaWVsZA0KDQorbG9jYWxzW0hG bGFnPTAsIExGbGFnPTBdDQoNCisgICAgOiAgIE49TnVtYmVyDQoNCisgICAgfCAgICdNVUxUSV9M SU5FJw0KDQorICAgIHwgICBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7DQoNCisN Cg0KK3ZmclN0YXRlbWVudFBhc3N3b3JkDQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklf SUZSX1BBU1NXT1JEX09QKSwgT3BPYmo9Q0lmclBhc3N3b3JkKCksIFFUeXBlPUVGSV9RVUVTSU9O X1RZUEUuUVVFU1RJT05fTk9STUFMXQ0KDQorICAgIDogICAncGFzc3dvcmQnDQoNCisgICAgICAg IHZmclF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0nLCcNCg0K KyAgICAgICAgKEY9J2ZsYWdzJyAnPScgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkICcsJyk/DQoNCisg ICAgICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgIE1pbj0nbWluc2l6ZScg Jz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgTWF4PSdtYXhzaXplJyAnPScgTnVtYmVyICcsJw0K DQorICAgICAgICAoJ2VuY29kaW5nJyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgIHZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAnZW5k cGFzc3dvcmQnICc7Jw0KDQorICAgIDsNCg0KKw0KDQordmZyUGFzc3dvcmRGbGFnc0ZpZWxkDQoN Citsb2NhbHNbSEZsYWdzPTBdDQoNCisgICAgOiAgIHBhc3N3b3JkRmxhZ3NGaWVsZCgnfCcgcGFz c3dvcmRGbGFnc0ZpZWxkKSoNCg0KKyAgICA7DQoNCisNCg0KK3Bhc3N3b3JkRmxhZ3NGaWVsZA0K DQorbG9jYWxzW0hGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICBxdWVzdGlv bmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudE9yZGVyZWRM aXN0DQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX09SREVSRURfTElTVF9PUCks IE9wT2JqPUNJZnJPcmRlcmVkTGlzdCgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9O X05PUk1BTF0NCg0KKyAgICA6ICAgJ29yZGVyZWRsaXN0Jw0KDQorICAgICAgICB2ZnJRdWVzdGlv bkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KDQorICAgICAgICAo TT0nbWF4Y29udGFpbmVycycgJz0nIE51bWJlciAnLCcpPw0KDQorICAgICAgICAoRj0nZmxhZ3Mn ICc9JyB2ZnJPcmRlcmVkTGlzdEZsYWdzICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAnZW5kbGlzdCcgJzsn DQoNCisgICAgOw0KDQorDQoNCit2ZnJPcmRlcmVkTGlzdEZsYWdzDQoNCitsb2NhbHNbSEZsYWdz PTAsIExGbGFncz0wXQ0KDQorICAgIDogICBvcmRlcmVkbGlzdEZsYWdzRmllbGQgKCd8JyBvcmRl cmVkbGlzdEZsYWdzRmllbGQpKg0KDQorICAgIDsNCg0KKw0KDQorb3JkZXJlZGxpc3RGbGFnc0Zp ZWxkDQoNCitsb2NhbHNbSEZsYWc9MCwgTEZsYWc9MF0NCg0KKyAgICA6ICAgTnVtYmVyDQoNCisg ICAgfCAgICdVTklRVUUnDQoNCisgICAgfCAgICdOT0VNUFRZJw0KDQorICAgIHwgICBxdWVzdGlv bmhlYWRlckZsYWdzRmllbGQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudERhdGUNCg0K K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfREFURV9PUCksIE9wT2JqPUNJZnJEYXRl KCksIFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURSwgVmFsPUVGSV9JRlJfVFlQ RV9WQUxVRSgpXQ0KDQorICAgIDogICAnZGF0ZScNCg0KKyAgICAgICAgKCAgICggICB2ZnJRdWVz dGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdICcsJw0KDQorICAgICAg ICAgICAgICAgIChGMT0nZmxhZ3MnICc9JyB2ZnJEYXRlRmxhZ3MgJywnKT8NCg0KKyAgICAgICAg ICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCg0K KyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgIHwNCg0KKyAgICAgICAgICAgICggICAneWVh cicgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRpZmllciAnLCcN Cg0KKyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJl ciAnKScgJywnDQoNCisgICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAn KCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgICAgICAgICBtaW5NYXhEYXRlU3RlcERlZmF1 bHRbbG9jYWxjdHguVmFsLmRhdGUsIDBdDQoNCisgICAgICAgICAgICAgICAgJ21vbnRoJyAndmFy aWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAg ICAgICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAn LCcNCg0KKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICcsJw0KDQorICAgICAgICAgICAgICAgIG1pbk1heERhdGVTdGVwRGVmYXVsdFtsb2Nh bGN0eC5WYWwuZGF0ZSwgMV0NCg0KKyAgICAgICAgICAgICAgICAnZGF5JyAndmFyaWQnICc9JyBT dHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAg ICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAg ICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcs Jw0KDQorICAgICAgICAgICAgICAgIG1pbk1heERhdGVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwu ZGF0ZSwgMl0NCg0KKyAgICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyRGF0ZUZsYWdz ICcsJyk/DQoNCisgICAgICAgICAgICAgICAgKHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKSoN Cg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAnZW5kZGF0ZScgJzsn DQoNCisgICAgOw0KDQorDQoNCittaW5NYXhEYXRlU3RlcERlZmF1bHRbRGF0ZSwgS2V5VmFsdWVd DQoNCisgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAnbWF4aW11 bScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgKCdzdGVwJyAnPScgTnVtYmVyICcsJyk/DQoN CisgICAgICAgICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQoNCisgICAgOw0KDQorDQoN Cit2ZnJEYXRlRmxhZ3MNCg0KK2xvY2Fsc1tMRmxhZ3M9MF0NCg0KKyAgICA6ICAgZGF0ZUZsYWdz RmllbGQgKCd8JyBkYXRlRmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorZGF0ZUZsYWdzRmllbGQN Cg0KK2xvY2Fsc1tMRmxhZz0wXQ0KDQorICAgIDogICBOdW1iZXINCg0KKyAgICB8ICAgJ1lFQVJf U1VQUFJFU1MnDQoNCisgICAgfCAgICdNT05USF9TVVBQUkVTUycNCg0KKyAgICB8ICAgJ0RBWV9T VVBQUkVTUycNCg0KKyAgICB8ICAgJ1NUT1JBR0VfTk9STUFMJw0KDQorICAgIHwgICAnU1RPUkFH RV9USU1FJw0KDQorICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQoNCisgICAgOw0KDQorDQoNCit2 ZnJTdGF0ZW1lbnRUaW1lDQoNCitsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1RJTUVf T1ApLCBPcE9iaj1DSWZyVGltZSgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJ TUUsICBWYWw9RUZJX0lGUl9UWVBFX1ZBTFVFKCldDQoNCisgICAgOiAgICd0aW1lJw0KDQorICAg ICAgICAoICAgKCAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5R VHlwZV0gJywnDQoNCisgICAgICAgICAgICAgICAgKEYxPSdmbGFncycgJz0nIHZmclRpbWVGbGFn cyAnLCcpPw0KDQorICAgICAgICAgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlz dFtsb2NhbGN0eC5Ob2RlXQ0KDQorICAgICAgICAgICAgKQ0KDQorICAgICAgICAgICAgfA0KDQor ICAgICAgICAgICAgKA0KDQorICAgICAgICAgICAgICAgICdob3VyJyAndmFyaWQnICc9JyBTdHJp bmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAgICAg ICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAg ICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0K DQorICAgICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGlt ZSwgMF0NCg0KKyAgICAgICAgICAgICAgICAnbWludXRlJyAndmFyaWQnICc9JyBTdHJpbmdJZGVu dGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAgICAgICdwcm9t cHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgICAg ICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAg ICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGltZSwgMV0N Cg0KKyAgICAgICAgICAgICAgICAnc2Vjb25kJyAndmFyaWQnICc9JyBTdHJpbmdJZGVudGlmaWVy ICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KDQorICAgICAgICAgICAgICAgICdwcm9tcHQnICc9 JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgICAgICAgICAn aGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KDQorICAgICAgICAg ICAgICAgIG1pbk1heFRpbWVTdGVwRGVmYXVsdFtsb2NhbGN0eC5WYWwudGltZSwgMl0NCg0KKyAg ICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyVGltZUZsYWdzICcsJyk/DQoNCisgICAg ICAgICAgICAgICAgKHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKSoNCg0KKyAgICAgICAgICAg ICkNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAnZW5kdGltZScgJzsnDQoNCisgICAgOw0KDQor DQoNCittaW5NYXhUaW1lU3RlcERlZmF1bHRbVGltZSwgS2V5VmFsdWVdDQoNCisgICAgOiAgICdt aW5pbXVtJyAnPScgTnVtYmVyICcsJw0KDQorICAgICAgICAnbWF4aW11bScgJz0nIE51bWJlciAn LCcNCg0KKyAgICAgICAgKCdzdGVwJyAnPScgTnVtYmVyICcsJyk/DQoNCisgICAgICAgICgnZGVm YXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQoNCisgICAgOw0KDQorDQoNCit2ZnJUaW1lRmxhZ3MN Cg0KK2xvY2Fsc1tMRmxhZ3M9MF0NCg0KKyAgICA6ICAgdGltZUZsYWdzRmllbGQgKCd8JyB0aW1l RmxhZ3NGaWVsZCkqDQoNCisgICAgOw0KDQorDQoNCit0aW1lRmxhZ3NGaWVsZA0KDQorbG9jYWxz W0xGbGFnPTBdDQoNCisgICAgOiAgIE51bWJlcg0KDQorICAgIHwgICAnSE9VUl9TVVBQUkVTUycN Cg0KKyAgICB8ICAgJ01JTlVURV9TVVBQUkVTUycNCg0KKyAgICB8ICAgJ1NFQ09ORF9TVVBQUkVT UycNCg0KKyAgICB8ICAgJ1NUT1JBR0VfTk9STUFMJw0KDQorICAgIHwgICAnU1RPUkFHRV9USU1F Jw0KDQorICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0 ZW1lbnRDb25kaXRpb25hbA0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVu dERpc2FibGVJZlN0YXQNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQgLy9l bmhhbmNlIHRvIGJlIGNvbXBhdGlibGUgZm9yIGZyYW1ld29yayBlbmRpZg0KDQorICAgIHwgICB2 ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudEluY29uc2lz dGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0aWJsZSBmb3IgZnJhbWV3b3JrDQoNCisgICAgOw0K DQorDQoNCisvLyBuZXcgc2VlbXMgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIG9sZCwgd2h5IG5ldz8N Cg0KK3ZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3DQoNCitsb2NhbHNbTm9kZV0NCg0KKyAgICA6 ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdA0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdE5ldw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3DQoN CisgICAgICAgIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCAgIC8vdG8gYmUgY29tcGF0 aWJsZSBmb3IgZnJhbWV3b3JrDQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmU3RhdA0KDQorbG9jYWxzW05vZGVdDQoNCisgICAgOiAgIHZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0TmV3DQoNCisgICAgOw0KDQorDQoNCit2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0DQoN Citsb2NhbHNbTm9kZV0NCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0K DQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3RhdExpc3QNCg0KK2xvY2Fsc1tOb2RlXQ0K DQorICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0DQoNCisgICAgfCAgIHZmclN0YXRlbWVudFF1ZXN0 aW9ucw0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KDQorICAgIHwgICB2ZnJT dGF0ZW1lbnRMYWJlbA0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24NCg0KKyAgICB8 ICAgdmZyU3RhdGVtZW50SW52YWxpZA0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50U3Rh dExpc3RPbGQNCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50U3RhdA0KDQorICAgIHwgICB2ZnJTdGF0 ZW1lbnRRdWVzdGlvbnMNCg0KKyAgICB8ICAgdmZyU3RhdGVtZW50TGFiZWwNCg0KKyAgLy8gSnVz dCBmb3IgZnJhbWV3b3JrIHZmciBjb21wYXRpYmlsaXR5DQoNCisgICAgfCAgIHZmclN0YXRlbWVu dEludmFsaWQNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudERpc2FibGVJZlN0YXQNCg0K K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCldDQoNCisgICAg OiAgICdkaXNhYmxlaWYnIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgICAgICh2 ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQoNCisgICAgICAgICdlbmRpZicgJzsnDQoNCisgICAgOw0K DQorDQoNCisNCg0KKy8vIENvbXBhdGlibGUgZm9yIGZyYW1ld29yayB2ZnIgZmlsZQ0KDQorLy8N Cg0KK3ZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWYNCg0KKyAgICA6ICAgJ3N1cHByZXNz aWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkq ICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgOw0K DQorDQoNCit2ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmDQoNCisgICAgOiAgICdncmF5 b3V0aWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVs ZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAg Ow0KDQorDQoNCit2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldw0KDQorbG9jYWxzW05vZGU9 VmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQoNCisgICAgOiAgICdzdXBwcmVz c2lmJw0KDQorICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQp KiAnLCcpPw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7Jw0KDQorICAgICAg ICAodmZyU3RhdGVtZW50U3RhdExpc3QpKg0KDQorICAgICAgICAnZW5kaWYnICc7Jw0KDQorICAg IDsNCg0KKw0KDQordmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KDQorbG9jYWxzW05vZGU9 VmZyVHJlZU5vZGUoRUZJX0lGUl9HUkFZX09VVF9JRl9PUCldDQoNCisgICAgOiAgICdncmF5b3V0 aWYnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkq ICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQoNCisgICAgICAg ICh2ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQoNCisgICAgICAgICdlbmRpZicgJzsnDQoNCisgICAg Ow0KDQorDQoNCit2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQNCg0KK2xvY2Fsc1tOb2Rl PVZmclRyZWVOb2RlKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKV0NCg0KKyAgICA6ICAgJ2lu Y29uc2lzdGVudGlmJw0KDQorICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygn IE51bWJlciAnKScgJywnDQoNCisgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcg ZmxhZ3NGaWVsZCkqICcsJyk/DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCg0K KyAgICAgICAgJ2VuZGlmJyAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudEludmFs aWQgLy8gZm9yIGNvbXBhdGliaWxpdHkNCg0KKyAgICA6ICAgdmZyU3RhdGVtZW50SW52YWxpZEhp ZGRlbg0KDQorICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5DQoNCisgICAgfCAg IHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQoNCisgICAgOw0KDQorDQoN Cit2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuDQoNCisgICAgOiAgICdoaWRkZW4nDQoNCisgICAg ICAgICd2YWx1ZScgJz0nIE51bWJlciAnLCcNCg0KKyAgICAgICAgJ2tleScgJz0nIE51bWJlciAn OycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkNCg0KKyAg ICA6ICAgJ2ludmVudG9yeScNCg0KKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAn KCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAn KCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAgICAgKCd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScpPw0KDQorICAgICAgICAnOycNCg0KKyAgICA7DQoNCisNCg0KK3ZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQoNCisgICAgOiAgICggICAnc2F2ZScN Cg0KKyAgICAgICAgfCAgICdyZXN0b3JlJw0KDQorICAgICAgICApDQoNCisgICAgICAgICdkZWZh dWx0cycgJywnDQoNCisgICAgICAgICdmb3JtaWQnICc9JyBOdW1iZXIgJywnDQoNCisgICAgICAg ICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCg0KKyAgICAg ICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KDQorICAgICAgICAo JywnICdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSopPw0KDQorICAgICAg ICAoJywnICdrZXknICc9JyBOdW1iZXIpPw0KDQorICAgICAgICAnOycNCg0KKyAgICA7DQoNCit2 ZnJTdGF0ZW1lbnRMYWJlbA0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlE X09QKV0NCg0KKyAgICA6ICAgJ2xhYmVsJyBOdW1iZXIgJzsnDQoNCisgICAgOw0KDQorDQoNCit2 ZnJTdGF0ZW1lbnRCYW5uZXIgLy8gSXMgVGltZU91dCBuZWVkZWQNCg0KK2xvY2Fsc1tOb2RlPVZm clRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCldDQoNCisgICAgOiAgICdiYW5uZXInICgnLCcpPw0K DQorICAgICAgICAndGl0bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cg0KKyAgICAgICAgKCAgICggICAnbGluZScgTnVtYmVyICcsJw0KDQorICAgICAgICAgICAgICAg ICdhbGlnbicgKCdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JykgJzsnDQoNCisgICAgICAgICAg ICApDQoNCisgICAgICAgICAgICB8DQoNCisgICAgICAgICAgICAoICAgJ3RpbWVvdXQnICc9JyBO dW1iZXIgJzsnDQoNCisgICAgICAgICAgICApDQoNCisgICAgICAgICkNCg0KKyAgICA7DQoNCisN Cg0KK3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9HVUlEX09QKSwgRGF0YUJ1ZmYsIFNpemU9MCwgVHlwZU5hbWU9JycsIFR5cGVTaXplPTAs IElzU3RydWN0PUZhbHNlLCBBcnJheU51bT0wXQ0KDQorICAgIDogICAnZ3VpZG9wJw0KDQorICAg ICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uDQoNCisgICAgICAgICggICAnLCcgRD0nZGF0 YXR5cGUnICc9Jw0KDQorICAgICAgICAgICAgKCAgICdVSU5UNjQnICgnWycgTnVtYmVyICddJyk/ DQoNCisgICAgICAgICAgICB8ICAgJ1VJTlQzMicgKCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAg ICAgICAgIHwgICAnVUlOVDE2JyAoJ1snIE51bWJlciAnXScpPw0KDQorICAgICAgICAgICAgfCAg ICdVSU5UOCcgKCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnQk9PTEVBTicg KCdbJyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnRUZJX1NUUklOR19JRCcgKCdb JyBOdW1iZXIgJ10nKT8NCg0KKyAgICAgICAgICAgIHwgICAnRUZJX0hJSV9EQVRFJyAoJ1snIE51 bWJlciAnXScpPw0KDQorICAgICAgICAgICAgfCAgICdFRklfSElJX1RJTUUnICgnWycgTnVtYmVy ICddJyk/DQoNCisgICAgICAgICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAoJ1snIE51bWJlciAnXScp Pw0KDQorICAgICAgICAgICAgfCAgIFN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8N Cg0KKyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgICh2ZnJFeHRlbnNpb25EYXRhW2xvY2Fs Y3R4LkRhdGFCdWZmXSkqDQoNCisgICAgICAgICk/DQoNCisgICAgICAgICgNCg0KKyAgICAgICAg ICAgICcsJyAodmZyU3RhdGVtZW50RXh0ZW5zaW9uKSoNCg0KKyAgICAgICAgICAgICdlbmRndWlk b3AnDQoNCisgICAgICAgICk/DQoNCisgICAgICAgICc7Jw0KDQorICAgIDsNCg0KKw0KDQorDQoN Cit2ZnJFeHRlbnNpb25EYXRhW0RhdGFCdWZmXQ0KDQorbG9jYWxzW0lzU3RydWN0XQ0KDQorICAg IDogICAnLCcgJ2RhdGEnICgnWycgTnVtYmVyICddJyk/DQoNCisgICAgICAgICggJy4nIGFycmF5 TmFtZSkqICAnPScgTj1OdW1iZXINCg0KKyAgICA7DQoNCisNCg0KKw0KDQordmZyU3RhdGVtZW50 TW9kYWwNCg0KK2xvY2Fsc1tOb2RlXQ0KDQorICAgIDogdmZyTW9kYWxUYWcgJzsnDQoNCisgICAg Ow0KDQorDQoNCit2ZnJNb2RhbFRhZw0KDQorbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lG Ul9NT0RBTF9UQUdfT1ApXQ0KDQorICAgIDogICAnbW9kYWwnDQoNCisgICAgOw0KDQorDQoNCit2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCitsb2NhbHNbRXhwSW5mbz1FeHByZXNzaW9uSW5mbygp XQ0KDQorICAgIDogICBhbmRUZXJtW2xvY2FsY3R4LkV4cEluZm9dICgnT1InIGFuZFRlcm1bbG9j YWxjdHguRXhwSW5mb10pKg0KDQorICAgIDsNCg0KKw0KDQordmZyU3RhdGVtZW50RXhwcmVzc2lv blN1Yg0KDQorbG9jYWxzW0V4cEluZm89RXhwcmVzc2lvbkluZm8oKV0NCg0KKyAgICA6ICAgYW5k VGVybVtsb2NhbGN0eC5FeHBJbmZvXSAoJ09SJyBhbmRUZXJtW2xvY2FsY3R4LkV4cEluZm9dKSoN Cg0KKyAgICA7DQoNCisNCg0KK2FuZFRlcm1bRXhwSW5mb10NCg0KK2xvY2Fsc1tDSWZyQW5kTGlz dD1bXV0NCg0KKyAgICA6ICAgYml0d2lzZW9yVGVybVtFeHBJbmZvXSAoJ0FORCcgYml0d2lzZW9y VGVybVtFeHBJbmZvXSkqDQoNCisgICAgOw0KDQorDQoNCitiaXR3aXNlb3JUZXJtW0V4cEluZm9d DQoNCitsb2NhbHNbQ0lmckJpdFdpc2VPckxpc3Q9W11dDQoNCisgICAgOiAgIGJpdHdpc2VhbmRU ZXJtW0V4cEluZm9dICgnfCcgYml0d2lzZWFuZFRlcm1bRXhwSW5mb10pKg0KDQorICAgIDsNCg0K Kw0KDQorDQoNCitiaXR3aXNlYW5kVGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJCaXRXaXNl QW5kTGlzdD1bXV0NCg0KKyAgICA6ICAgZXF1YWxUZXJtW0V4cEluZm9dICgnJicgZXF1YWxUZXJt W0V4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KKw0KDQorZXF1YWxUZXJtW0V4cEluZm9dDQoN Citsb2NhbHNbQ0lmckVxdWFsTGlzdD1bXSwgQ0lmck5vdEVxdWFsTGlzdD1bXV0NCg0KKyAgICA6 ICAgY29tcGFyZVRlcm1bbG9jYWxjdHguRXhwSW5mb10NCg0KKyAgICAgICAgKGVxdWFsVGVybVN1 cHBsZW1lbnRhcnlbbG9jYWxjdHguQ0lmckVxdWFsTGlzdCwgbG9jYWxjdHguQ0lmck5vdEVxdWFs TGlzdCwgRXhwSW5mb10pKg0KDQorICAgIDsNCg0KKw0KDQorDQoNCitlcXVhbFRlcm1TdXBwbGVt ZW50YXJ5W0NJZnJFcXVhbExpc3QsIENJZnJOb3RFcXVhbExpc3QsIEV4cEluZm9dDQoNCisgICAg OiAgICgnPT0nIGNvbXBhcmVUZXJtW0V4cEluZm9dKSAgIyBlcXVhbFRlcm1FcXVhbFJ1bGUNCg0K KyAgICAgICAgfA0KDQorICAgICAgICAoJyE9JyBjb21wYXJlVGVybVtFeHBJbmZvXSkgIyBlcXVh bFRlcm1Ob3RFcXVhbFJ1bGUNCg0KKyAgICA7DQoNCisNCg0KK2NvbXBhcmVUZXJtW0V4cEluZm9d DQoNCitsb2NhbHNbQ0lmckxlc3NUaGFuTGlzdD1bXSwgQ0lmckxlc3NFcXVhbExpc3Q9W10sIENJ ZnJHcmVhdGVyVGhhbkxpc3Q9W10sIENJZnJHcmVhdGVyRXF1YWxMaXN0PVtdXQ0KDQorICAgIDog ICBzaGlmdFRlcm1bRXhwSW5mb10NCg0KKyAgICAgICAgKGNvbXBhcmVUZXJtU3VwcGxlbWVudGFy eVtsb2NhbGN0eC5DSWZyTGVzc1RoYW5MaXN0LCBsb2NhbGN0eC5DSWZyTGVzc0VxdWFsTGlzdCwg bG9jYWxjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdCwgbG9jYWxjdHguQ0lmckdyZWF0ZXJFcXVhbExp c3QsIEV4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KK2NvbXBhcmVUZXJtU3VwcGxlbWVudGFy eVtDSWZyTGVzc1RoYW5MaXN0LCBDSWZyTGVzc0VxdWFsTGlzdCwgQ0lmckdyZWF0ZXJUaGFuTGlz dCwgQ0lmckdyZWF0ZXJFcXVhbExpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnPCcgc2hpZnRU ZXJtW0V4cEluZm9dKSAgICMgY29tcGFyZVRlcm1MZXNzUnVsZQ0KDQorICAgICAgICB8DQoNCisg ICAgICAgICgnPD0nIHNoaWZ0VGVybVtFeHBJbmZvXSkgICMgIGNvbXBhcmVUZXJtTGVzc0VxdWFs UnVsZQ0KDQorICAgICAgICB8DQoNCisgICAgICAgICgnPicgc2hpZnRUZXJtW0V4cEluZm9dKSAg ICMgIGNvbXBhcmVUZXJtR3JlYXRlclJ1bGUNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJz49 JyBzaGlmdFRlcm1bRXhwSW5mb10pICAjICBjb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUNCg0K KyAgICA7DQoNCisNCg0KK3NoaWZ0VGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJTaGlmdExl ZnRMaXN0PVtdLCBDSWZyU2hpZnRSaWdodExpc3Q9W11dDQoNCisgICAgOiAgIGFkZE1pbnVzVGVy bVtFeHBJbmZvXQ0KDQorICAgICAgICAoc2hpZnRUZXJtU3VwcGxlbWVudGFyeVtsb2NhbGN0eC5D SWZyU2hpZnRMZWZ0TGlzdCwgbG9jYWxjdHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvXSkq DQoNCisgICAgOw0KDQorDQoNCitzaGlmdFRlcm1TdXBwbGVtZW50YXJ5W0NJZnJTaGlmdExlZnRM aXN0LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnPDwnIGFkZE1p bnVzVGVybVtFeHBJbmZvXSkgICMgc2hpZnRUZXJtTGVmdA0KDQorICAgICAgICB8DQoNCisgICAg ICAgICgnPj4nIGFkZE1pbnVzVGVybVtFeHBJbmZvXSkgIyBzaGlmdFRlcm1SaWdodA0KDQorICAg IDsNCg0KKw0KDQorYWRkTWludXNUZXJtW0V4cEluZm9dDQoNCitsb2NhbHNbQ0lmckFkZExpc3Q9 W10sIENJZnJTdWJ0cmFjdExpc3Q9W11dDQoNCisgICAgOiAgIG11bHRkaXZtb2RUZXJtW0V4cElu Zm9dDQoNCisgICAgICAgIChhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4LkNJZnJB ZGRMaXN0LCBsb2NhbGN0eC5DSWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvXSkqDQoNCisgICAgOw0K DQorDQoNCithZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5W0NJZnJBZGRMaXN0LCBDSWZyU3VidHJh Y3RMaXN0LCBFeHBJbmZvXQ0KDQorICAgIDogICAoJysnIG11bHRkaXZtb2RUZXJtW0V4cEluZm9d KSAjIGFkZE1pbnVzVGVybXBBZGQNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJy0nIG11bHRk aXZtb2RUZXJtW0V4cEluZm9dKSAjIGFkZE1pbnVzVGVybVN1YnRyYWN0DQoNCisgICAgOw0KDQor DQoNCittdWx0ZGl2bW9kVGVybVtFeHBJbmZvXQ0KDQorbG9jYWxzW0NJZnJNdWx0aXBseUxpc3Q9 W10sIENJZnJEaXZpZGVMaXN0PVtdLCBDSWZyTW9kdWxvTGlzdD1bXV0NCg0KKyAgICA6ICAgY2Fz dFRlcm1bRXhwSW5mb10NCg0KKyAgICAgICAgKG11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeVts b2NhbGN0eC5DSWZyTXVsdGlwbHlMaXN0LCBsb2NhbGN0eC5DSWZyRGl2aWRlTGlzdCwgbG9jYWxj dHguQ0lmck1vZHVsb0xpc3QsIEV4cEluZm9dKSoNCg0KKyAgICA7DQoNCisNCg0KK211bHRkaXZt b2RUZXJtU3VwcGxlbWVudGFyeVtDSWZyTXVsdGlwbHlMaXN0LCBDSWZyRGl2aWRlTGlzdCwgQ0lm ck1vZHVsb0xpc3QsIEV4cEluZm9dDQoNCisgICAgOiAgICgnKicgY2FzdFRlcm1bRXhwSW5mb10p ICMgbXVsdGRpdm1vZFRlcm1NdWwNCg0KKyAgICAgICAgfA0KDQorICAgICAgICAoJy8nIGNhc3RU ZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtRGl2DQoNCisgICAgICAgIHwNCg0KKyAgICAg ICAgKCclJyBjYXN0VGVybVtFeHBJbmZvXSkgIyBtdWx0ZGl2bW9kVGVybU1vZHVsbw0KDQorICAg IDsNCg0KKw0KDQorY2FzdFRlcm1bRXhwSW5mb10NCg0KK2xvY2Fsc1tUQk9iaj1Ob25lLCBUVU9i aj1Ob25lXQ0KDQorICAgIDogICAoICAgJygnDQoNCisgICAgICAgICAgICAoICAnQk9PTEVBTicN Cg0KKyAgICAgICAgICAgIHwgICdVSU5UNjQnDQoNCisgICAgICAgICAgICB8ICAnVUlOVDMyJw0K DQorICAgICAgICAgICAgfCAgJ1VJTlQxNicNCg0KKyAgICAgICAgICAgIHwgICdVSU5UOCcNCg0K KyAgICAgICAgICAgICkNCg0KKyAgICAgICAgICAgICcpJw0KDQorICAgICAgICApKg0KDQorICAg ICAgICBhdG9tVGVybVtFeHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorYXRvbVRlcm1bRXhwSW5m b10NCg0KKyAgICA6ICAgdmZyRXhwcmVzc2lvbkNhdGVuYXRlW0V4cEluZm9dDQoNCisgICAgfCAg IHZmckV4cHJlc3Npb25NYXRjaFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uTWF0 Y2gyW0V4cEluZm9dDQoNCisgICAgfCAgIHZmckV4cHJlc3Npb25QYXJlbltFeHBJbmZvXQ0KDQor ICAgIHwgICB2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQoNCisgICAgfCAg IHZmckV4cHJlc3Npb25Db25zdGFudFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9u VW5hcnlPcFtFeHBJbmZvXQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uVGVybmFyeU9wW0V4cElu Zm9dDQoNCisgICAgfCAgIHZmckV4cHJlc3Npb25NYXBbRXhwSW5mb10NCg0KKyAgICB8ICAgKCdO T1QnIGF0b21UZXJtW0V4cEluZm9dKQ0KDQorICAgIHwgICB2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4 cEluZm9dDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uQ2F0ZW5hdGVbRXhwSW5mb10N Cg0KK2xvY2Fsc1tDT2JqPU5vbmVdDQoNCisgICAgOiAgICdjYXRlbmF0ZScNCg0KKyAgICAgICAg JygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uTWF0Y2hbRXhwSW5mb10NCg0K K2xvY2Fsc1tNT2JqPU5vbmVdDQoNCisgICAgOiAgICdtYXRjaCcNCg0KKyAgICAgICAgJygnIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJykn DQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4cEluZm9dDQoNCitsb2Nh bHNbTTJPYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ21hdGNoMicNCg0KKyAgICAgICAgJygnIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWInLCcNCg0KKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YiAnLCcNCg0KKyAgICAgICAgZ3VpZERlZmluaXRpb24gJyknDQoNCisgICAgOw0KDQorDQoN Cit2ZnJFeHByZXNzaW9uUGFyZW5bRXhwSW5mb10NCg0KKyAgICA6ICAgJygnIHZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNzaW9uQnVpbGRJ bkZ1bmN0aW9uW0V4cEluZm9dDQoNCisgICAgOiAgIGR1cEV4cFtFeHBJbmZvXQ0KDQorICAgIHwg ICB2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBpZGVxdmFsRXhwW0V4cEluZm9dDQoN CisgICAgfCAgIGlkZXFpZEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBpZGVxdmFsbGlzdEV4cFtF eHBJbmZvXQ0KDQorICAgIHwgICBxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10NCg0KKyAgICB8ICAg cnVsZXJlZkV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBzdHJpbmdyZWYxRXhwW0V4cEluZm9dDQoN CisgICAgfCAgIHB1c2h0aGlzRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHNlY3VyaXR5RXhwW0V4 cEluZm9dDQoNCisgICAgfCAgIGdldEV4cFtFeHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorZHVw RXhwW0V4cEluZm9dDQoNCitsb2NhbHNbRE9iaj1Ob25lXQ0KDQorICAgIDogICAnZHVwJw0KDQor ICAgIDsNCg0KKw0KDQorDQoNCit2YXJlcXZhbEV4cFtFeHBJbmZvXQ0KDQorICAgIDogICAndmFy ZXF2YWwnDQoNCisgICAgICAgICd2YXInICcoJyBOdW1iZXIgJyknDQoNCisgICAgICAgICggICAn PT0nIE51bWJlcg0KDQorCSAgICB8ICAgJzw9JyBOdW1iZXINCg0KKwkgICAgfCAgICc8JyBOdW1i ZXINCg0KKwkgICAgfCAgICc+PScgTnVtYmVyDQoNCisJICAgIHwgICAnPicgTnVtYmVyDQoNCisg ICAgICAgICkNCg0KKyAgICA7DQoNCisNCg0KK2lkZXF2YWxFeHBbRXhwSW5mb10NCg0KKyAgICA6 ICAgST0naWRlcXZhbCcgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCisgICAgICAgICggICAn PT0nIE51bWJlcg0KDQorCSAgICB8ICAgJzw9JyBOdW1iZXINCg0KKwkgICAgfCAgICc8JyBOdW1i ZXINCg0KKwkgICAgfCAgICc+PScgTnVtYmVyDQoNCisJICAgIHwgICAnPicgTnVtYmVyDQoNCisg ICAgICAgICkNCg0KKyAgICA7DQoNCisNCg0KK2lkZXFpZEV4cFtFeHBJbmZvXQ0KDQorICAgIDog ICBJPSdpZGVxaWQnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorICAgICAgICAoICAgRT0n PT0nIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorCSAgICB8ICAgTEU9Jzw9JyB2ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWUNCg0KKwkgICAgfCAgIEw9JzwnIHZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZQ0KDQorCSAgICB8ICAgQkU9Jz49JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCg0KKwkg ICAgfCAgIEI9Jz4nIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KDQorICAgICAgICApDQoNCisg ICAgOw0KDQorDQoNCitpZGVxdmFsbGlzdEV4cFtFeHBJbmZvXQ0KDQorICAgIDogICAnaWRlcXZh bGxpc3QnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSAnPT0nIChOdW1iZXIpKw0KDQorICAgIDsN Cg0KKw0KDQordmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCitsb2NhbHNbUUlkPUVGSV9RVUVT VElPTl9JRF9JTlZBTElELCBNYXNrPTAsIFZhcklkU3RyPScnLCBMaW5lPU5vbmVdDQoNCisgICAg OiAgIChTTjE9U3RyaW5nSWRlbnRpZmllciAnWycgST1OdW1iZXIgJ10nKSAjIHZmclF1ZXN0aW9u RGF0YUZpZWxkTmFtZVJ1bGUxDQoNCisgICAgICAgIHwgICAoU04yPVN0cmluZ0lkZW50aWZpZXIg KCcuJyBhcnJheU5hbWUpKikgIyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMg0KDQorICAg IDsNCg0KKw0KDQorYXJyYXlOYW1lDQoNCitsb2NhbHNbU3ViU3RyPScnLCBTdWJTdHJaPScnXQ0K DQorICAgIDogU3RyaW5nSWRlbnRpZmllciAoJ1snIE49TnVtYmVyICddJyk/DQoNCisgICAgOw0K DQorDQoNCitxdWVzdGlvbnJlZjFFeHBbRXhwSW5mb10NCg0KKyAgICA6ICAgJ3F1ZXN0aW9ucmVm Jw0KDQorICAgICAgICAnKCcgKCBTdHJpbmdJZGVudGlmaWVyIHwgTnVtYmVyICkgJyknDQoNCisg ICAgOw0KDQorDQoNCitydWxlcmVmRXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdydWxlcmVmJyAn KCcgU3RyaW5nSWRlbnRpZmllciAnKScNCg0KKyAgICA7DQoNCisNCg0KK3N0cmluZ3JlZjFFeHBb RXhwSW5mb10NCg0KKyAgICA6ICAgJ3N0cmluZ3JlZicgJygnDQoNCisgICAgICAgICgNCg0KKyAg ICAgICAgICAgICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknDQoNCisgICAgICAgIHwgICBO dW1iZXINCg0KKyAgICAgICAgKQ0KDQorDQoNCisNCg0KKyAgICAnKScNCg0KKyAgICA7DQoNCisN Cg0KK3B1c2h0aGlzRXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdwdXNodGhpcycNCg0KKyAgICA7 DQoNCisNCg0KK3NlY3VyaXR5RXhwW0V4cEluZm9dDQoNCisgICAgOiAgICdzZWN1cml0eScgJygn IGd1aWREZWZpbml0aW9uICcpJw0KDQorICAgIDsNCg0KKw0KDQorbnVtZXJpY1ZhclN0b3JlVHlw ZQ0KDQorbG9jYWxzW1ZhclR5cGVdDQoNCisgICAgOiAgICdOVU1FUklDX1NJWkVfMScNCg0KKyAg ICB8ICAgJ05VTUVSSUNfU0laRV8yJw0KDQorICAgIHwgICAnTlVNRVJJQ19TSVpFXzQnDQoNCisg ICAgfCAgICdOVU1FUklDX1NJWkVfOCcNCg0KKyAgICA7DQoNCisNCg0KK2dldEV4cFtFeHBJbmZv XQ0KDQorbG9jYWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9JTkZPKCksIEdPYmo9Tm9uZV0NCg0K KyAgICA6ICAgJ2dldCcgJygnIHZmclN0b3JhZ2VWYXJJZFtsb2NhbGN0eC5CYXNlSW5mbywgRmFs c2VdKCd8JyAnZmxhZ3MnICc9JyBudW1lcmljVmFyU3RvcmVUeXBlKT8gJyknDQoNCisgICAgOw0K DQorDQoNCit2ZnJFeHByZXNzaW9uQ29uc3RhbnRbRXhwSW5mb10NCg0KKyAgICA6ICAgJ1RSVUUn DQoNCisgICAgfCAgICdGQUxTRScNCg0KKyAgICB8ICAgJ09ORScNCg0KKyAgICB8ICAgJ09ORVMn DQoNCisgICAgfCAgICdaRVJPJw0KDQorICAgIHwgICAnVU5ERUZJTkVEJw0KDQorICAgIHwgICAn VkVSU0lPTicNCg0KKyAgICB8ICAgTnVtYmVyDQoNCisgICAgOw0KDQorDQoNCit2ZnJFeHByZXNz aW9uVW5hcnlPcFtFeHBJbmZvXQ0KDQorICAgIDogICBsZW5ndGhFeHBbRXhwSW5mb10NCg0KKyAg ICB8ICAgYml0d2lzZW5vdEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBxdWVzdGlvbjIzcmVmRXhw W0V4cEluZm9dDQoNCisgICAgfCAgIHN0cmluZ3JlZjJFeHBbRXhwSW5mb10NCg0KKyAgICB8ICAg dG9ib29sRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHRvc3RyaW5nRXhwW0V4cEluZm9dDQoNCisg ICAgfCAgIHVuaW50RXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHRvdXBwZXJFeHBbRXhwSW5mb10N Cg0KKyAgICB8ICAgdG9sd2VyRXhwW0V4cEluZm9dDQoNCisgICAgfCAgIHNldEV4cFtFeHBJbmZv XQ0KDQorICAgIDsNCg0KKw0KDQorbGVuZ3RoRXhwW0V4cEluZm9dDQoNCitsb2NhbHNbTE9iaj1O b25lXQ0KDQorICAgIDogICAnbGVuZ3RoJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAn KScNCg0KKyAgICA7DQoNCisNCg0KK2JpdHdpc2Vub3RFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tC V05PYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ34nICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi ICcpJw0KDQorICAgIDsNCg0KKw0KDQorcXVlc3Rpb24yM3JlZkV4cFtFeHBJbmZvXQ0KDQorICAg IDogICAncXVlc3Rpb25yZWZ2YWwnDQoNCisgICAgICAgICcoJw0KDQorICAgICAgICAoRGV2aWNl UGF0aCAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScgJywnICk/DQoNCisgICAgICAg IChVdWlkICc9JyBndWlkRGVmaW5pdGlvbiAnLCcgKT8NCg0KKyAgICAgICAgdmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0KK3N0cmluZ3Jl ZjJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tTUjJPYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ3N0cmlu Z3JlZnZhbCcgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0KDQor DQoNCit0b2Jvb2xFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUQk9iaj1Ob25lXQ0KDQorICAgIDog ICAnYm9vbHZhbCcgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0K DQorDQoNCit0b3N0cmluZ0V4cFtFeHBJbmZvXQ0KDQorbG9jYWxzW1RTT2JqPU5vbmVdDQoNCisg ICAgOiAgICdzdHJpbmd2YWwnICgnZm9ybWF0JyAnPScgTnVtYmVyICcsJyApPw0KDQorICAgICAg ICAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCg0KKyAgICA7DQoNCisNCg0KK3Vu aW50RXhwW0V4cEluZm9dDQoNCitsb2NhbHNbVFVPYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ3VuaW50 dmFsJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCg0KKyAgICA7DQoNCisNCg0K K3RvdXBwZXJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUVU9iaj1Ob25lXQ0KDQorICAgIDogICAn dG91cHBlcicgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0KDQor DQoNCit0b2x3ZXJFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUTE9iaj1Ob25lXQ0KDQorICAgIDog ICAndG9sb3dlcicgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQoNCisgICAgOw0K DQorDQoNCitzZXRFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tCYXNlSW5mbz1FRklfVkFSU1RPUkVf SU5GTygpLCBUU09iaj1Ob25lXQ0KDQorICAgIDogICAnc2V0Jw0KDQorICAgICAgICAnKCcNCg0K KyAgICAgICAgdmZyU3RvcmFnZVZhcklkW2xvY2FsY3R4LkJhc2VJbmZvLCBGYWxzZV0oJ3wnICdm bGFncycgJz0nIG51bWVyaWNWYXJTdG9yZVR5cGUpPyAnLCcNCg0KKyAgICAgICAgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0KK3ZmckV4 cHJlc3Npb25UZXJuYXJ5T3BbRXhwSW5mb10NCg0KKyAgICA6ICAgY29uZGl0aW9uYWxFeHBbRXhw SW5mb10NCg0KKyAgICB8ICAgZmluZEV4cFtFeHBJbmZvXQ0KDQorICAgIHwgICBtaWRFeHBbRXhw SW5mb10NCg0KKyAgICB8ICAgdG9rZW5FeHBbRXhwSW5mb10NCg0KKyAgICB8ICAgc3BhbkV4cFtF eHBJbmZvXQ0KDQorICAgIDsNCg0KKw0KDQorY29uZGl0aW9uYWxFeHBbRXhwSW5mb10NCg0KK2xv Y2Fsc1tDT2JqPU5vbmVdDQoNCisgICAgOiAgICdjb25kJw0KDQorICAgICAgICAnKCcNCg0KKyAg ICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnPycNCg0KKyAg ICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnOicNCg0KKyAg ICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAvLw0KDQorICAgICAgICAnKScNCg0KKyAg ICA7DQoNCisNCg0KK2ZpbmRFeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tGT2JqPU5vbmVdDQoNCisg ICAgOiAgICdmaW5kJw0KDQorICAgICAgICAnKCcNCg0KKyAgICAgICAgZmluZEZvcm1hdFtFeHBJ bmZvXSAoJ3wnIGZpbmRGb3JtYXRbRXhwSW5mb10pKg0KDQorICAgICAgICAnLCcNCg0KKyAgICAg ICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnLCcNCg0KKyAgICAgICAg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnLCcNCg0KKyAgICAgICAgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0K K2ZpbmRGb3JtYXRbRXhwSW5mb10NCg0KK2xvY2Fsc1tGb3JtYXQ9MF0NCg0KKyAgICA6ICAgJ1NF TlNJVElWRScgfCAnSU5TRU5TSVRJVkUnDQoNCisgICAgOw0KDQorDQoNCittaWRFeHBbRXhwSW5m b10NCg0KK2xvY2Fsc1tNT2JqPU5vbmVdDQoNCisgICAgOiAgICdtaWQnDQoNCisgICAgICAgICco Jw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcsJw0K DQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcsJw0KDQor ICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcpJw0KDQorICAg IDsNCg0KKw0KDQordG9rZW5FeHBbRXhwSW5mb10NCg0KK2xvY2Fsc1tUT2JqPU5vbmVdDQoNCisg ICAgOiAgICd0b2tlbicNCg0KKyAgICAgICAgJygnDQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWINCg0KKyAgICAgICAgJywnDQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWINCg0KKyAgICAgICAgJywnDQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWINCg0KKyAgICAgICAgJyknDQoNCisgICAgOw0KDQorDQoNCitzcGFuRXhwW0V4cEluZm9d DQoNCitsb2NhbHNbU09iaj1Ob25lXQ0KDQorICAgIDogICAnc3BhbicNCg0KKyAgICAgICAgJygn DQoNCisgICAgICAgICdmbGFncycgJz0nIHNwYW5GbGFncyAoJ3wnIHNwYW5GbGFncykqDQoNCisg ICAgICAgICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAg ICAgICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAg ICcsJw0KDQorICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQoNCisgICAgICAgICcp Jw0KDQorICAgIDsNCg0KKw0KDQorc3BhbkZsYWdzDQoNCitsb2NhbHNbRmxhZz0wXQ0KDQorICAg IDogICBOdW1iZXINCg0KKyAgICB8ICAgJ0xBU1RfTk9OX01BVENIJw0KDQorICAgIHwgICAnRklS U1RfTk9OX01BVENIJw0KDQorICAgIDsNCg0KKw0KDQordmZyRXhwcmVzc2lvbk1hcFtFeHBJbmZv XQ0KDQorbG9jYWxzW01PYmo9Tm9uZV0NCg0KKyAgICA6ICAgJ21hcCcNCg0KKyAgICAgICAgJygn DQoNCisgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCg0KKyAgICAgICAgJzonDQoN CisgICAgICAgICggICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQoNCisgICAgICAgICAgICAnLCcN Cg0KKyAgICAgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCg0KKyAgICAgICAgICAgICc7 Jw0KDQorICAgICAgICApKg0KDQorICAgICAgICAnKScNCg0KKyAgICA7DQoNCisNCg0KKw0KDQor RGVmaW5lIDonI2RlZmluZSc7DQoNCitJbmNsdWRlIDogJyNpbmNsdWRlJzsNCg0KK0Zvcm1Qa2dU eXBlIDogJ2Zvcm1wa2d0eXBlJzsNCg0KK09wZW5CcmFjZSA6ICd7JzsNCg0KK0Nsb3NlQnJhY2Ug OiAnfSc7DQoNCitPcGVuUGFyZW4gOiAnKCc7DQoNCitDbG9zZVBhcmVuIDogJyknOw0KDQorT3Bl bkJyYWNrZXQgOiAnWyc7DQoNCitDbG9zZUJyYWNrZXQgOiAnXSc7DQoNCitEb3QgOiAnLic7DQoN CitOZWdhdGl2ZSA6ICctJzsNCg0KK0NvbG9uIDogJzonOw0KDQorU2xhc2ggOiAnLyc7DQoNCitT ZW1pY29sb24gOiAnOyc7DQoNCitDb21tYSA6ICcsJzsNCg0KK0VxdWFsIDogJz09JzsNCg0KK05v dEVxdWFsIDogJyE9JzsNCg0KK0xlc3NFcXVhbDogJzw9JzsNCg0KK0xlc3M6JzwnOw0KDQorR3Jl YXRlckVxdWFsOic+PSc7DQoNCitHcmVhdGVyOic+JzsNCg0KK0JpdFdpc2VPcjogJ3wnOw0KDQor Qml0V2lzZUFuZDogJyYnOw0KDQorDQoNCitEZXZpY2VQYXRoIDogJ2RldmljZXBhdGgnOw0KDQor Rm9ybVNldCA6ICdmb3Jtc2V0JzsNCg0KK0Zvcm1TZXRJZCA6ICdmb3Jtc2V0aWQnOw0KDQorRW5k Rm9ybVNldCA6ICdlbmRmb3Jtc2V0JzsNCg0KK1RpdGxlIDogJ3RpdGxlJzsNCg0KK0Zvcm1JZCA6 ICdmb3JtaWQnOw0KDQorT25lT2YgOiAnb25lb2YnOw0KDQorRW5kT25lT2YgOiAnZW5kb25lb2Yn Ow0KDQorUHJvbXB0IDogJ3Byb21wdCc7DQoNCitPcmRlcmVkTGlzdCA6ICdvcmRlcmVkbGlzdCc7 DQoNCitNYXhDb250YWluZXJzIDogJ21heGNvbnRhaW5lcnMnOw0KDQorRW5kTGlzdCA6ICdlbmRs aXN0JzsNCg0KK0VuZEZvcm0gOiAnZW5kZm9ybSc7DQoNCitGb3JtIDogJ2Zvcm0nOw0KDQorRm9y bU1hcCA6ICdmb3JtbWFwJzsNCg0KK01hcFRpdGxlIDogJ21hcHRpdGxlJzsNCg0KK01hcEd1aWQg OiAnbWFwZ3VpZCc7DQoNCitTdWJ0aXRsZSA6ICdzdWJ0aXRsZSc7DQoNCitFbmRTdWJ0aXRsZSA6 ICdlbmRzdWJ0aXRsZSc7DQoNCitIZWxwIDogJ2hlbHAnOw0KDQorVGV4dCA6ICd0ZXh0JzsNCg0K K09wdGlvbiA6ICdvcHRpb24nOw0KDQorRkxBR1MgOiAnZmxhZ3MnOw0KDQorRGF0ZSA6ICdkYXRl JzsNCg0KK0VuZERhdGUgOiAnZW5kZGF0ZSc7DQoNCitZZWFyIDogJ3llYXInOw0KDQorTW9udGgg OiAnbW9udGgnOw0KDQorRGF5IDogJ2RheSc7DQoNCitUaW1lIDogJ3RpbWUnOw0KDQorRW5kVGlt ZSA6ICdlbmR0aW1lJzsNCg0KK0hvdXIgOiAnaG91cic7DQoNCitNaW51dGUgOiAnbWludXRlJzsN Cg0KK1NlY29uZCA6ICdzZWNvbmQnOw0KDQorR3JheU91dElmIDogJ2dyYXlvdXRpZic7DQoNCitM YWJlbCA6ICdsYWJlbCc7DQoNCitUaW1lb3V0IDogJ3RpbWVvdXQnOw0KDQorSW52ZW50b3J5IDog J2ludmVudG9yeSc7DQoNCitOb25OdkRhdGFNYXAgOiAnX05PTl9OVl9EQVRBX01BUCc7DQoNCitT dHJ1Y3QgOiAnc3RydWN0JzsNCg0KK1VuaW9uIDogJ3VuaW9uJzsNCg0KK0Jvb2xlYW4gOiAnQk9P TEVBTic7DQoNCitVaW50NjQgOiAnVUlOVDY0JzsNCg0KK1VpbnQzMiA6ICdVSU5UMzInOw0KDQor VWludDE2IDogJ1VJTlQxNic7DQoNCitVaW50OCA6J1VJTlQ4JzsNCg0KK0VGSV9TVFJJTkdfSUQg OidFRklfU1RSSU5HX0lEJzsNCg0KK0VGSV9ISUlfREFURSA6ICdFRklfSElJX0RBVEUnOw0KDQor RUZJX0hJSV9USU1FIDogJ0VGSV9ISUlfVElNRSc7DQoNCitFRklfSElJX1JFRiA6ICdFRklfSElJ X1JFRic7DQoNCitVdWlkIDogJ2d1aWQnOw0KDQorQ2hlY2tCb3ggOiAnY2hlY2tib3gnOw0KDQor RW5kQ2hlY2tCb3ggOiAnZW5kY2hlY2tib3gnOw0KDQorTnVtZXJpYyA6ICdudW1lcmljJzsNCg0K K0VuZE51bWVyaWMgOiAnZW5kbnVtZXJpYyc7DQoNCitNaW5pbXVtIDogJ21pbmltdW0nOw0KDQor TWF4aW11bSA6ICdtYXhpbXVtJzsNCg0KK1N0ZXAgOiAnc3RlcCc7DQoNCitEZWZhdWx0IDogJ2Rl ZmF1bHQnOw0KDQorUGFzc3dvcmQgOiAncGFzc3dvcmQnOw0KDQorRW5kUGFzc3dvcmQgOiAnZW5k cGFzc3dvcmQnOw0KDQorU3RyaW5nIDogJ3N0cmluZyc7DQoNCitFbmRTdHJpbmcgOiAnZW5kc3Ry aW5nJzsNCg0KK01pblNpemUgOiAnbWluc2l6ZSc7DQoNCitNYXhTaXplIDogJ21heHNpemUnOw0K DQorRW5jb2RpbmcgOiAnZW5jb2RpbmcnOw0KDQorU3VwcHJlc3NJZiA6ICdzdXBwcmVzc2lmJzsN Cg0KK0Rpc2FibGVJZiA6ICdkaXNhYmxlaWYnOw0KDQorSGlkZGVuIDogJ2hpZGRlbic7DQoNCitH b3RvIDogJ2dvdG8nOw0KDQorRm9ybVNldEd1aWQgOiAnZm9ybXNldGd1aWQnOw0KDQorSW5jb25z aXN0ZW50SWYgOiAnaW5jb25zaXN0ZW50aWYnOw0KDQorV2FybmluZ0lmIDogJ3dhcm5pbmdpZic7 DQoNCitOb1N1Ym1pdElmIDogJ25vc3VibWl0aWYnOw0KDQorRW5kSWYgOiAnZW5kaWYnOw0KDQor S2V5IDogJ2tleSc7DQoNCitEZWZhdWx0RmxhZyA6ICdERUZBVUxUJzsNCg0KK01hbnVmYWN0dXJp bmdGbGFnIDogJ01BTlVGQUNUVVJJTkcnOw0KDQorQ2hlY2tCb3hEZWZhdWx0RmxhZyA6ICdDSEVD S0JPWF9ERUZBVUxUJzsNCg0KK0NoZWNrQm94RGVmYXVsdE1mZ0ZsYWcgOiAnQ0hFQ0tCT1hfREVG QVVMVF9NRkcnOw0KDQorSW50ZXJhY3RpdmVGbGFnIDogJ0lOVEVSQUNUSVZFJzsNCg0KK05WQWNj ZXNzRmxhZyA6ICdOVl9BQ0NFU1MnOw0KDQorUmVzZXRSZXF1aXJlZEZsYWcgOiAnUkVTRVRfUkVR VUlSRUQnOw0KDQorUmVjb25uZWN0UmVxdWlyZWRGbGFnIDogJ1JFQ09OTkVDVF9SRVFVSVJFRCc7 DQoNCitMYXRlQ2hlY2tGbGFnIDogJ0xBVEVfQ0hFQ0snOw0KDQorUmVhZE9ubHlGbGFnIDogJ1JF QURfT05MWSc7DQoNCitPcHRpb25Pbmx5RmxhZyA6ICdPUFRJT05TX09OTFknOw0KDQorUmVzdFN0 eWxlRmxhZyA6ICdSRVNUX1NUWUxFJzsNCg0KK0NsYXNzIDogJ2NsYXNzJzsNCg0KK1N1YmNsYXNz IDogJ3N1YmNsYXNzJzsNCg0KK0NsYXNzR3VpZCA6ICdjbGFzc2d1aWQnOw0KDQorVHlwZURlZiA6 ICd0eXBlZGVmJzsNCg0KK1Jlc3RvcmUgOiAncmVzdG9yZSc7DQoNCitTYXZlIDogJ3NhdmUnOw0K DQorRGVmYXVsdHMgOiAnZGVmYXVsdHMnOw0KDQorQmFubmVyIDogICdiYW5uZXInOw0KDQorQWxp Z24gOiAnYWxpZ24nOw0KDQorTGVmdCA6ICdsZWZ0JzsNCg0KK1JpZ2h0IDogJ3JpZ2h0JzsNCg0K K0NlbnRlciA6ICdjZW50ZXInOw0KDQorTGluZSA6ICdsaW5lJzsNCg0KK05hbWUgOiAnbmFtZSc7 DQoNCisNCg0KK1ZhcklkOiAndmFyaWQnOw0KDQorUXVlc3Rpb246ICdxdWVzdGlvbic7DQoNCitR dWVzdGlvbklkOiAncXVlc3Rpb25pZCc7DQoNCitJbWFnZTogJ2ltYWdlJzsNCg0KK0xvY2tlZDog J2xvY2tlZCc7DQoNCitSdWxlOiAncnVsZSc7DQoNCitFbmRSdWxlOiAnZW5kcnVsZSc7DQoNCitW YWx1ZTogJ3ZhbHVlJzsNCg0KK1JlYWQ6ICdyZWFkJzsNCg0KK1dyaXRlOiAnd3JpdGUnOw0KDQor UmVzZXRCdXR0b246ICdyZXNldGJ1dHRvbic7DQoNCitFbmRSZXNldEJ1dHRvbjogJ2VuZHJlc2V0 YnV0dG9uJzsNCg0KK0RlZmF1bHRTdG9yZTogJ2RlZmF1bHRzdG9yZSc7DQoNCitBdHRyaWJ1dGU6 ICdhdHRyaWJ1dGUnOw0KDQorVmFyc3RvcmU6ICd2YXJzdG9yZSc7DQoNCitFZml2YXJzdG9yZTog J2VmaXZhcnN0b3JlJzsNCg0KK1ZhclNpemU6ICd2YXJzaXplJzsNCg0KK05hbWVWYWx1ZVZhclN0 b3JlOiAnbmFtZXZhbHVldmFyc3RvcmUnOw0KDQorQWN0aW9uOiAnYWN0aW9uJzsNCg0KK0NvbmZp ZzogJ2NvbmZpZyc7DQoNCitFbmRBY3Rpb246ICdlbmRhY3Rpb24nOw0KDQorUmVmcmVzaDogJ3Jl ZnJlc2gnOw0KDQorSW50ZXJ2YWw6ICdpbnRlcnZhbCc7DQoNCitWYXJzdG9yZURldmljZTogJ3Zh cnN0b3JlZGV2aWNlJzsNCg0KK0d1aWRPcDogJ2d1aWRvcCc7DQoNCitFbmRHdWlkT3A6ICdlbmRn dWlkb3AnOw0KDQorRGF0YVR5cGU6ICdkYXRhdHlwZSc7DQoNCitEYXRhOiAnZGF0YSc7DQoNCitN b2RhbDogJ21vZGFsJzsNCg0KKw0KDQorLy8NCg0KKy8vIERlZmluZSB0aGUgY2xhc3MgYW5kIHN1 YmNsYXNzIHRva2Vucw0KDQorLy8NCg0KKy8vDQoNCitDbGFzc05vbkRldmljZTogJ05PTl9ERVZJ Q0UnOw0KDQorQ2xhc3NEaXNrRGV2aWNlOiAnRElTS19ERVZJQ0UnOw0KDQorQ2xhc3NWaWRlb0Rl dmljZTogJ1ZJREVPX0RFVklDRSc7DQoNCitDbGFzc05ldHdvcmtEZXZpY2U6ICdORVRXT1JLX0RF VklDRSc7DQoNCitDbGFzc0lucHV0RGV2aWNlOiAnSU5QVVRfREVWSUNFJzsNCg0KK0NsYXNzT25C b2FyZERldmljZTogJ09OQk9BUkRfREVWSUNFJzsNCg0KK0NsYXNzT3RoZXJEZXZpY2U6ICdPVEhF Ul9ERVZJQ0UnOw0KDQorDQoNCitTdWJjbGFzc1NldHVwQXBwbGljYXRpb246ICdTRVRVUF9BUFBM SUNBVElPTic7DQoNCitTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbjogJ0dFTkVSQUxfQVBQTElD QVRJT04nOw0KDQorU3ViY2xhc3NGcm9udFBhZ2U6ICdGUk9OVF9QQUdFJzsNCg0KK1N1YmNsYXNz U2luZ2xlVXNlOiAnU0lOR0xFX1VTRSc7DQoNCisNCg0KK1llYXJTdXBwcHJlc3NGbGFnOiAnWUVB Ul9TVVBQUkVTUyc7DQoNCitNb250aFN1cHByZXNzRmxhZzogJ01PTlRIX1NVUFBSRVNTJzsNCg0K K0RheVN1cHByZXNzRmxhZzogJ0RBWV9TVVBQUkVTUyc7DQoNCitIb3VyU3VwcHByZXNzRmxhZzog J0hPVVJfU1VQUFJFU1MnOw0KDQorTWludXRlU3VwcHJlc3NGbGFnOiAnTUlOVVRFX1NVUFBSRVNT JzsNCg0KK1NlY29uZFN1cHByZXNzRmxhZzogJ1NFQ09ORF9TVVBQUkVTUyc7DQoNCitTdG9yYWdl Tm9ybWFsRmxhZzogJ1NUT1JBR0VfTk9STUFMJzsNCg0KK1N0b3JhZ2VUaW1lRmxhZzogJ1NUT1JB R0VfVElNRSc7DQoNCitTdG9yYWdlV2FrZVVwRmxhZzogJ1NUT1JBR0VfV0FLRVVQJzsNCg0KKw0K DQorVW5pUXVlRmxhZzogJ1VOSVFVRSc7DQoNCitOb0VtcHR5RmxhZzogJ05PRU1QVFknOw0KDQor DQoNCitDb25kOiAnY29uZCc7DQoNCitGaW5kOiAnZmluZCc7DQoNCitNaWQ6ICdtaWQnOw0KDQor VG9rOiAndG9rZW4nOw0KDQorU3BhbjogJ3NwYW4nOw0KDQorDQoNCisvLyBUaGUgc3ludGF4IG9m IGV4cHJlc3Npb24NCg0KKw0KDQorRHVwOiAnZHVwJzsNCg0KK1ZhckVxVmFsOiAndmFyZXF2YWwn Ow0KDQorVmFyOiAndmFyJzsNCg0KK0lkRXFWYWw6ICdpZGVxdmFsJzsNCg0KK0lkRXFJZDogJ2lk ZXFpZCc7DQoNCitJZEVxVmFsTGlzdDogJ2lkZXF2YWxsaXN0JzsNCg0KK1F1ZXN0aW9uUmVmOiAn cXVlc3Rpb25yZWYnOw0KDQorUnVsZVJlZjogJ3J1bGVyZWYnOw0KDQorU3RyaW5nUmVmOiAnc3Ry aW5ncmVmJzsNCg0KK1B1c2hUaGlzOiAncHVzaHRoaXMnOw0KDQorU2VjdXJpdHk6ICdzZWN1cml0 eSc7DQoNCitHZXQ6ICdnZXQnOw0KDQorVHJ1ZVN5bWJvbDogJ1RSVUUnOw0KDQorRmFsc2VTeW1i b2w6ICdGQUxTRSc7DQoNCitPbmU6ICdPTkUnOw0KDQorT25lczogJ09ORVMnOw0KDQorWmVybzog J1pFUk8nOw0KDQorVW5kZWZpbmVkOiAnVU5ERUZJTkVEJzsNCg0KK1ZlcnNpb246ICdWRVJTSU9O JzsNCg0KK0xlbmd0aDogJ2xlbmd0aCc7DQoNCitBTkQ6ICdBTkQnOw0KDQorT1I6ICdPUic7DQoN CitOT1Q6ICdOT1QnOw0KDQorU2V0OiAnc2V0JzsNCg0KK0JpdFdpc2VOb3Q6ICd+JzsNCg0KK0Jv b2xWYWw6ICdib29sdmFsJzsNCg0KK1N0cmluZ1ZhbDogJ3N0cmluZ3ZhbCc7DQoNCitVbkludFZh bDogJ3VuaW50dmFsJzsNCg0KK1RvVXBwZXI6ICd0b3VwcGVyJzsNCg0KK1RvTG93ZXI6ICd0b2xv d2VyJzsNCg0KK01hdGNoOiAnbWF0Y2gnOw0KDQorTWF0Y2gyOiAnbWF0Y2gyJzsNCg0KK0NhdGVu YXRlOiAnY2F0ZW5hdGUnOw0KDQorUXVlc3Rpb25SZWZWYWw6ICdxdWVzdGlvbnJlZnZhbCc7DQoN CitTdHJpbmdSZWZWYWw6ICdzdHJpbmdyZWZ2YWwnOw0KDQorTWFwOiAnbWFwJzsNCg0KK1JlZnJl c2hHdWlkOiAncmVmcmVzaGd1aWQnOw0KDQorU3RyaW5nVG9rZW46ICdTVFJJTkdfVE9LRU4nOw0K DQorDQoNCitPcHRpb25EZWZhdWx0OiAnT1BUSU9OX0RFRkFVTFQnOw0KDQorT3B0aW9uRGVmYXVs dE1mZzogJ09QVElPTl9ERUZBVUxUX01GRyc7DQoNCisNCg0KK051bWVyaWNTaXplT25lOiAnTlVN RVJJQ19TSVpFXzEnOw0KDQorTnVtZXJpY1NpemVUd286ICdOVU1FUklDX1NJWkVfMic7DQoNCitO dW1lcmljU2l6ZUZvdXI6ICdOVU1FUklDX1NJWkVfNCc7DQoNCitOdW1lcmljU2l6ZUVpZ2h0OiAn TlVNRVJJQ19TSVpFXzgnOw0KDQorRGlzUGxheUludERlYzogJ0RJU1BMQVlfSU5UX0RFQyc7DQoN CitEaXNQbGF5VUludERlYzogJ0RJU1BMQVlfVUlOVF9ERUMnOw0KDQorRGlzUGxheVVJbnRIZXg6 ICdESVNQTEFZX1VJTlRfSEVYJzsNCg0KKw0KDQorSW5zZW5zaXRpdmU6ICAnSU5TRU5TSVRJVkUn Ow0KDQorU2Vuc2l0aXZlOiAnU0VOU0lUSVZFJzsNCg0KKw0KDQorTGFzdE5vbk1hdGNoOiAnTEFT VF9OT05fTUFUQ0gnOw0KDQorRmlyc3ROb25NYXRjaDogJ0ZJUlNUX05PTl9NQVRDSCc7DQoNCisN Cg0KKw0KDQorDQoNCitOdW1iZXINCg0KKyAgICA6ICAgKCcweCdbMC05QS1GYS1mXSspIHwgWzAt OV0rDQoNCisgICAgOw0KDQorDQoNCitTdHJpbmdJZGVudGlmaWVyDQoNCisgICAgOiAgIFtBLVph LXpfXVtBLVphLXpfMC05XSoNCg0KKyAgICA7DQoNCisNCg0KK0NvbXBsZXhEZWZpbmUNCg0KKyAg ICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdkZWZpbmUnICB+WyNcclxuXSoNCg0KKyAgICAgICAgLT4g c2tpcA0KDQorICAgIDsNCg0KKw0KDQorDQoNCitMaW5lRGVmaW5pdGlvbg0KDQorICAgIDogICAn IycgV2hpdGVzcGFjZT8gJ2xpbmUnICB+WyNcclxuXSoNCg0KKyAgICAgICAgLT4gc2tpcA0KDQor ICAgIDsNCg0KKw0KDQorSW5jbHVkZURlZmluaXRpb24NCg0KKyAgICA6ICAgJyMnIFdoaXRlc3Bh Y2U/ICdpbmNsdWRlJyAgflsjXHJcbl0qDQoNCisgICAgICAgIC0+IHNraXANCg0KKyAgICA7DQoN CisNCg0KK1doaXRlc3BhY2UNCg0KKyAgICA6ICAgWyBcdF0rDQoNCisgICAgICAgIC0+IHNraXAN Cg0KKyAgICA7DQoNCisNCg0KK05ld2xpbmUNCg0KKyAgICA6ICAgKCAgICdccicgJ1xuJz8NCg0K KyAgICAgICAgfCAgICdcbicNCg0KKyAgICAgICAgKQ0KDQorICAgICAgICAtPiBza2lwDQoNCisg ICAgOw0KDQorDQoNCitMaW5lQ29tbWVudA0KDQorICAgIDogICAnLy8nIH5bXHJcbl0qDQoNCisg ICAgICAgIC0+IHNraXANCg0KKyAgICA7DQoNCisNCg0KKy8vIFNraXAgb3ZlciAnZXh0ZXJuJyBp biBhbnkgaW5jbHVkZWQgLkggZmlsZQ0KDQorRXh0ZXJuDQoNCisgICAgOiAnZXh0ZXJuJyB+WyNc clxuXSoNCg0KKyAgICAgICAgLT4gc2tpcA0KDQorICAgIDsNClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L1ZmclN5bnRheExleGVyLnB5IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIv VmZyU3ludGF4TGV4ZXIucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw Li4yYjdhNWMzMmEzDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9WZnJTeW50YXhMZXhlci5weQ0KQEAgLTAsMCArMSwxNzA5IEBADQorIyBH ZW5lcmF0ZWQgZnJvbSBWZnJTeW50YXguZzQgYnkgQU5UTFIgNC43LjINCg0KK2Zyb20gYW50bHI0 IGltcG9ydCAqDQoNCitmcm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KDQorZnJvbSB0eXBpbmcgaW1w b3J0IFRleHRJTw0KDQoraW1wb3J0IHN5cw0KDQorDQoNCisNCg0KKw0KDQorZnJvbSBWZnJDb21w aWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyRm9ybVBr ZyBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJVdGlsaXR5IGltcG9ydCAqDQoNCitm cm9tIFZmckNvbXBpbGVyLlZmclRyZWUgaW1wb3J0ICoNCg0KKw0KDQorDQoNCisNCg0KK2RlZiBz ZXJpYWxpemVkQVROKCk6DQoNCisgICAgd2l0aCBTdHJpbmdJTygpIGFzIGJ1ZjoNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1NjA4Ylx1YTcyYVx1ODEzM1x1YjllZFx1NDE3Y1x1M2JlN1x1Nzc4 Nlx1NTk2NFwyXHUwMTAyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYjdcYlwxXDRcMlx0 XDJcNFwzXHRcM1w0XDRcdFw0XDRcNVx0XDVcNFw2XHRcNlw0XDciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx0XDdcNFxiXHRcYlw0XHRcdFx0XDRcblx0XG5cNFwxM1x0XDEzXDRcZlx0XGZcNFxy XHRcciIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMTZcdFwxNlw0XDE3XHRcMTdcNFwyMFx0 XDIwXDRcMjFcdFwyMVw0XDIyXHRcMjJcNFwyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRc MjNcNFwyNFx0XDI0XDRcMjVcdFwyNVw0XDI2XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwzMCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzFcdFwzMVw0XDMyXHRcMzJcNFwzM1x0XDMzXDRcMzRc dFwzNFw0XDM1XHRcMzVcNFwzNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcMzZcNFwzN1x0 XDM3XDQgXHQgXDQhXHQhXDRcIlx0XCJcNCNcdCNcNCRcdCRcNCVcdCUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw0Jlx0Jlw0XCdcdFwnXDQoXHQoXDQpXHQpXDQqXHQqXDQrXHQrXDQsXHQsXDQt XHQtXDQuIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdC5cNC9cdC9cNFw2MFx0XDYwXDRcNjFc dFw2MVw0XDYyXHRcNjJcNFw2M1x0XDYzXDRcNjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0 XDY0XDRcNjVcdFw2NVw0XDY2XHRcNjZcNFw2N1x0XDY3XDQ4XHQ4XDQ5XHQ5XDQ6XHQ6IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcNDtcdDtcNDxcdDxcND1cdD1cND5cdD5cND9cdD9cNEBcdEBc NEFcdEFcNEJcdEJcNENcdCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQ1w0RFx0RFw0RVx0RVw0 Rlx0Rlw0R1x0R1w0SFx0SFw0SVx0SVw0Slx0Slw0S1x0S1w0TFx0IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJMXDRNXHRNXDROXHROXDRPXHRPXDRQXHRQXDRRXHRRXDRSXHRSXDRTXHRTXDRUXHRU XDRVXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlVcNFZcdFZcNFdcdFdcNFhcdFhcNFlcdFlc NFpcdFpcNFtcdFtcNFxcXHRcXFw0XVx0XVw0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJeXHRe XDRfXHRfXDRgXHRgXDRhXHRhXDRiXHRiXDRjXHRjXDRkXHRkXDRlXHRlXDRmXHRmXDQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoImdcdGdcNGhcdGhcNGlcdGlcNGpcdGpcNGtcdGtcNGxcdGxcNG1c dG1cNG5cdG5cNG9cdG9cNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgicFx0cFw0cVx0cVw0clx0 clw0c1x0c1w0dFx0dFw0dVx0dVw0dlx0dlw0d1x0d1w0eFx0eFw0IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJ5XHR5XDR6XHR6XDR7XHR7XDR8XHR8XDR9XHR9XDR+XHR+XDRcMTc3XHRcMTc3XDRc dTAwODAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMDgwXDRcdTAwODFcdFx1MDA4MVw0 XHUwMDgyXHRcdTAwODJcNFx1MDA4M1x0XHUwMDgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc NFx1MDA4NFx0XHUwMDg0XDRcdTAwODVcdFx1MDA4NVw0XHUwMDg2XHRcdTAwODZcNFx1MDA4NyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwODdcNFx1MDA4OFx0XHUwMDg4XDRcdTAwODlc dFx1MDA4OVw0XHUwMDhhXHRcdTAwOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMDhi XHRcdTAwOGJcNFx1MDA4Y1x0XHUwMDhjXDRcdTAwOGRcdFx1MDA4ZFw0XHUwMDhlIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdFx1MDA4ZVw0XHUwMDhmXHRcdTAwOGZcNFx1MDA5MFx0XHUwMDkw XDRcdTAwOTFcdFx1MDA5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwOTJcdFx1MDA5 Mlw0XHUwMDkzXHRcdTAwOTNcNFx1MDA5NFx0XHUwMDk0XDRcdTAwOTUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx0XHUwMDk1XDRcdTAwOTZcdFx1MDA5Nlw0XHUwMDk3XHRcdTAwOTdcNFx1MDA5 OFx0XHUwMDk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDA5OVx0XHUwMDk5XDRcdTAw OWFcdFx1MDA5YVw0XHUwMDliXHRcdTAwOWJcNFx1MDA5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHRcdTAwOWNcNFx1MDA5ZFx0XHUwMDlkXDRcdTAwOWVcdFx1MDA5ZVw0XHUwMDlmXHRcdTAw OWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGEwXHRcdTAwYTBcNFx1MDBhMVx0XHUw MGExXDRcdTAwYTJcdFx1MDBhMlw0XHUwMGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1 MDBhM1w0XHUwMGE0XHRcdTAwYTRcNFx1MDBhNVx0XHUwMGE1XDRcdTAwYTZcdFx1MDBhNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwYTdcdFx1MDBhN1w0XHUwMGE4XHRcdTAwYThcNFx1 MDBhOVx0XHUwMGE5XDRcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGFhXDRc dTAwYWJcdFx1MDBhYlw0XHUwMGFjXHRcdTAwYWNcNFx1MDBhZFx0XHUwMGFkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcNFx1MDBhZVx0XHUwMGFlXDRcdTAwYWZcdFx1MDBhZlw0XHUwMGIwXHRc dTAwYjBcNFx1MDBiMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwYjFcNFx1MDBiMlx0 XHUwMGIyXDRcdTAwYjNcdFx1MDBiM1w0XHUwMGI0XHRcdTAwYjQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw0XHUwMGI1XHRcdTAwYjVcNFx1MDBiNlx0XHUwMGI2XDRcdTAwYjdcdFx1MDBiN1w0 XHUwMGI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBiOFw0XHUwMGI5XHRcdTAwYjlc NFx1MDBiYVx0XHUwMGJhXDRcdTAwYmJcdFx1MDBiYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDRcdTAwYmNcdFx1MDBiY1w0XHUwMGJkXHRcdTAwYmRcNFx1MDBiZVx0XHUwMGJlXDRcdTAwYmYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGJmXDRcdTAwYzBcdFx1MDBjMFw0XHUwMGMx XHRcdTAwYzFcNFx1MDBjMlx0XHUwMGMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBj M1x0XHUwMGMzXDRcdTAwYzRcdFx1MDBjNFw0XHUwMGM1XHRcdTAwYzVcNFx1MDBjNiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwYzZcNFx1MDBjN1x0XHUwMGM3XDRcdTAwYzhcdFx1MDBj OFw0XHUwMGM5XHRcdTAwYzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGNhXHRcdTAw Y2FcNFx1MDBjYlx0XHUwMGNiXDRcdTAwY2NcdFx1MDBjY1w0XHUwMGNkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdFx1MDBjZFw0XHUwMGNlXHRcdTAwY2VcNFx1MDBjZlx0XHUwMGNmXDRcdTAw ZDBcdFx1MDBkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwZDFcdFx1MDBkMVw0XHUw MGQyXHRcdTAwZDJcNFx1MDBkM1x0XHUwMGQzXDRcdTAwZDQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx0XHUwMGQ0XDRcdTAwZDVcdFx1MDBkNVw0XHUwMGQ2XHRcdTAwZDZcNFx1MDBkN1x0XHUw MGQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBkOFx0XHUwMGQ4XDRcdTAwZDlcdFx1 MDBkOVw0XHUwMGRhXHRcdTAwZGFcNFx1MDBkYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRc dTAwZGJcNFx1MDBkY1x0XHUwMGRjXDRcdTAwZGRcdFx1MDBkZFw0XHUwMGRlXHRcdTAwZGUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGRmXHRcdTAwZGZcNFx1MDBlMFx0XHUwMGUwXDRc dTAwZTFcdFx1MDBlMVw0XHUwMGUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBlMlw0 XHUwMGUzXHRcdTAwZTNcNFx1MDBlNFx0XHUwMGU0XDRcdTAwZTVcdFx1MDBlNSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDRcdTAwZTZcdFx1MDBlNlw0XHUwMGU3XHRcdTAwZTdcNFx1MDBlOFx0 XHUwMGU4XDRcdTAwZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGU5XDRcdTAwZWFc dFx1MDBlYVw0XHUwMGViXHRcdTAwZWJcNFx1MDBlY1x0XHUwMGVjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcNFx1MDBlZFx0XHUwMGVkXDRcdTAwZWVcdFx1MDBlZVw0XHUwMGVmXHRcdTAwZWZc NFx1MDBmMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwZjBcNFx1MDBmMVx0XHUwMGYx XDRcdTAwZjJcdFx1MDBmMlw0XHUwMGYzXHRcdTAwZjMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw0XHUwMGY0XHRcdTAwZjRcNFx1MDBmNVx0XHUwMGY1XDRcdTAwZjZcdFx1MDBmNlw0XHUwMGY3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBmN1w0XHUwMGY4XHRcdTAwZjhcNFx1MDBm OVx0XHUwMGY5XDRcdTAwZmFcdFx1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAw ZmJcdFx1MDBmYlw0XHUwMGZjXHRcdTAwZmNcNFx1MDBmZFx0XHUwMGZkXDRcdTAwZmUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx0XHUwMGZlXDRcdTAwZmZcdFx1MDBmZlw0XHUwMTAwXHRcdTAx MDBcNFx1MDEwMVx0XHUwMTAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDNcMlwzXDJc M1wyXDNcMlwzXDNcM1wzXDNcM1wzXDNcM1wzXDNcNFwzXDRcM1w0XDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw0XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w2XDNcNlwzXDZc M1w2XDNcNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcN1wzXDdcM1xiXDNcYlwzXGJcM1xi XDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc YlwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcblwzXG4iKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXG5cM1xuXDNcblwzXG5cM1xuXDNcblwzXG5cM1xuXDNc blwzXDEzXDNcMTNcM1wxM1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcZlwzXGZcM1xmXDNc clwzXHJcM1wxNlwzXDE2XDNcMTdcM1wxN1wzXDIwXDNcMjBcM1wyMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMjBcM1wyMFwzXDIwXDNcMjBcM1wyMVwzXDIxXDNcMjJcM1wyMlwzXDIyXDNc MjJcM1wyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjJcM1wyMlwzXDIyXDNcMjNcM1wy M1wzXDIzXDNcMjNcM1wyM1wzXDIzXDNcMjNcM1wyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMjNcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjRcM1wyNFwzXDI1XDNcMjVcM1wyNlwzXDI2XDNc MjdcM1wyN1wzXDMwXDNcMzBcM1wzMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzFcM1wz MlwzXDMyXDNcMzNcM1wzM1wzXDM0XDNcMzRcM1wzNVwzXDM1XDNcMzZcM1wzNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMzdcM1wzN1wzIFwzIFwzIVwzIVwzIVwzXCJcM1wiXDNcIlwzI1wz I1wzI1wzJFwzJFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIlXDMlXDMlXDMmXDMmXDNcJ1wz XCdcMyhcMyhcMylcMylcMylcMylcMylcMylcMylcMylcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiKVwzKVwzKVwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzKlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIrXDMrXDMrXDMsXDMsXDMsXDMsXDMsXDMsXDMsXDMs XDMsXDMsXDMsXDMtXDMtXDMtXDMtXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIi1cMy1cMy5c My5cMy5cMy5cMy5cMy5cMy5cMy9cMy9cMy9cMy9cMy9cMy9cM1w2MFwzXDYwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1w2MFwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjBcM1w2MFwzXDYxXDNc NjFcM1w2MVwzXDYxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2MVwzXDYxXDNcNjFcM1w2 MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wz XDYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNc NjNcM1w2M1wzXDY0XDNcNjRcM1w2NFwzXDY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2 NFwzXDY0XDNcNjRcM1w2NFwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1w2NVwzXDY2XDNcNjZcM1w2NlwzXDY2XDNcNjZcM1w2N1wz XDY3XDNcNjdcM1w2N1wzXDY3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2N1wzXDY3XDNc NjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMzlcMzlcMzlcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiOVwzOVwzOVwzOVwzOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzO1wzO1wz O1wzO1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCI7XDM7XDM7XDM7XDM7XDM7XDM7XDM7XDM8 XDM8XDM8XDM8XDM8XDM9XDM9XDM9XDM9XDM9XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIj5c Mz5cMz5cMz5cMz5cMz5cMz5cMz9cMz9cMz9cMz9cMz9cMz9cM0BcM0BcM0BcM0BcM0BcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQlwzQlwzQlwzQlwz QlwzQ1wzQ1wzQ1wzQ1wzQ1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJDXDNEXDNEXDNEXDNE XDNFXDNFXDNFXDNFXDNFXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIkdcM0dcM0dcM0dcM0dcM0hcM0hcM0hcM0hcM0hcM0hcM0hcM0lcM0lcM0lcM0lc M0lcM0lcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiSVwzSlwzSlwzSlwzSlwzSlwzSlwzSlwz SlwzSlwzSlwzS1wzS1wzS1wzS1wzS1wzS1wzTFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJM XDNMXDNMXDNMXDNMXDNMXDNMXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNOXDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIk5cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05cM05c M05cM05cM05cM05cM09cM09cMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiT1wzT1wzT1wzT1wz T1wzUFwzUFwzUFwzUFwzUFwzUFwzUVwzUVwzUVwzUVwzUVwzUVwzUVwzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJRXDNSXDNSXDNSXDNSXDNSXDNSXDNSXDNTXDNTXDNTXDNTXDNTXDNTXDNTXDNU XDNUXDNUXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlRcM1RcM1RcM1RcM1VcM1VcM1VcM1Vc M1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi VlwzVlwzVlwzVlwzVlwzVlwzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJXXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNY XDNYXDNYXDNZXDNZXDNZXDNZXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIllcM1lcM1lcM1lc M1lcM1lcM1lcM1lcM1pcM1pcM1pcM1pcM1pcM1tcM1tcM1tcM1tcM1tcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiW1wzW1wzW1wzW1wzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcXDNc XFwzXFxcM1xcIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1xcXDNdXDNdXDNdXDNdXDNdXDNd XDNdXDNdXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Il5cM15cM15cM19cM19cM19cM19cM19cM19cM19cM19cM2BcM2BcM2BcM2BcM2BcM2BcM2BcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiYFwzYVwzYVwzYVwzYVwzYVwzYlwzYlwzYlwzYlwzYlwz YlwzYlwzYlwzY1wzY1wzY1wzY1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJjXDNjXDNjXDNj XDNjXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNkXDNlXDMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2ZcM2Zc M2ZcM2dcM2dcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiZ1wzZ1wzZ1wzZ1wzZ1wzZ1wzaFwz aFwzaFwzaFwzaFwzaFwzaFwzaFwzaVwzaVwzaVwzaVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJpXDNpXDNpXDNpXDNpXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNrXDNrXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoImtcM2tcM2tcM2tcM2tcM2tcM2tcM2tcM2xcM2xcM2xc M2xcM2xcM2xcM2xcM21cM21cM21cMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgibVwzbVwzblwz blwzblwzblwzblwzblwzblwzblwzblwzblwzblwzblwzb1wzb1wzb1wzb1wzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDNw XDNwXDNwXDNwXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInBcM3BcM3BcM3FcM3FcM3FcM3Fc M3FcM3FcM3FcM3FcM3FcM3FcM3FcM3JcM3JcM3JcM3JcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiclwzclwzc1wzc1wzc1wzc1wzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdFwzdVwzdVwzdVwzdVwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN2 XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInZcM3ZcM3Zc M3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcM3dcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgid1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzeFwzeFwz eFwzeFwzeFwzeFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ4XDN4XDN4XDN4XDN4XDN4XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN6XDN6XDMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoInpcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3pcM3tcM3tcM3tcM3tcM3tc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgie1wze1wze1wze1wze1wze1wze1wze1wze1wze1wz e1wze1wze1wze1wzfFwzfFwzfFwzfFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ8XDN8XDN8 XDN8XDN8XDN8XDN8XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN9XDN+XDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIn5cM35cM35cM35cM35cM35cM35cM35cM35cM35cM35cM35cM1wxNzdc M1wxNzdcM1wxNzdcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE3N1wzXDE3N1wzXDE3N1wz XDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXDE3N1wzXHUwMDgwIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDA4MFwzXHUwMDgwXDNcdTAwODBcM1x1MDA4MFwzXHUwMDgwXDNcdTAwODFcM1x1 MDA4MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNc dTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1MDA4M1wz XHUwMDgzXDNcdTAwODNcM1x1MDA4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODNc M1x1MDA4M1wzXHUwMDgzXDNcdTAwODNcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRc M1x1MDA4NVwzXHUwMDg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NVwzXHUwMDg1 XDNcdTAwODVcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwODZcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4NlwzXHUwMDg3 XDNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg3XDNcdTAwODdcM1x1MDA4 N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUwMDg4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg5XDNcdTAwODlcM1x1MDA4 OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODlcM1x1MDA4OVwzXHUwMDhhXDNcdTAw OGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MDhhXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUw MDhjXDNcdTAwOGNcM1x1MDA4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGRcM1x1 MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhmXDNcdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNc dTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOTBcM1x1MDA5MCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNc dTAwOTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MVwz XHUwMDkxXDNcdTAwOTFcM1x1MDA5MVwzXHUwMDkxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDA5MVwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyXDNcdTAwOTJcM1x1MDA5MiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOTJcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTNc M1x1MDA5M1wzXHUwMDkzXDNcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDk0 XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDA5NVwzXHUwMDk1XDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk1 XDNcdTAwOTVcM1x1MDA5NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOTZcM1x1MDA5 NlwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5N1wzXHUwMDk3XDNcdTAwOTciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk4XDNcdTAwOThcM1x1MDA5 OFwzXHUwMDk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5OFwzXHUwMDk4XDNcdTAw OThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwOThcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAw OTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUw MDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDA5OVwzXHUwMDk5XDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1 MDA5YVwzXHUwMDlhXDNcdTAwOWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDlhXDNc dTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDljXDNc dTAwOWNcM1x1MDA5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWNcM1x1MDA5Y1wz XHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwz XHUwMDlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWRc M1x1MDA5ZFwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDlmXDNcdTAwOWYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlm XDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5 ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMGEwXDNcdTAwYTBcM1x1MDBh MFwzXHUwMGEwXDNcdTAwYTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGEwXDNcdTAw YTBcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyXDNcdTAw YTJcM1x1MDBhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTJcM1x1MDBhMlwzXHUw MGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEzXDNcdTAwYTMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUw MGE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1 MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwYTRcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNc dTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhNVwz XHUwMGE1XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wz XHUwMGE3XDNcdTAwYTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGE3XDNcdTAwYTdc M1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhOFwzXHUwMGE4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThc M1x1MDBhOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTlcM1x1MDBhOVwzXHUwMGE5 XDNcdTAwYTlcM1x1MDBhOVwzXHUwMGFhXDNcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBh YlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw YWJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAw YWNcM1x1MDBhY1wzXHUwMGFkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhZFwzXHUw MGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUw MGFlXDNcdTAwYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFlXDNcdTAwYWVcM1x1 MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1 MDBhZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNc dTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBiMFwzXHUwMGIwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwz XHUwMGIwXDNcdTAwYjBcM1x1MDBiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjBc M1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFc M1x1MDBiMVwzXHUwMGIxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMVwzXHUwMGIx XDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjJcM1x1MDBiMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIy XDNcdTAwYjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBi MlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBi MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAw YjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiM1wzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUw MGI0XDNcdTAwYjRcM1x1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjRcM1x1 MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI1XDNcdTAwYjUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjVcM1x1 MDBiNVwzXHUwMGI1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiNVwzXHUwMGI1XDNc dTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNc dTAwYjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiN1wz XHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjdcM1x1MDBiNyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjhc M1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGI4 XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5 XDNcdTAwYjlcM1x1MDBiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjlcM1x1MDBi OVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBi YVwzXHUwMGJhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiYVwzXHUwMGJhXDNcdTAw YmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYlwzXHUwMGJiXDNcdTAw YmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUw MGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1 MDBiY1wzXHUwMGJjXDNcdTAwYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJjXDNc dTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNc dTAwYmRcM1x1MDBiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmRcM1x1MDBiZFwz XHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwz XHUwMGJlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVc M1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMw XDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBj MFwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBj M1wzXHUwMGMzXDNcdTAwYzMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMzXDNcdTAw YzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAw YzZcM1x1MDBjNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzZcM1x1MDBjNlwzXHUw MGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzhcM1x1MDBjOFwzXHUw MGM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjOFwzXHUwMGM5XDNcdTAwYzlcM1x1 MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwYzlcM1x1MDBjOVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2EiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYlwzXHUwMGNiXDNc dTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjYlwz XHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wz XHUwMGNjXDNcdTAwY2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNjXDNcdTAwY2Nc M1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjZFwzXHUwMGNkIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2Rc M1x1MDBjZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNl XDNcdTAwY2VcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2UiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwzXHUwMGNm IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBj ZlwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw ZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGQxXDNcdTAwZDFcM1x1MDBkMVwzXHUwMGQyXDNcdTAw ZDJcM1x1MDBkMlwzXHUwMGQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBkMlwzXHUw MGQzXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzXDNcdTAwZDNcM1x1MDBkMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwZDRcM1x1MDBkNFwzXHUwMGQ0XDNcdTAwZDRcM1x1MDBkNVwzXHUw MGQ1XDNcdTAwZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGQ1XDNcdTAwZDVcM1x1 MDBkNlwzXHUwMGQ2XDNcdTAwZDZcM1x1MDBkNlwzXHUwMGQ2IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1 MDBkNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNc dTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGQ4XDNcdTAwZDhcM1x1MDBkOFwzXHUwMGQ4XDNcdTAwZDlcM1x1MDBkOVwzXHUwMGQ5IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZDlcM1x1MDBkOVwz XHUwMGRhXDNcdTAwZGFcM1x1MDBkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZGFc M1x1MDBkYlwzXHUwMGRiXDNcdTAwZGJcM1x1MDBkY1wzXHUwMGRjXDNcdTAwZGMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGRjXDNcdTAwZGRcM1x1MDBkZFwzXHUwMGRkXDNcdTAwZGRc M1x1MDBkZVwzXHUwMGRlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBkZlwzXHUwMGRm XDNcdTAwZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwZGZcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUw XDNcdTAwZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGUwXDNcdTAwZTBcM1x1MDBl MFwzXHUwMGUwXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBl MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAw ZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlM1wzXHUwMGU0XDNcdTAwZTRcM1x1MDBlNFwzXHUw MGU0XDNcdTAwZTRcM1x1MDBlNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZTVcM1x1 MDBlNVwzXHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTZcM1x1 MDBlNlwzXHUwMGU2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlNlwzXHUwMGU2XDNc dTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNc dTAwZTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wz XHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZThcM1x1MDBlOFwzXHUwMGU5XDNcdTAwZTlc M1x1MDBlOVwzXHUwMGU5XDNcdTAwZWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGVh XDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVi XDNcdTAwZWJcM1x1MDBlYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWJcM1x1MDBl YlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGVjXDNcdTAwZWNcM1x1MDBl Y1wzXHUwMGVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBlY1wzXHUwMGVjXDNcdTAw ZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlYyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNcM1x1MDBlZFwzXHUwMGVkXDNcdTAw ZWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUw MGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVlXDNcdTAwZWVcM1x1 MDBlZVwzXHUwMGVlXDNcdTAwZWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGVlXDNc dTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZlwzXHUwMGVmXDNc dTAwZWZcM1x1MDBlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZWZcM1x1MDBlZlwz XHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZjBcM1x1MDBmMFwz XHUwMGYwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBc M1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYxXDNcdTAwZjEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYx XDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBm MVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBm MlwzXHUwMGYyXDNcdTAwZjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGYyXDNcdTAw ZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDBmMlwzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAw ZjNcM1x1MDBmMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjNcM1x1MDBmM1wzXHUw MGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjRcM1x1MDBmNFwzXHUw MGY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1 MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNc dTAwZjVcM1x1MDBmNVwzXHUwMGY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmNVwz XHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjZcM1x1MDBmNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjZcM1x1MDBmNlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBmNlwz XHUwMGY2XDNcdTAwZjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGY2XDNcdTAwZjdc M1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdc M1x1MDBmNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY4 XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjgiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBm OFwzXHUwMGY5XDNcdTAwZjlcM1x1MDBmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw ZjlcNlx1MDBmOVx1MGE0NFxuXHUwMGY5XHJcdTAwZjlcMTZcdTAwZjlcdTBhNDUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGY5XDZcdTAwZjlcdTBhNDlcblx1MDBmOVxyXHUwMGY5XDE2 XHUwMGY5XHUwYTRhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBmOVx1MGE0ZFxuXHUw MGY5XDNcdTAwZmFcM1x1MDBmYVw3XHUwMGZhXHUwYTUxXG4iKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDBmYVxmXHUwMGZhXDE2XHUwMGZhXHUwYTU0XDEzXHUwMGZhXDNcdTAwZmJcM1x1MDBm YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwZmJcdTBhNThcblx1MDBmYlwzXHUwMGZi XDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBm YlwzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlw3XHUwMGZiXHUwYTYyXG5cdTAwZmIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlxmXHUwMGZiXDE2XHUwMGZiXHUwYTY1XDEzXHUwMGZiXDNcdTAwZmJc M1x1MDBmYlwzXHUwMGZjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmY1w1XHUwMGZj XHUwYTZiXG5cdTAwZmNcM1x1MDBmY1wzXHUwMGZjXDNcdTAwZmMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGZjXDNcdTAwZmNcM1x1MDBmY1w3XHUwMGZjXHUwYTczXG5cdTAwZmNcZlx1 MDBmYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE2XHUwMGZjXHUwYTc2XDEzXHUwMGZjXDNc dTAwZmNcM1x1MDBmY1wzXHUwMGZkXDNcdTAwZmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1 XHUwMGZkXHUwYTdjXG5cdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcM1x1 MDBmZFw3XHUwMGZkXHUwYTg3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblx1MDBmZFxmXHUw MGZkXDE2XHUwMGZkXHUwYThhXDEzXHUwMGZkXDNcdTAwZmRcM1x1MDBmZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwZmVcNlx1MDBmZVx1MGE4ZlxuXHUwMGZlXHJcdTAwZmVcMTZcdTAw ZmVcdTBhOTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZlXDNcdTAwZmVcM1x1MDBm ZlwzXHUwMGZmXDVcdTAwZmZcdTBhOTdcblx1MDBmZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcdTAwZmZcNVx1MDBmZlx1MGE5YVxuXHUwMGZmXDNcdTAwZmZcM1x1MDBmZlwzXHUwMTAwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDBcN1x1MDEwMFx1 MGFhMlxuXHUwMTAwXGZcdTAxMDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxNlx1MDEwMFx1 MGFhNVwxM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDBcM1x1MDEwMVwzXHUwMTAxIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDEwMVwzXHUwMTAxXDNcdTAxMDFcM1x1MDEwMVwzXHUwMTAxXDNc dTAxMDFcN1x1MDEwMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWIxXG5cdTAxMDFcZlx1 MDEwMVwxNlx1MDEwMVx1MGFiNFwxM1x1MDEwMVwzXHUwMTAxIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDEwMVwyXDJcdTAxMDJcM1wzXDVcNFw3XDVcdFw2XDEzXDdcclxiXDE3XHRcMjFc biIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDIzXDEzXDI1XGZcMjdcclwzMVwxNlwzM1wxN1wz NVwyMFwzN1wyMSFcMjIjXDIzJVwyNFwnIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMjUpXDI2 K1wyNy1cMzAvXDMxXDYxXDMyXDYzXDMzXDY1XDM0XDY3XDM1OVwzNjtcMzc9ICIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiPyFBXCJDI0UkRyVJJktcJ00oTylRKlMrVSxXLVkuWy9dXDYwX1w2MWFc NjJjXDYzZVw2NGciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2NWlcNjZrXDY3bThvOXE6czt1 PHc9eT57P31AXDE3N0FcdTAwODFCXHUwMDgzQ1x1MDA4NSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiRFx1MDA4N0VcdTAwODlGXHUwMDhiR1x1MDA4ZEhcdTAwOGZJXHUwMDkxSlx1MDA5M0tcdTAw OTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkxcdTAwOTdNXHUwMDk5Tlx1MDA5Yk9cdTAwOWRQ XHUwMDlmUVx1MDBhMVJcdTAwYTNTXHUwMGE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJUXHUw MGE3VVx1MDBhOVZcdTAwYWJXXHUwMGFkWFx1MDBhZllcdTAwYjFaXHUwMGIzW1x1MDBiNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXFxcdTAwYjddXHUwMGI5Xlx1MDBiYl9cdTAwYmRgXHUwMGJm YVx1MDBjMWJcdTAwYzNjXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJkXHUwMGM3ZVx1 MDBjOWZcdTAwY2JnXHUwMGNkaFx1MDBjZmlcdTAwZDFqXHUwMGQza1x1MDBkNSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgibFx1MDBkN21cdTAwZDluXHUwMGRib1x1MDBkZHBcdTAwZGZxXHUwMGUx clx1MDBlM3NcdTAwZTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoInRcdTAwZTd1XHUwMGU5dlx1 MDBlYndcdTAwZWR4XHUwMGVmeVx1MDBmMXpcdTAwZjN7XHUwMGY1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJ8XHUwMGY3fVx1MDBmOX5cdTAwZmJcMTc3XHUwMGZkXHUwMDgwXHUwMGZmXHUwMDgx XHUwMTAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODJcdTAxMDNcdTAwODNcdTAxMDVc dTAwODRcdTAxMDdcdTAwODVcdTAxMDlcdTAwODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDEwYlx1MDA4N1x1MDEwZFx1MDA4OFx1MDEwZlx1MDA4OVx1MDExMVx1MDA4YVx1MDExMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDhiXHUwMTE1XHUwMDhjXHUwMTE3XHUwMDhkXHUwMTE5 XHUwMDhlXHUwMTFiXHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMWRcdTAwOTBc dTAxMWZcdTAwOTFcdTAxMjFcdTAwOTJcdTAxMjNcdTAwOTNcdTAxMjUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDA5NFx1MDEyN1x1MDA5NVx1MDEyOVx1MDA5Nlx1MDEyYlx1MDA5N1x1MDEy ZFx1MDA5OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTJmXHUwMDk5XHUwMTMxXHUwMDlh XHUwMTMzXHUwMDliXHUwMTM1XHUwMDljXHUwMTM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAwOWRcdTAxMzlcdTAwOWVcdTAxM2JcdTAwOWZcdTAxM2RcdTAwYTBcdTAxM2ZcdTAwYTEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDE0MVx1MDBhMlx1MDE0M1x1MDBhM1x1MDE0NVx1MDBh NFx1MDE0N1x1MDBhNVx1MDE0OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGE2XHUwMTRi XHUwMGE3XHUwMTRkXHUwMGE4XHUwMTRmXHUwMGE5XHUwMTUxXHUwMGFhIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAxNTNcdTAwYWJcdTAxNTVcdTAwYWNcdTAxNTdcdTAwYWRcdTAxNTlcdTAw YWVcdTAxNWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBhZlx1MDE1ZFx1MDBiMFx1MDE1 Zlx1MDBiMVx1MDE2MVx1MDBiMlx1MDE2M1x1MDBiMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMTY1XHUwMGI0XHUwMTY3XHUwMGI1XHUwMTY5XHUwMGI2XHUwMTZiXHUwMGI3XHUwMTZkIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYjhcdTAxNmZcdTAwYjlcdTAxNzFcdTAwYmFcdTAx NzNcdTAwYmJcdTAxNzVcdTAwYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3N1x1MDBi ZFx1MDE3OVx1MDBiZVx1MDE3Ylx1MDBiZlx1MDE3ZFx1MDBjMFx1MDE3ZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMGMxXHUwMTgxXHUwMGMyXHUwMTgzXHUwMGMzXHUwMTg1XHUwMGM0XHUw MTg3XHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxODlcdTAwYzZcdTAxOGJcdTAw YzdcdTAxOGRcdTAwYzhcdTAxOGZcdTAwYzlcdTAxOTEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBjYVx1MDE5M1x1MDBjYlx1MDE5NVx1MDBjY1x1MDE5N1x1MDBjZFx1MDE5OVx1MDBjZSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTliXHUwMGNmXHUwMTlkXHUwMGQwXHUwMTlmXHUw MGQxXHUwMWExXHUwMGQyXHUwMWEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZDNcdTAx YTVcdTAwZDRcdTAxYTdcdTAwZDVcdTAxYTlcdTAwZDZcdTAxYWJcdTAwZDciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDFhZFx1MDBkOFx1MDFhZlx1MDBkOVx1MDFiMVx1MDBkYVx1MDFiM1x1 MDBkYlx1MDFiNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGRjXHUwMWI3XHUwMGRkXHUw MWI5XHUwMGRlXHUwMWJiXHUwMGRmXHUwMWJkXHUwMGUwIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAxYmZcdTAwZTFcdTAxYzFcdTAwZTJcdTAxYzNcdTAwZTNcdTAxYzVcdTAwZTRcdTAxYzci KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBlNVx1MDFjOVx1MDBlNlx1MDFjYlx1MDBlN1x1 MDFjZFx1MDBlOFx1MDFjZlx1MDBlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWQxXHUw MGVhXHUwMWQzXHUwMGViXHUwMWQ1XHUwMGVjXHUwMWQ3XHUwMGVkXHUwMWQ5IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAwZWVcdTAxZGJcdTAwZWZcdTAxZGRcdTAwZjBcdTAxZGZcdTAwZjFc dTAxZTFcdTAwZjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlM1x1MDBmM1x1MDFlNVx1 MDBmNFx1MDFlN1x1MDBmNVx1MDFlOVx1MDBmNlx1MDFlYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMGY3XHUwMWVkXHUwMGY4XHUwMWVmXHUwMGY5XHUwMWYxXHUwMGZhXHUwMWYzXHUwMGZi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZjVcdTAwZmNcdTAxZjdcdTAwZmRcdTAxZjlc dTAwZmVcdTAxZmJcdTAwZmZcdTAxZmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEwMFx1 MDFmZlx1MDEwMVx1MDIwMVx1MDEwMlwzXDJcdFw1XDJcNjI7Q0hjaFwzXDJcNjIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIjtcNVwyQ1xcYWFjfFw2XDJcNjI7Q1xcYWFjfFw1XDJcZlxmXDE3XDE3 JSVcNFwyXDEzXDEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcIlwiXDRcMlxmXGZcMTdcMTdc Mlx1MGFjNVwyXDNcM1wyXDJcMlwyXDVcM1wyXDJcMlwyXDciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdFwzXDJcMlwyXDJcMTNcM1wyXDJcMlwyXHJcM1wyXDJcMlwyXDE3XDNc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXDIxXDNcMlwyXDJcMlwyM1wzXDJcMlwy XDJcMjVcM1wyXDJcMlwyXDI3XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDMx XDNcMlwyXDJcMlwzM1wzXDJcMlwyXDJcMzVcM1wyXDJcMlwyXDM3XDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyIVwzXDJcMlwyXDIjXDNcMlwyXDJcMiVcM1wyXDJcMlwyXCdcM1wy XDJcMlwyKVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMitcM1wyXDJcMlwyLVwz XDJcMlwyXDIvXDNcMlwyXDJcMlw2MVwzXDJcMlwyXDJcNjMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcNjVcM1wyXDJcMlwyXDY3XDNcMlwyXDJcMjlcM1wyXDJcMlwyO1wzXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMj1cM1wyXDJcMlwyP1wzXDJcMlwyXDJBXDNc MlwyXDJcMkNcM1wyXDJcMlwyRVwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMkdc M1wyXDJcMlwySVwzXDJcMlwyXDJLXDNcMlwyXDJcMk1cM1wyXDJcMlwyT1wzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXDJcMlFcM1wyXDJcMlwyU1wzXDJcMlwyXDJVXDNcMlwyXDJcMldc M1wyXDJcMlwyWSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMltcM1wyXDJcMlwy XVwzXDJcMlwyXDJfXDNcMlwyXDJcMmFcM1wyXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJjXDNcMlwyXDJcMmVcM1wyXDJcMlwyZ1wzXDJcMlwyXDJpXDNcMlwyXDJcMmtcM1wyXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJtXDNcMlwyXDJcMm9cM1wyXDJcMlwycVwzXDJcMlwy XDJzXDNcMlwyXDJcMnVcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJ3XDNcMlwy XDJcMnlcM1wyXDJcMlwye1wzXDJcMlwyXDJ9XDNcMlwyXDJcMlwxNzdcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXDJcdTAwODFcM1wyXDJcMlwyXHUwMDgzXDNcMlwyXDJcMlx1MDA4 NVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDA4N1wzXDJcMlwyXDJcdTAw ODlcM1wyXDJcMlwyXHUwMDhiXDNcMlwyXDJcMlx1MDA4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcMlx1MDA4ZlwzXDJcMlwyXDJcdTAwOTFcM1wyXDJcMlwyXHUwMDkzXDNcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMDk1XDNcMlwyXDJcMlx1MDA5N1wzXDJc MlwyXDJcdTAwOTlcM1wyXDJcMlwyXHUwMDliIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlwyXHUwMDlkXDNcMlwyXDJcMlx1MDA5ZlwzXDJcMlwyXDJcdTAwYTFcM1wyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAwYTNcM1wyXDJcMlwyXHUwMGE1XDNcMlwyXDJcMlx1 MDBhN1wzXDJcMlwyXDJcdTAwYTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJc dTAwYWJcM1wyXDJcMlwyXHUwMGFkXDNcMlwyXDJcMlx1MDBhZlwzXDJcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlx1MDBiMVwzXDJcMlwyXDJcdTAwYjNcM1wyXDJcMlwyXHUwMGI1XDNc MlwyXDJcMlx1MDBiNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBiOVwz XDJcMlwyXDJcdTAwYmJcM1wyXDJcMlwyXHUwMGJkXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXHUwMGJmXDNcMlwyXDJcMlx1MDBjMVwzXDJcMlwyXDJcdTAwYzNcM1wyXDJcMlwy XHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGM3XDNcMlwyXDJc Mlx1MDBjOVwzXDJcMlwyXDJcdTAwY2JcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcdTAwY2RcM1wyXDJcMlwyXHUwMGNmXDNcMlwyXDJcMlx1MDBkMVwzXDJcMlwyXDJcdTAwZDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAwZDVcM1wyXDJcMlwyXHUwMGQ3 XDNcMlwyXDJcMlx1MDBkOVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDBk YlwzXDJcMlwyXDJcdTAwZGRcM1wyXDJcMlwyXHUwMGRmXDNcMlwyXDJcMlx1MDBlMSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBlM1wzXDJcMlwyXDJcdTAwZTVcM1wyXDJc MlwyXHUwMGU3XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMGU5XDNcMlwy XDJcMlx1MDBlYlwzXDJcMlwyXDJcdTAwZWRcM1wyXDJcMlwyXHUwMGVmIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGYxXDNcMlwyXDJcMlx1MDBmM1wzXDJcMlwyXDJcdTAw ZjVcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAwZjdcM1wyXDJcMlwyXHUw MGY5XDNcMlwyXDJcMlx1MDBmYlwzXDJcMlwyXDJcdTAwZmQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcdTAwZmZcM1wyXDJcMlwyXHUwMTAxXDNcMlwyXDJcMlx1MDEwM1wzXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDEwNVwzXDJcMlwyXDJcdTAxMDdcM1wy XDJcMlwyXHUwMTA5XDNcMlwyXDJcMlx1MDEwYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcMlx1MDEwZFwzXDJcMlwyXDJcdTAxMGZcM1wyXDJcMlwyXHUwMTExXDNcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMTEzXDNcMlwyXDJcMlx1MDExNVwzXDJcMlwyXDJc dTAxMTdcM1wyXDJcMlwyXHUwMTE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwy XHUwMTFiXDNcMlwyXDJcMlx1MDExZFwzXDJcMlwyXDJcdTAxMWZcM1wyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcdTAxMjFcM1wyXDJcMlwyXHUwMTIzXDNcMlwyXDJcMlx1MDEyNVwz XDJcMlwyXDJcdTAxMjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxMjlc M1wyXDJcMlwyXHUwMTJiXDNcMlwyXDJcMlx1MDEyZFwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDEyZlwzXDJcMlwyXDJcdTAxMzFcM1wyXDJcMlwyXHUwMTMzXDNcMlwyXDJc Mlx1MDEzNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDEzN1wzXDJcMlwy XDJcdTAxMzlcM1wyXDJcMlwyXHUwMTNiXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwMTNkXDNcMlwyXDJcMlx1MDEzZlwzXDJcMlwyXDJcdTAxNDFcM1wyXDJcMlwyXHUwMTQz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTQ1XDNcMlwyXDJcMlx1MDE0 N1wzXDJcMlwyXDJcdTAxNDlcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAx NGJcM1wyXDJcMlwyXHUwMTRkXDNcMlwyXDJcMlx1MDE0ZlwzXDJcMlwyXDJcdTAxNTEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxNTNcM1wyXDJcMlwyXHUwMTU1XDNcMlwy XDJcMlx1MDE1N1wzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDE1OVwzXDJc MlwyXDJcdTAxNWJcM1wyXDJcMlwyXHUwMTVkXDNcMlwyXDJcMlx1MDE1ZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDE2MVwzXDJcMlwyXDJcdTAxNjNcM1wyXDJcMlwyXHUw MTY1XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMTY3XDNcMlwyXDJcMlx1 MDE2OVwzXDJcMlwyXDJcdTAxNmJcM1wyXDJcMlwyXHUwMTZkIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlwyXHUwMTZmXDNcMlwyXDJcMlx1MDE3MVwzXDJcMlwyXDJcdTAxNzNcM1wy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxNzVcM1wyXDJcMlwyXHUwMTc3XDNc MlwyXDJcMlx1MDE3OVwzXDJcMlwyXDJcdTAxN2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXDJcdTAxN2RcM1wyXDJcMlwyXHUwMTdmXDNcMlwyXDJcMlx1MDE4MVwzXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDE4M1wzXDJcMlwyXDJcdTAxODVcM1wyXDJcMlwy XHUwMTg3XDNcMlwyXDJcMlx1MDE4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc Mlx1MDE4YlwzXDJcMlwyXDJcdTAxOGRcM1wyXDJcMlwyXHUwMThmXDNcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwMTkxXDNcMlwyXDJcMlx1MDE5M1wzXDJcMlwyXDJcdTAxOTVc M1wyXDJcMlwyXHUwMTk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTk5 XDNcMlwyXDJcMlx1MDE5YlwzXDJcMlwyXDJcdTAxOWRcM1wyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTAxOWZcM1wyXDJcMlwyXHUwMWExXDNcMlwyXDJcMlx1MDFhM1wzXDJcMlwy XDJcdTAxYTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxYTdcM1wyXDJc MlwyXHUwMWE5XDNcMlwyXDJcMlx1MDFhYlwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlx1MDFhZFwzXDJcMlwyXDJcdTAxYWZcM1wyXDJcMlwyXHUwMWIxXDNcMlwyXDJcMlx1MDFi MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDFiNVwzXDJcMlwyXDJcdTAx YjdcM1wyXDJcMlwyXHUwMWI5XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUw MWJiXDNcMlwyXDJcMlx1MDFiZFwzXDJcMlwyXDJcdTAxYmZcM1wyXDJcMlwyXHUwMWMxIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWMzXDNcMlwyXDJcMlx1MDFjNVwzXDJc MlwyXDJcdTAxYzdcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxYzlcM1wy XDJcMlwyXHUwMWNiXDNcMlwyXDJcMlx1MDFjZFwzXDJcMlwyXDJcdTAxY2YiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXDJcdTAxZDFcM1wyXDJcMlwyXHUwMWQzXDNcMlwyXDJcMlx1 MDFkNVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDFkN1wzXDJcMlwyXDJc dTAxZDlcM1wyXDJcMlwyXHUwMWRiXDNcMlwyXDJcMlx1MDFkZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcMlx1MDFkZlwzXDJcMlwyXDJcdTAxZTFcM1wyXDJcMlwyXHUwMWUzXDNc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMWU1XDNcMlwyXDJcMlx1MDFlN1wz XDJcMlwyXDJcdTAxZTlcM1wyXDJcMlwyXHUwMWViIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlwyXHUwMWVkXDNcMlwyXDJcMlx1MDFlZlwzXDJcMlwyXDJcdTAxZjFcM1wyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAxZjNcM1wyXDJcMlwyXHUwMWY1XDNcMlwyXDJc Mlx1MDFmN1wzXDJcMlwyXDJcdTAxZjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XDJcdTAxZmJcM1wyXDJcMlwyXHUwMWZkXDNcMlwyXDJcMlx1MDFmZlwzXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDIwMVwzXDJcMlwyXDNcdTAyMDNcM1wyXDJcMlw1XHUwMjA4 XDNcMlwyXDJcN1x1MDIwZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdFx1MDIx MVwzXDJcMlwyXDEzXHUwMjE5XDNcMlwyXDJcclx1MDIxZVwzXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcMTdcdTAyMjBcM1wyXDJcMlwyMVx1MDIyY1wzXDJcMlwyXDIzXHUwMjM3XDNc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyNVx1MDI0MlwzXDJcMlwyXDI3XHUwMjQ1 XDNcMlwyXDJcMzFcdTAyNDhcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMzXHUw MjRhXDNcMlwyXDJcMzVcdTAyNGNcM1wyXDJcMlwzN1x1MDI0ZVwzXDJcMlwyIVx1MDI1NSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDIjXHUwMjU3XDNcMlwyXDIlXHUwMjVmXDNcMlwy XDJcJ1x1MDI2OFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIpXHUwMjc0XDNcMlwy XDIrXHUwMjc2XDNcMlwyXDItXHUwMjc4XDNcMlwyXDIvXHUwMjdhXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcMlw2MVx1MDI3Y1wzXDJcMlwyXDYzXHUwMjdlXDNcMlwyXDJcNjVcdTAy ODBcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDY3XHUwMjgyXDNcMlwyXDI5XHUw Mjg0XDNcMlwyXDI7XHUwMjg2XDNcMlwyXDI9XHUwMjg4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMj9cdTAyOGFcM1wyXDJcMkFcdTAyOGNcM1wyXDJcMkNcdTAyOGZcM1wyXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiRVx1MDI5MlwzXDJcMlwyR1x1MDI5NVwzXDJcMlwySVx1 MDI5N1wzXDJcMlwyS1x1MDI5YVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJNXHUw MjljXDNcMlwyXDJPXHUwMjllXDNcMlwyXDJRXHUwMmEwXDNcMlwyXDJTXHUwMmFiIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlVcdTAyYjNcM1wyXDJcMldcdTAyYmRcM1wyXDJcMllc dTAyYzhcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiW1x1MDJjZVwzXDJcMlwyXVx1 MDJkNVwzXDJcMlwyX1x1MDJkYlwzXDJcMlwyYVx1MDJlNFwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXDJjXHUwMmViXDNcMlwyXDJlXHUwMmY3XDNcMlwyXDJnXHUwMzA1XDNcMlwyXDJp XHUwMzBkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMmtcdTAzMTVcM1wyXDJcMm1c dTAzMWFcM1wyXDJcMm9cdTAzMjJcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgicVx1 MDMyYlwzXDJcMlwyc1x1MDMzM1wzXDJcMlwydVx1MDMzY1wzXDJcMlwyd1x1MDM0OFwzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJ5XHUwMzRkXDNcMlwyXDJ7XHUwMzUyXDNcMlwyXDJ9 XHUwMzU5XDNcMlwyXDJcMTc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNWZcM1wyXDJc Mlx1MDA4MVx1MDM2NFwzXDJcMlwyXHUwMDgzXHUwMzZjXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDA4NVx1MDM3MVwzXDJcMlwyXHUwMDg3XHUwMzc3XDNcMlwyXDJcdTAwODlc dTAzN2JcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMDhiXHUwMzgwXDNcMlwy XDJcdTAwOGRcdTAzODhcM1wyXDJcMlx1MDA4Zlx1MDM4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAwOTFcdTAzOTRcM1wyXDJcMlx1MDA5M1x1MDM5YlwzXDJcMlwyXHUwMDk1 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTVcM1wyXDJcMlx1MDA5N1x1MDNhYlwzXDJc MlwyXHUwMDk5XHUwM2IzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA5Ylx1 MDNiZFwzXDJcMlwyXHUwMDlkXHUwM2NlXDNcMlwyXDJcdTAwOWZcdTAzZDVcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGExXHUwM2RiXDNcMlwyXDJcdTAwYTNcdTAzZTNcM1wy XDJcMlx1MDBhNVx1MDNlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYTdc dTAzZjFcM1wyXDJcMlx1MDBhOVx1MDNmOFwzXDJcMlwyXHUwMGFiIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAzZmVcM1wyXDJcMlx1MDBhZFx1MDQwY1wzXDJcMlwyXHUwMGFmXHUwNDE5XDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiMVx1MDQyNlwzXDJcMlwyXHUwMGIz XHUwNDMyXDNcMlwyXDJcdTAwYjVcdTA0MzdcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwMGI3XHUwNDQwXDNcMlwyXDJcdTAwYjlcdTA0NGNcM1wyXDJcMlx1MDBiYlx1MDQ1NCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYmRcdTA0NWZcM1wyXDJcMlx1MDBi Zlx1MDQ2N1wzXDJcMlwyXHUwMGMxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NmZcM1wy XDJcMlx1MDBjM1x1MDQ3NFwzXDJcMlwyXHUwMGM1XHUwNDdjXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBjN1x1MDQ4NVwzXDJcMlwyXHUwMGM5XHUwNDkxXDNcMlwyXDJcdTAw Y2JcdTA0OThcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGNkXHUwNGEyXDNc MlwyXDJcdTAwY2ZcdTA0YWFcM1wyXDJcMlx1MDBkMVx1MDRiMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAwZDNcdTA0YmJcM1wyXDJcMlx1MDBkNVx1MDRjNlwzXDJcMlwyXHUw MGQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZDBcM1wyXDJcMlx1MDBkOVx1MDRkN1wz XDJcMlwyXHUwMGRiXHUwNGRjXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBk ZFx1MDRlOFwzXDJcMlwyXHUwMGRmXHUwNGY3XDNcMlwyXDJcdTAwZTFcdTA1MDFcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGUzXHUwNTBjXDNcMlwyXDJcdTAwZTVcdTA1MTJc M1wyXDJcMlx1MDBlN1x1MDUxNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAw ZTlcdTA1MWVcM1wyXDJcMlx1MDBlYlx1MDUyY1wzXDJcMlwyXHUwMGVkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1M2RcM1wyXDJcMlx1MDBlZlx1MDU1MlwzXDJcMlwyXHUwMGYxXHUwNTVl XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmM1x1MDU2OFwzXDJcMlwyXHUw MGY1XHUwNTc3XDNcMlwyXDJcdTAwZjdcdTA1OGFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlwyXHUwMGY5XHUwNTk1XDNcMlwyXDJcdTAwZmJcdTA1OWZcM1wyXDJcMlx1MDBmZFx1MDVh YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZmZcdTA1YjdcM1wyXDJcMlx1 MDEwMVx1MDViZFwzXDJcMlwyXHUwMTAzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YzZc M1wyXDJcMlx1MDEwNVx1MDVkMFwzXDJcMlwyXHUwMTA3XHUwNWQ4XDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDEwOVx1MDVlMFwzXDJcMlwyXHUwMTBiXHUwNWU1XDNcMlwyXDJc dTAxMGRcdTA1ZWVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTBmXHUwNWY1 XDNcMlwyXDJcdTAxMTFcdTA1ZmJcM1wyXDJcMlx1MDExM1x1MDYwMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAxMTVcdTA2MDZcM1wyXDJcMlx1MDExN1x1MDYwZFwzXDJcMlwy XHUwMTE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MTJcM1wyXDJcMlx1MDExYlx1MDYx N1wzXDJcMlwyXHUwMTFkXHUwNjFkXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDExZlx1MDYyNlwzXDJcMlwyXHUwMTIxXHUwNjMxXDNcMlwyXDJcdTAxMjNcdTA2MzdcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTI1XHUwNjNlXDNcMlwyXDJcdTAxMjdcdTA2 NDNcM1wyXDJcMlx1MDEyOVx1MDY0YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAxMmJcdTA2NTFcM1wyXDJcMlx1MDEyZFx1MDY1NlwzXDJcMlwyXHUwMTJmIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA2NWNcM1wyXDJcMlx1MDEzMVx1MDY2OFwzXDJcMlwyXHUwMTMzXHUw Njc3XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzNVx1MDY4NFwzXDJcMlwy XHUwMTM3XHUwNjhlXDNcMlwyXDJcdTAxMzlcdTA2OTdcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlwyXHUwMTNiXHUwNmEzXDNcMlwyXDJcdTAxM2RcdTA2YWJcM1wyXDJcMlx1MDEzZlx1 MDZiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNDFcdTA2YzRcM1wyXDJc Mlx1MDE0M1x1MDZjYlwzXDJcMlwyXHUwMTQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 ZDVcM1wyXDJcMlx1MDE0N1x1MDZkZFwzXDJcMlwyXHUwMTQ5XHUwNmU2XDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDE0Ylx1MDZmNVwzXDJcMlwyXHUwMTRkXHUwNmZjXDNcMlwy XDJcdTAxNGZcdTA3MDZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTUxXHUw NzBmXDNcMlwyXDJcdTAxNTNcdTA3MTRcM1wyXDJcMlx1MDE1NVx1MDcxYSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNTdcdTA3MjVcM1wyXDJcMlx1MDE1OVx1MDczMVwzXDJc MlwyXHUwMTViIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3M2VcM1wyXDJcMlx1MDE1ZFx1 MDc0ZFwzXDJcMlwyXHUwMTVmXHUwNzVhXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDE2MVx1MDc2OVwzXDJcMlwyXHUwMTYzXHUwNzc2XDNcMlwyXDJcdTAxNjVcdTA3ODhcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTY3XHUwNzljXDNcMlwyXDJcdTAxNjlc dTA3YTdcM1wyXDJcMlx1MDE2Ylx1MDdiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAxNmRcdTA3YzBcM1wyXDJcMlx1MDE2Zlx1MDdjZlwzXDJcMlwyXHUwMTcxIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3ZGNcM1wyXDJcMlx1MDE3M1x1MDdlYVwzXDJcMlwyXHUwMTc1 XHUwN2ZhXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3N1x1MDgwYVwzXDJc MlwyXHUwMTc5XHUwODE5XDNcMlwyXDJcdTAxN2JcdTA4MjZcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyXHUwMTdkXHUwODM1XDNcMlwyXDJcdTAxN2ZcdTA4M2NcM1wyXDJcMlx1MDE4 MVx1MDg0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxODNcdTA4NDlcM1wy XDJcMlx1MDE4NVx1MDg0ZVwzXDJcMlwyXHUwMTg3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA4NTJcM1wyXDJcMlx1MDE4OVx1MDg1OFwzXDJcMlwyXHUwMThiXHUwODVkXDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDE4ZFx1MDg2MVwzXDJcMlwyXHUwMThmXHUwODZhXDNc MlwyXDJcdTAxOTFcdTA4NmVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTkz XHUwODc2XDNcMlwyXDJcdTAxOTVcdTA4N2RcM1wyXDJcMlx1MDE5N1x1MDg4OSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxOTlcdTA4OTVcM1wyXDJcMlx1MDE5Ylx1MDg5ZFwz XDJcMlwyXHUwMTlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YTdcM1wyXDJcMlx1MDE5 Zlx1MDhiMFwzXDJcMlwyXHUwMWExXHUwOGI5XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDFhM1x1MDhiZFwzXDJcMlwyXHUwMWE1XHUwOGMyXDNcMlwyXDJcdTAxYTdcdTA4Yzhc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWE5XHUwOGNjXDNcMlwyXDJcdTAx YWJcdTA4ZDFcM1wyXDJcMlx1MDFhZFx1MDhkNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxYWZcdTA4ZTBcM1wyXDJcMlx1MDFiMVx1MDhlOFwzXDJcMlwyXHUwMWIzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZWZcM1wyXDJcMlx1MDFiNVx1MDhmM1wzXDJcMlwyXHUw MWI3XHUwOGY2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFiOVx1MDhmYVwz XDJcMlwyXHUwMWJiXHUwOGZlXDNcMlwyXDJcdTAxYmRcdTA5MDBcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMWJmXHUwOTA4XDNcMlwyXDJcdTAxYzFcdTA5MTJcM1wyXDJcMlx1 MDFjM1x1MDkxYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYzVcdTA5MjNc M1wyXDJcMlx1MDFjN1x1MDkyYlwzXDJcMlwyXHUwMWM5IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA5MzFcM1wyXDJcMlx1MDFjYlx1MDkzOFwzXDJcMlwyXHUwMWNkXHUwOTQxXDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjZlx1MDk1MFwzXDJcMlwyXHUwMWQxXHUwOTVk XDNcMlwyXDJcdTAxZDNcdTA5NjFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUw MWQ1XHUwOTZkXDNcMlwyXDJcdTAxZDdcdTA5N2FcM1wyXDJcMlx1MDFkOVx1MDk4OSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZGJcdTA5OWNcM1wyXDJcMlx1MDFkZFx1MDlh YlwzXDJcMlwyXHUwMWRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YmFcM1wyXDJcMlx1 MDFlMVx1MDljOVwzXDJcMlwyXHUwMWUzXHUwOWQ4XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDFlNVx1MDllOFwzXDJcMlwyXHUwMWU3XHUwOWY5XDNcMlwyXDJcdTAxZTlcdTBh MGFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWViXHUwYTE2XDNcMlwyXDJc dTAxZWRcdTBhMjBcM1wyXDJcMlx1MDFlZlx1MGEyZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAxZjFcdTBhNGNcM1wyXDJcMlx1MDFmM1x1MGE0ZVwzXDJcMlwyXHUwMWY1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNTVcM1wyXDJcMlx1MDFmN1x1MGE2OFwzXDJcMlwy XHUwMWY5XHUwYTc5XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFmYlx1MGE4 ZVwzXDJcMlwyXHUwMWZkXHUwYTk5XDNcMlwyXDJcdTAxZmZcdTBhOWRcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjAxXHUwYWE4XDNcMlwyXDJcdTAyMDNcdTAyMDRcN3VcMlwy XHUwMjA0XHUwMjA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2pcMlwyXHUwMjA1XHUwMjA2 XDdxXDJcMlx1MDIwNlx1MDIwN1w3eVwyXDJcdTAyMDdcNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAyMDhcdTAyMDlcN3JcMlwyXHUwMjA5XHUwMjBhXDd3XDJcMlx1MDIwYVx1 MDIwYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd1XDJcMlx1MDIwYlx1MDIwY1w3alwyXDJc dTAyMGNcNlwzXDJcMlwyXHUwMjBkXHUwMjBlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN3Jc MlwyXHUwMjBlXHUwMjBmXDdxXDJcMlx1MDIwZlx1MDIxMFw3clwyXDJcdTAyMTBcYiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMTFcdTAyMTJcNyVcMlwyXHUwMjEyXHUwMjEz XDdyXDJcMlx1MDIxM1x1MDIxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDIx NFx1MDIxNVw3Y1wyXDJcdTAyMTVcdTAyMTZcN2lcMlwyXHUwMjE2XHUwMjE3IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN29cMlwyXHUwMjE3XHUwMjE4XDdjXDJcMlx1MDIxOFxuXDNcMlwyXDJc dTAyMTlcdTAyMWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3clwyXDJcdTAyMWFcdTAyMWJc N2NcMlwyXHUwMjFiXHUwMjFjXDdlXDJcMlx1MDIxY1x1MDIxZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdtXDJcMlx1MDIxZFxmXDNcMlwyXDJcdTAyMWVcdTAyMWZcNz9cMlwyXHUwMjFmXDE2 XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDIyMFx1MDIyMVw3S1wyXDJcdTAy MjFcdTAyMjJcN09cMlwyXHUwMjIyXHUwMjIzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0Nc MlwyXHUwMjIzXHUwMjI0XDdJXDJcMlx1MDIyNFx1MDIyNVw3R1wyXDJcdTAyMjVcdTAyMjYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3YVwyXDJcdTAyMjZcdTAyMjdcN1ZcMlwyXHUwMjI3XHUw MjI4XDdRXDJcMlx1MDIyOFx1MDIyOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdNXDJcMlx1 MDIyOVx1MDIyYVw3R1wyXDJcdTAyMmFcdTAyMmJcN1BcMlwyXHUwMjJiXDIwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDIyY1x1MDIyZFw3SlwyXDJcdTAyMmRcdTAyMmVcN1Fc MlwyXHUwMjJlXHUwMjJmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1RcMlwyXHUwMjJmXHUw MjMwXDdLXDJcMlx1MDIzMFx1MDIzMVw3XFxcMlwyXHUwMjMxXHUwMjMyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN1FcMlwyXHUwMjMyXHUwMjMzXDdQXDJcMlx1MDIzM1x1MDIzNFw3VlwyXDJc dTAyMzRcdTAyMzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3Q1wyXDJcdTAyMzVcdTAyMzZc N05cMlwyXHUwMjM2XDIyXDNcMlwyXDJcdTAyMzdcdTAyMzgiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3T1wyXDJcdTAyMzhcdTAyMzlcN1dcMlwyXHUwMjM5XHUwMjNhXDdOXDJcMlx1MDIzYVx1 MDIzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDIzYlx1MDIzY1w3S1wyXDJc dTAyM2NcdTAyM2RcN2FcMlwyXHUwMjNkXHUwMjNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N05cMlwyXHUwMjNlXHUwMjNmXDdLXDJcMlx1MDIzZlx1MDI0MFw3UFwyXDJcdTAyNDBcdTAyNDEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3R1wyXDJcdTAyNDFcMjRcM1wyXDJcMlx1MDI0Mlx1 MDI0M1w3PlwyXDJcdTAyNDNcdTAyNDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PlwyXDJc dTAyNDRcMjZcM1wyXDJcMlx1MDI0NVx1MDI0Nlw3QFwyXDJcdTAyNDZcdTAyNDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3QFwyXDJcdTAyNDdcMzBcM1wyXDJcMlx1MDI0OFx1MDI0OVw3LVwy XDJcdTAyNDlcMzJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjRhXHUwMjRi XDcsXDJcMlx1MDI0YlwzNFwzXDJcMlwyXHUwMjRjXHUwMjRkIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN1wnXDJcMlx1MDI0ZFwzNlwzXDJcMlwyXHUwMjRlXHUwMjRmXDdoXDJcMlx1MDI0Zlx1 MDI1MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdxXDJcMlx1MDI1MFx1MDI1MVw3dFwyXDJc dTAyNTFcdTAyNTJcN29cMlwyXHUwMjUyXHUwMjUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N2NcMlwyXHUwMjUzXHUwMjU0XDd2XDJcMlx1MDI1NCBcM1wyXDJcMlx1MDI1NVx1MDI1NiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdBXDJcMlx1MDI1NlwiXDNcMlwyXDJcdTAyNTdcdTAyNThc NyVcMlwyXHUwMjU4XHUwMjU5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2ZcMlwyXHUwMjU5 XHUwMjVhXDdnXDJcMlx1MDI1YVx1MDI1Ylw3aFwyXDJcdTAyNWJcdTAyNWMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3a1wyXDJcdTAyNWNcdTAyNWRcN3BcMlwyXHUwMjVkXHUwMjVlXDdnXDJc Mlx1MDI1ZSRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVmXHUwMjYwXDcl XDJcMlx1MDI2MFx1MDI2MVw3a1wyXDJcdTAyNjFcdTAyNjIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3cFwyXDJcdTAyNjJcdTAyNjNcN2VcMlwyXHUwMjYzXHUwMjY0XDduXDJcMlx1MDI2NFx1 MDI2NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDd3XDJcMlx1MDI2NVx1MDI2Nlw3ZlwyXDJc dTAyNjZcdTAyNjdcN2dcMlwyXHUwMjY3JlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XDJcdTAyNjhcdTAyNjlcN2hcMlwyXHUwMjY5XHUwMjZhXDdxXDJcMlx1MDI2YVx1MDI2YiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDI2Ylx1MDI2Y1w3b1wyXDJcdTAyNmNcdTAy NmRcN3JcMlwyXHUwMjZkXHUwMjZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN21cMlwyXHUw MjZlXHUwMjZmXDdpXDJcMlx1MDI2Zlx1MDI3MFw3dlwyXDJcdTAyNzBcdTAyNzEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3e1wyXDJcdTAyNzFcdTAyNzJcN3JcMlwyXHUwMjcyXHUwMjczXDdn XDJcMlx1MDI3MyhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjc0XHUwMjc1 XDd9XDJcMlx1MDI3NSpcM1wyXDJcMlx1MDI3Nlx1MDI3N1w3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMTc3XDJcMlx1MDI3NyxcM1wyXDJcMlx1MDI3OFx1MDI3OVw3KlwyXDJcdTAyNzkuXDNc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI3YVx1MDI3Ylw3K1wyXDJcdTAyN2Jc NjBcM1wyXDJcMlx1MDI3Y1x1MDI3ZFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJdXDJcMlx1 MDI3ZFw2MlwzXDJcMlwyXHUwMjdlXHUwMjdmXDdfXDJcMlx1MDI3Zlw2NFwzXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcdTAyODBcdTAyODFcN1w2MFwyXDJcdTAyODFcNjZcM1wyXDJc Mlx1MDI4Mlx1MDI4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDI4MzhcM1wy XDJcMlx1MDI4NFx1MDI4NVw3PFwyXDJcdTAyODU6XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlx1MDI4Nlx1MDI4N1w3XDYxXDJcMlx1MDI4NzxcM1wyXDJcMlx1MDI4OFx1MDI4OVw3 PSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI4OT5cM1wyXDJcMlx1MDI4YVx1MDI4 Ylw3LlwyXDJcdTAyOGJAXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDI4Y1x1 MDI4ZFw3P1wyXDJcdTAyOGRcdTAyOGVcNz9cMlwyXHUwMjhlQlwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyOGZcdTAyOTBcNyNcMlwyXHUwMjkwXHUwMjkxXDc/XDJcMlx1MDI5 MURcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjkyXHUwMjkzXDc+XDJcMlx1 MDI5M1x1MDI5NFw3P1wyXDJcdTAyOTRGXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDI5NVx1MDI5Nlw3PlwyXDJcdTAyOTZIXDNcMlwyXDJcdTAyOTdcdTAyOThcN0BcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOThcdTAyOTlcNz9cMlwyXHUwMjk5SlwzXDJcMlwy XHUwMjlhXHUwMjliXDdAXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjliTFwzXDJc MlwyXHUwMjljXHUwMjlkXDd+XDJcMlx1MDI5ZE5cM1wyXDJcMlx1MDI5ZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMjlmXDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJhMVw3Zlwy XDJcdTAyYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJhMlw3Z1wyXDJcdTAyYTJcdTAy YTNcN3hcMlwyXHUwMmEzXHUwMmE0XDdrXDJcMlx1MDJhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMmE1XDdlXDJcMlx1MDJhNVx1MDJhNlw3Z1wyXDJcdTAyYTZcdTAyYTdcN3JcMlwyXHUw MmE3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYThcN2NcMlwyXHUwMmE4XHUwMmE5XDd2 XDJcMlx1MDJhOVx1MDJhYVw3alwyXDJcdTAyYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlJc M1wyXDJcMlx1MDJhYlx1MDJhY1w3aFwyXDJcdTAyYWNcdTAyYWRcN3FcMlwyXHUwMmFkIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyYWVcN3RcMlwyXHUwMmFlXHUwMmFmXDdvXDJcMlx1MDJh Zlx1MDJiMFw3dVwyXDJcdTAyYjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJiMVw3Z1wy XDJcdTAyYjFcdTAyYjJcN3ZcMlwyXHUwMmIyVFwzXDJcMlwyXHUwMmIzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAyYjRcN2hcMlwyXHUwMmI0XHUwMmI1XDdxXDJcMlx1MDJiNVx1MDJiNlw3 dFwyXDJcdTAyYjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJiN1w3b1wyXDJcdTAyYjdc dTAyYjhcN3VcMlwyXHUwMmI4XHUwMmI5XDdnXDJcMlx1MDJiOSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMmJhXDd2XDJcMlx1MDJiYVx1MDJiYlw3a1wyXDJcdTAyYmJcdTAyYmNcN2ZcMlwy XHUwMmJjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJWXDNcMlwyXDJcdTAyYmRcdTAyYmVcN2dc MlwyXHUwMmJlXHUwMmJmXDdwXDJcMlx1MDJiZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MmMwXDdmXDJcMlx1MDJjMFx1MDJjMVw3aFwyXDJcdTAyYzFcdTAyYzJcN3FcMlwyXHUwMmMyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYzNcN3RcMlwyXHUwMmMzXHUwMmM0XDdvXDJcMlx1 MDJjNFx1MDJjNVw3dVwyXDJcdTAyYzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJjNlw3 Z1wyXDJcdTAyYzZcdTAyYzdcN3ZcMlwyXHUwMmM3WFwzXDJcMlwyXHUwMmM4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyYzlcN3ZcMlwyXHUwMmM5XHUwMmNhXDdrXDJcMlx1MDJjYVx1MDJj Ylw3dlwyXDJcdTAyY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJjY1w3blwyXDJcdTAy Y2NcdTAyY2RcN2dcMlwyXHUwMmNkWlwzXDJcMlwyXHUwMmNlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAyY2ZcN2hcMlwyXHUwMmNmXHUwMmQwXDdxXDJcMlx1MDJkMFx1MDJkMVw3dFwyXDJc dTAyZDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJkMlw3b1wyXDJcdTAyZDJcdTAyZDNc N2tcMlwyXHUwMmQzXHUwMmQ0XDdmXDJcMlx1MDJkNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XFxcM1wyXDJcMlx1MDJkNVx1MDJkNlw3cVwyXDJcdTAyZDZcdTAyZDdcN3BcMlwyXHUwMmQ3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZDhcN2dcMlwyXHUwMmQ4XHUwMmQ5XDdxXDJcMlx1 MDJkOVx1MDJkYVw3aFwyXDJcdTAyZGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIl5cM1wyXDJc Mlx1MDJkYlx1MDJkY1w3Z1wyXDJcdTAyZGNcdTAyZGRcN3BcMlwyXHUwMmRkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyZGVcN2ZcMlwyXHUwMmRlXHUwMmRmXDdxXDJcMlx1MDJkZlx1MDJl MFw3cFwyXDJcdTAyZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJlMVw3Z1wyXDJcdTAy ZTFcdTAyZTJcN3FcMlwyXHUwMmUyXHUwMmUzXDdoXDJcMlx1MDJlMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiYFwzXDJcMlwyXHUwMmU0XHUwMmU1XDdyXDJcMlx1MDJlNVx1MDJlNlw3dFwyXDJc dTAyZTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJlN1w3cVwyXDJcdTAyZTdcdTAyZThc N29cMlwyXHUwMmU4XHUwMmU5XDdyXDJcMlx1MDJlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMmVhXDd2XDJcMlx1MDJlYWJcM1wyXDJcMlx1MDJlYlx1MDJlY1w3cVwyXDJcdTAyZWMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDJlZFw3dFwyXDJcdTAyZWRcdTAyZWVcN2ZcMlwyXHUw MmVlXHUwMmVmXDdnXDJcMlx1MDJlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmYwXDd0 XDJcMlx1MDJmMFx1MDJmMVw3Z1wyXDJcdTAyZjFcdTAyZjJcN2ZcMlwyXHUwMmYyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAyZjNcN25cMlwyXHUwMmYzXHUwMmY0XDdrXDJcMlx1MDJmNFx1 MDJmNVw3dVwyXDJcdTAyZjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJmNlw3dlwyXDJc dTAyZjZkXDNcMlwyXDJcdTAyZjdcdTAyZjhcN29cMlwyXHUwMmY4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAyZjlcN2NcMlwyXHUwMmY5XHUwMmZhXDd6XDJcMlx1MDJmYVx1MDJmYlw3ZVwy XDJcdTAyZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDJmY1w3cVwyXDJcdTAyZmNcdTAy ZmRcN3BcMlwyXHUwMmZkXHUwMmZlXDd2XDJcMlx1MDJmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMmZmXDdjXDJcMlx1MDJmZlx1MDMwMFw3a1wyXDJcdTAzMDBcdTAzMDFcN3BcMlwyXHUw MzAxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDJcN2dcMlwyXHUwMzAyXHUwMzAzXDd0 XDJcMlx1MDMwM1x1MDMwNFw3dVwyXDJcdTAzMDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoImZc M1wyXDJcMlx1MDMwNVx1MDMwNlw3Z1wyXDJcdTAzMDZcdTAzMDdcN3BcMlwyXHUwMzA3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDhcN2ZcMlwyXHUwMzA4XHUwMzA5XDduXDJcMlx1MDMw OVx1MDMwYVw3a1wyXDJcdTAzMGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMwYlw3dVwy XDJcdTAzMGJcdTAzMGNcN3ZcMlwyXHUwMzBjaFwzXDJcMlwyXHUwMzBkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzMGVcN2dcMlwyXHUwMzBlXHUwMzBmXDdwXDJcMlx1MDMwZlx1MDMxMFw3 ZlwyXDJcdTAzMTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxMVw3aFwyXDJcdTAzMTFc dTAzMTJcN3FcMlwyXHUwMzEyXHUwMzEzXDd0XDJcMlx1MDMxMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzE0XDdvXDJcMlx1MDMxNGpcM1wyXDJcMlx1MDMxNVx1MDMxNlw3aFwyXDJcdTAz MTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxN1w3cVwyXDJcdTAzMTdcdTAzMThcN3Rc MlwyXHUwMzE4XHUwMzE5XDdvXDJcMlx1MDMxOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgibFwz XDJcMlwyXHUwMzFhXHUwMzFiXDdoXDJcMlx1MDMxYlx1MDMxY1w3cVwyXDJcdTAzMWMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDMxZFw3dFwyXDJcdTAzMWRcdTAzMWVcN29cMlwyXHUwMzFl XHUwMzFmXDdvXDJcMlx1MDMxZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzIwXDdjXDJc Mlx1MDMyMFx1MDMyMVw3clwyXDJcdTAzMjFuXDNcMlwyXDJcdTAzMjIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDMyM1w3b1wyXDJcdTAzMjNcdTAzMjRcN2NcMlwyXHUwMzI0XHUwMzI1XDdy XDJcMlx1MDMyNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzI2XDd2XDJcMlx1MDMyNlx1 MDMyN1w3a1wyXDJcdTAzMjdcdTAzMjhcN3ZcMlwyXHUwMzI4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzMjlcN25cMlwyXHUwMzI5XHUwMzJhXDdnXDJcMlx1MDMyYXBcM1wyXDJcMlx1MDMy YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzJjXDdvXDJcMlx1MDMyY1x1MDMyZFw3Y1wy XDJcdTAzMmRcdTAzMmVcN3JcMlwyXHUwMzJlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAz MmZcN2lcMlwyXHUwMzJmXHUwMzMwXDd3XDJcMlx1MDMzMFx1MDMzMVw3a1wyXDJcdTAzMzEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDMzMlw3ZlwyXDJcdTAzMzJyXDNcMlwyXDJcdTAzMzNc dTAzMzRcN3VcMlwyXHUwMzM0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMzVcN3dcMlwy XHUwMzM1XHUwMzM2XDdkXDJcMlx1MDMzNlx1MDMzN1w3dlwyXDJcdTAzMzciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDMzOFw3a1wyXDJcdTAzMzhcdTAzMzlcN3ZcMlwyXHUwMzM5XHUwMzNh XDduXDJcMlx1MDMzYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNiXDdnXDJcMlx1MDMz YnRcM1wyXDJcMlx1MDMzY1x1MDMzZFw3Z1wyXDJcdTAzM2QiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDMzZVw3cFwyXDJcdTAzM2VcdTAzM2ZcN2ZcMlwyXHUwMzNmXHUwMzQwXDd1XDJcMlx1 MDM0MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzQxXDd3XDJcMlx1MDM0MVx1MDM0Mlw3 ZFwyXDJcdTAzNDJcdTAzNDNcN3ZcMlwyXHUwMzQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAzNDRcN2tcMlwyXHUwMzQ0XHUwMzQ1XDd2XDJcMlx1MDM0NVx1MDM0Nlw3blwyXDJcdTAzNDYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM0N1w3Z1wyXDJcdTAzNDd2XDNcMlwyXDJcdTAz NDhcdTAzNDlcN2pcMlwyXHUwMzQ5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNGFcN2dc MlwyXHUwMzRhXHUwMzRiXDduXDJcMlx1MDM0Ylx1MDM0Y1w3clwyXDJcdTAzNGMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoInhcM1wyXDJcMlx1MDM0ZFx1MDM0ZVw3dlwyXDJcdTAzNGVcdTAzNGZc N2dcMlwyXHUwMzRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTBcN3pcMlwyXHUwMzUw XHUwMzUxXDd2XDJcMlx1MDM1MXpcM1wyXDJcMlx1MDM1MiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzUzXDdxXDJcMlx1MDM1M1x1MDM1NFw3clwyXDJcdTAzNTRcdTAzNTVcN3ZcMlwyXHUw MzU1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTZcN2tcMlwyXHUwMzU2XHUwMzU3XDdx XDJcMlx1MDM1N1x1MDM1OFw3cFwyXDJcdTAzNTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoInxc M1wyXDJcMlx1MDM1OVx1MDM1YVw3aFwyXDJcdTAzNWFcdTAzNWJcN25cMlwyXHUwMzViIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAzNWNcN2NcMlwyXHUwMzVjXHUwMzVkXDdpXDJcMlx1MDM1 ZFx1MDM1ZVw3dVwyXDJcdTAzNWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIn5cM1wyXDJcMlx1 MDM1Zlx1MDM2MFw3ZlwyXDJcdTAzNjBcdTAzNjFcN2NcMlwyXHUwMzYxIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzNjJcN3ZcMlwyXHUwMzYyXHUwMzYzXDdnXDJcMlx1MDM2M1x1MDA4MFwz XDJcMlwyXHUwMzY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNjVcN2dcMlwyXHUwMzY1 XHUwMzY2XDdwXDJcMlx1MDM2Nlx1MDM2N1w3ZlwyXDJcdTAzNjciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDM2OFw3ZlwyXDJcdTAzNjhcdTAzNjlcN2NcMlwyXHUwMzY5XHUwMzZhXDd2XDJc Mlx1MDM2YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzZiXDdnXDJcMlx1MDM2Ylx1MDA4 MlwzXDJcMlwyXHUwMzZjXHUwMzZkXDd7XDJcMlx1MDM2ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzZlXDdnXDJcMlx1MDM2ZVx1MDM2Zlw3Y1wyXDJcdTAzNmZcdTAzNzBcN3RcMlwyXHUw MzcwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODRcM1wyXDJcMlx1MDM3MVx1MDM3Mlw3 b1wyXDJcdTAzNzJcdTAzNzNcN3FcMlwyXHUwMzczIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAzNzRcN3BcMlwyXHUwMzc0XHUwMzc1XDd2XDJcMlx1MDM3NVx1MDM3Nlw3alwyXDJcdTAzNzYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA4NlwzXDJcMlwyXHUwMzc3XHUwMzc4XDdmXDJc Mlx1MDM3OFx1MDM3OVw3Y1wyXDJcdTAzNzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM3 YVw3e1wyXDJcdTAzN2FcdTAwODhcM1wyXDJcMlx1MDM3Ylx1MDM3Y1w3dlwyXDJcdTAzN2MiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDM3ZFw3a1wyXDJcdTAzN2RcdTAzN2VcN29cMlwyXHUw MzdlXHUwMzdmXDdnXDJcMlx1MDM3ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDhhXDNc MlwyXDJcdTAzODBcdTAzODFcN2dcMlwyXHUwMzgxXHUwMzgyXDdwXDJcMlx1MDM4MiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMzgzXDdmXDJcMlx1MDM4M1x1MDM4NFw3dlwyXDJcdTAzODRc dTAzODVcN2tcMlwyXHUwMzg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzODZcN29cMlwy XHUwMzg2XHUwMzg3XDdnXDJcMlx1MDM4N1x1MDA4Y1wzXDJcMlwyXHUwMzg4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzODlcN2pcMlwyXHUwMzg5XHUwMzhhXDdxXDJcMlx1MDM4YVx1MDM4 Ylw3d1wyXDJcdTAzOGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM4Y1w3dFwyXDJcdTAz OGNcdTAwOGVcM1wyXDJcMlx1MDM4ZFx1MDM4ZVw3b1wyXDJcdTAzOGUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDM4Zlw3a1wyXDJcdTAzOGZcdTAzOTBcN3BcMlwyXHUwMzkwXHUwMzkxXDd3 XDJcMlx1MDM5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzkyXDd2XDJcMlx1MDM5Mlx1 MDM5M1w3Z1wyXDJcdTAzOTNcdTAwOTBcM1wyXDJcMlx1MDM5NCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzk1XDd1XDJcMlx1MDM5NVx1MDM5Nlw3Z1wyXDJcdTAzOTZcdTAzOTdcN2VcMlwy XHUwMzk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzOThcN3FcMlwyXHUwMzk4XHUwMzk5 XDdwXDJcMlx1MDM5OVx1MDM5YVw3ZlwyXDJcdTAzOWEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDA5MlwzXDJcMlwyXHUwMzliXHUwMzljXDdpXDJcMlx1MDM5Y1x1MDM5ZFw3dFwyXDJcdTAz OWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM5ZVw3Y1wyXDJcdTAzOWVcdTAzOWZcN3tc MlwyXHUwMzlmXHUwM2EwXDdxXDJcMlx1MDNhMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw M2ExXDd3XDJcMlx1MDNhMVx1MDNhMlw3dlwyXDJcdTAzYTJcdTAzYTNcN2tcMlwyXHUwM2EzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTRcN2hcMlwyXHUwM2E0XHUwMDk0XDNcMlwyXDJc dTAzYTVcdTAzYTZcN25cMlwyXHUwM2E2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTdc N2NcMlwyXHUwM2E3XHUwM2E4XDdkXDJcMlx1MDNhOFx1MDNhOVw3Z1wyXDJcdTAzYTkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAzYWFcdTAwOTZcM1wyXDJcMlx1MDNh Ylx1MDNhY1w3dlwyXDJcdTAzYWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNhZFw3a1wy XDJcdTAzYWRcdTAzYWVcN29cMlwyXHUwM2FlXHUwM2FmXDdnXDJcMlx1MDNhZiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwM2IwXDdxXDJcMlx1MDNiMFx1MDNiMVw3d1wyXDJcdTAzYjFcdTAz YjJcN3ZcMlwyXHUwM2IyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOThcM1wyXDJcMlx1 MDNiM1x1MDNiNFw3a1wyXDJcdTAzYjRcdTAzYjVcN3BcMlwyXHUwM2I1IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzYjZcN3hcMlwyXHUwM2I2XHUwM2I3XDdnXDJcMlx1MDNiN1x1MDNiOFw3 cFwyXDJcdTAzYjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNiOVw3dlwyXDJcdTAzYjlc dTAzYmFcN3FcMlwyXHUwM2JhXHUwM2JiXDd0XDJcMlx1MDNiYiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwM2JjXDd7XDJcMlx1MDNiY1x1MDA5YVwzXDJcMlwyXHUwM2JkXHUwM2JlXDdhXDJc Mlx1MDNiZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2JmXDdQXDJcMlx1MDNiZlx1MDNj MFw3UVwyXDJcdTAzYzBcdTAzYzFcN1BcMlwyXHUwM2MxIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAzYzJcN2FcMlwyXHUwM2MyXHUwM2MzXDdQXDJcMlx1MDNjM1x1MDNjNFw3WFwyXDJcdTAz YzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNjNVw3YVwyXDJcdTAzYzVcdTAzYzZcN0Zc MlwyXHUwM2M2XHUwM2M3XDdDXDJcMlx1MDNjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw M2M4XDdWXDJcMlx1MDNjOFx1MDNjOVw3Q1wyXDJcdTAzYzlcdTAzY2FcN2FcMlwyXHUwM2NhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzY2JcN09cMlwyXHUwM2NiXHUwM2NjXDdDXDJcMlx1 MDNjY1x1MDNjZFw3UlwyXDJcdTAzY2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA5Y1wz XDJcMlwyXHUwM2NlXHUwM2NmXDd1XDJcMlx1MDNjZlx1MDNkMFw3dlwyXDJcdTAzZDAiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDNkMVw3dFwyXDJcdTAzZDFcdTAzZDJcN3dcMlwyXHUwM2Qy XHUwM2QzXDdlXDJcMlx1MDNkMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2Q0XDd2XDJc Mlx1MDNkNFx1MDA5ZVwzXDJcMlwyXHUwM2Q1XHUwM2Q2XDd3XDJcMlx1MDNkNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwM2Q3XDdwXDJcMlx1MDNkN1x1MDNkOFw3a1wyXDJcdTAzZDhcdTAz ZDlcN3FcMlwyXHUwM2Q5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZGFcN3BcMlwyXHUw M2RhXHUwMGEwXDNcMlwyXDJcdTAzZGJcdTAzZGNcN0RcMlwyXHUwM2RjIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAzZGRcN1FcMlwyXHUwM2RkXHUwM2RlXDdRXDJcMlx1MDNkZVx1MDNkZlw3 TlwyXDJcdTAzZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlMFw3R1wyXDJcdTAzZTBc dTAzZTFcN0NcMlwyXHUwM2UxXHUwM2UyXDdQXDJcMlx1MDNlMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMGEyXDNcMlwyXDJcdTAzZTNcdTAzZTRcN1dcMlwyXHUwM2U0XHUwM2U1XDdLXDJc Mlx1MDNlNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2U2XDdQXDJcMlx1MDNlNlx1MDNl N1w3VlwyXDJcdTAzZTdcdTAzZThcNzhcMlwyXHUwM2U4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAzZTlcN1w2NlwyXDJcdTAzZTlcdTAwYTRcM1wyXDJcMlx1MDNlYVx1MDNlYlw3V1wyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlYlx1MDNlY1w3S1wyXDJcdTAzZWNcdTAzZWRc N1BcMlwyXHUwM2VkXHUwM2VlXDdWIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwM2Vl XHUwM2VmXDdcNjVcMlwyXHUwM2VmXHUwM2YwXDdcNjRcMlwyXHUwM2YwXHUwMGE2IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNmMVx1MDNmMlw3V1wyXDJcdTAzZjJcdTAzZjNc N0tcMlwyXHUwM2YzXHUwM2Y0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1BcMlwyXHUwM2Y0 XHUwM2Y1XDdWXDJcMlx1MDNmNVx1MDNmNlw3XDYzXDJcMlx1MDNmNiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwM2Y3XDc4XDJcMlx1MDNmN1x1MDBhOFwzXDJcMlwyXHUwM2Y4XHUwM2Y5XDdX XDJcMlx1MDNmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2ZhXDdLXDJcMlx1MDNmYVx1 MDNmYlw3UFwyXDJcdTAzZmJcdTAzZmNcN1ZcMlwyXHUwM2ZjIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzZmRcNzpcMlwyXHUwM2ZkXHUwMGFhXDNcMlwyXDJcdTAzZmVcdTAzZmZcN0dcMlwy XHUwM2ZmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MDBcN0hcMlwyXHUwNDAwXHUwNDAx XDdLXDJcMlx1MDQwMVx1MDQwMlw3YVwyXDJcdTA0MDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDQwM1w3VVwyXDJcdTA0MDNcdTA0MDRcN1ZcMlwyXHUwNDA0XHUwNDA1XDdUXDJcMlx1MDQw NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDA2XDdLXDJcMlx1MDQwNlx1MDQwN1w3UFwy XDJcdTA0MDdcdTA0MDhcN0lcMlwyXHUwNDA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 MDlcN2FcMlwyXHUwNDA5XHUwNDBhXDdLXDJcMlx1MDQwYVx1MDQwYlw3RlwyXDJcdTA0MGIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDBhY1wzXDJcMlwyXHUwNDBjXHUwNDBkXDdHXDJcMlx1 MDQwZFx1MDQwZVw3SFwyXDJcdTA0MGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQwZlw3 S1wyXDJcdTA0MGZcdTA0MTBcN2FcMlwyXHUwNDEwXHUwNDExXDdKXDJcMlx1MDQxMSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDEyXDdLXDJcMlx1MDQxMlx1MDQxM1w3S1wyXDJcdTA0MTNc dTA0MTRcN2FcMlwyXHUwNDE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MTVcN0ZcMlwy XHUwNDE1XHUwNDE2XDdDXDJcMlx1MDQxNlx1MDQxN1w3VlwyXDJcdTA0MTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDQxOFw3R1wyXDJcdTA0MThcdTAwYWVcM1wyXDJcMlx1MDQxOVx1MDQx YVw3R1wyXDJcdTA0MWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQxYlw3SFwyXDJcdTA0 MWJcdTA0MWNcN0tcMlwyXHUwNDFjXHUwNDFkXDdhXDJcMlx1MDQxZCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNDFlXDdKXDJcMlx1MDQxZVx1MDQxZlw3S1wyXDJcdTA0MWZcdTA0MjBcN0tc MlwyXHUwNDIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MjFcN2FcMlwyXHUwNDIxXHUw NDIyXDdWXDJcMlx1MDQyMlx1MDQyM1w3S1wyXDJcdTA0MjMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDQyNFw3T1wyXDJcdTA0MjRcdTA0MjVcN0dcMlwyXHUwNDI1XHUwMGIwXDNcMlwyXDJc dTA0MjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQyN1w3R1wyXDJcdTA0MjdcdTA0Mjhc N0hcMlwyXHUwNDI4XHUwNDI5XDdLXDJcMlx1MDQyOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNDJhXDdhXDJcMlx1MDQyYVx1MDQyYlw3SlwyXDJcdTA0MmJcdTA0MmNcN0tcMlwyXHUwNDJj IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MmRcN0tcMlwyXHUwNDJkXHUwNDJlXDdhXDJc Mlx1MDQyZVx1MDQyZlw3VFwyXDJcdTA0MmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQz MFw3R1wyXDJcdTA0MzBcdTA0MzFcN0hcMlwyXHUwNDMxXHUwMGIyXDNcMlwyXDJcdTA0MzIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDQzM1w3aVwyXDJcdTA0MzNcdTA0MzRcN3dcMlwyXHUw NDM0XHUwNDM1XDdrXDJcMlx1MDQzNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDM2XDdm XDJcMlx1MDQzNlx1MDBiNFwzXDJcMlwyXHUwNDM3XHUwNDM4XDdlXDJcMlx1MDQzOCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDM5XDdqXDJcMlx1MDQzOVx1MDQzYVw3Z1wyXDJcdTA0M2Fc dTA0M2JcN2VcMlwyXHUwNDNiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0M2NcN21cMlwy XHUwNDNjXHUwNDNkXDdkXDJcMlx1MDQzZFx1MDQzZVw3cVwyXDJcdTA0M2UiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDQzZlw3elwyXDJcdTA0M2ZcdTAwYjZcM1wyXDJcMlx1MDQ0MFx1MDQ0 MVw3Z1wyXDJcdTA0NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ0Mlw3cFwyXDJcdTA0 NDJcdTA0NDNcN2ZcMlwyXHUwNDQzXHUwNDQ0XDdlXDJcMlx1MDQ0NCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNDQ1XDdqXDJcMlx1MDQ0NVx1MDQ0Nlw3Z1wyXDJcdTA0NDZcdTA0NDdcN2Vc MlwyXHUwNDQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NDhcN21cMlwyXHUwNDQ4XHUw NDQ5XDdkXDJcMlx1MDQ0OVx1MDQ0YVw3cVwyXDJcdTA0NGEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDQ0Ylw3elwyXDJcdTA0NGJcdTAwYjhcM1wyXDJcMlx1MDQ0Y1x1MDQ0ZFw3cFwyXDJc dTA0NGQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ0ZVw3d1wyXDJcdTA0NGVcdTA0NGZc N29cMlwyXHUwNDRmXHUwNDUwXDdnXDJcMlx1MDQ1MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNDUxXDd0XDJcMlx1MDQ1MVx1MDQ1Mlw3a1wyXDJcdTA0NTJcdTA0NTNcN2VcMlwyXHUwNDUz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYmFcM1wyXDJcMlx1MDQ1NFx1MDQ1NVw3Z1wy XDJcdTA0NTVcdTA0NTZcN3BcMlwyXHUwNDU2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 NTdcN2ZcMlwyXHUwNDU3XHUwNDU4XDdwXDJcMlx1MDQ1OFx1MDQ1OVw3d1wyXDJcdTA0NTkiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDQ1YVw3b1wyXDJcdTA0NWFcdTA0NWJcN2dcMlwyXHUw NDViXHUwNDVjXDd0XDJcMlx1MDQ1YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDVkXDdr XDJcMlx1MDQ1ZFx1MDQ1ZVw3ZVwyXDJcdTA0NWVcdTAwYmNcM1wyXDJcMlx1MDQ1ZiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDYwXDdvXDJcMlx1MDQ2MFx1MDQ2MVw3a1wyXDJcdTA0NjFc dTA0NjJcN3BcMlwyXHUwNDYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NjNcN2tcMlwy XHUwNDYzXHUwNDY0XDdvXDJcMlx1MDQ2NFx1MDQ2NVw3d1wyXDJcdTA0NjUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDQ2Nlw3b1wyXDJcdTA0NjZcdTAwYmVcM1wyXDJcMlx1MDQ2N1x1MDQ2 OFw3b1wyXDJcdTA0NjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ2OVw3Y1wyXDJcdTA0 NjlcdTA0NmFcN3pcMlwyXHUwNDZhXHUwNDZiXDdrXDJcMlx1MDQ2YiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNDZjXDdvXDJcMlx1MDQ2Y1x1MDQ2ZFw3d1wyXDJcdTA0NmRcdTA0NmVcN29c MlwyXHUwNDZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYzBcM1wyXDJcMlx1MDQ2Zlx1 MDQ3MFw3dVwyXDJcdTA0NzBcdTA0NzFcN3ZcMlwyXHUwNDcxIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA0NzJcN2dcMlwyXHUwNDcyXHUwNDczXDdyXDJcMlx1MDQ3M1x1MDBjMlwzXDJcMlwy XHUwNDc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NzVcN2ZcMlwyXHUwNDc1XHUwNDc2 XDdnXDJcMlx1MDQ3Nlx1MDQ3N1w3aFwyXDJcdTA0NzciKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDQ3OFw3Y1wyXDJcdTA0NzhcdTA0NzlcN3dcMlwyXHUwNDc5XHUwNDdhXDduXDJcMlx1MDQ3 YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDdiXDd2XDJcMlx1MDQ3Ylx1MDBjNFwzXDJc MlwyXHUwNDdjXHUwNDdkXDdyXDJcMlx1MDQ3ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NDdlXDdjXDJcMlx1MDQ3ZVx1MDQ3Zlw3dVwyXDJcdTA0N2ZcdTA0ODBcN3VcMlwyXHUwNDgwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ODFcN3lcMlwyXHUwNDgxXHUwNDgyXDdxXDJcMlx1 MDQ4Mlx1MDQ4M1w3dFwyXDJcdTA0ODMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ4NFw3 ZlwyXDJcdTA0ODRcdTAwYzZcM1wyXDJcMlx1MDQ4NVx1MDQ4Nlw3Z1wyXDJcdTA0ODYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDQ4N1w3cFwyXDJcdTA0ODdcdTA0ODhcN2ZcMlwyXHUwNDg4 XHUwNDg5XDdyXDJcMlx1MDQ4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDhhXDdjXDJc Mlx1MDQ4YVx1MDQ4Ylw3dVwyXDJcdTA0OGJcdTA0OGNcN3VcMlwyXHUwNDhjIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA0OGRcN3lcMlwyXHUwNDhkXHUwNDhlXDdxXDJcMlx1MDQ4ZVx1MDQ4 Zlw3dFwyXDJcdTA0OGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5MFw3ZlwyXDJcdTA0 OTBcdTAwYzhcM1wyXDJcMlx1MDQ5MVx1MDQ5Mlw3dVwyXDJcdTA0OTIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQ5M1w3dlwyXDJcdTA0OTNcdTA0OTRcN3RcMlwyXHUwNDk0XHUwNDk1XDdr XDJcMlx1MDQ5NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDk2XDdwXDJcMlx1MDQ5Nlx1 MDQ5N1w3aVwyXDJcdTA0OTdcdTAwY2FcM1wyXDJcMlx1MDQ5OCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNDk5XDdnXDJcMlx1MDQ5OVx1MDQ5YVw3cFwyXDJcdTA0OWFcdTA0OWJcN2ZcMlwy XHUwNDliIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0OWNcN3VcMlwyXHUwNDljXHUwNDlk XDd2XDJcMlx1MDQ5ZFx1MDQ5ZVw3dFwyXDJcdTA0OWUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDQ5Zlw3a1wyXDJcdTA0OWZcdTA0YTBcN3BcMlwyXHUwNGEwXHUwNGExXDdpXDJcMlx1MDRh MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGNjXDNcMlwyXDJcdTA0YTJcdTA0YTNcN29c MlwyXHUwNGEzXHUwNGE0XDdrXDJcMlx1MDRhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NGE1XDdwXDJcMlx1MDRhNVx1MDRhNlw3dVwyXDJcdTA0YTZcdTA0YTdcN2tcMlwyXHUwNGE3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YThcN3xcMlwyXHUwNGE4XHUwNGE5XDdnXDJcMlx1 MDRhOVx1MDBjZVwzXDJcMlwyXHUwNGFhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YWJc N29cMlwyXHUwNGFiXHUwNGFjXDdjXDJcMlx1MDRhY1x1MDRhZFw3elwyXDJcdTA0YWQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDRhZVw3dVwyXDJcdTA0YWVcdTA0YWZcN2tcMlwyXHUwNGFm XHUwNGIwXDd8XDJcMlx1MDRiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGIxXDdnXDJc Mlx1MDRiMVx1MDBkMFwzXDJcMlwyXHUwNGIyXHUwNGIzXDdnXDJcMlx1MDRiMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNGI0XDdwXDJcMlx1MDRiNFx1MDRiNVw3ZVwyXDJcdTA0YjVcdTA0 YjZcN3FcMlwyXHUwNGI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YjdcN2ZcMlwyXHUw NGI3XHUwNGI4XDdrXDJcMlx1MDRiOFx1MDRiOVw3cFwyXDJcdTA0YjkiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDRiYVw3aVwyXDJcdTA0YmFcdTAwZDJcM1wyXDJcMlx1MDRiYlx1MDRiY1w3 dVwyXDJcdTA0YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRiZFw3d1wyXDJcdTA0YmRc dTA0YmVcN3JcMlwyXHUwNGJlXHUwNGJmXDdyXDJcMlx1MDRiZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNGMwXDd0XDJcMlx1MDRjMFx1MDRjMVw3Z1wyXDJcdTA0YzFcdTA0YzJcN3VcMlwy XHUwNGMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YzNcN3VcMlwyXHUwNGMzXHUwNGM0 XDdrXDJcMlx1MDRjNFx1MDRjNVw3aFwyXDJcdTA0YzUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBkNFwzXDJcMlwyXHUwNGM2XHUwNGM3XDdmXDJcMlx1MDRjN1x1MDRjOFw3a1wyXDJcdTA0 YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRjOVw3dVwyXDJcdTA0YzlcdTA0Y2FcN2Nc MlwyXHUwNGNhXHUwNGNiXDdkXDJcMlx1MDRjYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NGNjXDduXDJcMlx1MDRjY1x1MDRjZFw3Z1wyXDJcdTA0Y2RcdTA0Y2VcN2tcMlwyXHUwNGNlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0Y2ZcN2hcMlwyXHUwNGNmXHUwMGQ2XDNcMlwyXDJc dTA0ZDBcdTA0ZDFcN2pcMlwyXHUwNGQxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZDJc N2tcMlwyXHUwNGQyXHUwNGQzXDdmXDJcMlx1MDRkM1x1MDRkNFw3ZlwyXDJcdTA0ZDQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDRkNVw3Z1wyXDJcdTA0ZDVcdTA0ZDZcN3BcMlwyXHUwNGQ2 XHUwMGQ4XDNcMlwyXDJcdTA0ZDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRkOFw3aVwy XDJcdTA0ZDhcdTA0ZDlcN3FcMlwyXHUwNGQ5XHUwNGRhXDd2XDJcMlx1MDRkYSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNGRiXDdxXDJcMlx1MDRkYlx1MDBkYVwzXDJcMlwyXHUwNGRjXHUw NGRkXDdoXDJcMlx1MDRkZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGRlXDdxXDJcMlx1 MDRkZVx1MDRkZlw3dFwyXDJcdTA0ZGZcdTA0ZTBcN29cMlwyXHUwNGUwIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA0ZTFcN3VcMlwyXHUwNGUxXHUwNGUyXDdnXDJcMlx1MDRlMlx1MDRlM1w3 dlwyXDJcdTA0ZTMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRlNFw3aVwyXDJcdTA0ZTRc dTA0ZTVcN3dcMlwyXHUwNGU1XHUwNGU2XDdrXDJcMlx1MDRlNiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNGU3XDdmXDJcMlx1MDRlN1x1MDBkY1wzXDJcMlwyXHUwNGU4XHUwNGU5XDdrXDJc Mlx1MDRlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGVhXDdwXDJcMlx1MDRlYVx1MDRl Ylw3ZVwyXDJcdTA0ZWJcdTA0ZWNcN3FcMlwyXHUwNGVjIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA0ZWRcN3BcMlwyXHUwNGVkXHUwNGVlXDd1XDJcMlx1MDRlZVx1MDRlZlw3a1wyXDJcdTA0 ZWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRmMFw3dVwyXDJcdTA0ZjBcdTA0ZjFcN3Zc MlwyXHUwNGYxXHUwNGYyXDdnXDJcMlx1MDRmMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NGYzXDdwXDJcMlx1MDRmM1x1MDRmNFw3dlwyXDJcdTA0ZjRcdTA0ZjVcN2tcMlwyXHUwNGY1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjZcN2hcMlwyXHUwNGY2XHUwMGRlXDNcMlwyXDJc dTA0ZjdcdTA0ZjhcN3lcMlwyXHUwNGY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0Zjlc N2NcMlwyXHUwNGY5XHUwNGZhXDd0XDJcMlx1MDRmYVx1MDRmYlw3cFwyXDJcdTA0ZmIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDRmY1w3a1wyXDJcdTA0ZmNcdTA0ZmRcN3BcMlwyXHUwNGZk XHUwNGZlXDdpXDJcMlx1MDRmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGZmXDdrXDJc Mlx1MDRmZlx1MDUwMFw3aFwyXDJcdTA1MDBcdTAwZTBcM1wyXDJcMlx1MDUwMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNTAyXDdwXDJcMlx1MDUwMlx1MDUwM1w3cVwyXDJcdTA1MDNcdTA1 MDRcN3VcMlwyXHUwNTA0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDVcN3dcMlwyXHUw NTA1XHUwNTA2XDdkXDJcMlx1MDUwNlx1MDUwN1w3b1wyXDJcdTA1MDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDUwOFw3a1wyXDJcdTA1MDhcdTA1MDlcN3ZcMlwyXHUwNTA5XHUwNTBhXDdr XDJcMlx1MDUwYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTBiXDdoXDJcMlx1MDUwYlx1 MDBlMlwzXDJcMlwyXHUwNTBjXHUwNTBkXDdnXDJcMlx1MDUwZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNTBlXDdwXDJcMlx1MDUwZVx1MDUwZlw3ZlwyXDJcdTA1MGZcdTA1MTBcN2tcMlwy XHUwNTEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MTFcN2hcMlwyXHUwNTExXHUwMGU0 XDNcMlwyXDJcdTA1MTJcdTA1MTNcN21cMlwyXHUwNTEzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA1MTRcN2dcMlwyXHUwNTE0XHUwNTE1XDd7XDJcMlx1MDUxNVx1MDBlNlwzXDJcMlwyXHUw NTE2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MTdcN0ZcMlwyXHUwNTE3XHUwNTE4XDdH XDJcMlx1MDUxOFx1MDUxOVw3SFwyXDJcdTA1MTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDUxYVw3Q1wyXDJcdTA1MWFcdTA1MWJcN1dcMlwyXHUwNTFiXHUwNTFjXDdOXDJcMlx1MDUxYyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTFkXDdWXDJcMlx1MDUxZFx1MDBlOFwzXDJcMlwy XHUwNTFlXHUwNTFmXDdPXDJcMlx1MDUxZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTIw XDdDXDJcMlx1MDUyMFx1MDUyMVw3UFwyXDJcdTA1MjFcdTA1MjJcN1dcMlwyXHUwNTIyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA1MjNcN0hcMlwyXHUwNTIzXHUwNTI0XDdDXDJcMlx1MDUy NFx1MDUyNVw3RVwyXDJcdTA1MjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUyNlw3Vlwy XDJcdTA1MjZcdTA1MjdcN1dcMlwyXHUwNTI3XHUwNTI4XDdUXDJcMlx1MDUyOCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNTI5XDdLXDJcMlx1MDUyOVx1MDUyYVw3UFwyXDJcdTA1MmFcdTA1 MmJcN0lcMlwyXHUwNTJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZWFcM1wyXDJcMlx1 MDUyY1x1MDUyZFw3RVwyXDJcdTA1MmRcdTA1MmVcN0pcMlwyXHUwNTJlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1MmZcN0dcMlwyXHUwNTJmXHUwNTMwXDdFXDJcMlx1MDUzMFx1MDUzMVw3 TVwyXDJcdTA1MzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUzMlw3RFwyXDJcdTA1MzJc dTA1MzNcN1FcMlwyXHUwNTMzXHUwNTM0XDdaXDJcMlx1MDUzNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNTM1XDdhXDJcMlx1MDUzNVx1MDUzNlw3RlwyXDJcdTA1MzZcdTA1MzdcN0dcMlwy XHUwNTM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MzhcN0hcMlwyXHUwNTM4XHUwNTM5 XDdDXDJcMlx1MDUzOVx1MDUzYVw3V1wyXDJcdTA1M2EiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDUzYlw3TlwyXDJcdTA1M2JcdTA1M2NcN1ZcMlwyXHUwNTNjXHUwMGVjXDNcMlwyXDJcdTA1 M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUzZVw3RVwyXDJcdTA1M2VcdTA1M2ZcN0pc MlwyXHUwNTNmXHUwNTQwXDdHXDJcMlx1MDU0MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NTQxXDdFXDJcMlx1MDU0MVx1MDU0Mlw3TVwyXDJcdTA1NDJcdTA1NDNcN0RcMlwyXHUwNTQzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NDRcN1FcMlwyXHUwNTQ0XHUwNTQ1XDdaXDJcMlx1 MDU0NVx1MDU0Nlw3YVwyXDJcdTA1NDYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU0N1w3 RlwyXDJcdTA1NDdcdTA1NDhcN0dcMlwyXHUwNTQ4XHUwNTQ5XDdIXDJcMlx1MDU0OSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNTRhXDdDXDJcMlx1MDU0YVx1MDU0Ylw3V1wyXDJcdTA1NGJc dTA1NGNcN05cMlwyXHUwNTRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NGRcN1ZcMlwy XHUwNTRkXHUwNTRlXDdhXDJcMlx1MDU0ZVx1MDU0Zlw3T1wyXDJcdTA1NGYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDU1MFw3SFwyXDJcdTA1NTBcdTA1NTFcN0lcMlwyXHUwNTUxXHUwMGVl XDNcMlwyXDJcdTA1NTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1M1w3S1wyXDJcdTA1 NTNcdTA1NTRcN1BcMlwyXHUwNTU0XHUwNTU1XDdWXDJcMlx1MDU1NSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNTU2XDdHXDJcMlx1MDU1Nlx1MDU1N1w3VFwyXDJcdTA1NTdcdTA1NThcN0Nc MlwyXHUwNTU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NTlcN0VcMlwyXHUwNTU5XHUw NTVhXDdWXDJcMlx1MDU1YVx1MDU1Ylw3S1wyXDJcdTA1NWIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDU1Y1w3WFwyXDJcdTA1NWNcdTA1NWRcN0dcMlwyXHUwNTVkXHUwMGYwXDNcMlwyXDJc dTA1NWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1Zlw3UFwyXDJcdTA1NWZcdTA1NjBc N1hcMlwyXHUwNTYwXHUwNTYxXDdhXDJcMlx1MDU2MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNTYyXDdDXDJcMlx1MDU2Mlx1MDU2M1w3RVwyXDJcdTA1NjNcdTA1NjRcN0VcMlwyXHUwNTY0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjVcN0dcMlwyXHUwNTY1XHUwNTY2XDdVXDJc Mlx1MDU2Nlx1MDU2N1w3VVwyXDJcdTA1NjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBm MlwzXDJcMlwyXHUwNTY4XHUwNTY5XDdUXDJcMlx1MDU2OVx1MDU2YVw3R1wyXDJcdTA1NmEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDU2Ylw3VVwyXDJcdTA1NmJcdTA1NmNcN0dcMlwyXHUw NTZjXHUwNTZkXDdWXDJcMlx1MDU2ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTZlXDdh XDJcMlx1MDU2ZVx1MDU2Zlw3VFwyXDJcdTA1NmZcdTA1NzBcN0dcMlwyXHUwNTcwIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1NzFcN1NcMlwyXHUwNTcxXHUwNTcyXDdXXDJcMlx1MDU3Mlx1 MDU3M1w3S1wyXDJcdTA1NzMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU3NFw3VFwyXDJc dTA1NzRcdTA1NzVcN0dcMlwyXHUwNTc1XHUwNTc2XDdGXDJcMlx1MDU3NiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMGY0XDNcMlwyXDJcdTA1NzdcdTA1NzhcN1RcMlwyXHUwNTc4XHUwNTc5 XDdHXDJcMlx1MDU3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTdhXDdFXDJcMlx1MDU3 YVx1MDU3Ylw3UVwyXDJcdTA1N2JcdTA1N2NcN1BcMlwyXHUwNTdjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1N2RcN1BcMlwyXHUwNTdkXHUwNTdlXDdHXDJcMlx1MDU3ZVx1MDU3Zlw3RVwy XDJcdTA1N2YiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU4MFw3VlwyXDJcdTA1ODBcdTA1 ODFcN2FcMlwyXHUwNTgxXHUwNTgyXDdUXDJcMlx1MDU4MiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNTgzXDdHXDJcMlx1MDU4M1x1MDU4NFw3U1wyXDJcdTA1ODRcdTA1ODVcN1dcMlwyXHUw NTg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ODZcN0tcMlwyXHUwNTg2XHUwNTg3XDdU XDJcMlx1MDU4N1x1MDU4OFw3R1wyXDJcdTA1ODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDU4OVw3RlwyXDJcdTA1ODlcdTAwZjZcM1wyXDJcMlx1MDU4YVx1MDU4Ylw3TlwyXDJcdTA1OGIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU4Y1w3Q1wyXDJcdTA1OGNcdTA1OGRcN1ZcMlwy XHUwNThkXHUwNThlXDdHXDJcMlx1MDU4ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNThm XDdhXDJcMlx1MDU4Zlx1MDU5MFw3RVwyXDJcdTA1OTBcdTA1OTFcN0pcMlwyXHUwNTkxIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA1OTJcN0dcMlwyXHUwNTkyXHUwNTkzXDdFXDJcMlx1MDU5 M1x1MDU5NFw3TVwyXDJcdTA1OTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmOFwzXDJc MlwyXHUwNTk1XHUwNTk2XDdUXDJcMlx1MDU5Nlx1MDU5N1w3R1wyXDJcdTA1OTciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDU5OFw3Q1wyXDJcdTA1OThcdTA1OTlcN0ZcMlwyXHUwNTk5XHUw NTlhXDdhXDJcMlx1MDU5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTliXDdRXDJcMlx1 MDU5Ylx1MDU5Y1w3UFwyXDJcdTA1OWNcdTA1OWRcN05cMlwyXHUwNTlkIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1OWVcN1tcMlwyXHUwNTllXHUwMGZhXDNcMlwyXDJcdTA1OWZcdTA1YTBc N1FcMlwyXHUwNWEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YTFcN1JcMlwyXHUwNWEx XHUwNWEyXDdWXDJcMlx1MDVhMlx1MDVhM1w3S1wyXDJcdTA1YTMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDVhNFw3UVwyXDJcdTA1YTRcdTA1YTVcN1BcMlwyXHUwNWE1XHUwNWE2XDdVXDJc Mlx1MDVhNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWE3XDdhXDJcMlx1MDVhN1x1MDVh OFw3UVwyXDJcdTA1YThcdTA1YTlcN1BcMlwyXHUwNWE5IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA1YWFcN05cMlwyXHUwNWFhXHUwNWFiXDdbXDJcMlx1MDVhYlx1MDBmY1wzXDJcMlwyXHUw NWFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YWRcN1RcMlwyXHUwNWFkXHUwNWFlXDdH XDJcMlx1MDVhZVx1MDVhZlw3VVwyXDJcdTA1YWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDViMFw3VlwyXDJcdTA1YjBcdTA1YjFcN2FcMlwyXHUwNWIxXHUwNWIyXDdVXDJcMlx1MDViMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWIzXDdWXDJcMlx1MDViM1x1MDViNFw3W1wyXDJc dTA1YjRcdTA1YjVcN05cMlwyXHUwNWI1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YjZc N0dcMlwyXHUwNWI2XHUwMGZlXDNcMlwyXDJcdTA1YjdcdTA1YjhcN2VcMlwyXHUwNWI4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA1YjlcN25cMlwyXHUwNWI5XHUwNWJhXDdjXDJcMlx1MDVi YVx1MDViYlw3dVwyXDJcdTA1YmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDViY1w3dVwy XDJcdTA1YmNcdTAxMDBcM1wyXDJcMlx1MDViZFx1MDViZVw3dVwyXDJcdTA1YmUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDViZlw3d1wyXDJcdTA1YmZcdTA1YzBcN2RcMlwyXHUwNWMwXHUw NWMxXDdlXDJcMlx1MDVjMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWMyXDduXDJcMlx1 MDVjMlx1MDVjM1w3Y1wyXDJcdTA1YzNcdTA1YzRcN3VcMlwyXHUwNWM0IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1YzVcN3VcMlwyXHUwNWM1XHUwMTAyXDNcMlwyXDJcdTA1YzZcdTA1Yzdc N2VcMlwyXHUwNWM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YzhcN25cMlwyXHUwNWM4 XHUwNWM5XDdjXDJcMlx1MDVjOVx1MDVjYVw3dVwyXDJcdTA1Y2EiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDVjYlw3dVwyXDJcdTA1Y2JcdTA1Y2NcN2lcMlwyXHUwNWNjXHUwNWNkXDd3XDJc Mlx1MDVjZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNlXDdrXDJcMlx1MDVjZVx1MDVj Zlw3ZlwyXDJcdTA1Y2ZcdTAxMDRcM1wyXDJcMlx1MDVkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNWQxXDd2XDJcMlx1MDVkMVx1MDVkMlw3e1wyXDJcdTA1ZDJcdTA1ZDNcN3JcMlwyXHUw NWQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZDRcN2dcMlwyXHUwNWQ0XHUwNWQ1XDdm XDJcMlx1MDVkNVx1MDVkNlw3Z1wyXDJcdTA1ZDYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDVkN1w3aFwyXDJcdTA1ZDdcdTAxMDZcM1wyXDJcMlx1MDVkOFx1MDVkOVw3dFwyXDJcdTA1ZDki KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVkYVw3Z1wyXDJcdTA1ZGFcdTA1ZGJcN3VcMlwy XHUwNWRiXHUwNWRjXDd2XDJcMlx1MDVkYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWRk XDdxXDJcMlx1MDVkZFx1MDVkZVw3dFwyXDJcdTA1ZGVcdTA1ZGZcN2dcMlwyXHUwNWRmIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAxMDhcM1wyXDJcMlx1MDVlMFx1MDVlMVw3dVwyXDJcdTA1 ZTFcdTA1ZTJcN2NcMlwyXHUwNWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZTNcN3hc MlwyXHUwNWUzXHUwNWU0XDdnXDJcMlx1MDVlNFx1MDEwYVwzXDJcMlwyXHUwNWU1IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1ZTZcN2ZcMlwyXHUwNWU2XHUwNWU3XDdnXDJcMlx1MDVlN1x1 MDVlOFw3aFwyXDJcdTA1ZTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVlOVw3Y1wyXDJc dTA1ZTlcdTA1ZWFcN3dcMlwyXHUwNWVhXHUwNWViXDduXDJcMlx1MDVlYiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNWVjXDd2XDJcMlx1MDVlY1x1MDVlZFw3dVwyXDJcdTA1ZWRcdTAxMGNc M1wyXDJcMlx1MDVlZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWVmXDdkXDJcMlx1MDVl Zlx1MDVmMFw3Y1wyXDJcdTA1ZjBcdTA1ZjFcN3BcMlwyXHUwNWYxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1ZjJcN3BcMlwyXHUwNWYyXHUwNWYzXDdnXDJcMlx1MDVmM1x1MDVmNFw3dFwy XDJcdTA1ZjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEwZVwzXDJcMlwyXHUwNWY1XHUw NWY2XDdjXDJcMlx1MDVmNlx1MDVmN1w3blwyXDJcdTA1ZjciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDVmOFw3a1wyXDJcdTA1ZjhcdTA1ZjlcN2lcMlwyXHUwNWY5XHUwNWZhXDdwXDJcMlx1 MDVmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTEwXDNcMlwyXDJcdTA1ZmJcdTA1ZmNc N25cMlwyXHUwNWZjXHUwNWZkXDdnXDJcMlx1MDVmZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNWZlXDdoXDJcMlx1MDVmZVx1MDVmZlw3dlwyXDJcdTA1ZmZcdTAxMTJcM1wyXDJcMlx1MDYw MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjAxXDd0XDJcMlx1MDYwMVx1MDYwMlw3a1wy XDJcdTA2MDJcdTA2MDNcN2lcMlwyXHUwNjAzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 MDRcN2pcMlwyXHUwNjA0XHUwNjA1XDd2XDJcMlx1MDYwNVx1MDExNFwzXDJcMlwyXHUwNjA2IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MDdcN2VcMlwyXHUwNjA3XHUwNjA4XDdnXDJcMlx1 MDYwOFx1MDYwOVw3cFwyXDJcdTA2MDkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYwYVw3 dlwyXDJcdTA2MGFcdTA2MGJcN2dcMlwyXHUwNjBiXHUwNjBjXDd0XDJcMlx1MDYwYyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMTE2XDNcMlwyXDJcdTA2MGRcdTA2MGVcN25cMlwyXHUwNjBl XHUwNjBmXDdrXDJcMlx1MDYwZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjEwXDdwXDJc Mlx1MDYxMFx1MDYxMVw3Z1wyXDJcdTA2MTFcdTAxMThcM1wyXDJcMlx1MDYxMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNjEzXDdwXDJcMlx1MDYxM1x1MDYxNFw3Y1wyXDJcdTA2MTRcdTA2 MTVcN29cMlwyXHUwNjE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MTZcN2dcMlwyXHUw NjE2XHUwMTFhXDNcMlwyXDJcdTA2MTdcdTA2MThcN3hcMlwyXHUwNjE4IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA2MTlcN2NcMlwyXHUwNjE5XHUwNjFhXDd0XDJcMlx1MDYxYVx1MDYxYlw3 a1wyXDJcdTA2MWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYxY1w3ZlwyXDJcdTA2MWNc dTAxMWNcM1wyXDJcMlx1MDYxZFx1MDYxZVw3c1wyXDJcdTA2MWUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDYxZlw3d1wyXDJcdTA2MWZcdTA2MjBcN2dcMlwyXHUwNjIwXHUwNjIxXDd1XDJc Mlx1MDYyMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjIyXDd2XDJcMlx1MDYyMlx1MDYy M1w3a1wyXDJcdTA2MjNcdTA2MjRcN3FcMlwyXHUwNjI0IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA2MjVcN3BcMlwyXHUwNjI1XHUwMTFlXDNcMlwyXDJcdTA2MjZcdTA2MjdcN3NcMlwyXHUw NjI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MjhcN3dcMlwyXHUwNjI4XHUwNjI5XDdn XDJcMlx1MDYyOVx1MDYyYVw3dVwyXDJcdTA2MmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDYyYlw3dlwyXDJcdTA2MmJcdTA2MmNcN2tcMlwyXHUwNjJjXHUwNjJkXDdxXDJcMlx1MDYyZCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjJlXDdwXDJcMlx1MDYyZVx1MDYyZlw3a1wyXDJc dTA2MmZcdTA2MzBcN2ZcMlwyXHUwNjMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMjBc M1wyXDJcMlx1MDYzMVx1MDYzMlw3a1wyXDJcdTA2MzJcdTA2MzNcN29cMlwyXHUwNjMzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA2MzRcN2NcMlwyXHUwNjM0XHUwNjM1XDdpXDJcMlx1MDYz NVx1MDYzNlw3Z1wyXDJcdTA2MzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEyMlwzXDJc MlwyXHUwNjM3XHUwNjM4XDduXDJcMlx1MDYzOFx1MDYzOVw3cVwyXDJcdTA2MzkiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDYzYVw3ZVwyXDJcdTA2M2FcdTA2M2JcN21cMlwyXHUwNjNiXHUw NjNjXDdnXDJcMlx1MDYzYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjNkXDdmXDJcMlx1 MDYzZFx1MDEyNFwzXDJcMlwyXHUwNjNlXHUwNjNmXDd0XDJcMlx1MDYzZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNjQwXDd3XDJcMlx1MDY0MFx1MDY0MVw3blwyXDJcdTA2NDFcdTA2NDJc N2dcMlwyXHUwNjQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMjZcM1wyXDJcMlx1MDY0 M1x1MDY0NFw3Z1wyXDJcdTA2NDRcdTA2NDVcN3BcMlwyXHUwNjQ1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2NDZcN2ZcMlwyXHUwNjQ2XHUwNjQ3XDd0XDJcMlx1MDY0N1x1MDY0OFw3d1wy XDJcdTA2NDgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY0OVw3blwyXDJcdTA2NDlcdTA2 NGFcN2dcMlwyXHUwNjRhXHUwMTI4XDNcMlwyXDJcdTA2NGIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDY0Y1w3eFwyXDJcdTA2NGNcdTA2NGRcN2NcMlwyXHUwNjRkXHUwNjRlXDduXDJcMlx1 MDY0ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjRmXDd3XDJcMlx1MDY0Zlx1MDY1MFw3 Z1wyXDJcdTA2NTBcdTAxMmFcM1wyXDJcMlx1MDY1MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNjUyXDd0XDJcMlx1MDY1Mlx1MDY1M1w3Z1wyXDJcdTA2NTNcdTA2NTRcN2NcMlwyXHUwNjU0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NTVcN2ZcMlwyXHUwNjU1XHUwMTJjXDNcMlwy XDJcdTA2NTZcdTA2NTdcN3lcMlwyXHUwNjU3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 NThcN3RcMlwyXHUwNjU4XHUwNjU5XDdrXDJcMlx1MDY1OVx1MDY1YVw3dlwyXDJcdTA2NWEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDY1Ylw3Z1wyXDJcdTA2NWJcdTAxMmVcM1wyXDJcMlx1 MDY1Y1x1MDY1ZFw3dFwyXDJcdTA2NWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY1ZVw3 Z1wyXDJcdTA2NWVcdTA2NWZcN3VcMlwyXHUwNjVmXHUwNjYwXDdnXDJcMlx1MDY2MCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNjYxXDd2XDJcMlx1MDY2MVx1MDY2Mlw3ZFwyXDJcdTA2NjJc dTA2NjNcN3dcMlwyXHUwNjYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NjRcN3ZcMlwy XHUwNjY0XHUwNjY1XDd2XDJcMlx1MDY2NVx1MDY2Nlw3cVwyXDJcdTA2NjYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDY2N1w3cFwyXDJcdTA2NjdcdTAxMzBcM1wyXDJcMlx1MDY2OFx1MDY2 OVw3Z1wyXDJcdTA2NjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY2YVw3cFwyXDJcdTA2 NmFcdTA2NmJcN2ZcMlwyXHUwNjZiXHUwNjZjXDd0XDJcMlx1MDY2YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNjZkXDdnXDJcMlx1MDY2ZFx1MDY2ZVw3dVwyXDJcdTA2NmVcdTA2NmZcN2dc MlwyXHUwNjZmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NzBcN3ZcMlwyXHUwNjcwXHUw NjcxXDdkXDJcMlx1MDY3MVx1MDY3Mlw3d1wyXDJcdTA2NzIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDY3M1w3dlwyXDJcdTA2NzNcdTA2NzRcN3ZcMlwyXHUwNjc0XHUwNjc1XDdxXDJcMlx1 MDY3NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjc2XDdwXDJcMlx1MDY3Nlx1MDEzMlwz XDJcMlwyXHUwNjc3XHUwNjc4XDdmXDJcMlx1MDY3OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNjc5XDdnXDJcMlx1MDY3OVx1MDY3YVw3aFwyXDJcdTA2N2FcdTA2N2JcN2NcMlwyXHUwNjdi IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2N2NcN3dcMlwyXHUwNjdjXHUwNjdkXDduXDJc Mlx1MDY3ZFx1MDY3ZVw3dlwyXDJcdTA2N2UiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY3 Zlw3dVwyXDJcdTA2N2ZcdTA2ODBcN3ZcMlwyXHUwNjgwXHUwNjgxXDdxXDJcMlx1MDY4MSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjgyXDd0XDJcMlx1MDY4Mlx1MDY4M1w3Z1wyXDJcdTA2 ODNcdTAxMzRcM1wyXDJcMlx1MDY4NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjg1XDdj XDJcMlx1MDY4NVx1MDY4Nlw3dlwyXDJcdTA2ODZcdTA2ODdcN3ZcMlwyXHUwNjg3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2ODhcN3RcMlwyXHUwNjg4XHUwNjg5XDdrXDJcMlx1MDY4OVx1 MDY4YVw3ZFwyXDJcdTA2OGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY4Ylw3d1wyXDJc dTA2OGJcdTA2OGNcN3ZcMlwyXHUwNjhjXHUwNjhkXDdnXDJcMlx1MDY4ZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMTM2XDNcMlwyXDJcdTA2OGVcdTA2OGZcN3hcMlwyXHUwNjhmXHUwNjkw XDdjXDJcMlx1MDY5MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjkxXDd0XDJcMlx1MDY5 MVx1MDY5Mlw3dVwyXDJcdTA2OTJcdTA2OTNcN3ZcMlwyXHUwNjkzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2OTRcN3FcMlwyXHUwNjk0XHUwNjk1XDd0XDJcMlx1MDY5NVx1MDY5Nlw3Z1wy XDJcdTA2OTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzOFwzXDJcMlwyXHUwNjk3XHUw Njk4XDdnXDJcMlx1MDY5OFx1MDY5OVw3aFwyXDJcdTA2OTkiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDY5YVw3a1wyXDJcdTA2OWFcdTA2OWJcN3hcMlwyXHUwNjliXHUwNjljXDdjXDJcMlx1 MDY5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjlkXDd0XDJcMlx1MDY5ZFx1MDY5ZVw3 dVwyXDJcdTA2OWVcdTA2OWZcN3ZcMlwyXHUwNjlmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA2YTBcN3FcMlwyXHUwNmEwXHUwNmExXDd0XDJcMlx1MDZhMVx1MDZhMlw3Z1wyXDJcdTA2YTIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzYVwzXDJcMlwyXHUwNmEzXHUwNmE0XDd4XDJc Mlx1MDZhNFx1MDZhNVw3Y1wyXDJcdTA2YTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZh Nlw3dFwyXDJcdTA2YTZcdTA2YTdcN3VcMlwyXHUwNmE3XHUwNmE4XDdrXDJcMlx1MDZhOCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmE5XDd8XDJcMlx1MDZhOVx1MDZhYVw3Z1wyXDJcdTA2 YWFcdTAxM2NcM1wyXDJcMlx1MDZhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmFjXDdw XDJcMlx1MDZhY1x1MDZhZFw3Y1wyXDJcdTA2YWRcdTA2YWVcN29cMlwyXHUwNmFlIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2YWZcN2dcMlwyXHUwNmFmXHUwNmIwXDd4XDJcMlx1MDZiMFx1 MDZiMVw3Y1wyXDJcdTA2YjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZiMlw3blwyXDJc dTA2YjJcdTA2YjNcN3dcMlwyXHUwNmIzXHUwNmI0XDdnXDJcMlx1MDZiNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNmI1XDd4XDJcMlx1MDZiNVx1MDZiNlw3Y1wyXDJcdTA2YjZcdTA2Yjdc N3RcMlwyXHUwNmI3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2YjhcN3VcMlwyXHUwNmI4 XHUwNmI5XDd2XDJcMlx1MDZiOVx1MDZiYVw3cVwyXDJcdTA2YmEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDZiYlw3dFwyXDJcdTA2YmJcdTA2YmNcN2dcMlwyXHUwNmJjXHUwMTNlXDNcMlwy XDJcdTA2YmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZiZVw3Y1wyXDJcdTA2YmVcdTA2 YmZcN2VcMlwyXHUwNmJmXHUwNmMwXDd2XDJcMlx1MDZjMCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNmMxXDdrXDJcMlx1MDZjMVx1MDZjMlw3cVwyXDJcdTA2YzJcdTA2YzNcN3BcMlwyXHUw NmMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNDBcM1wyXDJcMlx1MDZjNFx1MDZjNVw3 ZVwyXDJcdTA2YzVcdTA2YzZcN3FcMlwyXHUwNmM2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA2YzdcN3BcMlwyXHUwNmM3XHUwNmM4XDdoXDJcMlx1MDZjOFx1MDZjOVw3a1wyXDJcdTA2Yzki KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZjYVw3aVwyXDJcdTA2Y2FcdTAxNDJcM1wyXDJc Mlx1MDZjYlx1MDZjY1w3Z1wyXDJcdTA2Y2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZj ZFw3cFwyXDJcdTA2Y2RcdTA2Y2VcN2ZcMlwyXHUwNmNlXHUwNmNmXDdjXDJcMlx1MDZjZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmQwXDdlXDJcMlx1MDZkMFx1MDZkMVw3dlwyXDJcdTA2 ZDFcdTA2ZDJcN2tcMlwyXHUwNmQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZDNcN3Fc MlwyXHUwNmQzXHUwNmQ0XDdwXDJcMlx1MDZkNFx1MDE0NFwzXDJcMlwyXHUwNmQ1IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2ZDZcN3RcMlwyXHUwNmQ2XHUwNmQ3XDdnXDJcMlx1MDZkN1x1 MDZkOFw3aFwyXDJcdTA2ZDgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZkOVw3dFwyXDJc dTA2ZDlcdTA2ZGFcN2dcMlwyXHUwNmRhXHUwNmRiXDd1XDJcMlx1MDZkYiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNmRjXDdqXDJcMlx1MDZkY1x1MDE0NlwzXDJcMlwyXHUwNmRkXHUwNmRl XDdrXDJcMlx1MDZkZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmRmXDdwXDJcMlx1MDZk Zlx1MDZlMFw3dlwyXDJcdTA2ZTBcdTA2ZTFcN2dcMlwyXHUwNmUxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2ZTJcN3RcMlwyXHUwNmUyXHUwNmUzXDd4XDJcMlx1MDZlM1x1MDZlNFw3Y1wy XDJcdTA2ZTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZlNVw3blwyXDJcdTA2ZTVcdTAx NDhcM1wyXDJcMlx1MDZlNlx1MDZlN1w3eFwyXDJcdTA2ZTciKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDZlOFw3Y1wyXDJcdTA2ZThcdTA2ZTlcN3RcMlwyXHUwNmU5XHUwNmVhXDd1XDJcMlx1 MDZlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmViXDd2XDJcMlx1MDZlYlx1MDZlY1w3 cVwyXDJcdTA2ZWNcdTA2ZWRcN3RcMlwyXHUwNmVkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA2ZWVcN2dcMlwyXHUwNmVlXHUwNmVmXDdmXDJcMlx1MDZlZlx1MDZmMFw3Z1wyXDJcdTA2ZjAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZmMVw3eFwyXDJcdTA2ZjFcdTA2ZjJcN2tcMlwy XHUwNmYyXHUwNmYzXDdlXDJcMlx1MDZmMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmY0 XDdnXDJcMlx1MDZmNFx1MDE0YVwzXDJcMlwyXHUwNmY1XHUwNmY2XDdpXDJcMlx1MDZmNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmY3XDd3XDJcMlx1MDZmN1x1MDZmOFw3a1wyXDJcdTA2 ZjhcdTA2ZjlcN2ZcMlwyXHUwNmY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZmFcN3Fc MlwyXHUwNmZhXHUwNmZiXDdyXDJcMlx1MDZmYlx1MDE0Y1wzXDJcMlwyXHUwNmZjIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA2ZmRcN2dcMlwyXHUwNmZkXHUwNmZlXDdwXDJcMlx1MDZmZVx1 MDZmZlw3ZlwyXDJcdTA2ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcwMFw3aVwyXDJc dTA3MDBcdTA3MDFcN3dcMlwyXHUwNzAxXHUwNzAyXDdrXDJcMlx1MDcwMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNzAzXDdmXDJcMlx1MDcwM1x1MDcwNFw3cVwyXDJcdTA3MDRcdTA3MDVc N3JcMlwyXHUwNzA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNGVcM1wyXDJcMlx1MDcw Nlx1MDcwN1w3ZlwyXDJcdTA3MDdcdTA3MDhcN2NcMlwyXHUwNzA4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3MDlcN3ZcMlwyXHUwNzA5XHUwNzBhXDdjXDJcMlx1MDcwYVx1MDcwYlw3dlwy XDJcdTA3MGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDcwY1w3e1wyXDJcdTA3MGNcdTA3 MGRcN3JcMlwyXHUwNzBkXHUwNzBlXDdnXDJcMlx1MDcwZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMTUwXDNcMlwyXDJcdTA3MGZcdTA3MTBcN2ZcMlwyXHUwNzEwXHUwNzExXDdjXDJcMlx1 MDcxMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzEyXDd2XDJcMlx1MDcxMlx1MDcxM1w3 Y1wyXDJcdTA3MTNcdTAxNTJcM1wyXDJcMlx1MDcxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNzE1XDdvXDJcMlx1MDcxNVx1MDcxNlw3cVwyXDJcdTA3MTZcdTA3MTdcN2ZcMlwyXHUwNzE3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MThcN2NcMlwyXHUwNzE4XHUwNzE5XDduXDJc Mlx1MDcxOVx1MDE1NFwzXDJcMlwyXHUwNzFhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3 MWJcN1BcMlwyXHUwNzFiXHUwNzFjXDdRXDJcMlx1MDcxY1x1MDcxZFw3UFwyXDJcdTA3MWQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDcxZVw3YVwyXDJcdTA3MWVcdTA3MWZcN0ZcMlwyXHUw NzFmXHUwNzIwXDdHXDJcMlx1MDcyMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzIxXDdY XDJcMlx1MDcyMVx1MDcyMlw3S1wyXDJcdTA3MjJcdTA3MjNcN0VcMlwyXHUwNzIzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3MjRcN0dcMlwyXHUwNzI0XHUwMTU2XDNcMlwyXDJcdTA3MjVc dTA3MjZcN0ZcMlwyXHUwNzI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MjdcN0tcMlwy XHUwNzI3XHUwNzI4XDdVXDJcMlx1MDcyOFx1MDcyOVw3TVwyXDJcdTA3MjkiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDcyYVw3YVwyXDJcdTA3MmFcdTA3MmJcN0ZcMlwyXHUwNzJiXHUwNzJj XDdHXDJcMlx1MDcyYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzJkXDdYXDJcMlx1MDcy ZFx1MDcyZVw3S1wyXDJcdTA3MmVcdTA3MmZcN0VcMlwyXHUwNzJmIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3MzBcN0dcMlwyXHUwNzMwXHUwMTU4XDNcMlwyXDJcdTA3MzFcdTA3MzJcN1hc MlwyXHUwNzMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MzNcN0tcMlwyXHUwNzMzXHUw NzM0XDdGXDJcMlx1MDczNFx1MDczNVw3R1wyXDJcdTA3MzUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDczNlw3UVwyXDJcdTA3MzZcdTA3MzdcN2FcMlwyXHUwNzM3XHUwNzM4XDdGXDJcMlx1 MDczOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzM5XDdHXDJcMlx1MDczOVx1MDczYVw3 WFwyXDJcdTA3M2FcdTA3M2JcN0tcMlwyXHUwNzNiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA3M2NcN0VcMlwyXHUwNzNjXHUwNzNkXDdHXDJcMlx1MDczZFx1MDE1YVwzXDJcMlwyXHUwNzNl IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3M2ZcN1BcMlwyXHUwNzNmXHUwNzQwXDdHXDJc Mlx1MDc0MFx1MDc0MVw3VlwyXDJcdTA3NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc0 Mlw3WVwyXDJcdTA3NDJcdTA3NDNcN1FcMlwyXHUwNzQzXHUwNzQ0XDdUXDJcMlx1MDc0NCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzQ1XDdNXDJcMlx1MDc0NVx1MDc0Nlw3YVwyXDJcdTA3 NDZcdTA3NDdcN0ZcMlwyXHUwNzQ3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NDhcN0dc MlwyXHUwNzQ4XHUwNzQ5XDdYXDJcMlx1MDc0OVx1MDc0YVw3S1wyXDJcdTA3NGEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDc0Ylw3RVwyXDJcdTA3NGJcdTA3NGNcN0dcMlwyXHUwNzRjXHUw MTVjXDNcMlwyXDJcdTA3NGQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc0ZVw3S1wyXDJc dTA3NGVcdTA3NGZcN1BcMlwyXHUwNzRmXHUwNzUwXDdSXDJcMlx1MDc1MCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNzUxXDdXXDJcMlx1MDc1MVx1MDc1Mlw3VlwyXDJcdTA3NTJcdTA3NTNc N2FcMlwyXHUwNzUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NTRcN0ZcMlwyXHUwNzU0 XHUwNzU1XDdHXDJcMlx1MDc1NVx1MDc1Nlw3WFwyXDJcdTA3NTYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDc1N1w3S1wyXDJcdTA3NTdcdTA3NThcN0VcMlwyXHUwNzU4XHUwNzU5XDdHXDJc Mlx1MDc1OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTVlXDNcMlwyXDJcdTA3NWFcdTA3 NWJcN1FcMlwyXHUwNzViXHUwNzVjXDdQXDJcMlx1MDc1YyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNzVkXDdEXDJcMlx1MDc1ZFx1MDc1ZVw3UVwyXDJcdTA3NWVcdTA3NWZcN0NcMlwyXHUw NzVmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NjBcN1RcMlwyXHUwNzYwXHUwNzYxXDdG XDJcMlx1MDc2MVx1MDc2Mlw3YVwyXDJcdTA3NjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDc2M1w3RlwyXDJcdTA3NjNcdTA3NjRcN0dcMlwyXHUwNzY0XHUwNzY1XDdYXDJcMlx1MDc2NSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzY2XDdLXDJcMlx1MDc2Nlx1MDc2N1w3RVwyXDJc dTA3NjdcdTA3NjhcN0dcMlwyXHUwNzY4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNjBc M1wyXDJcMlx1MDc2OVx1MDc2YVw3UVwyXDJcdTA3NmFcdTA3NmJcN1ZcMlwyXHUwNzZiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA3NmNcN0pcMlwyXHUwNzZjXHUwNzZkXDdHXDJcMlx1MDc2 ZFx1MDc2ZVw3VFwyXDJcdTA3NmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc2Zlw3YVwy XDJcdTA3NmZcdTA3NzBcN0ZcMlwyXHUwNzcwXHUwNzcxXDdHXDJcMlx1MDc3MSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNzcyXDdYXDJcMlx1MDc3Mlx1MDc3M1w3S1wyXDJcdTA3NzNcdTA3 NzRcN0VcMlwyXHUwNzc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NzVcN0dcMlwyXHUw Nzc1XHUwMTYyXDNcMlwyXDJcdTA3NzZcdTA3NzdcN1VcMlwyXHUwNzc3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA3NzhcN0dcMlwyXHUwNzc4XHUwNzc5XDdWXDJcMlx1MDc3OVx1MDc3YVw3 V1wyXDJcdTA3N2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc3Ylw3UlwyXDJcdTA3N2Jc dTA3N2NcN2FcMlwyXHUwNzdjXHUwNzdkXDdDXDJcMlx1MDc3ZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNzdlXDdSXDJcMlx1MDc3ZVx1MDc3Zlw3UlwyXDJcdTA3N2ZcdTA3ODBcN05cMlwy XHUwNzgwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ODFcN0tcMlwyXHUwNzgxXHUwNzgy XDdFXDJcMlx1MDc4Mlx1MDc4M1w3Q1wyXDJcdTA3ODMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDc4NFw3VlwyXDJcdTA3ODRcdTA3ODVcN0tcMlwyXHUwNzg1XHUwNzg2XDdRXDJcMlx1MDc4 NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzg3XDdQXDJcMlx1MDc4N1x1MDE2NFwzXDJc MlwyXHUwNzg4XHUwNzg5XDdJXDJcMlx1MDc4OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NzhhXDdHXDJcMlx1MDc4YVx1MDc4Ylw3UFwyXDJcdTA3OGJcdTA3OGNcN0dcMlwyXHUwNzhjIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3OGRcN1RcMlwyXHUwNzhkXHUwNzhlXDdDXDJcMlx1 MDc4ZVx1MDc4Zlw3TlwyXDJcdTA3OGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc5MFw3 YVwyXDJcdTA3OTBcdTA3OTFcN0NcMlwyXHUwNzkxXHUwNzkyXDdSXDJcMlx1MDc5MiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNzkzXDdSXDJcMlx1MDc5M1x1MDc5NFw3TlwyXDJcdTA3OTRc dTA3OTVcN0tcMlwyXHUwNzk1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3OTZcN0VcMlwy XHUwNzk2XHUwNzk3XDdDXDJcMlx1MDc5N1x1MDc5OFw3VlwyXDJcdTA3OTgiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDc5OVw3S1wyXDJcdTA3OTlcdTA3OWFcN1FcMlwyXHUwNzlhXHUwNzli XDdQXDJcMlx1MDc5YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTY2XDNcMlwyXDJcdTA3 OWNcdTA3OWRcN0hcMlwyXHUwNzlkXHUwNzllXDdUXDJcMlx1MDc5ZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNzlmXDdRXDJcMlx1MDc5Zlx1MDdhMFw3UFwyXDJcdTA3YTBcdTA3YTFcN1Zc MlwyXHUwN2ExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YTJcN2FcMlwyXHUwN2EyXHUw N2EzXDdSXDJcMlx1MDdhM1x1MDdhNFw3Q1wyXDJcdTA3YTQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDdhNVw3SVwyXDJcdTA3YTVcdTA3YTZcN0dcMlwyXHUwN2E2XHUwMTY4XDNcMlwyXDJc dTA3YTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdhOFw3VVwyXDJcdTA3YThcdTA3YTlc N0tcMlwyXHUwN2E5XHUwN2FhXDdQXDJcMlx1MDdhYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwN2FiXDdJXDJcMlx1MDdhYlx1MDdhY1w3TlwyXDJcdTA3YWNcdTA3YWRcN0dcMlwyXHUwN2Fk IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YWVcN2FcMlwyXHUwN2FlXHUwN2FmXDdXXDJc Mlx1MDdhZlx1MDdiMFw3VVwyXDJcdTA3YjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdi MVw3R1wyXDJcdTA3YjFcdTAxNmFcM1wyXDJcMlx1MDdiMlx1MDdiM1w3W1wyXDJcdTA3YjMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDdiNFw3R1wyXDJcdTA3YjRcdTA3YjVcN0NcMlwyXHUw N2I1XHUwN2I2XDdUXDJcMlx1MDdiNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2I3XDdh XDJcMlx1MDdiN1x1MDdiOFw3VVwyXDJcdTA3YjhcdTA3YjlcN1dcMlwyXHUwN2I5IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3YmFcN1JcMlwyXHUwN2JhXHUwN2JiXDdSXDJcMlx1MDdiYlx1 MDdiY1w3VFwyXDJcdTA3YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdiZFw3R1wyXDJc dTA3YmRcdTA3YmVcN1VcMlwyXHUwN2JlXHUwN2JmXDdVXDJcMlx1MDdiZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMTZjXDNcMlwyXDJcdTA3YzBcdTA3YzFcN09cMlwyXHUwN2MxXHUwN2My XDdRXDJcMlx1MDdjMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2MzXDdQXDJcMlx1MDdj M1x1MDdjNFw3VlwyXDJcdTA3YzRcdTA3YzVcN0pcMlwyXHUwN2M1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3YzZcN2FcMlwyXHUwN2M2XHUwN2M3XDdVXDJcMlx1MDdjN1x1MDdjOFw3V1wy XDJcdTA3YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdjOVw3UlwyXDJcdTA3YzlcdTA3 Y2FcN1JcMlwyXHUwN2NhXHUwN2NiXDdUXDJcMlx1MDdjYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwN2NjXDdHXDJcMlx1MDdjY1x1MDdjZFw3VVwyXDJcdTA3Y2RcdTA3Y2VcN1VcMlwyXHUw N2NlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNmVcM1wyXDJcMlx1MDdjZlx1MDdkMFw3 RlwyXDJcdTA3ZDBcdTA3ZDFcN0NcMlwyXHUwN2QxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA3ZDJcN1tcMlwyXHUwN2QyXHUwN2QzXDdhXDJcMlx1MDdkM1x1MDdkNFw3VVwyXDJcdTA3ZDQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdkNVw3V1wyXDJcdTA3ZDVcdTA3ZDZcN1JcMlwy XHUwN2Q2XHUwN2Q3XDdSXDJcMlx1MDdkNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2Q4 XDdUXDJcMlx1MDdkOFx1MDdkOVw3R1wyXDJcdTA3ZDlcdTA3ZGFcN1VcMlwyXHUwN2RhIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZGJcN1VcMlwyXHUwN2RiXHUwMTcwXDNcMlwyXDJcdTA3 ZGNcdTA3ZGRcN0pcMlwyXHUwN2RkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZGVcN1Fc MlwyXHUwN2RlXHUwN2RmXDdXXDJcMlx1MDdkZlx1MDdlMFw3VFwyXDJcdTA3ZTAiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDdlMVw3YVwyXDJcdTA3ZTFcdTA3ZTJcN1VcMlwyXHUwN2UyXHUw N2UzXDdXXDJcMlx1MDdlMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2U0XDdSXDJcMlx1 MDdlNFx1MDdlNVw3UlwyXDJcdTA3ZTVcdTA3ZTZcN1RcMlwyXHUwN2U2IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA3ZTdcN0dcMlwyXHUwN2U3XHUwN2U4XDdVXDJcMlx1MDdlOFx1MDdlOVw3 VVwyXDJcdTA3ZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE3MlwzXDJcMlwyXHUwN2Vh XHUwN2ViXDdPXDJcMlx1MDdlYlx1MDdlY1w3S1wyXDJcdTA3ZWMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDdlZFw3UFwyXDJcdTA3ZWRcdTA3ZWVcN1dcMlwyXHUwN2VlXHUwN2VmXDdWXDJc Mlx1MDdlZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2YwXDdHXDJcMlx1MDdmMFx1MDdm MVw3YVwyXDJcdTA3ZjFcdTA3ZjJcN1VcMlwyXHUwN2YyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA3ZjNcN1dcMlwyXHUwN2YzXHUwN2Y0XDdSXDJcMlx1MDdmNFx1MDdmNVw3UlwyXDJcdTA3 ZjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdmNlw3VFwyXDJcdTA3ZjZcdTA3ZjdcN0dc MlwyXHUwN2Y3XHUwN2Y4XDdVXDJcMlx1MDdmOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw N2Y5XDdVXDJcMlx1MDdmOVx1MDE3NFwzXDJcMlwyXHUwN2ZhXHUwN2ZiXDdVXDJcMlx1MDdmYiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2ZjXDdHXDJcMlx1MDdmY1x1MDdmZFw3RVwyXDJc dTA3ZmRcdTA3ZmVcN1FcMlwyXHUwN2ZlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZmZc N1BcMlwyXHUwN2ZmXHUwODAwXDdGXDJcMlx1MDgwMFx1MDgwMVw3YVwyXDJcdTA4MDEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDgwMlw3VVwyXDJcdTA4MDJcdTA4MDNcN1dcMlwyXHUwODAz XHUwODA0XDdSXDJcMlx1MDgwNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODA1XDdSXDJc Mlx1MDgwNVx1MDgwNlw3VFwyXDJcdTA4MDZcdTA4MDdcN0dcMlwyXHUwODA3IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA4MDhcN1VcMlwyXHUwODA4XHUwODA5XDdVXDJcMlx1MDgwOVx1MDE3 NlwzXDJcMlwyXHUwODBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MGJcN1VcMlwyXHUw ODBiXHUwODBjXDdWXDJcMlx1MDgwY1x1MDgwZFw3UVwyXDJcdTA4MGQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDgwZVw3VFwyXDJcdTA4MGVcdTA4MGZcN0NcMlwyXHUwODBmXHUwODEwXDdJ XDJcMlx1MDgxMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODExXDdHXDJcMlx1MDgxMVx1 MDgxMlw3YVwyXDJcdTA4MTJcdTA4MTNcN1BcMlwyXHUwODEzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4MTRcN1FcMlwyXHUwODE0XHUwODE1XDdUXDJcMlx1MDgxNVx1MDgxNlw3T1wyXDJc dTA4MTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgxN1w3Q1wyXDJcdTA4MTdcdTA4MThc N05cMlwyXHUwODE4XHUwMTc4XDNcMlwyXDJcdTA4MTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDgxYVw3VVwyXDJcdTA4MWFcdTA4MWJcN1ZcMlwyXHUwODFiXHUwODFjXDdRXDJcMlx1MDgx YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODFkXDdUXDJcMlx1MDgxZFx1MDgxZVw3Q1wy XDJcdTA4MWVcdTA4MWZcN0lcMlwyXHUwODFmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 MjBcN0dcMlwyXHUwODIwXHUwODIxXDdhXDJcMlx1MDgyMVx1MDgyMlw3VlwyXDJcdTA4MjIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDgyM1w3S1wyXDJcdTA4MjNcdTA4MjRcN09cMlwyXHUw ODI0XHUwODI1XDdHXDJcMlx1MDgyNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTdhXDNc MlwyXDJcdTA4MjZcdTA4MjdcN1VcMlwyXHUwODI3XHUwODI4XDdWXDJcMlx1MDgyOCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwODI5XDdRXDJcMlx1MDgyOVx1MDgyYVw3VFwyXDJcdTA4MmFc dTA4MmJcN0NcMlwyXHUwODJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MmNcN0lcMlwy XHUwODJjXHUwODJkXDdHXDJcMlx1MDgyZFx1MDgyZVw3YVwyXDJcdTA4MmUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDgyZlw3WVwyXDJcdTA4MmZcdTA4MzBcN0NcMlwyXHUwODMwXHUwODMx XDdNXDJcMlx1MDgzMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODMyXDdHXDJcMlx1MDgz Mlx1MDgzM1w3V1wyXDJcdTA4MzNcdTA4MzRcN1JcMlwyXHUwODM0IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAxN2NcM1wyXDJcMlx1MDgzNVx1MDgzNlw3V1wyXDJcdTA4MzZcdTA4MzdcN1Bc MlwyXHUwODM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MzhcN0tcMlwyXHUwODM4XHUw ODM5XDdTXDJcMlx1MDgzOVx1MDgzYVw3V1wyXDJcdTA4M2EiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDgzYlw3R1wyXDJcdTA4M2JcdTAxN2VcM1wyXDJcMlx1MDgzY1x1MDgzZFw3UFwyXDJc dTA4M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgzZVw3UVwyXDJcdTA4M2VcdTA4M2Zc N0dcMlwyXHUwODNmXHUwODQwXDdPXDJcMlx1MDg0MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwODQxXDdSXDJcMlx1MDg0MVx1MDg0Mlw3VlwyXDJcdTA4NDJcdTA4NDNcN1tcMlwyXHUwODQz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxODBcM1wyXDJcMlx1MDg0NFx1MDg0NVw3ZVwy XDJcdTA4NDVcdTA4NDZcN3FcMlwyXHUwODQ2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 NDdcN3BcMlwyXHUwODQ3XHUwODQ4XDdmXDJcMlx1MDg0OFx1MDE4MlwzXDJcMlwyXHUwODQ5IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGFcN2hcMlwyXHUwODRhXHUwODRiXDdrXDJcMlx1 MDg0Ylx1MDg0Y1w3cFwyXDJcdTA4NGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg0ZFw3 ZlwyXDJcdTA4NGRcdTAxODRcM1wyXDJcMlx1MDg0ZVx1MDg0Zlw3b1wyXDJcdTA4NGYiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDg1MFw3a1wyXDJcdTA4NTBcdTA4NTFcN2ZcMlwyXHUwODUx XHUwMTg2XDNcMlwyXDJcdTA4NTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg1M1w3dlwy XDJcdTA4NTNcdTA4NTRcN3FcMlwyXHUwODU0XHUwODU1XDdtXDJcMlx1MDg1NSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwODU2XDdnXDJcMlx1MDg1Nlx1MDg1N1w3cFwyXDJcdTA4NTdcdTAx ODhcM1wyXDJcMlx1MDg1OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODU5XDd1XDJcMlx1 MDg1OVx1MDg1YVw3clwyXDJcdTA4NWFcdTA4NWJcN2NcMlwyXHUwODViIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA4NWNcN3BcMlwyXHUwODVjXHUwMThhXDNcMlwyXDJcdTA4NWRcdTA4NWVc N2ZcMlwyXHUwODVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NWZcN3dcMlwyXHUwODVm XHUwODYwXDdyXDJcMlx1MDg2MFx1MDE4Y1wzXDJcMlwyXHUwODYxIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA4NjJcN3hcMlwyXHUwODYyXHUwODYzXDdjXDJcMlx1MDg2M1x1MDg2NFw3dFwy XDJcdTA4NjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg2NVw3Z1wyXDJcdTA4NjVcdTA4 NjZcN3NcMlwyXHUwODY2XHUwODY3XDd4XDJcMlx1MDg2NyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwODY4XDdjXDJcMlx1MDg2OFx1MDg2OVw3blwyXDJcdTA4NjlcdTAxOGVcM1wyXDJcMlx1 MDg2YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODZiXDd4XDJcMlx1MDg2Ylx1MDg2Y1w3 Y1wyXDJcdTA4NmNcdTA4NmRcN3RcMlwyXHUwODZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAxOTBcM1wyXDJcMlx1MDg2ZVx1MDg2Zlw3a1wyXDJcdTA4NmZcdTA4NzBcN2ZcMlwyXHUwODcw IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NzFcN2dcMlwyXHUwODcxXHUwODcyXDdzXDJc Mlx1MDg3Mlx1MDg3M1w3eFwyXDJcdTA4NzMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg3 NFw3Y1wyXDJcdTA4NzRcdTA4NzVcN25cMlwyXHUwODc1XHUwMTkyXDNcMlwyXDJcdTA4NzYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDg3N1w3a1wyXDJcdTA4NzdcdTA4NzhcN2ZcMlwyXHUw ODc4XHUwODc5XDdnXDJcMlx1MDg3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODdhXDdz XDJcMlx1MDg3YVx1MDg3Ylw3a1wyXDJcdTA4N2JcdTA4N2NcN2ZcMlwyXHUwODdjIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAxOTRcM1wyXDJcMlx1MDg3ZFx1MDg3ZVw3a1wyXDJcdTA4N2Vc dTA4N2ZcN2ZcMlwyXHUwODdmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ODBcN2dcMlwy XHUwODgwXHUwODgxXDdzXDJcMlx1MDg4MVx1MDg4Mlw3eFwyXDJcdTA4ODIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDg4M1w3Y1wyXDJcdTA4ODNcdTA4ODRcN25cMlwyXHUwODg0XHUwODg1 XDduXDJcMlx1MDg4NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODg2XDdrXDJcMlx1MDg4 Nlx1MDg4N1w3dVwyXDJcdTA4ODdcdTA4ODhcN3ZcMlwyXHUwODg4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAxOTZcM1wyXDJcMlx1MDg4OVx1MDg4YVw3c1wyXDJcdTA4OGFcdTA4OGJcN3dc MlwyXHUwODhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OGNcN2dcMlwyXHUwODhjXHUw ODhkXDd1XDJcMlx1MDg4ZFx1MDg4ZVw3dlwyXDJcdTA4OGUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDg4Zlw3a1wyXDJcdTA4OGZcdTA4OTBcN3FcMlwyXHUwODkwXHUwODkxXDdwXDJcMlx1 MDg5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODkyXDd0XDJcMlx1MDg5Mlx1MDg5M1w3 Z1wyXDJcdTA4OTNcdTA4OTRcN2hcMlwyXHUwODk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAxOThcM1wyXDJcMlx1MDg5NVx1MDg5Nlw3dFwyXDJcdTA4OTZcdTA4OTdcN3dcMlwyXHUwODk3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OThcN25cMlwyXHUwODk4XHUwODk5XDdnXDJc Mlx1MDg5OVx1MDg5YVw3dFwyXDJcdTA4OWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg5 Ylw3Z1wyXDJcdTA4OWJcdTA4OWNcN2hcMlwyXHUwODljXHUwMTlhXDNcMlwyXDJcdTA4OWQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDg5ZVw3dVwyXDJcdTA4OWVcdTA4OWZcN3ZcMlwyXHUw ODlmXHUwOGEwXDd0XDJcMlx1MDhhMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGExXDdr XDJcMlx1MDhhMVx1MDhhMlw3cFwyXDJcdTA4YTJcdTA4YTNcN2lcMlwyXHUwOGEzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA4YTRcN3RcMlwyXHUwOGE0XHUwOGE1XDdnXDJcMlx1MDhhNVx1 MDhhNlw3aFwyXDJcdTA4YTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5Y1wzXDJcMlwy XHUwOGE3XHUwOGE4XDdyXDJcMlx1MDhhOFx1MDhhOVw3d1wyXDJcdTA4YTkiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDhhYVw3dVwyXDJcdTA4YWFcdTA4YWJcN2pcMlwyXHUwOGFiXHUwOGFj XDd2XDJcMlx1MDhhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGFkXDdqXDJcMlx1MDhh ZFx1MDhhZVw3a1wyXDJcdTA4YWVcdTA4YWZcN3VcMlwyXHUwOGFmIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAxOWVcM1wyXDJcMlx1MDhiMFx1MDhiMVw3dVwyXDJcdTA4YjFcdTA4YjJcN2dc MlwyXHUwOGIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YjNcN2VcMlwyXHUwOGIzXHUw OGI0XDd3XDJcMlx1MDhiNFx1MDhiNVw3dFwyXDJcdTA4YjUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDhiNlw3a1wyXDJcdTA4YjZcdTA4YjdcN3ZcMlwyXHUwOGI3XHUwOGI4XDd7XDJcMlx1 MDhiOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWEwXDNcMlwyXDJcdTA4YjlcdTA4YmFc N2lcMlwyXHUwOGJhXHUwOGJiXDdnXDJcMlx1MDhiYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOGJjXDd2XDJcMlx1MDhiY1x1MDFhMlwzXDJcMlwyXHUwOGJkXHUwOGJlXDdWXDJcMlx1MDhi ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGJmXDdUXDJcMlx1MDhiZlx1MDhjMFw3V1wy XDJcdTA4YzBcdTA4YzFcN0dcMlwyXHUwOGMxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAx YTRcM1wyXDJcMlx1MDhjMlx1MDhjM1w3SFwyXDJcdTA4YzNcdTA4YzRcN0NcMlwyXHUwOGM0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YzVcN05cMlwyXHUwOGM1XHUwOGM2XDdVXDJcMlx1 MDhjNlx1MDhjN1w3R1wyXDJcdTA4YzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFhNlwz XDJcMlwyXHUwOGM4XHUwOGM5XDdRXDJcMlx1MDhjOVx1MDhjYVw3UFwyXDJcdTA4Y2EiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDhjYlw3R1wyXDJcdTA4Y2JcdTAxYThcM1wyXDJcMlx1MDhj Y1x1MDhjZFw3UVwyXDJcdTA4Y2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjZVw3UFwy XDJcdTA4Y2VcdTA4Y2ZcN0dcMlwyXHUwOGNmXHUwOGQwXDdVXDJcMlx1MDhkMCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMWFhXDNcMlwyXDJcdTA4ZDFcdTA4ZDJcN1xcXDJcMlx1MDhkMlx1 MDhkM1w3R1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhkM1x1MDhkNFw3VFwyXDJc dTA4ZDRcdTA4ZDVcN1FcMlwyXHUwOGQ1XHUwMWFjXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDhkNlx1MDhkN1w3V1wyXDJcdTA4ZDdcdTA4ZDhcN1BcMlwyXHUwOGQ4XHUwOGQ5 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0ZcMlwyXHUwOGQ5XHUwOGRhXDdHXDJcMlx1MDhk YVx1MDhkYlw3SFwyXDJcdTA4ZGJcdTA4ZGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3S1wy XDJcdTA4ZGNcdTA4ZGRcN1BcMlwyXHUwOGRkXHUwOGRlXDdHXDJcMlx1MDhkZVx1MDhkZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdGXDJcMlx1MDhkZlx1MDFhZVwzXDJcMlwyXHUwOGUwXHUw OGUxXDdYXDJcMlx1MDhlMVx1MDhlMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdHXDJcMlx1 MDhlMlx1MDhlM1w3VFwyXDJcdTA4ZTNcdTA4ZTRcN1VcMlwyXHUwOGU0XHUwOGU1IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcN0tcMlwyXHUwOGU1XHUwOGU2XDdRXDJcMlx1MDhlNlx1MDhlN1w3 UFwyXDJcdTA4ZTdcdTAxYjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGU4 XHUwOGU5XDduXDJcMlx1MDhlOVx1MDhlYVw3Z1wyXDJcdTA4ZWFcdTA4ZWIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3cFwyXDJcdTA4ZWJcdTA4ZWNcN2lcMlwyXHUwOGVjXHUwOGVkXDd2XDJc Mlx1MDhlZFx1MDhlZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdqXDJcMlx1MDhlZVx1MDFi MlwzXDJcMlwyXHUwOGVmXHUwOGYwXDdDXDJcMlx1MDhmMFx1MDhmMSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdQXDJcMlx1MDhmMVx1MDhmMlw3RlwyXDJcdTA4ZjJcdTAxYjRcM1wyXDJcMlx1 MDhmM1x1MDhmNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdRXDJcMlx1MDhmNFx1MDhmNVw3 VFwyXDJcdTA4ZjVcdTAxYjZcM1wyXDJcMlx1MDhmNlx1MDhmNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdQXDJcMlx1MDhmN1x1MDhmOFw3UVwyXDJcdTA4ZjhcdTA4ZjlcN1ZcMlwyXHUwOGY5 XHUwMWI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDhmYVx1MDhmYlw3dVwy XDJcdTA4ZmJcdTA4ZmNcN2dcMlwyXHUwOGZjXHUwOGZkIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN3ZcMlwyXHUwOGZkXHUwMWJhXDNcMlwyXDJcdTA4ZmVcdTA4ZmZcN1x1MDA4MFwyXDJcdTA4 ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFiY1wzXDJcMlwyXHUwOTAwXHUwOTAxXDdk XDJcMlx1MDkwMVx1MDkwMlw3cVwyXDJcdTA5MDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDkwM1w3cVwyXDJcdTA5MDNcdTA5MDRcN25cMlwyXHUwOTA0XHUwOTA1XDd4XDJcMlx1MDkwNSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTA2XDdjXDJcMlx1MDkwNlx1MDkwN1w3blwyXDJc dTA5MDdcdTAxYmVcM1wyXDJcMlx1MDkwOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTA5 XDd1XDJcMlx1MDkwOVx1MDkwYVw3dlwyXDJcdTA5MGFcdTA5MGJcN3RcMlwyXHUwOTBiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5MGNcN2tcMlwyXHUwOTBjXHUwOTBkXDdwXDJcMlx1MDkw ZFx1MDkwZVw3aVwyXDJcdTA5MGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkwZlw3eFwy XDJcdTA5MGZcdTA5MTBcN2NcMlwyXHUwOTEwXHUwOTExXDduXDJcMlx1MDkxMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMWMwXDNcMlwyXDJcdTA5MTJcdTA5MTNcN3dcMlwyXHUwOTEzXHUw OTE0XDdwXDJcMlx1MDkxNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTE1XDdrXDJcMlx1 MDkxNVx1MDkxNlw3cFwyXDJcdTA5MTZcdTA5MTdcN3ZcMlwyXHUwOTE3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5MThcN3hcMlwyXHUwOTE4XHUwOTE5XDdjXDJcMlx1MDkxOVx1MDkxYVw3 blwyXDJcdTA5MWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjMlwzXDJcMlwyXHUwOTFi XHUwOTFjXDd2XDJcMlx1MDkxY1x1MDkxZFw3cVwyXDJcdTA5MWQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDkxZVw3d1wyXDJcdTA5MWVcdTA5MWZcN3JcMlwyXHUwOTFmXHUwOTIwXDdyXDJc Mlx1MDkyMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTIxXDdnXDJcMlx1MDkyMVx1MDky Mlw3dFwyXDJcdTA5MjJcdTAxYzRcM1wyXDJcMlx1MDkyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwOTI0XDd2XDJcMlx1MDkyNFx1MDkyNVw3cVwyXDJcdTA5MjVcdTA5MjZcN25cMlwyXHUw OTI2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjdcN3FcMlwyXHUwOTI3XHUwOTI4XDd5 XDJcMlx1MDkyOFx1MDkyOVw3Z1wyXDJcdTA5MjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDkyYVw3dFwyXDJcdTA5MmFcdTAxYzZcM1wyXDJcMlx1MDkyYlx1MDkyY1w3b1wyXDJcdTA5MmMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkyZFw3Y1wyXDJcdTA5MmRcdTA5MmVcN3ZcMlwy XHUwOTJlXHUwOTJmXDdlXDJcMlx1MDkyZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTMw XDdqXDJcMlx1MDkzMFx1MDFjOFwzXDJcMlwyXHUwOTMxXHUwOTMyXDdvXDJcMlx1MDkzMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTMzXDdjXDJcMlx1MDkzM1x1MDkzNFw3dlwyXDJcdTA5 MzRcdTA5MzVcN2VcMlwyXHUwOTM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzZcN2pc MlwyXHUwOTM2XHUwOTM3XDdcNjRcMlwyXHUwOTM3XHUwMWNhXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDkzOFx1MDkzOVw3ZVwyXDJcdTA5MzlcdTA5M2FcN2NcMlwyXHUwOTNh XHUwOTNiXDd2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOTNiXHUwOTNjXDdnXDJc Mlx1MDkzY1x1MDkzZFw3cFwyXDJcdTA5M2RcdTA5M2UiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3Y1wyXDJcdTA5M2VcdTA5M2ZcN3ZcMlwyXHUwOTNmXHUwOTQwXDdnXDJcMlx1MDk0MFx1MDFj YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5NDFcdTA5NDJcN3NcMlwyXHUw OTQyXHUwOTQzXDd3XDJcMlx1MDk0M1x1MDk0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdn XDJcMlx1MDk0NFx1MDk0NVw3dVwyXDJcdTA5NDVcdTA5NDZcN3ZcMlwyXHUwOTQ2XHUwOTQ3IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2tcMlwyXHUwOTQ3XHUwOTQ4XDdxXDJcMlx1MDk0OFx1 MDk0OVw3cFwyXDJcdTA5NDlcdTA5NGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3dFwyXDJc dTA5NGFcdTA5NGJcN2dcMlwyXHUwOTRiXHUwOTRjXDdoXDJcMlx1MDk0Y1x1MDk0ZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDd4XDJcMlx1MDk0ZFx1MDk0ZVw3Y1wyXDJcdTA5NGVcdTA5NGZc N25cMlwyXHUwOTRmXHUwMWNlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDk1 MFx1MDk1MVw3dVwyXDJcdTA5NTFcdTA5NTJcN3ZcMlwyXHUwOTUyXHUwOTUzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN3RcMlwyXHUwOTUzXHUwOTU0XDdrXDJcMlx1MDk1NFx1MDk1NVw3cFwy XDJcdTA5NTVcdTA5NTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3aVwyXDJcdTA5NTZcdTA5 NTdcN3RcMlwyXHUwOTU3XHUwOTU4XDdnXDJcMlx1MDk1OFx1MDk1OSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdoXDJcMlx1MDk1OVx1MDk1YVw3eFwyXDJcdTA5NWFcdTA5NWJcN2NcMlwyXHUw OTViXHUwOTVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN25cMlwyXHUwOTVjXHUwMWQwXDNc MlwyXDJcdTA5NWRcdTA5NWVcN29cMlwyXHUwOTVlXHUwOTVmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN2NcMlwyXHUwOTVmXHUwOTYwXDdyXDJcMlx1MDk2MFx1MDFkMlwzXDJcMlwyXHUwOTYx XHUwOTYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN3RcMlwyXHUwOTYyXHUwOTYzXDdnXDJc Mlx1MDk2M1x1MDk2NFw3aFwyXDJcdTA5NjRcdTA5NjUiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw3dFwyXDJcdTA5NjVcdTA5NjZcN2dcMlwyXHUwOTY2XHUwOTY3XDd1XDJcMlx1MDk2N1x1MDk2 OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdqXDJcMlx1MDk2OFx1MDk2OVw3aVwyXDJcdTA5 NjlcdTA5NmFcN3dcMlwyXHUwOTZhXHUwOTZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2tc MlwyXHUwOTZiXHUwOTZjXDdmXDJcMlx1MDk2Y1x1MDFkNFwzXDJcMlwyXHUwOTZkXHUwOTZlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1VcMlwyXHUwOTZlXHUwOTZmXDdWXDJcMlx1MDk2Zlx1 MDk3MFw3VFwyXDJcdTA5NzBcdTA5NzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3S1wyXDJc dTA5NzFcdTA5NzJcN1BcMlwyXHUwOTcyXHUwOTczXDdJXDJcMlx1MDk3M1x1MDk3NCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdhXDJcMlx1MDk3NFx1MDk3NVw3VlwyXDJcdTA5NzVcdTA5NzZc N1FcMlwyXHUwOTc2XHUwOTc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN01cMlwyXHUwOTc3 XHUwOTc4XDdHXDJcMlx1MDk3OFx1MDk3OVw3UFwyXDJcdTA5NzlcdTAxZDYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTdhXHUwOTdiXDdRXDJcMlx1MDk3Ylx1MDk3Y1w3Ulwy XDJcdTA5N2NcdTA5N2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3VlwyXDJcdTA5N2RcdTA5 N2VcN0tcMlwyXHUwOTdlXHUwOTdmXDdRXDJcMlx1MDk3Zlx1MDk4MCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdQXDJcMlx1MDk4MFx1MDk4MVw3YVwyXDJcdTA5ODFcdTA5ODJcN0ZcMlwyXHUw OTgyXHUwOTgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0dcMlwyXHUwOTgzXHUwOTg0XDdI XDJcMlx1MDk4NFx1MDk4NVw3Q1wyXDJcdTA5ODVcdTA5ODYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3V1wyXDJcdTA5ODZcdTA5ODdcN05cMlwyXHUwOTg3XHUwOTg4XDdWXDJcMlx1MDk4OFx1 MDFkOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ODlcdTA5OGFcN1FcMlwy XHUwOThhXHUwOThiXDdSXDJcMlx1MDk4Ylx1MDk4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdWXDJcMlx1MDk4Y1x1MDk4ZFw3S1wyXDJcdTA5OGRcdTA5OGVcN1FcMlwyXHUwOThlXHUwOThm IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1BcMlwyXHUwOThmXHUwOTkwXDdhXDJcMlx1MDk5 MFx1MDk5MVw3RlwyXDJcdTA5OTFcdTA5OTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3R1wy XDJcdTA5OTJcdTA5OTNcN0hcMlwyXHUwOTkzXHUwOTk0XDdDXDJcMlx1MDk5NFx1MDk5NSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk5NVx1MDk5Nlw3TlwyXDJcdTA5OTZcdTA5 OTdcN1ZcMlwyXHUwOTk3XHUwOTk4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2FcMlwyXHUw OTk4XHUwOTk5XDdPXDJcMlx1MDk5OVx1MDk5YVw3SFwyXDJcdTA5OWFcdTA5OWIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3SVwyXDJcdTA5OWJcdTAxZGFcM1wyXDJcMlx1MDk5Y1x1MDk5ZFw3 UFwyXDJcdTA5OWRcdTA5OWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3V1wyXDJcdTA5OWVc dTA5OWZcN09cMlwyXHUwOTlmXHUwOWEwXDdHXDJcMlx1MDlhMFx1MDlhMSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdUXDJcMlx1MDlhMVx1MDlhMlw3S1wyXDJcdTA5YTJcdTA5YTNcN0VcMlwy XHUwOWEzXHUwOWE0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN2FcMlwyXHUwOWE0XHUwOWE1 XDdVXDJcMlx1MDlhNVx1MDlhNlw3S1wyXDJcdTA5YTZcdTA5YTciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3XFxcMlwyXHUwOWE3XHUwOWE4XDdHXDJcMlx1MDlhOFx1MDlhOVw3YVwyXDJcdTA5 YTlcdTA5YWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDYzXDJcMlx1MDlhYVx1MDFkY1wz XDJcMlwyXHUwOWFiXHUwOWFjXDdQXDJcMlx1MDlhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwOWFkXDdXXDJcMlx1MDlhZFx1MDlhZVw3T1wyXDJcdTA5YWVcdTA5YWZcN0dcMlwyXHUwOWFm IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YjBcN1RcMlwyXHUwOWIwXHUwOWIxXDdLXDJc Mlx1MDliMVx1MDliMlw3RVwyXDJcdTA5YjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDli M1w3YVwyXDJcdTA5YjNcdTA5YjRcN1VcMlwyXHUwOWI0XHUwOWI1XDdLXDJcMlx1MDliNSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWI2XDdcXFwyXDJcdTA5YjZcdTA5YjdcN0dcMlwyXHUw OWI3XHUwOWI4XDdhXDJcMlx1MDliOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWI5XDdc NjRcMlwyXHUwOWI5XHUwMWRlXDNcMlwyXDJcdTA5YmFcdTA5YmJcN1BcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5YmJcdTA5YmNcN1dcMlwyXHUwOWJjXHUwOWJkXDdPXDJcMlx1MDli ZFx1MDliZVw3RyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDliZVx1MDliZlw3VFwy XDJcdTA5YmZcdTA5YzBcN0tcMlwyXHUwOWMwXHUwOWMxIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN0VcMlwyXHUwOWMxXHUwOWMyXDdhXDJcMlx1MDljMlx1MDljM1w3VVwyXDJcdTA5YzNcdTA5 YzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3S1wyXDJcdTA5YzRcdTA5YzVcN1xcXDJcMlx1 MDljNVx1MDljNlw3R1wyXDJcdTA5YzZcdTA5YzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 YVwyXDJcdTA5YzdcdTA5YzhcN1w2NlwyXDJcdTA5YzhcdTAxZTBcM1wyXDJcMlx1MDljOSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWNhXDdQXDJcMlx1MDljYVx1MDljYlw3V1wyXDJcdTA5 Y2JcdTA5Y2NcN09cMlwyXHUwOWNjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5Y2RcN0dc MlwyXHUwOWNkXHUwOWNlXDdUXDJcMlx1MDljZVx1MDljZlw3S1wyXDJcdTA5Y2YiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDlkMFw3RVwyXDJcdTA5ZDBcdTA5ZDFcN2FcMlwyXHUwOWQxXHUw OWQyXDdVXDJcMlx1MDlkMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWQzXDdLXDJcMlx1 MDlkM1x1MDlkNFw3XFxcMlwyXHUwOWQ0XHUwOWQ1XDdHXDJcMlx1MDlkNSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwOWQ2XDdhXDJcMlx1MDlkNlx1MDlkN1w3OlwyXDJcdTA5ZDdcdTAxZTJc M1wyXDJcMlx1MDlkOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWQ5XDdGXDJcMlx1MDlk OVx1MDlkYVw3S1wyXDJcdTA5ZGFcdTA5ZGJcN1VcMlwyXHUwOWRiIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA5ZGNcN1JcMlwyXHUwOWRjXHUwOWRkXDdOXDJcMlx1MDlkZFx1MDlkZVw3Q1wy XDJcdTA5ZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkZlw3W1wyXDJcdTA5ZGZcdTA5 ZTBcN2FcMlwyXHUwOWUwXHUwOWUxXDdLXDJcMlx1MDllMSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwOWUyXDdQXDJcMlx1MDllMlx1MDllM1w3VlwyXDJcdTA5ZTNcdTA5ZTRcN2FcMlwyXHUw OWU0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZTVcN0ZcMlwyXHUwOWU1XHUwOWU2XDdH XDJcMlx1MDllNlx1MDllN1w3RVwyXDJcdTA5ZTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDFlNFwzXDJcMlwyXHUwOWU4XHUwOWU5XDdGXDJcMlx1MDllOVx1MDllYVw3S1wyXDJcdTA5ZWEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDllYlw3VVwyXDJcdTA5ZWJcdTA5ZWNcN1JcMlwy XHUwOWVjXHUwOWVkXDdOXDJcMlx1MDllZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWVl XDdDXDJcMlx1MDllZVx1MDllZlw3W1wyXDJcdTA5ZWZcdTA5ZjBcN2FcMlwyXHUwOWYwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjFcN1dcMlwyXHUwOWYxXHUwOWYyXDdLXDJcMlx1MDlm Mlx1MDlmM1w3UFwyXDJcdTA5ZjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlmNFw3Vlwy XDJcdTA5ZjRcdTA5ZjVcN2FcMlwyXHUwOWY1XHUwOWY2XDdGXDJcMlx1MDlmNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwOWY3XDdHXDJcMlx1MDlmN1x1MDlmOFw3RVwyXDJcdTA5ZjhcdTAx ZTZcM1wyXDJcMlx1MDlmOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWZhXDdGXDJcMlx1 MDlmYVx1MDlmYlw3S1wyXDJcdTA5ZmJcdTA5ZmNcN1VcMlwyXHUwOWZjIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5ZmRcN1JcMlwyXHUwOWZkXHUwOWZlXDdOXDJcMlx1MDlmZVx1MDlmZlw3 Q1wyXDJcdTA5ZmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEwMFw3W1wyXDJcdTBhMDBc dTBhMDFcN2FcMlwyXHUwYTAxXHUwYTAyXDdXXDJcMlx1MGEwMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwYTAzXDdLXDJcMlx1MGEwM1x1MGEwNFw3UFwyXDJcdTBhMDRcdTBhMDVcN1ZcMlwy XHUwYTA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMDZcN2FcMlwyXHUwYTA2XHUwYTA3 XDdKXDJcMlx1MGEwN1x1MGEwOFw3R1wyXDJcdTBhMDgiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MGEwOVw3WlwyXDJcdTBhMDlcdTAxZThcM1wyXDJcMlx1MGEwYVx1MGEwYlw3S1wyXDJcdTBh MGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEwY1w3UFwyXDJcdTBhMGNcdTBhMGRcN1Vc MlwyXHUwYTBkXHUwYTBlXDdHXDJcMlx1MGEwZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTBmXDdQXDJcMlx1MGEwZlx1MGExMFw3VVwyXDJcdTBhMTBcdTBhMTFcN0tcMlwyXHUwYTExIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTJcN1ZcMlwyXHUwYTEyXHUwYTEzXDdLXDJcMlx1 MGExM1x1MGExNFw3WFwyXDJcdTBhMTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGExNVw3 R1wyXDJcdTBhMTVcdTAxZWFcM1wyXDJcMlx1MGExNlx1MGExN1w3VVwyXDJcdTBhMTciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MGExOFw3R1wyXDJcdTBhMThcdTBhMTlcN1BcMlwyXHUwYTE5 XHUwYTFhXDdVXDJcMlx1MGExYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTFiXDdLXDJc Mlx1MGExYlx1MGExY1w3VlwyXDJcdTBhMWNcdTBhMWRcN0tcMlwyXHUwYTFkIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTBhMWVcN1hcMlwyXHUwYTFlXHUwYTFmXDdHXDJcMlx1MGExZlx1MDFl Y1wzXDJcMlwyXHUwYTIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMjFcN05cMlwyXHUw YTIxXHUwYTIyXDdDXDJcMlx1MGEyMlx1MGEyM1w3VVwyXDJcdTBhMjMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGEyNFw3VlwyXDJcdTBhMjRcdTBhMjVcN2FcMlwyXHUwYTI1XHUwYTI2XDdQ XDJcMlx1MGEyNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTI3XDdRXDJcMlx1MGEyN1x1 MGEyOFw3UFwyXDJcdTBhMjhcdTBhMjlcN2FcMlwyXHUwYTI5IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBhMmFcN09cMlwyXHUwYTJhXHUwYTJiXDdDXDJcMlx1MGEyYlx1MGEyY1w3VlwyXDJc dTBhMmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEyZFw3RVwyXDJcdTBhMmRcdTBhMmVc N0pcMlwyXHUwYTJlXHUwMWVlXDNcMlwyXDJcdTBhMmYiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MGEzMFw3SFwyXDJcdTBhMzBcdTBhMzFcN0tcMlwyXHUwYTMxXHUwYTMyXDdUXDJcMlx1MGEz MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTMzXDdVXDJcMlx1MGEzM1x1MGEzNFw3Vlwy XDJcdTBhMzRcdTBhMzVcN2FcMlwyXHUwYTM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBh MzZcN1BcMlwyXHUwYTM2XHUwYTM3XDdRXDJcMlx1MGEzN1x1MGEzOFw3UFwyXDJcdTBhMzgiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGEzOVw3YVwyXDJcdTBhMzlcdTBhM2FcN09cMlwyXHUw YTNhXHUwYTNiXDdDXDJcMlx1MGEzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTNjXDdW XDJcMlx1MGEzY1x1MGEzZFw3RVwyXDJcdTBhM2RcdTBhM2VcN0pcMlwyXHUwYTNlIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAxZjBcM1wyXDJcMlx1MGEzZlx1MGE0MFw3XDYyXDJcMlx1MGE0 MFx1MGE0MVw3elwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0MVx1MGE0M1wzXDJc MlwyXHUwYTQyXHUwYTQ0XHRcMlwyXDJcdTBhNDNcdTBhNDJcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyXHUwYTQ0XHUwYTQ1XDNcMlwyXDJcdTBhNDVcdTBhNDNcM1wyXDJcMlx1MGE0 NVx1MGE0NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhNDZcdTBhNGRcM1wy XDJcMlx1MGE0N1x1MGE0OVx0XDNcMlwyXHUwYTQ4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBhNDdcM1wyXDJcMlx1MGE0OVx1MGE0YVwzXDJcMlwyXHUwYTRhXHUwYTQ4XDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGE0YVx1MGE0YlwzXDJcMlwyXHUwYTRiXHUwYTRkXDNc MlwyXDJcdTBhNGNcdTBhM2ZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTRj XHUwYTQ4XDNcMlwyXDJcdTBhNGRcdTAxZjJcM1wyXDJcMlx1MGE0ZVx1MGE1MiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHRcNFwyXDJcdTBhNGZcdTBhNTFcdFw1XDJcMlx1MGE1MFx1MGE0Zlwz XDJcMlwyXHUwYTUxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNTRcM1wyXDJcMlx1MGE1 Mlx1MGE1MFwzXDJcMlwyXHUwYTUyXHUwYTUzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MGE1M1x1MDFmNFwzXDJcMlwyXHUwYTU0XHUwYTUyXDNcMlwyXDJcdTBhNTVcdTBhNTdc NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiJVwyXDJcdTBhNTZcdTBhNThcNVx1MDFmYlx1MDBm ZVwyXHUwYTU3XHUwYTU2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE1N1x1 MGE1OFwzXDJcMlwyXHUwYTU4XHUwYTU5XDNcMlwyXDJcdTBhNTlcdTBhNWFcNyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiZlwyXDJcdTBhNWFcdTBhNWJcN2dcMlwyXHUwYTViXHUwYTVjXDdoXDJc Mlx1MGE1Y1x1MGE1ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdrXDJcMlx1MGE1ZFx1MGE1 ZVw3cFwyXDJcdTBhNWVcdTBhNWZcN2dcMlwyXHUwYTVmXHUwYTYzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MGE2MFx1MGE2MlxuXDZcMlwyXHUwYTYxXHUwYTYwXDNcMlwyXDJc dTBhNjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE2NVwzXDJcMlwyXHUwYTYzXHUwYTYx XDNcMlwyXDJcdTBhNjNcdTBhNjRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTY0XHUwYTY2XDNcMlwyXDJcdTBhNjVcdTBhNjNcM1wyXDJcMlx1MGE2Nlx1MGE2N1xiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmJcMlwyXHUwYTY3XHUwMWY2XDNcMlwyXDJcdTBhNjhc dTBhNmFcNyVcMlwyXHUwYTY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNmJcNVx1MDFm Ylx1MDBmZVwyXHUwYTZhXHUwYTY5XDNcMlwyXDJcdTBhNmFcdTBhNmIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXHUwYTZiXHUwYTZjXDNcMlwyXDJcdTBhNmNcdTBhNmRcN25cMlwy XHUwYTZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNmVcN2tcMlwyXHUwYTZlXHUwYTZm XDdwXDJcMlx1MGE2Zlx1MGE3MFw3Z1wyXDJcdTBhNzAiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MGE3NFwzXDJcMlwyXHUwYTcxXHUwYTczXG5cNlwyXDJcdTBhNzJcdTBhNzFcM1wyXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTczXHUwYTc2XDNcMlwyXDJcdTBhNzRcdTBhNzJc M1wyXDJcMlx1MGE3NFx1MGE3NVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTBh NzVcdTBhNzdcM1wyXDJcMlx1MGE3Nlx1MGE3NFwzXDJcMlwyXHUwYTc3XHUwYTc4IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcYlx1MDBmY1wyXDJcdTBhNzhcdTAxZjhcM1wyXDJcMlx1MGE3OVx1 MGE3Ylw3JVwyXDJcdTBhN2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE3Y1w1XHUwMWZi XHUwMGZlXDJcdTBhN2JcdTBhN2FcM1wyXDJcMlx1MGE3Ylx1MGE3YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTBhN2NcdTBhN2RcM1wyXDJcMlx1MGE3ZFx1MGE3ZVw3a1wyXDJc dTBhN2UiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE3Zlw3cFwyXDJcdTBhN2ZcdTBhODBc N2VcMlwyXHUwYTgwXHUwYTgxXDduXDJcMlx1MGE4MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwYTgyXDd3XDJcMlx1MGE4Mlx1MGE4M1w3ZlwyXDJcdTBhODNcdTBhODRcN2dcMlwyXHUwYTg0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcM1wyXDJcMlx1MGE4NVx1MGE4N1xuXDZc MlwyXHUwYTg2XHUwYTg1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE4N1x1 MGE4YVwzXDJcMlwyXHUwYTg4XHUwYTg2XDNcMlwyXDJcdTBhODhcdTBhODlcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTg5XHUwYThiXDNcMlwyXDJcdTBhOGFcdTBhODhcM1wy XDJcMlx1MGE4Ylx1MGE4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXGJcdTAwZmRcMlwyXHUw YThjXHUwMWZhXDNcMlwyXDJcdTBhOGRcdTBhOGZcdFw3XDJcMlx1MGE4ZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwYThkXDNcMlwyXDJcdTBhOGZcdTBhOTBcM1wyXDJcMlx1MGE5MFx1MGE4 ZVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTBcdTBhOTFcM1wyXDJcMlx1 MGE5MVx1MGE5MlwzXDJcMlwyXHUwYTkyXHUwYTkzXGIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBmZVwyXDJcdTBhOTNcdTAxZmNcM1wyXDJcMlx1MGE5NFx1MGE5Nlw3XDE3XDJcMlx1MGE5 NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTk3XDdcZlwyXDJcdTBhOTZcdTBhOTVcM1wy XDJcMlx1MGE5Nlx1MGE5N1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTdc dTBhOWFcM1wyXDJcMlx1MGE5OFx1MGE5YVw3XGZcMlwyXHUwYTk5XHUwYTk0XDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGE5OVx1MGE5OFwzXDJcMlwyXHUwYTlhXHUwYTliXDNc MlwyXDJcdTBhOWJcdTBhOWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxiXHUwMGZmXDJcMlx1 MGE5Y1x1MDFmZVwzXDJcMlwyXHUwYTlkXHUwYTllXDdcNjFcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTBhOWVcdTBhOWZcN1w2MVwyXDJcdTBhOWZcdTBhYTNcM1wyXDJcMlx1MGFhMFx1 MGFhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cYlwyXDJcdTBhYTFcdTBhYTBcM1wyXDJc Mlx1MGFhMlx1MGFhNVwzXDJcMlwyXHUwYWEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBh YTFcM1wyXDJcMlx1MGFhM1x1MGFhNFwzXDJcMlwyXHUwYWE0XHUwYWE2XDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MGFhNVx1MGFhM1wzXDJcMlwyXHUwYWE2XHUwYWE3XGJcdTAx MDBcMlwyXHUwYWE3XHUwMjAwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFh OFx1MGFhOVw3Z1wyXDJcdTBhYTlcdTBhYWFcN3pcMlwyXHUwYWFhXHUwYWFiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN3ZcMlwyXHUwYWFiXHUwYWFjXDdnXDJcMlx1MGFhY1x1MGFhZFw3dFwy XDJcdTBhYWRcdTBhYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3cFwyXDJcdTBhYWVcdTBh YjJcM1wyXDJcMlx1MGFhZlx1MGFiMVxuXDZcMlwyXHUwYWIwIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBhYWZcM1wyXDJcMlx1MGFiMVx1MGFiNFwzXDJcMlwyXHUwYWIyXHUwYWIwXDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFiMlx1MGFiM1wzXDJcMlwyXHUwYWIzXHUw YWI1XDNcMlwyXDJcdTBhYjRcdTBhYjJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwy XHUwYWI1XHUwYWI2XGJcdTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNcMlwyXDJcMjIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXHUwYTQ1XHUwYTRhXHUwYTRjXHUwYTUyXHUwYTU3XHUwYTYzXHUw YTZhXHUwYTc0XHUwYTdiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODhcdTBhOTBcdTBh OTZcdTBhOTlcdTBhYTNcdTBhYjJcM1xiXDJcMiIpDQoNCisgICAgICAgIHJldHVybiBidWYuZ2V0 dmFsdWUoKQ0KDQorDQoNCisNCg0KK2NsYXNzIFZmclN5bnRheExleGVyKExleGVyKToNCg0KKw0K DQorICAgIGF0biA9IEFUTkRlc2VyaWFsaXplcigpLmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRBVE4o KSkNCg0KKw0KDQorICAgIGRlY2lzaW9uc1RvREZBID0gWyBERkEoZHMsIGkpIGZvciBpLCBkcyBp biBlbnVtZXJhdGUoYXRuLmRlY2lzaW9uVG9TdGF0ZSkgXQ0KDQorDQoNCisgICAgVF9fMCA9IDEN Cg0KKyAgICBUX18xID0gMg0KDQorICAgIFRfXzIgPSAzDQoNCisgICAgVF9fMyA9IDQNCg0KKyAg ICBUX180ID0gNQ0KDQorICAgIFRfXzUgPSA2DQoNCisgICAgVF9fNiA9IDcNCg0KKyAgICBUX183 ID0gOA0KDQorICAgIFRfXzggPSA5DQoNCisgICAgVF9fOSA9IDEwDQoNCisgICAgVF9fMTAgPSAx MQ0KDQorICAgIFRfXzExID0gMTINCg0KKyAgICBUX18xMiA9IDEzDQoNCisgICAgVF9fMTMgPSAx NA0KDQorICAgIFRfXzE0ID0gMTUNCg0KKyAgICBUX18xNSA9IDE2DQoNCisgICAgRGVmaW5lID0g MTcNCg0KKyAgICBJbmNsdWRlID0gMTgNCg0KKyAgICBGb3JtUGtnVHlwZSA9IDE5DQoNCisgICAg T3BlbkJyYWNlID0gMjANCg0KKyAgICBDbG9zZUJyYWNlID0gMjENCg0KKyAgICBPcGVuUGFyZW4g PSAyMg0KDQorICAgIENsb3NlUGFyZW4gPSAyMw0KDQorICAgIE9wZW5CcmFja2V0ID0gMjQNCg0K KyAgICBDbG9zZUJyYWNrZXQgPSAyNQ0KDQorICAgIERvdCA9IDI2DQoNCisgICAgTmVnYXRpdmUg PSAyNw0KDQorICAgIENvbG9uID0gMjgNCg0KKyAgICBTbGFzaCA9IDI5DQoNCisgICAgU2VtaWNv bG9uID0gMzANCg0KKyAgICBDb21tYSA9IDMxDQoNCisgICAgRXF1YWwgPSAzMg0KDQorICAgIE5v dEVxdWFsID0gMzMNCg0KKyAgICBMZXNzRXF1YWwgPSAzNA0KDQorICAgIExlc3MgPSAzNQ0KDQor ICAgIEdyZWF0ZXJFcXVhbCA9IDM2DQoNCisgICAgR3JlYXRlciA9IDM3DQoNCisgICAgQml0V2lz ZU9yID0gMzgNCg0KKyAgICBCaXRXaXNlQW5kID0gMzkNCg0KKyAgICBEZXZpY2VQYXRoID0gNDAN Cg0KKyAgICBGb3JtU2V0ID0gNDENCg0KKyAgICBGb3JtU2V0SWQgPSA0Mg0KDQorICAgIEVuZEZv cm1TZXQgPSA0Mw0KDQorICAgIFRpdGxlID0gNDQNCg0KKyAgICBGb3JtSWQgPSA0NQ0KDQorICAg IE9uZU9mID0gNDYNCg0KKyAgICBFbmRPbmVPZiA9IDQ3DQoNCisgICAgUHJvbXB0ID0gNDgNCg0K KyAgICBPcmRlcmVkTGlzdCA9IDQ5DQoNCisgICAgTWF4Q29udGFpbmVycyA9IDUwDQoNCisgICAg RW5kTGlzdCA9IDUxDQoNCisgICAgRW5kRm9ybSA9IDUyDQoNCisgICAgRm9ybSA9IDUzDQoNCisg ICAgRm9ybU1hcCA9IDU0DQoNCisgICAgTWFwVGl0bGUgPSA1NQ0KDQorICAgIE1hcEd1aWQgPSA1 Ng0KDQorICAgIFN1YnRpdGxlID0gNTcNCg0KKyAgICBFbmRTdWJ0aXRsZSA9IDU4DQoNCisgICAg SGVscCA9IDU5DQoNCisgICAgVGV4dCA9IDYwDQoNCisgICAgT3B0aW9uID0gNjENCg0KKyAgICBG TEFHUyA9IDYyDQoNCisgICAgRGF0ZSA9IDYzDQoNCisgICAgRW5kRGF0ZSA9IDY0DQoNCisgICAg WWVhciA9IDY1DQoNCisgICAgTW9udGggPSA2Ng0KDQorICAgIERheSA9IDY3DQoNCisgICAgVGlt ZSA9IDY4DQoNCisgICAgRW5kVGltZSA9IDY5DQoNCisgICAgSG91ciA9IDcwDQoNCisgICAgTWlu dXRlID0gNzENCg0KKyAgICBTZWNvbmQgPSA3Mg0KDQorICAgIEdyYXlPdXRJZiA9IDczDQoNCisg ICAgTGFiZWwgPSA3NA0KDQorICAgIFRpbWVvdXQgPSA3NQ0KDQorICAgIEludmVudG9yeSA9IDc2 DQoNCisgICAgTm9uTnZEYXRhTWFwID0gNzcNCg0KKyAgICBTdHJ1Y3QgPSA3OA0KDQorICAgIFVu aW9uID0gNzkNCg0KKyAgICBCb29sZWFuID0gODANCg0KKyAgICBVaW50NjQgPSA4MQ0KDQorICAg IFVpbnQzMiA9IDgyDQoNCisgICAgVWludDE2ID0gODMNCg0KKyAgICBVaW50OCA9IDg0DQoNCisg ICAgRUZJX1NUUklOR19JRCA9IDg1DQoNCisgICAgRUZJX0hJSV9EQVRFID0gODYNCg0KKyAgICBF RklfSElJX1RJTUUgPSA4Nw0KDQorICAgIEVGSV9ISUlfUkVGID0gODgNCg0KKyAgICBVdWlkID0g ODkNCg0KKyAgICBDaGVja0JveCA9IDkwDQoNCisgICAgRW5kQ2hlY2tCb3ggPSA5MQ0KDQorICAg IE51bWVyaWMgPSA5Mg0KDQorICAgIEVuZE51bWVyaWMgPSA5Mw0KDQorICAgIE1pbmltdW0gPSA5 NA0KDQorICAgIE1heGltdW0gPSA5NQ0KDQorICAgIFN0ZXAgPSA5Ng0KDQorICAgIERlZmF1bHQg PSA5Nw0KDQorICAgIFBhc3N3b3JkID0gOTgNCg0KKyAgICBFbmRQYXNzd29yZCA9IDk5DQoNCisg ICAgU3RyaW5nID0gMTAwDQoNCisgICAgRW5kU3RyaW5nID0gMTAxDQoNCisgICAgTWluU2l6ZSA9 IDEwMg0KDQorICAgIE1heFNpemUgPSAxMDMNCg0KKyAgICBFbmNvZGluZyA9IDEwNA0KDQorICAg IFN1cHByZXNzSWYgPSAxMDUNCg0KKyAgICBEaXNhYmxlSWYgPSAxMDYNCg0KKyAgICBIaWRkZW4g PSAxMDcNCg0KKyAgICBHb3RvID0gMTA4DQoNCisgICAgRm9ybVNldEd1aWQgPSAxMDkNCg0KKyAg ICBJbmNvbnNpc3RlbnRJZiA9IDExMA0KDQorICAgIFdhcm5pbmdJZiA9IDExMQ0KDQorICAgIE5v U3VibWl0SWYgPSAxMTINCg0KKyAgICBFbmRJZiA9IDExMw0KDQorICAgIEtleSA9IDExNA0KDQor ICAgIERlZmF1bHRGbGFnID0gMTE1DQoNCisgICAgTWFudWZhY3R1cmluZ0ZsYWcgPSAxMTYNCg0K KyAgICBDaGVja0JveERlZmF1bHRGbGFnID0gMTE3DQoNCisgICAgQ2hlY2tCb3hEZWZhdWx0TWZn RmxhZyA9IDExOA0KDQorICAgIEludGVyYWN0aXZlRmxhZyA9IDExOQ0KDQorICAgIE5WQWNjZXNz RmxhZyA9IDEyMA0KDQorICAgIFJlc2V0UmVxdWlyZWRGbGFnID0gMTIxDQoNCisgICAgUmVjb25u ZWN0UmVxdWlyZWRGbGFnID0gMTIyDQoNCisgICAgTGF0ZUNoZWNrRmxhZyA9IDEyMw0KDQorICAg IFJlYWRPbmx5RmxhZyA9IDEyNA0KDQorICAgIE9wdGlvbk9ubHlGbGFnID0gMTI1DQoNCisgICAg UmVzdFN0eWxlRmxhZyA9IDEyNg0KDQorICAgIENsYXNzID0gMTI3DQoNCisgICAgU3ViY2xhc3Mg PSAxMjgNCg0KKyAgICBDbGFzc0d1aWQgPSAxMjkNCg0KKyAgICBUeXBlRGVmID0gMTMwDQoNCisg ICAgUmVzdG9yZSA9IDEzMQ0KDQorICAgIFNhdmUgPSAxMzINCg0KKyAgICBEZWZhdWx0cyA9IDEz Mw0KDQorICAgIEJhbm5lciA9IDEzNA0KDQorICAgIEFsaWduID0gMTM1DQoNCisgICAgTGVmdCA9 IDEzNg0KDQorICAgIFJpZ2h0ID0gMTM3DQoNCisgICAgQ2VudGVyID0gMTM4DQoNCisgICAgTGlu ZSA9IDEzOQ0KDQorICAgIE5hbWUgPSAxNDANCg0KKyAgICBWYXJJZCA9IDE0MQ0KDQorICAgIFF1 ZXN0aW9uID0gMTQyDQoNCisgICAgUXVlc3Rpb25JZCA9IDE0Mw0KDQorICAgIEltYWdlID0gMTQ0 DQoNCisgICAgTG9ja2VkID0gMTQ1DQoNCisgICAgUnVsZSA9IDE0Ng0KDQorICAgIEVuZFJ1bGUg PSAxNDcNCg0KKyAgICBWYWx1ZSA9IDE0OA0KDQorICAgIFJlYWQgPSAxNDkNCg0KKyAgICBXcml0 ZSA9IDE1MA0KDQorICAgIFJlc2V0QnV0dG9uID0gMTUxDQoNCisgICAgRW5kUmVzZXRCdXR0b24g PSAxNTINCg0KKyAgICBEZWZhdWx0U3RvcmUgPSAxNTMNCg0KKyAgICBBdHRyaWJ1dGUgPSAxNTQN Cg0KKyAgICBWYXJzdG9yZSA9IDE1NQ0KDQorICAgIEVmaXZhcnN0b3JlID0gMTU2DQoNCisgICAg VmFyU2l6ZSA9IDE1Nw0KDQorICAgIE5hbWVWYWx1ZVZhclN0b3JlID0gMTU4DQoNCisgICAgQWN0 aW9uID0gMTU5DQoNCisgICAgQ29uZmlnID0gMTYwDQoNCisgICAgRW5kQWN0aW9uID0gMTYxDQoN CisgICAgUmVmcmVzaCA9IDE2Mg0KDQorICAgIEludGVydmFsID0gMTYzDQoNCisgICAgVmFyc3Rv cmVEZXZpY2UgPSAxNjQNCg0KKyAgICBHdWlkT3AgPSAxNjUNCg0KKyAgICBFbmRHdWlkT3AgPSAx NjYNCg0KKyAgICBEYXRhVHlwZSA9IDE2Nw0KDQorICAgIERhdGEgPSAxNjgNCg0KKyAgICBNb2Rh bCA9IDE2OQ0KDQorICAgIENsYXNzTm9uRGV2aWNlID0gMTcwDQoNCisgICAgQ2xhc3NEaXNrRGV2 aWNlID0gMTcxDQoNCisgICAgQ2xhc3NWaWRlb0RldmljZSA9IDE3Mg0KDQorICAgIENsYXNzTmV0 d29ya0RldmljZSA9IDE3Mw0KDQorICAgIENsYXNzSW5wdXREZXZpY2UgPSAxNzQNCg0KKyAgICBD bGFzc09uQm9hcmREZXZpY2UgPSAxNzUNCg0KKyAgICBDbGFzc090aGVyRGV2aWNlID0gMTc2DQoN CisgICAgU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uID0gMTc3DQoNCisgICAgU3ViY2xhc3NHZW5l cmFsQXBwbGljYXRpb24gPSAxNzgNCg0KKyAgICBTdWJjbGFzc0Zyb250UGFnZSA9IDE3OQ0KDQor ICAgIFN1YmNsYXNzU2luZ2xlVXNlID0gMTgwDQoNCisgICAgWWVhclN1cHBwcmVzc0ZsYWcgPSAx ODENCg0KKyAgICBNb250aFN1cHByZXNzRmxhZyA9IDE4Mg0KDQorICAgIERheVN1cHByZXNzRmxh ZyA9IDE4Mw0KDQorICAgIEhvdXJTdXBwcHJlc3NGbGFnID0gMTg0DQoNCisgICAgTWludXRlU3Vw cHJlc3NGbGFnID0gMTg1DQoNCisgICAgU2Vjb25kU3VwcHJlc3NGbGFnID0gMTg2DQoNCisgICAg U3RvcmFnZU5vcm1hbEZsYWcgPSAxODcNCg0KKyAgICBTdG9yYWdlVGltZUZsYWcgPSAxODgNCg0K KyAgICBTdG9yYWdlV2FrZVVwRmxhZyA9IDE4OQ0KDQorICAgIFVuaVF1ZUZsYWcgPSAxOTANCg0K KyAgICBOb0VtcHR5RmxhZyA9IDE5MQ0KDQorICAgIENvbmQgPSAxOTINCg0KKyAgICBGaW5kID0g MTkzDQoNCisgICAgTWlkID0gMTk0DQoNCisgICAgVG9rID0gMTk1DQoNCisgICAgU3BhbiA9IDE5 Ng0KDQorICAgIER1cCA9IDE5Nw0KDQorICAgIFZhckVxVmFsID0gMTk4DQoNCisgICAgVmFyID0g MTk5DQoNCisgICAgSWRFcVZhbCA9IDIwMA0KDQorICAgIElkRXFJZCA9IDIwMQ0KDQorICAgIElk RXFWYWxMaXN0ID0gMjAyDQoNCisgICAgUXVlc3Rpb25SZWYgPSAyMDMNCg0KKyAgICBSdWxlUmVm ID0gMjA0DQoNCisgICAgU3RyaW5nUmVmID0gMjA1DQoNCisgICAgUHVzaFRoaXMgPSAyMDYNCg0K KyAgICBTZWN1cml0eSA9IDIwNw0KDQorICAgIEdldCA9IDIwOA0KDQorICAgIFRydWVTeW1ib2wg PSAyMDkNCg0KKyAgICBGYWxzZVN5bWJvbCA9IDIxMA0KDQorICAgIE9uZSA9IDIxMQ0KDQorICAg IE9uZXMgPSAyMTINCg0KKyAgICBaZXJvID0gMjEzDQoNCisgICAgVW5kZWZpbmVkID0gMjE0DQoN CisgICAgVmVyc2lvbiA9IDIxNQ0KDQorICAgIExlbmd0aCA9IDIxNg0KDQorICAgIEFORCA9IDIx Nw0KDQorICAgIE9SID0gMjE4DQoNCisgICAgTk9UID0gMjE5DQoNCisgICAgU2V0ID0gMjIwDQoN CisgICAgQml0V2lzZU5vdCA9IDIyMQ0KDQorICAgIEJvb2xWYWwgPSAyMjINCg0KKyAgICBTdHJp bmdWYWwgPSAyMjMNCg0KKyAgICBVbkludFZhbCA9IDIyNA0KDQorICAgIFRvVXBwZXIgPSAyMjUN Cg0KKyAgICBUb0xvd2VyID0gMjI2DQoNCisgICAgTWF0Y2ggPSAyMjcNCg0KKyAgICBNYXRjaDIg PSAyMjgNCg0KKyAgICBDYXRlbmF0ZSA9IDIyOQ0KDQorICAgIFF1ZXN0aW9uUmVmVmFsID0gMjMw DQoNCisgICAgU3RyaW5nUmVmVmFsID0gMjMxDQoNCisgICAgTWFwID0gMjMyDQoNCisgICAgUmVm cmVzaEd1aWQgPSAyMzMNCg0KKyAgICBTdHJpbmdUb2tlbiA9IDIzNA0KDQorICAgIE9wdGlvbkRl ZmF1bHQgPSAyMzUNCg0KKyAgICBPcHRpb25EZWZhdWx0TWZnID0gMjM2DQoNCisgICAgTnVtZXJp Y1NpemVPbmUgPSAyMzcNCg0KKyAgICBOdW1lcmljU2l6ZVR3byA9IDIzOA0KDQorICAgIE51bWVy aWNTaXplRm91ciA9IDIzOQ0KDQorICAgIE51bWVyaWNTaXplRWlnaHQgPSAyNDANCg0KKyAgICBE aXNQbGF5SW50RGVjID0gMjQxDQoNCisgICAgRGlzUGxheVVJbnREZWMgPSAyNDINCg0KKyAgICBE aXNQbGF5VUludEhleCA9IDI0Mw0KDQorICAgIEluc2Vuc2l0aXZlID0gMjQ0DQoNCisgICAgU2Vu c2l0aXZlID0gMjQ1DQoNCisgICAgTGFzdE5vbk1hdGNoID0gMjQ2DQoNCisgICAgRmlyc3ROb25N YXRjaCA9IDI0Nw0KDQorICAgIE51bWJlciA9IDI0OA0KDQorICAgIFN0cmluZ0lkZW50aWZpZXIg PSAyNDkNCg0KKyAgICBDb21wbGV4RGVmaW5lID0gMjUwDQoNCisgICAgTGluZURlZmluaXRpb24g PSAyNTENCg0KKyAgICBJbmNsdWRlRGVmaW5pdGlvbiA9IDI1Mg0KDQorICAgIFdoaXRlc3BhY2Ug PSAyNTMNCg0KKyAgICBOZXdsaW5lID0gMjU0DQoNCisgICAgTGluZUNvbW1lbnQgPSAyNTUNCg0K KyAgICBFeHRlcm4gPSAyNTYNCg0KKw0KDQorICAgIGNoYW5uZWxOYW1lcyA9IFsgdSJERUZBVUxU X1RPS0VOX0NIQU5ORUwiLCB1IkhJRERFTiIgXQ0KDQorDQoNCisgICAgbW9kZU5hbWVzID0gWyAi REVGQVVMVF9NT0RFIiBdDQoNCisNCg0KKyAgICBsaXRlcmFsTmFtZXMgPSBbICI8SU5WQUxJRD4i LA0KDQorICAgICAgICAgICAgIidzaG93JyIsICIncHVzaCciLCAiJ3BvcCciLCAiJyNwcmFnbWEn IiwgIidwYWNrJyIsICInPSciLCAiJ0lNQUdFX1RPS0VOJyIsDQoNCisgICAgICAgICAgICAiJ0hP UklaT05UQUwnIiwgIidNVUxUSV9MSU5FJyIsICInPDwnIiwgIic+PiciLCAiJysnIiwgIicqJyIs DQoNCisgICAgICAgICAgICAiJyUnIiwgIidmb3JtYXQnIiwgIic/JyIsICInI2RlZmluZSciLCAi JyNpbmNsdWRlJyIsICInZm9ybXBrZ3R5cGUnIiwNCg0KKyAgICAgICAgICAgICIneyciLCAiJ30n IiwgIicoJyIsICInKSciLCAiJ1snIiwgIiddJyIsICInLiciLCAiJy0nIiwgIic6JyIsDQoNCisg ICAgICAgICAgICAiJy8nIiwgIic7JyIsICInLCciLCAiJz09JyIsICInIT0nIiwgIic8PSciLCAi JzwnIiwgIic+PSciLA0KDQorICAgICAgICAgICAgIic+JyIsICInfCciLCAiJyYnIiwgIidkZXZp Y2VwYXRoJyIsICInZm9ybXNldCciLCAiJ2Zvcm1zZXRpZCciLA0KDQorICAgICAgICAgICAgIidl bmRmb3Jtc2V0JyIsICIndGl0bGUnIiwgIidmb3JtaWQnIiwgIidvbmVvZiciLCAiJ2VuZG9uZW9m JyIsDQoNCisgICAgICAgICAgICAiJ3Byb21wdCciLCAiJ29yZGVyZWRsaXN0JyIsICInbWF4Y29u dGFpbmVycyciLCAiJ2VuZGxpc3QnIiwNCg0KKyAgICAgICAgICAgICInZW5kZm9ybSciLCAiJ2Zv cm0nIiwgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsDQoNCisgICAgICAg ICAgICAiJ3N1YnRpdGxlJyIsICInZW5kc3VidGl0bGUnIiwgIidoZWxwJyIsICIndGV4dCciLCAi J29wdGlvbiciLA0KDQorICAgICAgICAgICAgIidmbGFncyciLCAiJ2RhdGUnIiwgIidlbmRkYXRl JyIsICIneWVhciciLCAiJ21vbnRoJyIsICInZGF5JyIsDQoNCisgICAgICAgICAgICAiJ3RpbWUn IiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLCAiJ2dyYXlv dXRpZiciLA0KDQorICAgICAgICAgICAgIidsYWJlbCciLCAiJ3RpbWVvdXQnIiwgIidpbnZlbnRv cnknIiwgIidfTk9OX05WX0RBVEFfTUFQJyIsDQoNCisgICAgICAgICAgICAiJ3N0cnVjdCciLCAi J3VuaW9uJyIsICInQk9PTEVBTiciLCAiJ1VJTlQ2NCciLCAiJ1VJTlQzMiciLA0KDQorICAgICAg ICAgICAgIidVSU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwgIidFRklfSElJ X0RBVEUnIiwNCg0KKyAgICAgICAgICAgICInRUZJX0hJSV9USU1FJyIsICInRUZJX0hJSV9SRUYn IiwgIidndWlkJyIsICInY2hlY2tib3gnIiwgIidlbmRjaGVja2JveCciLA0KDQorICAgICAgICAg ICAgIidudW1lcmljJyIsICInZW5kbnVtZXJpYyciLCAiJ21pbmltdW0nIiwgIidtYXhpbXVtJyIs ICInc3RlcCciLA0KDQorICAgICAgICAgICAgIidkZWZhdWx0JyIsICIncGFzc3dvcmQnIiwgIidl bmRwYXNzd29yZCciLCAiJ3N0cmluZyciLCAiJ2VuZHN0cmluZyciLA0KDQorICAgICAgICAgICAg IidtaW5zaXplJyIsICInbWF4c2l6ZSciLCAiJ2VuY29kaW5nJyIsICInc3VwcHJlc3NpZiciLCAi J2Rpc2FibGVpZiciLA0KDQorICAgICAgICAgICAgIidoaWRkZW4nIiwgIidnb3RvJyIsICInZm9y bXNldGd1aWQnIiwgIidpbmNvbnNpc3RlbnRpZiciLCAiJ3dhcm5pbmdpZiciLA0KDQorICAgICAg ICAgICAgIidub3N1Ym1pdGlmJyIsICInZW5kaWYnIiwgIidrZXknIiwgIidERUZBVUxUJyIsICIn TUFOVUZBQ1RVUklORyciLA0KDQorICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxUJyIsICIn Q0hFQ0tCT1hfREVGQVVMVF9NRkcnIiwgIidJTlRFUkFDVElWRSciLA0KDQorICAgICAgICAgICAg IidOVl9BQ0NFU1MnIiwgIidSRVNFVF9SRVFVSVJFRCciLCAiJ1JFQ09OTkVDVF9SRVFVSVJFRCci LCAiJ0xBVEVfQ0hFQ0snIiwNCg0KKyAgICAgICAgICAgICInUkVBRF9PTkxZJyIsICInT1BUSU9O U19PTkxZJyIsICInUkVTVF9TVFlMRSciLCAiJ2NsYXNzJyIsDQoNCisgICAgICAgICAgICAiJ3N1 YmNsYXNzJyIsICInY2xhc3NndWlkJyIsICIndHlwZWRlZiciLCAiJ3Jlc3RvcmUnIiwgIidzYXZl JyIsDQoNCisgICAgICAgICAgICAiJ2RlZmF1bHRzJyIsICInYmFubmVyJyIsICInYWxpZ24nIiwg IidsZWZ0JyIsICIncmlnaHQnIiwgIidjZW50ZXInIiwNCg0KKyAgICAgICAgICAgICInbGluZSci LCAiJ25hbWUnIiwgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCciLA0KDQor ICAgICAgICAgICAgIidpbWFnZSciLCAiJ2xvY2tlZCciLCAiJ3J1bGUnIiwgIidlbmRydWxlJyIs ICIndmFsdWUnIiwgIidyZWFkJyIsDQoNCisgICAgICAgICAgICAiJ3dyaXRlJyIsICIncmVzZXRi dXR0b24nIiwgIidlbmRyZXNldGJ1dHRvbiciLCAiJ2RlZmF1bHRzdG9yZSciLA0KDQorICAgICAg ICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFy c2l6ZSciLCAiJ25hbWV2YWx1ZXZhcnN0b3JlJyIsDQoNCisgICAgICAgICAgICAiJ2FjdGlvbici LCAiJ2NvbmZpZyciLCAiJ2VuZGFjdGlvbiciLCAiJ3JlZnJlc2gnIiwgIidpbnRlcnZhbCciLA0K DQorICAgICAgICAgICAgIid2YXJzdG9yZWRldmljZSciLCAiJ2d1aWRvcCciLCAiJ2VuZGd1aWRv cCciLCAiJ2RhdGF0eXBlJyIsDQoNCisgICAgICAgICAgICAiJ2RhdGEnIiwgIidtb2RhbCciLCAi J05PTl9ERVZJQ0UnIiwgIidESVNLX0RFVklDRSciLCAiJ1ZJREVPX0RFVklDRSciLA0KDQorICAg ICAgICAgICAgIidORVRXT1JLX0RFVklDRSciLCAiJ0lOUFVUX0RFVklDRSciLCAiJ09OQk9BUkRf REVWSUNFJyIsICInT1RIRVJfREVWSUNFJyIsDQoNCisgICAgICAgICAgICAiJ1NFVFVQX0FQUExJ Q0FUSU9OJyIsICInR0VORVJBTF9BUFBMSUNBVElPTiciLCAiJ0ZST05UX1BBR0UnIiwNCg0KKyAg ICAgICAgICAgICInU0lOR0xFX1VTRSciLCAiJ1lFQVJfU1VQUFJFU1MnIiwgIidNT05USF9TVVBQ UkVTUyciLCAiJ0RBWV9TVVBQUkVTUyciLA0KDQorICAgICAgICAgICAgIidIT1VSX1NVUFBSRVNT JyIsICInTUlOVVRFX1NVUFBSRVNTJyIsICInU0VDT05EX1NVUFBSRVNTJyIsDQoNCisgICAgICAg ICAgICAiJ1NUT1JBR0VfTk9STUFMJyIsICInU1RPUkFHRV9USU1FJyIsICInU1RPUkFHRV9XQUtF VVAnIiwgIidVTklRVUUnIiwNCg0KKyAgICAgICAgICAgICInTk9FTVBUWSciLCAiJ2NvbmQnIiwg IidmaW5kJyIsICInbWlkJyIsICIndG9rZW4nIiwgIidzcGFuJyIsDQoNCisgICAgICAgICAgICAi J2R1cCciLCAiJ3ZhcmVxdmFsJyIsICIndmFyJyIsICInaWRlcXZhbCciLCAiJ2lkZXFpZCciLCAi J2lkZXF2YWxsaXN0JyIsDQoNCisgICAgICAgICAgICAiJ3F1ZXN0aW9ucmVmJyIsICIncnVsZXJl ZiciLCAiJ3N0cmluZ3JlZiciLCAiJ3B1c2h0aGlzJyIsICInc2VjdXJpdHknIiwNCg0KKyAgICAg ICAgICAgICInZ2V0JyIsICInVFJVRSciLCAiJ0ZBTFNFJyIsICInT05FJyIsICInT05FUyciLCAi J1pFUk8nIiwgIidVTkRFRklORUQnIiwNCg0KKyAgICAgICAgICAgICInVkVSU0lPTiciLCAiJ2xl bmd0aCciLCAiJ0FORCciLCAiJ09SJyIsICInTk9UJyIsICInc2V0JyIsDQoNCisgICAgICAgICAg ICAiJ34nIiwgIidib29sdmFsJyIsICInc3RyaW5ndmFsJyIsICIndW5pbnR2YWwnIiwgIid0b3Vw cGVyJyIsDQoNCisgICAgICAgICAgICAiJ3RvbG93ZXInIiwgIidtYXRjaCciLCAiJ21hdGNoMici LCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCg0KKyAgICAgICAgICAgICInc3Ry aW5ncmVmdmFsJyIsICInbWFwJyIsICIncmVmcmVzaGd1aWQnIiwgIidTVFJJTkdfVE9LRU4nIiwN Cg0KKyAgICAgICAgICAgICInT1BUSU9OX0RFRkFVTFQnIiwgIidPUFRJT05fREVGQVVMVF9NRkcn IiwgIidOVU1FUklDX1NJWkVfMSciLA0KDQorICAgICAgICAgICAgIidOVU1FUklDX1NJWkVfMici LCAiJ05VTUVSSUNfU0laRV80JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCg0KKyAgICAgICAgICAg ICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlO VF9IRVgnIiwNCg0KKyAgICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJVkUnIiwg IidMQVNUX05PTl9NQVRDSCciLCAiJ0ZJUlNUX05PTl9NQVRDSCciIF0NCg0KKw0KDQorICAgIHN5 bWJvbGljTmFtZXMgPSBbICI8SU5WQUxJRD4iLA0KDQorICAgICAgICAgICAgIkRlZmluZSIsICJJ bmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwNCg0KKyAg ICAgICAgICAgICJPcGVuUGFyZW4iLCAiQ2xvc2VQYXJlbiIsICJPcGVuQnJhY2tldCIsICJDbG9z ZUJyYWNrZXQiLCAiRG90IiwNCg0KKyAgICAgICAgICAgICJOZWdhdGl2ZSIsICJDb2xvbiIsICJT bGFzaCIsICJTZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLA0KDQorICAgICAgICAgICAgIk5v dEVxdWFsIiwgIkxlc3NFcXVhbCIsICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVhdGVyIiwN Cg0KKyAgICAgICAgICAgICJCaXRXaXNlT3IiLCAiQml0V2lzZUFuZCIsICJEZXZpY2VQYXRoIiwg IkZvcm1TZXQiLCAiRm9ybVNldElkIiwNCg0KKyAgICAgICAgICAgICJFbmRGb3JtU2V0IiwgIlRp dGxlIiwgIkZvcm1JZCIsICJPbmVPZiIsICJFbmRPbmVPZiIsICJQcm9tcHQiLA0KDQorICAgICAg ICAgICAgIk9yZGVyZWRMaXN0IiwgIk1heENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3Jt IiwgIkZvcm0iLA0KDQorICAgICAgICAgICAgIkZvcm1NYXAiLCAiTWFwVGl0bGUiLCAiTWFwR3Vp ZCIsICJTdWJ0aXRsZSIsICJFbmRTdWJ0aXRsZSIsDQoNCisgICAgICAgICAgICAiSGVscCIsICJU ZXh0IiwgIk9wdGlvbiIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsDQoNCisg ICAgICAgICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJIb3VyIiwgIk1p bnV0ZSIsICJTZWNvbmQiLA0KDQorICAgICAgICAgICAgIkdyYXlPdXRJZiIsICJMYWJlbCIsICJU aW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFNYXAiLA0KDQorICAgICAgICAgICAgIlN0 cnVjdCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwN Cg0KKyAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVGSV9ISUlfREFURSIs ICJFRklfSElJX1RJTUUiLCAiRUZJX0hJSV9SRUYiLA0KDQorICAgICAgICAgICAgIlV1aWQiLCAi Q2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJpYyIsICJFbmROdW1lcmljIiwNCg0KKyAg ICAgICAgICAgICJNaW5pbXVtIiwgIk1heGltdW0iLCAiU3RlcCIsICJEZWZhdWx0IiwgIlBhc3N3 b3JkIiwgIkVuZFBhc3N3b3JkIiwNCg0KKyAgICAgICAgICAgICJTdHJpbmciLCAiRW5kU3RyaW5n IiwgIk1pblNpemUiLCAiTWF4U2l6ZSIsICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwNCg0KKyAg ICAgICAgICAgICJEaXNhYmxlSWYiLCAiSGlkZGVuIiwgIkdvdG8iLCAiRm9ybVNldEd1aWQiLCAi SW5jb25zaXN0ZW50SWYiLA0KDQorICAgICAgICAgICAgIldhcm5pbmdJZiIsICJOb1N1Ym1pdElm IiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsICJNYW51ZmFjdHVyaW5nRmxhZyIsDQoN CisgICAgICAgICAgICAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVja0JveERlZmF1bHRNZmdG bGFnIiwgIkludGVyYWN0aXZlRmxhZyIsDQoNCisgICAgICAgICAgICAiTlZBY2Nlc3NGbGFnIiwg IlJlc2V0UmVxdWlyZWRGbGFnIiwgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsDQoNCisgICAgICAg ICAgICAiTGF0ZUNoZWNrRmxhZyIsICJSZWFkT25seUZsYWciLCAiT3B0aW9uT25seUZsYWciLCAi UmVzdFN0eWxlRmxhZyIsDQoNCisgICAgICAgICAgICAiQ2xhc3MiLCAiU3ViY2xhc3MiLCAiQ2xh c3NHdWlkIiwgIlR5cGVEZWYiLCAiUmVzdG9yZSIsICJTYXZlIiwNCg0KKyAgICAgICAgICAgICJE ZWZhdWx0cyIsICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJSaWdodCIsICJDZW50ZXIiLCAi TGluZSIsDQoNCisgICAgICAgICAgICAiTmFtZSIsICJWYXJJZCIsICJRdWVzdGlvbiIsICJRdWVz dGlvbklkIiwgIkltYWdlIiwgIkxvY2tlZCIsDQoNCisgICAgICAgICAgICAiUnVsZSIsICJFbmRS dWxlIiwgIlZhbHVlIiwgIlJlYWQiLCAiV3JpdGUiLCAiUmVzZXRCdXR0b24iLA0KDQorICAgICAg ICAgICAgIkVuZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRyaWJ1dGUiLCAiVmFy c3RvcmUiLCAiRWZpdmFyc3RvcmUiLA0KDQorICAgICAgICAgICAgIlZhclNpemUiLCAiTmFtZVZh bHVlVmFyU3RvcmUiLCAiQWN0aW9uIiwgIkNvbmZpZyIsICJFbmRBY3Rpb24iLA0KDQorICAgICAg ICAgICAgIlJlZnJlc2giLCAiSW50ZXJ2YWwiLCAiVmFyc3RvcmVEZXZpY2UiLCAiR3VpZE9wIiwg IkVuZEd1aWRPcCIsDQoNCisgICAgICAgICAgICAiRGF0YVR5cGUiLCAiRGF0YSIsICJNb2RhbCIs ICJDbGFzc05vbkRldmljZSIsICJDbGFzc0Rpc2tEZXZpY2UiLA0KDQorICAgICAgICAgICAgIkNs YXNzVmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXREZXZpY2Ui LA0KDQorICAgICAgICAgICAgIkNsYXNzT25Cb2FyZERldmljZSIsICJDbGFzc090aGVyRGV2aWNl IiwgIlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiIsDQoNCisgICAgICAgICAgICAiU3ViY2xhc3NH ZW5lcmFsQXBwbGljYXRpb24iLCAiU3ViY2xhc3NGcm9udFBhZ2UiLCAiU3ViY2xhc3NTaW5nbGVV c2UiLA0KDQorICAgICAgICAgICAgIlllYXJTdXBwcHJlc3NGbGFnIiwgIk1vbnRoU3VwcHJlc3NG bGFnIiwgIkRheVN1cHByZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAiSG91clN1cHBwcmVzc0Zs YWciLCAiTWludXRlU3VwcHJlc3NGbGFnIiwgIlNlY29uZFN1cHByZXNzRmxhZyIsDQoNCisgICAg ICAgICAgICAiU3RvcmFnZU5vcm1hbEZsYWciLCAiU3RvcmFnZVRpbWVGbGFnIiwgIlN0b3JhZ2VX YWtlVXBGbGFnIiwNCg0KKyAgICAgICAgICAgICJVbmlRdWVGbGFnIiwgIk5vRW1wdHlGbGFnIiwg IkNvbmQiLCAiRmluZCIsICJNaWQiLCAiVG9rIiwgIlNwYW4iLA0KDQorICAgICAgICAgICAgIkR1 cCIsICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3Qi LA0KDQorICAgICAgICAgICAgIlF1ZXN0aW9uUmVmIiwgIlJ1bGVSZWYiLCAiU3RyaW5nUmVmIiwg IlB1c2hUaGlzIiwgIlNlY3VyaXR5IiwNCg0KKyAgICAgICAgICAgICJHZXQiLCAiVHJ1ZVN5bWJv bCIsICJGYWxzZVN5bWJvbCIsICJPbmUiLCAiT25lcyIsICJaZXJvIiwgIlVuZGVmaW5lZCIsDQoN CisgICAgICAgICAgICAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5PVCIsICJT ZXQiLCAiQml0V2lzZU5vdCIsDQoNCisgICAgICAgICAgICAiQm9vbFZhbCIsICJTdHJpbmdWYWwi LCAiVW5JbnRWYWwiLCAiVG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwNCg0KKyAgICAgICAg ICAgICJNYXRjaDIiLCAiQ2F0ZW5hdGUiLCAiUXVlc3Rpb25SZWZWYWwiLCAiU3RyaW5nUmVmVmFs IiwgIk1hcCIsDQoNCisgICAgICAgICAgICAiUmVmcmVzaEd1aWQiLCAiU3RyaW5nVG9rZW4iLCAi T3B0aW9uRGVmYXVsdCIsICJPcHRpb25EZWZhdWx0TWZnIiwNCg0KKyAgICAgICAgICAgICJOdW1l cmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1lcmljU2l6ZUZvdXIiLCAiTnVtZXJp Y1NpemVFaWdodCIsDQoNCisgICAgICAgICAgICAiRGlzUGxheUludERlYyIsICJEaXNQbGF5VUlu dERlYyIsICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsDQoNCisgICAgICAgICAgICAi U2Vuc2l0aXZlIiwgIkxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJT dHJpbmdJZGVudGlmaWVyIiwNCg0KKyAgICAgICAgICAgICJDb21wbGV4RGVmaW5lIiwgIkxpbmVE ZWZpbml0aW9uIiwgIkluY2x1ZGVEZWZpbml0aW9uIiwgIldoaXRlc3BhY2UiLA0KDQorICAgICAg ICAgICAgIk5ld2xpbmUiLCAiTGluZUNvbW1lbnQiLCAiRXh0ZXJuIiBdDQoNCisNCg0KKyAgICBy dWxlTmFtZXMgPSBbICJUX18wIiwgIlRfXzEiLCAiVF9fMiIsICJUX18zIiwgIlRfXzQiLCAiVF9f NSIsICJUX182IiwNCg0KKyAgICAgICAgICAgICAgICAgICJUX183IiwgIlRfXzgiLCAiVF9fOSIs ICJUX18xMCIsICJUX18xMSIsICJUX18xMiIsICJUX18xMyIsDQoNCisgICAgICAgICAgICAgICAg ICAiVF9fMTQiLCAiVF9fMTUiLCAiRGVmaW5lIiwgIkluY2x1ZGUiLCAiRm9ybVBrZ1R5cGUiLA0K DQorICAgICAgICAgICAgICAgICAgIk9wZW5CcmFjZSIsICJDbG9zZUJyYWNlIiwgIk9wZW5QYXJl biIsICJDbG9zZVBhcmVuIiwNCg0KKyAgICAgICAgICAgICAgICAgICJPcGVuQnJhY2tldCIsICJD bG9zZUJyYWNrZXQiLCAiRG90IiwgIk5lZ2F0aXZlIiwgIkNvbG9uIiwNCg0KKyAgICAgICAgICAg ICAgICAgICJTbGFzaCIsICJTZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLCAiTm90RXF1YWwi LCAiTGVzc0VxdWFsIiwNCg0KKyAgICAgICAgICAgICAgICAgICJMZXNzIiwgIkdyZWF0ZXJFcXVh bCIsICJHcmVhdGVyIiwgIkJpdFdpc2VPciIsICJCaXRXaXNlQW5kIiwNCg0KKyAgICAgICAgICAg ICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQiLCAiRm9ybVNldElkIiwgIkVuZEZvcm1TZXQi LCAiVGl0bGUiLA0KDQorICAgICAgICAgICAgICAgICAgIkZvcm1JZCIsICJPbmVPZiIsICJFbmRP bmVPZiIsICJQcm9tcHQiLCAiT3JkZXJlZExpc3QiLA0KDQorICAgICAgICAgICAgICAgICAgIk1h eENvbnRhaW5lcnMiLCAiRW5kTGlzdCIsICJFbmRGb3JtIiwgIkZvcm0iLCAiRm9ybU1hcCIsDQoN CisgICAgICAgICAgICAgICAgICAiTWFwVGl0bGUiLCAiTWFwR3VpZCIsICJTdWJ0aXRsZSIsICJF bmRTdWJ0aXRsZSIsICJIZWxwIiwNCg0KKyAgICAgICAgICAgICAgICAgICJUZXh0IiwgIk9wdGlv biIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsDQoNCisgICAgICAgICAgICAg ICAgICAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLCAiRW5kVGltZSIsICJIb3VyIiwgIk1pbnV0ZSIs ICJTZWNvbmQiLA0KDQorICAgICAgICAgICAgICAgICAgIkdyYXlPdXRJZiIsICJMYWJlbCIsICJU aW1lb3V0IiwgIkludmVudG9yeSIsICJOb25OdkRhdGFNYXAiLA0KDQorICAgICAgICAgICAgICAg ICAgIlN0cnVjdCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVpbnQ2NCIsICJVaW50MzIiLCAiVWlu dDE2IiwNCg0KKyAgICAgICAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5HX0lEIiwgIkVG SV9ISUlfREFURSIsICJFRklfSElJX1RJTUUiLA0KDQorICAgICAgICAgICAgICAgICAgIkVGSV9I SUlfUkVGIiwgIlV1aWQiLCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJpYyIsDQoN CisgICAgICAgICAgICAgICAgICAiRW5kTnVtZXJpYyIsICJNaW5pbXVtIiwgIk1heGltdW0iLCAi U3RlcCIsICJEZWZhdWx0IiwNCg0KKyAgICAgICAgICAgICAgICAgICJQYXNzd29yZCIsICJFbmRQ YXNzd29yZCIsICJTdHJpbmciLCAiRW5kU3RyaW5nIiwgIk1pblNpemUiLA0KDQorICAgICAgICAg ICAgICAgICAgIk1heFNpemUiLCAiRW5jb2RpbmciLCAiU3VwcHJlc3NJZiIsICJEaXNhYmxlSWYi LCAiSGlkZGVuIiwNCg0KKyAgICAgICAgICAgICAgICAgICJHb3RvIiwgIkZvcm1TZXRHdWlkIiwg IkluY29uc2lzdGVudElmIiwgIldhcm5pbmdJZiIsDQoNCisgICAgICAgICAgICAgICAgICAiTm9T dWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLCAiTWFudWZhY3R1cmluZ0Zs YWciLA0KDQorICAgICAgICAgICAgICAgICAgIkNoZWNrQm94RGVmYXVsdEZsYWciLCAiQ2hlY2tC b3hEZWZhdWx0TWZnRmxhZyIsICJJbnRlcmFjdGl2ZUZsYWciLA0KDQorICAgICAgICAgICAgICAg ICAgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVkRmxhZyIsICJSZWNvbm5lY3RSZXF1aXJl ZEZsYWciLA0KDQorICAgICAgICAgICAgICAgICAgIkxhdGVDaGVja0ZsYWciLCAiUmVhZE9ubHlG bGFnIiwgIk9wdGlvbk9ubHlGbGFnIiwgIlJlc3RTdHlsZUZsYWciLA0KDQorICAgICAgICAgICAg ICAgICAgIkNsYXNzIiwgIlN1YmNsYXNzIiwgIkNsYXNzR3VpZCIsICJUeXBlRGVmIiwgIlJlc3Rv cmUiLA0KDQorICAgICAgICAgICAgICAgICAgIlNhdmUiLCAiRGVmYXVsdHMiLCAiQmFubmVyIiwg IkFsaWduIiwgIkxlZnQiLCAiUmlnaHQiLA0KDQorICAgICAgICAgICAgICAgICAgIkNlbnRlciIs ICJMaW5lIiwgIk5hbWUiLCAiVmFySWQiLCAiUXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIsDQoNCisg ICAgICAgICAgICAgICAgICAiSW1hZ2UiLCAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVsZSIsICJW YWx1ZSIsICJSZWFkIiwNCg0KKyAgICAgICAgICAgICAgICAgICJXcml0ZSIsICJSZXNldEJ1dHRv biIsICJFbmRSZXNldEJ1dHRvbiIsICJEZWZhdWx0U3RvcmUiLA0KDQorICAgICAgICAgICAgICAg ICAgIkF0dHJpYnV0ZSIsICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXplIiwgIk5h bWVWYWx1ZVZhclN0b3JlIiwNCg0KKyAgICAgICAgICAgICAgICAgICJBY3Rpb24iLCAiQ29uZmln IiwgIkVuZEFjdGlvbiIsICJSZWZyZXNoIiwgIkludGVydmFsIiwNCg0KKyAgICAgICAgICAgICAg ICAgICJWYXJzdG9yZURldmljZSIsICJHdWlkT3AiLCAiRW5kR3VpZE9wIiwgIkRhdGFUeXBlIiwg IkRhdGEiLA0KDQorICAgICAgICAgICAgICAgICAgIk1vZGFsIiwgIkNsYXNzTm9uRGV2aWNlIiwg IkNsYXNzRGlza0RldmljZSIsICJDbGFzc1ZpZGVvRGV2aWNlIiwNCg0KKyAgICAgICAgICAgICAg ICAgICJDbGFzc05ldHdvcmtEZXZpY2UiLCAiQ2xhc3NJbnB1dERldmljZSIsICJDbGFzc09uQm9h cmREZXZpY2UiLA0KDQorICAgICAgICAgICAgICAgICAgIkNsYXNzT3RoZXJEZXZpY2UiLCAiU3Vi Y2xhc3NTZXR1cEFwcGxpY2F0aW9uIiwgIlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uIiwNCg0K KyAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0Zyb250UGFnZSIsICJTdWJjbGFzc1NpbmdsZVVz ZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAiTW9udGhTdXBw cmVzc0ZsYWciLCAiRGF5U3VwcHJlc3NGbGFnIiwgIkhvdXJTdXBwcHJlc3NGbGFnIiwNCg0KKyAg ICAgICAgICAgICAgICAgICJNaW51dGVTdXBwcmVzc0ZsYWciLCAiU2Vjb25kU3VwcHJlc3NGbGFn IiwgIlN0b3JhZ2VOb3JtYWxGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICJTdG9yYWdlVGlt ZUZsYWciLCAiU3RvcmFnZVdha2VVcEZsYWciLCAiVW5pUXVlRmxhZyIsDQoNCisgICAgICAgICAg ICAgICAgICAiTm9FbXB0eUZsYWciLCAiQ29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2siLCAiU3Bh biIsICJEdXAiLA0KDQorICAgICAgICAgICAgICAgICAgIlZhckVxVmFsIiwgIlZhciIsICJJZEVx VmFsIiwgIklkRXFJZCIsICJJZEVxVmFsTGlzdCIsDQoNCisgICAgICAgICAgICAgICAgICAiUXVl c3Rpb25SZWYiLCAiUnVsZVJlZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAiU2VjdXJpdHki LA0KDQorICAgICAgICAgICAgICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9s IiwgIk9uZSIsICJPbmVzIiwgIlplcm8iLA0KDQorICAgICAgICAgICAgICAgICAgIlVuZGVmaW5l ZCIsICJWZXJzaW9uIiwgIkxlbmd0aCIsICJBTkQiLCAiT1IiLCAiTk9UIiwNCg0KKyAgICAgICAg ICAgICAgICAgICJTZXQiLCAiQml0V2lzZU5vdCIsICJCb29sVmFsIiwgIlN0cmluZ1ZhbCIsICJV bkludFZhbCIsDQoNCisgICAgICAgICAgICAgICAgICAiVG9VcHBlciIsICJUb0xvd2VyIiwgIk1h dGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsICJRdWVzdGlvblJlZlZhbCIsDQoNCisgICAgICAg ICAgICAgICAgICAiU3RyaW5nUmVmVmFsIiwgIk1hcCIsICJSZWZyZXNoR3VpZCIsICJTdHJpbmdU b2tlbiIsICJPcHRpb25EZWZhdWx0IiwNCg0KKyAgICAgICAgICAgICAgICAgICJPcHRpb25EZWZh dWx0TWZnIiwgIk51bWVyaWNTaXplT25lIiwgIk51bWVyaWNTaXplVHdvIiwNCg0KKyAgICAgICAg ICAgICAgICAgICJOdW1lcmljU2l6ZUZvdXIiLCAiTnVtZXJpY1NpemVFaWdodCIsICJEaXNQbGF5 SW50RGVjIiwNCg0KKyAgICAgICAgICAgICAgICAgICJEaXNQbGF5VUludERlYyIsICJEaXNQbGF5 VUludEhleCIsICJJbnNlbnNpdGl2ZSIsICJTZW5zaXRpdmUiLA0KDQorICAgICAgICAgICAgICAg ICAgIkxhc3ROb25NYXRjaCIsICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJpbmdJZGVu dGlmaWVyIiwNCg0KKyAgICAgICAgICAgICAgICAgICJDb21wbGV4RGVmaW5lIiwgIkxpbmVEZWZp bml0aW9uIiwgIkluY2x1ZGVEZWZpbml0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAgICJXaGl0 ZXNwYWNlIiwgIk5ld2xpbmUiLCAiTGluZUNvbW1lbnQiLCAiRXh0ZXJuIiBdDQoNCisNCg0KKyAg ICBncmFtbWFyRmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYsIGlucHV0PU5vbmUsIG91dHB1dDpUZXh0SU8gPSBzeXMuc3Rkb3V0KToNCg0KKyAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbnB1dCwgb3V0cHV0KQ0KDQorICAgICAgICBzZWxmLmNo ZWNrVmVyc2lvbigiNC43LjIiKQ0KDQorICAgICAgICBzZWxmLl9pbnRlcnAgPSBMZXhlckFUTlNp bXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwgUHJlZGljdGlvbkNv bnRleHRDYWNoZSgpKQ0KDQorICAgICAgICBzZWxmLl9hY3Rpb25zID0gTm9uZQ0KDQorICAgICAg ICBzZWxmLl9wcmVkaWNhdGVzID0gTm9uZQ0KDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2VyLnB5IGIvQmFzZVRvb2xzL1NvdXJj ZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2VyLnB5DQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uYjZhZjIxYjc5NQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4UGFyc2VyLnB5DQpA QCAtMCwwICsxLDIwNDYwIEBADQorIyBHZW5lcmF0ZWQgZnJvbSBWZnJTeW50YXguZzQgYnkgQU5U TFIgNC43LjINCg0KKyMgZW5jb2Rpbmc6IHV0Zi04DQoNCitmcm9tIGFudGxyNCBpbXBvcnQgKg0K DQorZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8NCg0KK2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8N Cg0KK2ltcG9ydCBzeXMNCg0KKw0KDQorDQoNCisNCg0KK2Zyb20gVmZyQ29tcGlsZXIuQ29tbW9u Q3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cgaW1wb3J0ICoN Cg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRpbGl0eSBpbXBvcnQgKg0KDQorZnJvbSBWZnJDb21w aWxlci5WZnJUcmVlIGltcG9ydCAqDQoNCisNCg0KKw0KDQorZGVmIHNlcmlhbGl6ZWRBVE4oKToN Cg0KKyAgICB3aXRoIFN0cmluZ0lPKCkgYXMgYnVmOg0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHU2MDhiXHVhNzJhXHU4MTMzXHViOWVkXHU0MTdjXHUzYmU3XHU3Nzg2XHU1OTY0XDNcdTAxMDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGJhM1w0XDJcdFwyXDRcM1x0XDNcNFw0XHRcNFw0 XDVcdFw1XDRcNlx0XDZcNFw3XHRcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcYlx0XGJc NFx0XHRcdFw0XG5cdFxuXDRcMTNcdFwxM1w0XGZcdFxmXDRcclx0XHJcNFwxNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHRcMTZcNFwxN1x0XDE3XDRcMjBcdFwyMFw0XDIxXHRcMjFcNFwyMlx0 XDIyXDRcMjNcdFwyMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMjRcdFwyNFw0XDI1XHRc MjVcNFwyNlx0XDI2XDRcMjdcdFwyN1w0XDMwXHRcMzBcNFwzMSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHRcMzFcNFwzMlx0XDMyXDRcMzNcdFwzM1w0XDM0XHRcMzRcNFwzNVx0XDM1XDRcMzZc dFwzNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzdcdFwzN1w0IFx0IFw0IVx0IVw0XCJc dFwiXDQjXHQjXDQkXHQkXDQlXHQlXDQmXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiZcNFwn XHRcJ1w0KFx0KFw0KVx0KVw0Klx0Klw0K1x0K1w0LFx0LFw0LVx0LVw0Llx0Llw0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCIvXHQvXDRcNjBcdFw2MFw0XDYxXHRcNjFcNFw2Mlx0XDYyXDRcNjNc dFw2M1w0XDY0XHRcNjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XDY1XHRcNjVcNFw2Nlx0 XDY2XDRcNjdcdFw2N1w0OFx0OFw0OVx0OVw0Olx0Olw0O1x0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCI7XDQ8XHQ8XDQ9XHQ9XDQ+XHQ+XDQ/XHQ/XDRAXHRAXDRBXHRBXDRCXHRCXDRDXHRDXDRE XHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkRcNEVcdEVcNEZcdEZcNEdcdEdcNEhcdEhcNElc dElcNEpcdEpcNEtcdEtcNExcdExcNE1cdCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiTVw0Tlx0 Tlw0T1x0T1w0UFx0UFw0UVx0UVw0Ulx0Ulw0U1x0U1w0VFx0VFw0VVx0VVw0Vlx0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJWXDRXXHRXXDRYXHRYXDRZXHRZXDRaXHRaXDRbXHRbXDRcXFx0XFxc NF1cdF1cNF5cdF5cNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiX1x0X1w0YFx0YFw0YVx0YVw0 Ylx0Ylw0Y1x0Y1w0ZFx0ZFw0ZVx0ZVw0Zlx0Zlw0Z1x0Z1w0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJoXHRoXDRpXHRpXDRqXHRqXDRrXHRrXDRsXHRsXDRtXHRtXDRuXHRuXDRvXHRvXDRwXHRw XDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoInFcdHFcNHJcdHJcNHNcdHNcNHRcdHRcNHVcdHVc NHZcdHZcNHdcdHdcNHhcdHhcNHlcdHlcNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgielx0elw0 e1x0e1w0fFx0fFw0fVx0fVw0flx0flw0XDE3N1x0XDE3N1w0XHUwMDgwXHRcdTAwODAiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw0XHUwMDgxXHRcdTAwODFcNFx1MDA4Mlx0XHUwMDgyXDRcdTAw ODNcdFx1MDA4M1w0XHUwMDg0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDA4NFw0XHUw MDg1XHRcdTAwODVcNFx1MDA4Nlx0XHUwMDg2XDRcdTAwODdcdFx1MDA4NyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDRcdTAwODhcdFx1MDA4OFw0XHUwMDg5XHRcdTAwODlcNFx1MDA4YVx0XHUw MDhhXDRcdTAwOGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMDhiXDRcdTAwOGNcdFx1 MDA4Y1w0XHUwMDhkXHRcdTAwOGRcNFx1MDA4ZVx0XHUwMDhlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNFx1MDA4Zlx0XHUwMDhmXDRcdTAwOTBcdFx1MDA5MFw0XHUwMDkxXHRcdTAwOTFcNFx1 MDA5MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwOTJcNFx1MDA5M1x0XHUwMDkzXDRc dTAwOTRcdFx1MDA5NFw0XHUwMDk1XHRcdTAwOTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0 XHUwMDk2XHRcdTAwOTZcNFx1MDA5N1x0XHUwMDk3XDRcdTAwOThcdFx1MDA5OFw0XHUwMDk5IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDA5OVw0XHUwMDlhXHRcdTAwOWFcNFx1MDA5Ylx0 XHUwMDliXDRcdTAwOWNcdFx1MDA5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwOWRc dFx1MDA5ZFw0XHUwMDllXHRcdTAwOWVcNFx1MDA5Zlx0XHUwMDlmXDRcdTAwYTAiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx0XHUwMGEwXDRcdTAwYTFcdFx1MDBhMVw0XHUwMGEyXHRcdTAwYTJc NFx1MDBhM1x0XHUwMGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBhNFx0XHUwMGE0 XDRcdTAwYTVcdFx1MDBhNVw0XHUwMGE2XHRcdTAwYTZcNFx1MDBhNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHRcdTAwYTdcNFx1MDBhOFx0XHUwMGE4XDRcdTAwYTlcdFx1MDBhOVw0XHUwMGFh XHRcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw0XHUwMGFiXHRcdTAwYWJcNFx1MDBh Y1x0XHUwMGFjXDRcdTAwYWRcdFx1MDBhZFw0XHUwMGFlIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdFx1MDBhZVw0XHUwMGFmXHRcdTAwYWZcNFx1MDBiMFx0XHUwMGIwXDRcdTAwYjFcdFx1MDBi MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDRcdTAwYjJcdFx1MDBiMlw0XHUwMGIzXHRcdTAw YjNcNFx1MDBiNFx0XHUwMGI0XDRcdTAwYjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUw MGI1XDRcdTAwYjZcdFx1MDBiNlw0XHUwMGI3XHRcdTAwYjdcNFx1MDBiOFx0XHUwMGI4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcNFx1MDBiOVx0XHUwMGI5XDRcdTAwYmFcdFx1MDBiYVw0XHUw MGJiXHRcdTAwYmJcNFx1MDBiYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwYmNcNFx1 MDBiZFx0XHUwMGJkXDRcdTAwYmVcdFx1MDBiZVw0XHUwMGJmXHRcdTAwYmYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw0XHUwMGMwXHRcdTAwYzBcNFx1MDBjMVx0XHUwMGMxXDRcdTAwYzJcdFx1 MDBjMlw0XHUwMGMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFx1MDBjM1w0XHUwMGM0XHRc dTAwYzRcNFx1MDBjNVx0XHUwMGM1XDRcdTAwYzZcdFx1MDBjNiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDRcdTAwYzdcdFx1MDBjN1w0XHUwMGM4XHRcdTAwYzhcNFx1MDBjOVx0XHUwMGM5XDRc dTAwY2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx0XHUwMGNhXDRcdTAwY2JcdFx1MDBjYlwz XDJcM1wyXDNcMlw3XDJcdTAxOWFcblwyXGZcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE2 XDJcdTAxOWRcMTNcMlwzXDJcM1wyXDNcM1wzXDNcM1w0XDNcNFwzXDRcNVw0XHUwMWE2IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcblw0XDNcNFwzXDRcNVw0XHUwMWFhXG5cNFwzXDVcNVw1XHUw MWFkXG5cNVwzXDZcM1w2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2XDNcNlwzXDZcM1w2 XDVcNlx1MDFiNVxuXDZcM1w2XDNcNlwzXDdcNVw3XHUwMWJhXG5cNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcN1wzXDdcNVw3XHUwMWJlXG5cN1wzXDdcNVw3XHUwMWMxXG5cN1wzXDdcM1w3 XDNcN1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1w1XDdcdTAxYzdcblw3XDNcN1wzXDdc M1xiXDVcYlx1MDFjY1xuXGJcM1xiXDNcYlw1XGIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDFkMFxuXGJcM1xiXDVcYlx1MDFkM1xuXGJcM1xiXDNcYlwzXGJcM1xiXDVcYlx1MDFkOSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXG5cYlwzXGJcM1xiXDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0 XDNcdFwzXHRcM1x0XDNcdFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdFwzXHRcM1x0XDNc dFw3XHRcdTAxZWJcblx0XGZcdFwxNlx0XHUwMWVlXDEzXHRcM1xuXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlxuXDNcblwzXG5cM1xuXDVcblx1MDFmNVxuXG5cM1xuXDNcblwzXDEzXDNcMTNc M1wxM1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTNcM1wxM1w1XDEzXHUwMWZlXG5cMTNc M1wxM1wzXDEzXDNcZlwzXGZcM1xmXDNcZlwzXGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1 XGZcdTAyMDdcblxmXDNcZlwzXGZcM1xyXDNcclwzXHJcM1xyXDNcclw1XHJcdTAyMTBcbiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHJcM1xyXDNcclwzXDE2XDNcMTZcM1wxNlwzXDE2XDNcMTZc NVwxNlx1MDIxOVxuXDE2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxNlwzXDE2XDNcMTdc M1wxN1wzXDE3XDNcMTdcM1wxN1w1XDE3XHUwMjIyXG5cMTdcM1wxNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMTdcM1wyMFwzXDIwXDNcMjBcM1wyMFwzXDIwXDVcMjBcdTAyMmJcblwyMFwz XDIwXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyMFwzXDIxXDNcMjFcM1wyMVwzXDIxXDNc MjFcNVwyMVx1MDIzNFxuXDIxXDNcMjFcM1wyMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MjJcM1wyMlwzXDIyXDNcMjJcM1wyMlw1XDIyXHUwMjNkXG5cMjJcM1wyMlwzXDIyXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDVcMjNcdTAyNDZcblwy M1wzXDIzXDNcMjNcM1wyNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMjRcNVwyNFx1MDI0 Y1xuXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNVwzXDI1XDUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyNVx1MDI1NFxuXDI1XDNcMjVcM1wyNVwzXDI1XDNcMjVcM1wyNlwzXDI2XDVcMjZc dTAyNWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuXDI2XDNcMjZcM1wyNlwzXDI2XDNcMjZc M1wyN1wzXDI3XDVcMjdcdTAyNjRcblwyN1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMjdc M1wyN1wzXDI3XDNcMjdcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wz MFwzXDMwXDNcMzBcM1wzMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcM1wzMFwzXDMw XDNcMzBcM1wzMFwzXDMwXDVcMzBcdTAyODJcblwzMFwzXDMwXDMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzMFwzXDMwXDNcMzBcM1wzMFw1XDMwXHUwMjg5XG5cMzBcM1wzMFwzXDMwXDNcMzBc M1wzMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzBcNVwzMFx1MDI5MFxuXDMwXDNcMzBc M1wzMFwzXDMwXDNcMzBcM1wzMVwzXDMxXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVw1 XDMxXHUwMjk5XG5cMzFcM1wzMVwzXDMxXDVcMzFcdTAyOWRcblwzMVwzXDMxXDNcMzEiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw1XDMxXHUwMmExXG5cMzFcM1wzMlwzXDMyXDNcMzJcN1wzMlx1 MDJhNlxuXDMyXGZcMzJcMTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMlx1MDJhOVwxM1wz MlwzXDMzXDNcMzNcM1wzNFwzXDM0XDNcMzVcN1wzNVx1MDJiMFxuIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMzVcZlwzNVwxNlwzNVx1MDJiM1wxM1wzNVwzXDM2XDNcMzZcM1wzNlwzXDM2XDNc MzZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDM2XDNcMzZcM1wzNlwzXDM2XDNcMzZcNVwz Nlx1MDJiZlxuXDM2XDNcMzdcM1wzN1wzXDM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wz N1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1w1XDM3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyY2VcblwzN1wzXDM3XDNcMzdcMyBcMyBcMyBcMyBcMyBc MyBcMyBcMyBcMyBcMyBcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIFwzIFwzIFwzIFwzIFwz IFwzIFw1IFx1MDJlM1xuIFwzIFwzIFwzIFwzIFw1IFx1MDJlOVxuIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCIgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMgXDMhXDMhXDMhXDMhXDMhXDMhXDMh XDMhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFc NSFcdTAzMDVcbiFcMyFcMyFcMyFcMyFcNSFcdTAzMGIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlxuIVwzIVwzIVwzIVwzIVwzIVw3IVx1MDMxMlxuIVxmIVwxNiFcdTAzMTVcMTMhXDMhXDMhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFcMyFc MyFcMyFcMyFcNSFcdTAzMjdcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIVwzIVwzIVwzIVwz IVwzIVwzXCJcM1wiXDMjXDMjXDMjXDMjXDMjXDMjXDMjXDUjXHUwMzM3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcbiNcMyNcMyNcMyNcMyNcMyNcMyNcMyNcNiNcdTAzNDBcbiNcciNcMTYjXHUw MzQxXDMjXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIiNcMyNcMyNcMyNcMyRcMyRcMyRcMyRc MyRcMyRcMyRcMyVcMyVcMyVcMyVcMyVcMyVcMyVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi JlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzXCdcM1wnIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wz XCdcM1wnXDVcJ1x1MDM3M1xuXCciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXCdcM1wnXDMo XDMoXDMoXDMoXDMoXDMpXDMpXDMpXDMqXDMqXDMqXDMqXDUqXHUwMzgzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcbipcMypcMypcMypcMypcMypcNSpcdTAzOGFcbipcMypcMypcMypcMypcNSpc dTAzOTBcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiKlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wz K1wzK1wzK1wzK1wzK1wzK1wzK1wzLFwzLFwzLFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIs XDMsXDMsXDMsXDMsXDUsXHUwM2E4XG4sXDMtXDMtXDMtXDMtXDMtXDMtXDMtXDctXHUwM2IxIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcbi1cZi1cMTYtXHUwM2I0XDEzLVw1LVx1MDNiNlxuLVwz Llw1Llx1MDNiOVxuLlwzLlwzLiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMuXDMuXDMuXDMu XDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIi5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5cMy5c Ny5cdTAzZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxuLlxmLlwxNi5cdTAzZTFcMTMuXDMu XDUuXHUwM2U0XG4uXDMvXDMvXDMvXDMvXDMvXDMvIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc My9cM1w2MFwzXDYwXDNcNjFcM1w2MVw1XDYxXHUwM2YxXG5cNjFcM1w2MlwzXDYyXDNcNjIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XDYyXHUwM2Y2XG5cNjJcZlw2MlwxNlw2Mlx1MDNmOVwx M1w2MlwzXDYzXDNcNjNcM1w2MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcNjNcM1w2M1wz XDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcN1w2MyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNDA4XG5cNjNcZlw2M1wxNlw2M1x1MDQwYlwxM1w2M1wzXDYzXDNcNjNc M1w2M1wzXDY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcM1w2NFwz XDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1w2NFwzXDY0XDNcNjRcNVw2NFx1MDQxZlxuXDY0XDNcNjVcM1w2NVwzXDY1XDNcNjVcMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1 XDNcNjVcM1w2NVwzXDY1XDNcNjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDY1XDNcNjVc N1w2NVx1MDQzMlxuXDY1XGZcNjVcMTZcNjVcdTA0MzVcMTNcNjVcM1w2NSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcNjVcdTA0Mzhcblw2NVxmXDY1XDE2XDY1XHUwNDNiXDEzXDY1XDNcNjVc M1w2NVwzXDY1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NlwzXDY2XDNcNjZcM1w2N1wz XDY3XDNcNjdcMzhcMzhcMzhcMzhcMzhcMzhcMzhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi OVwzOVwzOVw1OVx1MDQ1MFxuOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlw1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCI6XHUwNDVkXG46XDM6XDM6XDU6XHUwNDYxXG46XDM6XDM6 XDM6XDU6XHUwNDY2XG46XDM6XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIjpcNzpcdTA0NmFc bjpcZjpcMTY6XHUwNDZkXDEzOlw1Olx1MDQ2ZlxuOlwzOlwzOlw1Olx1MDQ3MyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXG46XDM7XDM7XDU7XHUwNDc3XG47XDM8XDM8XDM8XDc8XHUwNDdjXG48 XGY8XDE2PFx1MDQ3ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEzPFwzPVwzPVwzPlwzPlwz PlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzPlwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCI+XDM+XDM+XDM+XDM+XDM+XDM+XDU+XHUwNDk4XG4+XDM+XDM+XDM+XDM+XDM+XDM+XDc+ XHUwNGEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbj5cZj5cMTY+XHUwNGEzXDEzPlwzPlwz PlwzPlwzPlwzPlw1Plx1MDRhYVxuPlwzPlwzPiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDU+ XHUwNGFlXG4+XDM+XDM+XDM/XDM/XDU/XHUwNGI0XG4/XDNAXDNAXDVAXHUwNGI4XG4iKQ0KDQor ICAgICAgICBidWYud3JpdGUoIkBcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0FcM0Fc M0FcM0FcM0FcM0FcM0FcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQVwzQVwzQVwzQVwzQVwz QVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDVBXHUwNGU2XG5BXDNBXDNBXDVBXHUw NGVhXG4iKQ0KDQorICAgICAgICBidWYud3JpdGUoIkFcM0FcM0FcM0FcM0FcM0FcNUFcdTA0ZjFc bkFcM0FcM0FcM0FcM0FcNUFcdTA0ZjdcbkFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiQVwz QVw1QVx1MDRmYlxuQVwzQVwzQVwzQlwzQlwzQlw3Qlx1MDUwMlxuQlxmQlwxNkJcdTA1MDUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwxM0JcM0NcM0NcNUNcdTA1MDlcbkNcM0RcM0RcM0RcM0Rc M0RcM0RcM0RcM0RcM0RcM0RcNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiRFx1MDUxNVxuRFwz RFwzRFwzRFwzRVwzRVwzRVwzRVwzRVwzRVw1RVx1MDUyMFxuRVwzRlwzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDNGXDVGXHUwNTJkXG5GXDNHXDNH XDNHXDNHXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkdcM0dcM0dcM0dcM0dcM0dcM0dcM0dc M0dcN0dcdTA1M2NcbkdcZkdcMTZHXHUwNTNmXDEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJH XDNHXDNHXDVHXHUwNTQzXG5HXDNHXDNHXDNHXDVHXHUwNTQ4XG5HXDNIXDNIXDNIXDNIXDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIkhcM0hcM0hcM0hcM0hcM0hcM0hcM0hcM0hcN0hcdTA1NTdc bkhcZkhcMTZIXHUwNTVhXDEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJIXDNIXDNIXDVIXHUw NTVlXG5IXDNIXDNIXDNIXDVIXHUwNTYzXG5IXDNJXDNJXDNJXDNJXDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIklcM0lcNUlcdTA1NmJcbklcM0pcM0pcM0pcM0pcM0pcM0tcM0tcM0tcM0tcM0tc M0tcM0tcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiS1wzTFwzTFwzTFwzTFwzTFwzTVwzTVwz TVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVw1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJN XHUwNThiXG5NXDNNXDNNXDNNXDVNXHUwNTkwXG5NXDNOXDdOXHUwNTkzXG5OXGZOXDE2TiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTk2XDEzTlwzT1wzT1wzT1wzT1wzT1wzT1wzT1w1T1x1 MDU5ZlxuT1wzUFwzUFwzUFwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQXDNQXDNQXDNQXDNQ XDVQXHUwNWE5XG5QXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDdRXHUwNWIzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcblFcZlFcMTZRXHUwNWI2XDEzUVwzUVwzUVw1UVx1MDViYVxuUVwzUVwz UVwzUVw1UVx1MDViZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5RXDNSXDNSXDNSXDNSXDNS XDNSXDNSXDNSXDdSXHUwNWM5XG5SXGZSXDE2Ulx1MDVjY1wxMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiUlwzUlwzUlw1Ulx1MDVkMFxuUlwzUlwzUlwzUlw1Ulx1MDVkNVxuUlwzU1wzU1wzU1wz U1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJTXDNTXDNTXDNTXDVTXHUwNWRmXG5TXDNTXDNT XDNTXDNTXDVTXHUwNWU1XG5TXDNUXDNUXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlRcM1Rc M1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiVlwzVlwzVlwzVlwzVlw1Vlx1MDYwMFxuVlwzVlwzVlw3Vlx1MDYw NFxuVlxmVlwxNlZcdTA2MDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxM1ZcM1ZcM1ZcM1dc M1dcM1dcN1dcdTA2MGVcbldcZldcMTZXXHUwNjExXDEzV1wzWFwzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDNYXDVYXHUwNjFlXG5YXDNZXDNZXDNZ XDNZXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlpcM1pcM1pcM1pcM1tcN1tcdTA2Mjlcbltc ZltcMTZbXHUwNjJjXDEzW1wzXFxcM1xcXDVcXCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NjMwXG5cXFwzXVwzXVw1XVx1MDYzNFxuXVwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzXlwzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJeXDVeXHUwNjNmXG5eXDNeXDNeXDNeXDNeXDVeXHUwNjQ1XG5e XDNeXDNeXDNeXDNeXDNfXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIl9cM19cN19cdTA2NGVc bl9cZl9cMTZfXHUwNjUxXDEzX1wzYFwzYFwzYFwzYFwzYFwzYFw1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJgXHUwNjU5XG5gXDNhXDNhXDNhXDNhXDNhXDNhXDNhXDNhXDVhXHUwNjYzXG5hXDNh XDNhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoImFcM2FcM2FcM2FcM2FcM2FcM2FcM2FcM2Fc M2JcM2JcM2JcN2JcdTA2NzNcbmJcZmJcMTZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 NzZcMTNiXDNjXDNjXDVjXHUwNjdhXG5jXDNkXDNkXDVkXHUwNjdlXG5kXDNlXDNlXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoImVcM2VcM2VcM2VcM2VcM2VcM2VcNWVcdTA2ODlcbmVcM2VcM2Vc M2VcM2VcNWVcdTA2OGZcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiZVwzZVwzZVwzZVwzZVwz ZVwzZlwzZlwzZlw1Zlx1MDY5OVxuZlwzZlwzZlwzZlwzZlwzZlw1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJmXHUwNmEwXG5mXDNmXDNmXDNmXDNmXDNmXDNmXDVmXHUwNmE4XG5mXDNnXDNnXDNn XDdnXHUwNmFkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbmdcZmdcMTZnXHUwNmIwXDEzZ1wz aFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFw1aFx1MDZiYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXG5oXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDNpXDVpXHUwNmM2XG5pXDNpXDVpXHUwNmM5 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcbmlcM2lcM2lcM2lcM2lcM2pcM2pcM2pcN2pcdTA2 ZDJcbmpcZmpcMTZqXHUwNmQ1XDEzaiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNrXDNrXDVr XHUwNmQ5XG5rXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDVsXHUwNmUzXG4iKQ0KDQorICAgICAg ICBidWYud3JpdGUoImxcM2xcM2xcM2xcM2xcNWxcdTA2ZTlcbmxcM2xcM2xcM2xcM2xcM2xcM2xc M2xcM2xcM2xcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgibFwzbFwzbFwzbVwzbVwzbVw3bVx1 MDZmYVxubVxmbVwxNm1cdTA2ZmRcMTNtXDNuXDNuXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo Im5cNW5cdTA3MDJcbm5cM29cM29cM29cM29cM29cM29cM29cM29cNW9cdTA3MGNcbm9cM29cMyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgib1wzb1wzb1w1b1x1MDcxMlxub1wzb1wzb1wzb1wzb1wz b1wzb1wzb1wzb1wzb1wzb1wzb1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJvXDVvXHUwNzIw XG5vXDNvXDNvXDNvXDNvXDNwXDNwXDNwXDdwXHUwNzI5XG5wXGZwXDE2cCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNzJjXDEzcFwzcVwzcVw1cVx1MDczMFxucVwzclwzclwzclwzclwzclwz clwzclw1clx1MDczOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5yXDNyXDNyXDNyXDNyXDNy XDVyXHUwNzQwXG5yXDNyXDNyXDNyXDNyXDNzXDNzXDNzXDciKQ0KDQorICAgICAgICBidWYud3Jp dGUoInNcdTA3NDlcbnNcZnNcMTZzXHUwNzRjXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1MlxudFwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDV1XHUwNzVj XG51XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInVcM3VcM3Vc M3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgidVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwz dVwzdVwzdVwzdVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcNXVcdTA3YTdcbnVcM3Vc NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidVx1MDdhYVxudVxmdVwxNnVcdTA3YWRcMTN1XDV1 XHUwN2FmXG51XDN1XDN1XDN1XDN2XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInZcM3ZcM3Zc M3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcNXZcdTA3YzBcbnZcM3ZcM3ZcM3ZcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgidlw1dlx1MDdjNlxudlwzd1wzd1wzd1w3d1x1MDdjYlxud1xmd1wxNndc dTA3Y2VcMTN3XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInhcM3hcM3lcM3lcM3lcM3lcM3lc M3lcM3lcM3lcNXlcdTA3ZGFcbnlcM3lcM3lcM3lcM3lcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDN5 XDN5XDN5XDN5XDN5XDN5XDN5XDN5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoInlcM3lcM3lc M3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcM3lcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz eVw1eVx1MDgyNVxuIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ5XDN5XDd5XHUwODI4XG55XGZ5 XDE2eVx1MDgyYlwxM3lcNXlcdTA4MmRcbnlcM3lcM3lcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgieVwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelw1elx1MDgzZVxuelwzelwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJ6XDN6XDN6XDV6XHUwODQ0XG56XDN7XDN7XDN7XDd7 XHUwODQ5XG57XGZ7XDE2e1x1MDg0YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEze1wzfFwz fFwzfVwzfVwzfVwzfVw1fVx1MDg1NFxufVwzflwzflwzflwzflwzflwzXDE3NyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMTc3XDNcdTAwODBcM1x1MDA4MFwzXHUwMDgxXDNcdTAwODFcM1x1 MDA4MVwzXHUwMDgxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4MVwzXHUwMDgxXDVc dTAwODFcdTA4NjVcblx1MDA4MVwzXHUwMDgyXDNcdTAwODIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMDgyXDNcdTAwODJcNVx1MDA4Mlx1MDg2YlxuXHUwMDgyXDNcdTAwODNcM1x1MDA4 MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODNcM1x1MDA4M1w3XHUwMDgzXHUwODcx XG5cdTAwODNcZlx1MDA4M1wxNlx1MDA4MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODc0 XDEzXHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODRcM1x1MDA4NCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcN1x1MDA4 NFx1MDg3ZlxuXHUwMDg0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcZlx1MDA4NFwxNlx1MDA4 NFx1MDg4MlwxM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcNVx1MDA4NCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwODg2XG5cdTAwODRcM1x1MDA4NFwzXHUwMDg0XDNcdTAwODRcM1x1MDA4NVwz XHUwMDg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NVwzXHUwMDg1XDNcdTAwODVc M1x1MDA4NVw3XHUwMDg1XHUwODkxXG5cdTAwODUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxm XHUwMDg1XDE2XHUwMDg1XHUwODk0XDEzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVw1XHUwMDg1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OThcblx1MDA4NVwzXHUwMDg1XDNcdTAwODVcM1x1 MDA4NVwzXHUwMDg2XDNcdTAwODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg2XDNc dTAwODZcM1x1MDA4NlwzXHUwMDg2XDdcdTAwODZcdTA4YTNcblx1MDA4NiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXGZcdTAwODZcMTZcdTAwODZcdTA4YTZcMTNcdTAwODZcM1x1MDA4NlwzXHUw MDg2XDVcdTAwODYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhhYVxuXHUwMDg2XDNcdTAw ODZcM1x1MDA4NlwzXHUwMDg2XDdcdTAwODZcdTA4YWZcbiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMDg2XGZcdTAwODZcMTZcdTAwODZcdTA4YjJcMTNcdTAwODZcM1x1MDA4NlwzXHUwMDg2 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4NlwzXHUwMDg3XDNcdTAwODdcM1x1MDA4 N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAw ODdcdTA4YmRcblx1MDA4N1xmXHUwMDg3XDE2XHUwMDg3XHUwOGMwXDEzXHUwMDg3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1x1MDA4N1wzXHUwMDg3XDVcdTAwODdcdTA4YzRcblx1MDA4N1wz XHUwMDg3XDNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg3XDdcdTAwODdc dTA4Yzlcblx1MDA4N1xmXHUwMDg3XDE2XHUwMDg3XHUwOGNjIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMTNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4OFwzXHUwMDg4XDNc dTAwODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwz XHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcN1x1MDA4OFx1MDhkZVxuXHUwMDg4XGZcdTAwODgiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwxNlx1MDA4OFx1MDhlMVwxM1x1MDA4OFwzXHUwMDg4XDNc dTAwODhcNVx1MDA4OFx1MDhlNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwODhcM1x1 MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg5XDNcdTAwODkiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMDg5XDVcdTAwODlcdTA4ZWVcblx1MDA4OVwzXHUwMDhhXDNcdTAw OGFcM1x1MDA4YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4YVwzXHUw MDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUw MDhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1 MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc dTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDhiXHUwOTBmXG5cdTAwOGJcM1x1MDA4YlwzXHUw MDhiXDNcdTAwOGNcM1x1MDA4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1 MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1 MDA4Y1wzXHUwMDhjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA4Y1wzXHUwMDhjXDNc dTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4YyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDdcdTAwOGNcdTA5MmRcblx1MDA4Y1xmXHUw MDhjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTZcdTAwOGNcdTA5MzBcMTNcdTAwOGNcNVx1 MDA4Y1x1MDkzMlxuXHUwMDhjXDNcdTAwOGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUw MDhjXDNcdTAwOGNcM1x1MDA4Y1w1XHUwMDhjXHUwOTM4XG5cdTAwOGNcM1x1MDA4YyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4 ZFwzXHUwMDhlXDNcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDhlXHUwOTQy XG5cdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhl XDNcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4 ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVw1XHUwMDhlIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA5NTVcblx1MDA4ZVwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5NjJc blx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAwOGYiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDk2OFxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNc dTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTZlXG5cdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA5NzRcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDVcdTAw OGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk3YVxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4 ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTgw XG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5ODZcblx1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlwz XHUwMDhmXDVcdTAwOGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk4Y1xuXHUwMDhmXDNc dTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcNVx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOTkyXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUw MDhmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5OThcblx1MDA4Zlw1XHUwMDhmXHUwOTlh XG5cdTAwOGZcM1x1MDA4Zlw3XHUwMDhmXHUwOTlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc blx1MDA4ZlxmXHUwMDhmXDE2XHUwMDhmXHUwOWEwXDEzXHUwMDhmXDVcdTAwOGZcdTA5YTIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlxuXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw3XHUwMDhmXHUw OWE2XG5cdTAwOGZcZlx1MDA4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDE2XHUwMDhmXHUw OWE5XDEzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDlhY1xuXHUwMDhmIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOTBcM1x1MDA5MFwzXHUwMDkwXDNcdTAw OTBcM1x1MDA5MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwOTBcdTA5YjVcblx1MDA5 MFwzXHUwMDkwXDNcdTAwOTBcN1x1MDA5MFx1MDliOVxuIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAwOTBcZlx1MDA5MFwxNlx1MDA5MFx1MDliY1wxM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTFcM1x1MDA5MVwzXHUwMDkx XDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5 M1wzXHUwMDkzXDdcdTAwOTNcdTA5Yzlcblx1MDA5M1xmXHUwMDkzXDE2XHUwMDkzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5Y2NcMTNcdTAwOTNcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRc N1x1MDA5NFx1MDlkMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwOTRcZlx1MDA5NFwx Nlx1MDA5NFx1MDlkNFwxM1x1MDA5NFwzXHUwMDk1XDNcdTAwOTUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMDk1XDdcdTAwOTVcdTA5ZDlcblx1MDA5NVxmXHUwMDk1XDE2XHUwMDk1XHUw OWRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTNcdTAwOTVcM1x1MDA5NlwzXHUwMDk2XDNc dTAwOTZcN1x1MDA5Nlx1MDllMVxuXHUwMDk2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcZlx1 MDA5NlwxNlx1MDA5Nlx1MDllNFwxM1x1MDA5NlwzXHUwMDk3XDNcdTAwOTdcM1x1MDA5NyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwOTdcdTA5ZTlcblx1MDA5N1xmXHUwMDk3XDE2XHUw MDk3XHUwOWVjXDEzXHUwMDk3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDA5OFwzXHUw MDk4XDdcdTAwOThcdTA5ZjBcblx1MDA5OFxmXHUwMDk4XDE2XHUwMDk4IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5ZjNcMTNcdTAwOThcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5 OVw1XHUwMDk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5Zjlcblx1MDA5OVwzXHUwMDlh XDNcdTAwOWFcN1x1MDA5YVx1MDlmZFxuXHUwMDlhXGYiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDA5YVwxNlx1MDA5YVx1MGEwMFwxM1x1MDA5YVwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWJcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJc M1x1MDA5Ylw1XHUwMDliXHUwYTBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblx1MDA5Ylwz XHUwMDljXDNcdTAwOWNcN1x1MDA5Y1x1MGEwZVxuXHUwMDljXGZcdTAwOWMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwxNlx1MDA5Y1x1MGExMVwxM1x1MDA5Y1wzXHUwMDlkXDNcdTAwOWRcM1x1 MDA5ZFwzXHUwMDlkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDA5ZFx1MGExN1xuXHUw MDlkXDNcdTAwOWVcM1x1MDA5ZVw3XHUwMDllXHUwYTFiXG4iKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDA5ZVxmXHUwMDllXDE2XHUwMDllXHUwYTFlXDEzXHUwMDllXDNcdTAwOWZcM1x1MDA5 ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5Zlw1XHUwMDlmXHUwYTI0 XG5cdTAwOWZcM1x1MDBhMFwzXHUwMGEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBh MFx1MGEyOFxuXHUwMGEwXGZcdTAwYTBcMTZcdTAwYTBcdTBhMmJcMTNcdTAwYTAiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGExXDNcdTAwYTFc M1x1MDBhMVw1XHUwMGExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMzNcblx1MDBhMVwz XHUwMGEyXDNcdTAwYTJcM1x1MDBhMlw3XHUwMGEyXHUwYTM4XG4iKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBhMlxmXHUwMGEyXDE2XHUwMGEyXHUwYTNiXDEzXHUwMGEyXDNcdTAwYTJcM1x1 MDBhMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNc dTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcNVx1MDBhM1x1MGE0YiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwYTNcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1 MDBhNFwzXHUwMGE0XDNcdTAwYTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGE0XDNc dTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBhNVwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNc dTAwYTZcM1x1MDBhNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYTZcM1x1MDBhNlwz XHUwMGE2XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTciKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwz XHUwMGE4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhOFwzXHUwMGE4XDNcdTAwYThc M1x1MDBhOFw1XHUwMGE4XHUwYTczXG5cdTAwYTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGE5XDNcdTAwYTlcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYVwz XHUwMGFhXDNcdTAwYWFcM1x1MDBhYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWFc M1x1MDBhYVwzXHUwMGFhXDVcdTAwYWFcdTBhODZcblx1MDBhYVwzXHUwMGFiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNc dTAwYWJcM1x1MDBhYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWJcM1x1MDBhYlwz XHUwMGFiXDNcdTAwYWJcNVx1MDBhYlx1MGE5NFxuXHUwMGFiIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1 MDBhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNc dTAwYWNcM1x1MDBhY1w1XHUwMGFjXHUwYWEyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcblx1 MDBhY1wzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDZcdTAwYWRcdTBhYTgiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlxuXHUwMGFkXHJcdTAwYWRcMTZcdTAwYWRcdTBhYTlcM1x1MDBh ZVwzXHUwMGFlXDNcdTAwYWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGFlXDNcdTAw YWVcM1x1MDBhZVwzXHUwMGFlXDdcdTAwYWVcdTBhYjNcblx1MDBhZSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXGZcdTAwYWVcMTZcdTAwYWVcdTBhYjZcMTNcdTAwYWVcNVx1MDBhZVx1MGFiOFxu XHUwMGFlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZc M1x1MDBhZlw1XHUwMGFmXHUwYWJlXG5cdTAwYWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMVwzXHUwMGIxIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMlwz XHUwMGIyXDNcdTAwYjJcM1x1MDBiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjJc M1x1MDBiMlwzXHUwMGIyXDVcdTAwYjJcdTBhZDFcblx1MDBiMlwzXHUwMGIyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBiMlwzXHUwMGIzXDNcdTAwYjNcM1x1MDBiNFwzXHUwMGI0XDNc dTAwYjRcM1x1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjRcM1x1MDBiNVwz XHUwMGI1XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlw1XHUwMGI2XHUwYWU1XG5cdTAwYjZcM1x1 MDBiNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYjZcM1x1MDBiN1wzXHUwMGI3XDNc dTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFw1XHUwMGI4IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjVcblx1MDBiOFwzXHUwMGI5XDNcdTAwYjlcM1x1 MDBiOVwzXHUwMGI5XDNcdTAwYjkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJhXDNc dTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYlwzXHUwMGJiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNc dTAwYmJcM1x1MDBiYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwYmJcdTBiMGFcblx1 MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBiYlw1XHUwMGJiXHUwYjExXG5cdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAw YmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUw MGJjXDNcdTAwYmNcM1x1MDBiZFwzXHUwMGJkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYmVcNVx1MDBiZVx1MGIyNVxuXHUwMGJlXDNcdTAw YmVcM1x1MDBiZVwzXHUwMGJlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBiZVwzXHUw MGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBjMCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMVwzXHUw MGMxXDNcdTAwYzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMxXDNcdTAwYzFcM1x1 MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBjMlwzXHUwMGMyXDVcdTAwYzJcdTBiNDFcblx1MDBjMlwzXHUwMGMyXDNcdTAw YzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjM1wzXHUw MGMzXDNcdTAwYzNcM1x1MDBjM1wzXHUwMGMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVx1 MDBjM1x1MGI0Y1xuXHUwMGMzXDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAw YzRcM1x1MDBjNVwzXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjNVwzXHUw MGM1XDNcdTAwYzVcN1x1MDBjNVx1MGI1Y1xuXHUwMGM1XGZcdTAwYzUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwxNlx1MDBjNVx1MGI1ZlwxM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBj NVwzXHUwMGM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBjNVwzXHUwMGM1XDNcdTAw YzVcM1x1MDBjNVwzXHUwMGM2XDNcdTAwYzZcM1x1MDBjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAw YzciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGM3XDNcdTAwYzhcM1x1MDBjOFwzXHUw MGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1x1 MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDdcdTAwYzlcdTBi ODRcblx1MDBjOVxmXHUwMGM5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMTZcdTAwYzlcdTBi ODdcMTNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAwYzlcM1x1MDBjYVwzXHUw MGNhXDNcdTAwY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXHUwMGNiXDNcdTAwY2JcM1x1 MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcM1x1MDBjYlw3XHUwMGNiXHUwYjljXG5cdTAwY2JcZlx1MDBjYlwxNlx1MDBjYlx1MGI5 ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDEzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUw MGNiXDJcMlx1MDBjY1wyXDRcNlxiXG4iKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxmXDE2XDIw XDIyXDI0XDI2XDMwXDMyXDM0XDM2IFwiJCYoKiwuXDYwXDYyXDY0XDY2ODo8IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCI+QEJERkhKTE5QUlRWWFpcXF5gYmRmaGpsbnBydHZ4enx+XHUwMDgwXHUw MDgyXHUwMDg0XHUwMDg2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODhcdTAwOGFcdTAw OGNcdTAwOGVcdTAwOTBcdTAwOTJcdTAwOTRcdTAwOTZcdTAwOTgiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDA5YVx1MDA5Y1x1MDA5ZVx1MDBhMFx1MDBhMlx1MDBhNFx1MDBhNlx1MDBhOFx1 MDBhYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFjXHUwMGFlXHUwMGIwXHUwMGIyXHUw MGI0XHUwMGI2XHUwMGI4XHUwMGJhXHUwMGJjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAw YmVcdTAwYzBcdTAwYzJcdTAwYzRcdTAwYzZcdTAwYzhcdTAwY2FcdTAwY2NcdTAwY2UiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDBkMFx1MDBkMlx1MDBkNFx1MDBkNlx1MDBkOFx1MDBkYVx1 MDBkY1x1MDBkZVx1MDBlMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGUyXHUwMGU0XHUw MGU2XHUwMGU4XHUwMGVhXHUwMGVjXHUwMGVlXHUwMGYwXHUwMGYyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAwZjRcdTAwZjZcdTAwZjhcdTAwZmFcdTAwZmNcdTAwZmVcdTAxMDBcdTAxMDJc dTAxMDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEwNlx1MDEwOFx1MDEwYVx1MDEwY1x1 MDEwZVx1MDExMFx1MDExMlx1MDExNFx1MDExNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MTE4XHUwMTFhXHUwMTFjXHUwMTFlXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAxMmFcdTAxMmNcdTAxMmVcdTAxMzBcdTAxMzJcdTAxMzRc dTAxMzZcdTAxMzhcdTAxM2EiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEzY1x1MDEzZVx1 MDE0MFx1MDE0Mlx1MDE0NFx1MDE0Nlx1MDE0OFx1MDE0YVx1MDE0YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMTRlXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVhXHUwMTVj XHUwMTVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxNjBcdTAxNjJcdTAxNjRcdTAxNjZc dTAxNjhcdTAxNmFcdTAxNmNcdTAxNmVcdTAxNzAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDE3Mlx1MDE3NFx1MDE3Nlx1MDE3OFx1MDE3YVx1MDE3Y1x1MDE3ZVx1MDE4MFx1MDE4MiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTg0XHUwMTg2XHUwMTg4XHUwMThhXHUwMThjXHUwMThl XHUwMTkwXHUwMTkyXHUwMTk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyMFwzXDJcNFw1 XDRcMlx1MDBhY1x1MDBiMlx1MDBmYVx1MDBmYVw0XDJcdTAwYjNcdTAwYjYiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDBmYVx1MDBmYVw0XDJcblxuXHUwMGZhXHUwMGZhXDVcMlx1MDBiN1x1 MDBiOVx1MDBiZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGJmXHUwMGZhXHUwMGZhXDRc Mlx1MDBiYVx1MDBiZlx1MDBmYVx1MDBmYVwzXDJcdTAwODUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDA4NlwzXDJcdTAwOGFcdTAwOGNcM1wyUlZcM1wyXHUwMGZhXHUwMGZiXDNcMlx1MDBl ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGYyXDRcMlx1MDBkM1x1MDBkOVx1MDBmYVx1 MDBmYVwzXDJcdTAwZjZcdTAwZjdcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZjhc dTAwZmFcMlx1MGM2ZVwyXHUwMTliXDNcMlwyXDJcNFx1MDFhMFwzXDJcMlwyXDYiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDFhMlwzXDJcMlwyXGJcdTAxYWNcM1wyXDJcMlxuXHUwMWFlXDNc MlwyXDJcZlx1MDFiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMTZcdTAxY2Jc M1wyXDJcMlwyMFx1MDFlY1wzXDJcMlwyXDIyXHUwMWVmXDMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcMlwyNFx1MDFmOFwzXDJcMlwyXDI2XHUwMjAxXDNcMlwyXDJcMzBcdTAyMGFcM1wy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDMyXHUwMjEzXDNcMlwyXDJcMzRcdTAyMWNc M1wyXDJcMlwzNlx1MDIyNVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDIgXHUwMjJl XDNcMlwyXDJcIlx1MDIzN1wzXDJcMlwyJFx1MDI0MFwzXDJcMlwyJlx1MDI0OSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDIoXHUwMjUxXDNcMlwyXDIqXHUwMjU5XDNcMlwyXDIsXHUw MjYxXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIi5cdTAyNjlcM1wyXDJcMlw2MFx1 MDI5NVwzXDJcMlwyXDYyXHUwMmEyXDNcMlwyXDJcNjRcdTAyYWEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXDY2XHUwMmFjXDNcMlwyXDI4XHUwMmIxXDNcMlwyXDI6XHUwMmJlXDNc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMjxcdTAyYzBcM1wyXDJcMj5cdTAyZDFcM1wy XDJcMkBcdTAyZjNcM1wyXDJcMkJcdTAzMmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyRFx1MDMyZlwzXDJcMlwyRlx1MDM0OFwzXDJcMlwySFx1MDM0ZlwzXDJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJKXHUwMzU2XDNcMlwyXDJMXHUwMzY2XDNcMlwyXDJOXHUwMzc2XDNc MlwyXDJQXHUwMzdiXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlJcdTAzODJcM1wy XDJcMlRcdTAzOTFcM1wyXDJcMlZcdTAzYTdcM1wyXDJcMlhcdTAzYjUiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyWlx1MDNlM1wzXDJcMlwyXFxcdTAzZTVcM1wyXDJcMl5cdTAzZWNc M1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiYFx1MDNmMFwzXDJcMlwyYlx1MDNmMlwz XDJcMlwyZFx1MDNmYVwzXDJcMlwyZlx1MDQxZVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXDJoXHUwNDIwXDNcMlwyXDJqXHUwNDNmXDNcMlwyXDJsXHUwNDQyXDNcMlwyXDJuXHUwNDQ1 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMnBcdTA0NGZcM1wyXDJcMnJcdTA0NTFc M1wyXDJcMnRcdTA0NzZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidlx1MDQ3OFwz XDJcMlwyeFx1MDQ4MFwzXDJcMlwyelx1MDQ4MlwzXDJcMlwyfFx1MDRiM1wzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXDJ+XHUwNGI3XDNcMlwyXDJcdTAwODBcdTA0YjlcM1wyXDJcMlx1 MDA4Mlx1MDRmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwODRcdTA1MDhc M1wyXDJcMlx1MDA4Nlx1MDUwYVwzXDJcMlwyXHUwMDg4IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA1MWZcM1wyXDJcMlx1MDA4YVx1MDUyY1wzXDJcMlwyXHUwMDhjXHUwNTJlXDNcMlwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA4ZVx1MDU0OVwzXDJcMlwyXHUwMDkwXHUwNTY0 XDNcMlwyXDJcdTAwOTJcdTA1NmNcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUw MDk0XHUwNTcxXDNcMlwyXDJcdTAwOTZcdTA1NzlcM1wyXDJcMlx1MDA5OFx1MDU3ZSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwOWFcdTA1OTRcM1wyXDJcMlx1MDA5Y1x1MDU5 ZVwzXDJcMlwyXHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YThcM1wyXDJcMlx1 MDBhMFx1MDVhYVwzXDJcMlwyXHUwMGEyXHUwNWMwXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBhNFx1MDVkNlwzXDJcMlwyXHUwMGE2XHUwNWU2XDNcMlwyXDJcdTAwYThcdTA1 ZWFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGFhXHUwNWVjXDNcMlwyXDJc dTAwYWNcdTA2MGFcM1wyXDJcMlx1MDBhZVx1MDYxZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTAwYjBcdTA2MWZcM1wyXDJcMlx1MDBiMlx1MDYyM1wzXDJcMlwyXHUwMGI0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MmFcM1wyXDJcMlx1MDBiNlx1MDYyZlwzXDJcMlwy XHUwMGI4XHUwNjMzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiYVx1MDYz NVwzXDJcMlwyXHUwMGJjXHUwNjRhXDNcMlwyXDJcdTAwYmVcdTA2NThcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGMwXHUwNjVhXDNcMlwyXDJcdTAwYzJcdTA2NmZcM1wyXDJc Mlx1MDBjNFx1MDY3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwYzZcdTA2 N2RcM1wyXDJcMlx1MDBjOFx1MDY3ZlwzXDJcMlwyXHUwMGNhIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA2OTVcM1wyXDJcMlx1MDBjY1x1MDZhOVwzXDJcMlwyXHUwMGNlXHUwNmJhXDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBkMFx1MDZiY1wzXDJcMlwyXHUwMGQyXHUw NmNlXDNcMlwyXDJcdTAwZDRcdTA2ZDhcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwy XHUwMGQ2XHUwNmRhXDNcMlwyXDJcdTAwZDhcdTA2ZjZcM1wyXDJcMlx1MDBkYVx1MDcwMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZGNcdTA3MDNcM1wyXDJcMlx1MDBkZVx1 MDcyNVwzXDJcMlwyXHUwMGUwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MmZcM1wyXDJc Mlx1MDBlMlx1MDczMVwzXDJcMlwyXHUwMGU0XHUwNzQ1XDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDBlNlx1MDc1MVwzXDJcMlwyXHUwMGU4XHUwNzUzXDNcMlwyXDJcdTAwZWFc dTA3YjNcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGVjXHUwN2M3XDNcMlwy XDJcdTAwZWVcdTA3Y2ZcM1wyXDJcMlx1MDBmMFx1MDdkMSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAwZjJcdTA4MzFcM1wyXDJcMlx1MDBmNFx1MDg0NVwzXDJcMlwyXHUwMGY2 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGRcM1wyXDJcMlx1MDBmOFx1MDg1M1wzXDJc MlwyXHUwMGZhXHUwODU1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBmY1x1 MDg1YVwzXDJcMlwyXHUwMGZlXHUwODVjXDNcMlwyXDJcdTAxMDBcdTA4NjRcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTAyXHUwODZhXDNcMlwyXDJcdTAxMDRcdTA4NmNcM1wy XDJcMlx1MDEwNlx1MDg3OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMDhc dTA4OGFcM1wyXDJcMlx1MDEwYVx1MDg5Y1wzXDJcMlwyXHUwMTBjIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA4YjZcM1wyXDJcMlx1MDEwZVx1MDhkMFwzXDJcMlwyXHUwMTEwXHUwOGVkXDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDExMlx1MDhlZlwzXDJcMlwyXHUwMTE0 XHUwOGY5XDNcMlwyXDJcdTAxMTZcdTA5MTJcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwMTE4XHUwOTNiXDNcMlwyXDJcdTAxMWFcdTA5M2ZcM1wyXDJcMlx1MDExY1x1MDk1NiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMWVcdTA5YWZcM1wyXDJcMlx1MDEy MFx1MDljMFwzXDJcMlwyXHUwMTIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YzNcM1wy XDJcMlx1MDEyNFx1MDljNVwzXDJcMlwyXHUwMTI2XHUwOWNkXDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDEyOFx1MDlkNVwzXDJcMlwyXHUwMTJhXHUwOWRkXDNcMlwyXDJcdTAx MmNcdTA5ZTVcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTJlXHUwOWVkXDNc MlwyXDJcdTAxMzBcdTA5ZjhcM1wyXDJcMlx1MDEzMlx1MDlmYSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTAxMzRcdTBhMDlcM1wyXDJcMlx1MDEzNlx1MGEwYlwzXDJcMlwyXHUw MTM4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTZcM1wyXDJcMlx1MDEzYVx1MGExOFwz XDJcMlwyXHUwMTNjXHUwYTIzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDEz ZVx1MGEyNVwzXDJcMlwyXHUwMTQwXHUwYTMyXDNcMlwyXDJcdTAxNDJcdTBhMzlcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTQ0XHUwYTRhXDNcMlwyXDJcdTAxNDZcdTBhNGNc M1wyXDJcMlx1MDE0OFx1MGE1MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAx NGFcdTBhNWFcM1wyXDJcMlx1MDE0Y1x1MGE2M1wzXDJcMlwyXHUwMTRlIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTBhNzJcM1wyXDJcMlx1MDE1MFx1MGE3NFwzXDJcMlwyXHUwMTUyXHUwYTc2 XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE1NFx1MGE4N1wzXDJcMlwyXHUw MTU2XHUwYTk1XDNcMlwyXDJcdTAxNThcdTBhYTNcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlwyXHUwMTVhXHUwYWI3XDNcMlwyXDJcdTAxNWNcdTBhYjlcM1wyXDJcMlx1MDE1ZVx1MGFi ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNjBcdTBhYzRcM1wyXDJcMlx1 MDE2Mlx1MGFjOVwzXDJcMlwyXHUwMTY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZDRc M1wyXDJcMlx1MDE2Nlx1MGFkNlwzXDJcMlwyXHUwMTY4XHUwYWRiXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDE2YVx1MGFkZFwzXDJcMlwyXHUwMTZjXHUwYWU4XDNcMlwyXDJc dTAxNmVcdTBhZjRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTcwXHUwYWY2 XDNcMlwyXDJcdTAxNzJcdTBhZmJcM1wyXDJcMlx1MDE3NFx1MGIwMCIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAxNzZcdTBiMTVcM1wyXDJcMlx1MDE3OFx1MGIxYVwzXDJcMlwy XHUwMTdhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMWZcM1wyXDJcMlx1MDE3Y1x1MGIy YVwzXDJcMlwyXHUwMTdlXHUwYjJmXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDE4MFx1MGIzNFwzXDJcMlwyXHUwMTgyXHUwYjM5XDNcMlwyXDJcdTAxODRcdTBiNGJcMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTg2XHUwYjRkXDNcMlwyXDJcdTAxODhcdTBi NTZcM1wyXDJcMlx1MDE4YVx1MGI2OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAxOGNcdTBiNmFcM1wyXDJcMlx1MDE4ZVx1MGI3M1wzXDJcMlwyXHUwMTkwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTBiN2NcM1wyXDJcMlx1MDE5Mlx1MGI5MFwzXDJcMlwyXHUwMTk0XHUw YjkyXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5Nlx1MDE5YVw1XG5cNlwy XHUwMTk3XHUwMTlhXDVcZlw3XDJcdTAxOThcdTAxOWFcNSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDE2XGJcMlx1MDE5OVx1MDE5NlwzXDJcMlwyXHUwMTk5XHUwMTk3XDNcMlwyXDJcdTAxOTki KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE5OFwzXDJcMlwyXHUwMTlhXHUwMTlkXDNcMlwy XDJcdTAxOWJcdTAxOTlcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTliXHUw MTljXDNcMlwyXDJcdTAxOWNcdTAxOWVcM1wyXDJcMlx1MDE5ZFx1MDE5YlwzIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXDJcdTAxOWVcdTAxOWZcNS5cMzBcMlx1MDE5ZlwzXDNcMlwyXDJc dTAxYTBcdTAxYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDNcMlwyXHUwMWExXDVcM1wy XDJcMlx1MDFhMlx1MDFhNVx0XDJcMlwyXHUwMWEzXHUwMWE0IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNyFcMlwyXHUwMWE0XHUwMWE2XDdcdTAwZmJcMlwyXHUwMWE1XHUwMWEzXDNcMlwyXDJc dTAxYTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFhNlwzXDJcMlwyXHUwMWE2XHUwMWE5 XDNcMlwyXDJcdTAxYTdcdTAxYThcNyFcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAx YThcdTAxYWFcN1x1MDBmYVwyXDJcdTAxYTlcdTAxYTdcM1wyXDJcMlx1MDFhOVx1MDFhYSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYWFcN1wzXDJcMlwyXHUwMWFiXHUwMWFk XDdcdTAwZmFcMlwyXHUwMWFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYWJcM1wyXDJc Mlx1MDFhY1x1MDFhZFwzXDJcMlwyXHUwMWFkXHRcM1wyXDJcMlx1MDFhZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMWFmXDdcNlwyXDJcdTAxYWZcdTAxYjBcN1w3XDJcMlx1MDFiMFx1MDFi NFw3XDMwXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMWIxXHUwMWI1XDVcNFwzXDJc dTAxYjJcdTAxYjVcNVw2XDRcMlx1MDFiM1x1MDFiNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDVcYlw1XDJcdTAxYjRcdTAxYjFcM1wyXDJcMlx1MDFiNFx1MDFiMlwzXDJcMlwyXHUwMWI0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYjNcM1wyXDJcMlx1MDFiNFx1MDFiNVwzXDJcMlwy XHUwMWI1XHUwMWI2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFiNlx1MDFi N1w3XDMxXDJcMlx1MDFiN1wxM1wzXDJcMlwyXHUwMWI4XHUwMWJhXDdcdTAwODQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcdTAxYjlcdTAxYjhcM1wyXDJcMlx1MDFiOVx1MDFiYVwzXDJc MlwyXHUwMWJhXHUwMWJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFiYlx1 MDFiZFw3UFwyXDJcdTAxYmNcdTAxYmVcN09cMlwyXHUwMWJkXHUwMWJjIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcM1wyXDJcMlx1MDFiZFx1MDFiZVwzXDJcMlwyXHUwMWJlXHUwMWMwXDNcMlwy XDJcdTAxYmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjMVw3XHUwMGZiXDJcMlx1MDFj MFx1MDFiZlwzXDJcMlwyXHUwMWMwXHUwMWMxXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlx1MDFjMVx1MDFjMlwzXDJcMlwyXHUwMWMyXHUwMWMzXDdcMjZcMlwyXHUwMWMzXHUwMWM0 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVwyMFx0XDJcdTAxYzRcdTAxYzZcN1wyN1wyXDJc dTAxYzVcdTAxYzdcN1x1MDBmYlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjNlx1 MDFjNVwzXDJcMlwyXHUwMWM2XHUwMWM3XDNcMlwyXDJcdTAxYzdcdTAxYzhcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWM4XHUwMWM5XDcgXDJcMlx1MDFjOVxyXDNcMlwyXDJc dTAxY2FcdTAxY2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMDg0XDJcMlx1MDFjYlx1 MDFjYVwzXDJcMlwyXHUwMWNiXHUwMWNjXDNcMlwyXDJcdTAxY2MiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDFjZFwzXDJcMlwyXHUwMWNkXHUwMWNmXDdRXDJcMlx1MDFjZVx1MDFkMFw3T1wy XDJcdTAxY2YiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFjZVwzXDJcMlwyXHUwMWNmXHUw MWQwXDNcMlwyXDJcdTAxZDBcdTAxZDJcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMWQxXHUwMWQzXDdcdTAwZmJcMlwyXHUwMWQyXHUwMWQxXDNcMlwyXDJcdTAxZDJcdTAxZDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWQzXHUwMWQ0XDNcMlwyXDJcdTAx ZDRcdTAxZDVcN1wyNlwyXDJcdTAxZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFkNlw1 XDIwXHRcMlx1MDFkNlx1MDFkOFw3XDI3XDJcMlx1MDFkN1x1MDFkOVw3XHUwMGZiIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMWQ4XHUwMWQ3XDNcMlwyXDJcdTAxZDhcdTAxZDlcM1wy XDJcMlx1MDFkOVx1MDFkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZGFc dTAxZGJcNyBcMlwyXHUwMWRiXDE3XDNcMlwyXDJcdTAxZGNcdTAxZWIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw1XDIyXG5cMlx1MDFkZFx1MDFlYlw1XDI0XDEzXDJcdTAxZGVcdTAxZWJcNVwy NlxmXDJcdTAxZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlYlw1XDMwXHJcMlx1MDFl MFx1MDFlYlw1XDMyXDE2XDJcdTAxZTFcdTAxZWJcNVwzNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDE3XDJcdTAxZTJcdTAxZWJcNVwzNlwyMFwyXHUwMWUzXHUwMWViXDUgXDIxXDJcdTAxZTQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFlYlw1XCJcMjJcMlx1MDFlNVx1MDFlYlw1JFwy M1wyXHUwMWU2XHUwMWViXDUmXDI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDFlN1x1 MDFlYlw1KFwyNVwyXHUwMWU4XHUwMWViXDUqXDI2XDJcdTAxZTlcdTAxZWIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw1LFwyN1wyXHUwMWVhXHUwMWRjXDNcMlwyXDJcdTAxZWFcdTAxZGRcM1wy XDJcMlx1MDFlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWRlXDNcMlwyXDJcdTAxZWFc dTAxZGZcM1wyXDJcMlx1MDFlYVx1MDFlMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTAxZWFcdTAxZTFcM1wyXDJcMlx1MDFlYVx1MDFlMlwzXDJcMlwyXHUwMWVhXHUwMWUzXDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDFlYVx1MDFlNFwzXDJcMlwyXHUwMWVh XHUwMWU1XDNcMlwyXDJcdTAxZWFcdTAxZTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwMWVhXHUwMWU3XDNcMlwyXDJcdTAxZWFcdTAxZThcM1wyXDJcMlx1MDFlYSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMWU5XDNcMlwyXDJcdTAxZWJcdTAxZWVcM1wyXDJcMlx1MDFl Y1x1MDFlYVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZWNcdTAxZWRcM1wy XDJcMlx1MDFlZFwyMVwzXDJcMlwyXHUwMWVlXHUwMWVjXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDFlZlx1MDFmMFw3U1wyXDJcdTAxZjBcdTAxZjRcN1x1MDBmYlwyXDJcdTAx ZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFmMlw3XDMyXDJcMlx1MDFmMlx1MDFmM1w3 XHUwMGZhXDJcMlx1MDFmM1x1MDFmNVw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzNcMlwy XHUwMWY0XHUwMWYxXDNcMlwyXDJcdTAxZjRcdTAxZjVcM1wyXDJcMlx1MDFmNSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMWY2XDNcMlwyXDJcdTAxZjZcdTAxZjdcNyBcMlwyXHUwMWY3XDIz XDNcMlwyXDJcdTAxZjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDFmOVw3VFwyXDJcdTAx ZjlcdTAxZmRcN1x1MDBmYlwyXDJcdTAxZmFcdTAxZmJcN1wzMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDFmYlx1MDFmY1w3XHUwMGZhXDJcMlx1MDFmY1x1MDFmZVw3XDMzXDJcMlx1 MDFmZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWZhXDNcMlwyXDJcdTAxZmRcdTAxZmVc M1wyXDJcMlx1MDFmZVx1MDFmZlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAx ZmZcdTAyMDBcNyBcMlwyXHUwMjAwXDI1XDNcMlwyXDJcdTAyMDFcdTAyMDJcN1VcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyMDJcdTAyMDZcN1x1MDBmYlwyXDJcdTAyMDNcdTAyMDRc N1wzMlwyXDJcdTAyMDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIwNVw3XHUwMGZhXDJc Mlx1MDIwNVx1MDIwN1w3XDMzXDJcMlx1MDIwNlx1MDIwM1wzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXDJcdTAyMDZcdTAyMDdcM1wyXDJcMlx1MDIwN1x1MDIwOFwzXDJcMlwyXHUwMjA4 XHUwMjA5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyBcMlwyXHUwMjA5XDI3XDNcMlwyXDJc dTAyMGFcdTAyMGJcN1ZcMlwyXHUwMjBiXHUwMjBmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc N1x1MDBmYlwyXDJcdTAyMGNcdTAyMGRcN1wzMlwyXDJcdTAyMGRcdTAyMGVcN1x1MDBmYSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDIwZVx1MDIxMFw3XDMzXDJcMlx1MDIwZlx1MDIw Y1wzXDJcMlwyXHUwMjBmXHUwMjEwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDIxMFx1MDIxMVwzXDJcMlwyXHUwMjExXHUwMjEyXDcgXDJcMlx1MDIxMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDMxXDNcMlwyXDJcdTAyMTNcdTAyMTRcN1JcMlwyXHUwMjE0XHUwMjE4XDdc dTAwZmJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyMTVcdTAyMTZcN1wzMlwyXDJc dTAyMTZcdTAyMTdcN1x1MDBmYVwyXDJcdTAyMTdcdTAyMTkiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3XDMzXDJcMlx1MDIxOFx1MDIxNVwzXDJcMlwyXHUwMjE4XHUwMjE5XDNcMlwyXDJcdTAy MTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIxYVwzXDJcMlwyXHUwMjFhXHUwMjFiXDcg XDJcMlx1MDIxYlwzM1wzXDJcMlwyXHUwMjFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAy MWRcN1dcMlwyXHUwMjFkXHUwMjIxXDdcdTAwZmJcMlwyXHUwMjFlXHUwMjFmXDdcMzIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyMWZcdTAyMjBcN1x1MDBmYVwyXDJcdTAyMjBcdTAy MjJcN1wzM1wyXDJcdTAyMjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIxZVwzXDJcMlwy XHUwMjIxXHUwMjIyXDNcMlwyXDJcdTAyMjJcdTAyMjNcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMjIzXHUwMjI0XDcgXDJcMlx1MDIyNFwzNVwzXDJcMlwyXHUwMjI1XHUwMjI2 XDdYXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMjI2XHUwMjJhXDdcdTAwZmJcMlwy XHUwMjI3XHUwMjI4XDdcMzJcMlwyXHUwMjI4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAy MjlcN1x1MDBmYVwyXDJcdTAyMjlcdTAyMmJcN1wzM1wyXDJcdTAyMmFcdTAyMjdcMyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjJhXHUwMjJiXDNcMlwyXDJcdTAyMmJcdTAyMmNc M1wyXDJcMlx1MDIyY1x1MDIyZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDIy ZFwzN1wzXDJcMlwyXHUwMjJlXHUwMjJmXDdZXDJcMlx1MDIyZlx1MDIzMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwMjMwXHUwMjMxXDdcMzJcMlwyXHUwMjMxXHUwMjMy XDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyMzJcdTAyMzRcN1wzM1wy XDJcdTAyMzNcdTAyMzBcM1wyXDJcMlx1MDIzM1x1MDIzNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTAyMzRcdTAyMzVcM1wyXDJcMlx1MDIzNVx1MDIzNlw3IFwyXDJcdTAyMzYi KQ0KDQorICAgICAgICBidWYud3JpdGUoIiFcM1wyXDJcMlx1MDIzN1x1MDIzOFw3WlwyXDJcdTAy MzhcdTAyM2NcN1x1MDBmYlwyXDJcdTAyMzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDIz YVw3XDMyXDJcMlx1MDIzYVx1MDIzYlw3XHUwMGZhXDJcMlx1MDIzYlx1MDIzZFw3IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMzNcMlwyXHUwMjNjXHUwMjM5XDNcMlwyXDJcdTAyM2NcdTAyM2Rc M1wyXDJcMlx1MDIzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjNlXDNcMlwyXDJcdTAy M2VcdTAyM2ZcNyBcMlwyXHUwMjNmI1wzXDJcMlwyXHUwMjQwIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAyNDFcN1x1MDBmYlwyXDJcdTAyNDFcdTAyNDVcN1x1MDBmYlwyXDJcdTAyNDJcdTAy NDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDI0M1x1MDI0NFw3XHUwMGZh XDJcMlx1MDI0NFx1MDI0Nlw3XDMzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjQ1 XHUwMjQyXDNcMlwyXDJcdTAyNDVcdTAyNDZcM1wyXDJcMlx1MDI0Nlx1MDI0N1wzIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTAyNDdcdTAyNDhcNyBcMlwyXHUwMjQ4JVwzXDJcMlwy XHUwMjQ5XHUwMjRiXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlNcMlwyXHUwMjRhXHUwMjRj XDdcdTAwZmJcMlwyXHUwMjRiXHUwMjRhXDNcMlwyXDJcdTAyNGIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDI0Y1wzXDJcMlwyXHUwMjRjXHUwMjRkXDNcMlwyXDJcdTAyNGRcdTAyNGVcN1wz NlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDI0ZVx1MDI0Zlw3XHUwMGZhXDJcMlx1 MDI0Zlx1MDI1MFw3IFwyXDJcdTAyNTBcJyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAyNTFcdTAyNTNcN1RcMlwyXHUwMjUyXHUwMjU0XDdcdTAwZmJcMlwyXHUwMjUzIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAyNTJcM1wyXDJcMlx1MDI1M1x1MDI1NFwzXDJcMlwyXHUw MjU0XHUwMjU1XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDI1NVx1MDI1Nlw3 XDM2XDJcMlx1MDI1Nlx1MDI1N1w3XHUwMGZhXDJcMlx1MDI1N1x1MDI1OCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDI1OClcM1wyXDJcMlx1MDI1OVx1MDI1Ylw3VVwyXDJcdTAy NWFcdTAyNWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZiXDJcMlx1MDI1Ylx1MDI1 YVwzXDJcMlwyXHUwMjViXHUwMjVjXDNcMlwyXDJcdTAyNWMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDI1ZFwzXDJcMlwyXHUwMjVkXHUwMjVlXDdcMzZcMlwyXHUwMjVlXHUwMjVmXDdcdTAw ZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAyNWZcdTAyNjBcNyBcMlwyXHUwMjYw K1wzXDJcMlwyXHUwMjYxXHUwMjYzXDdWIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUw MjYyXHUwMjY0XDdcdTAwZmJcMlwyXHUwMjYzXHUwMjYyXDNcMlwyXDJcdTAyNjMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDI2NFwzXDJcMlwyXHUwMjY0XHUwMjY1XDNcMlwyXDJcdTAyNjVc dTAyNjZcN1wzNlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDI2Nlx1MDI2N1w3XHUw MGZhXDJcMlx1MDI2N1x1MDI2OFw3IFwyXDJcdTAyNjgtXDMiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcMlx1MDI2OVx1MDI2YVw3K1wyXDJcdTAyNmFcdTAyNmJcN1tcMlwyXHUwMjZiXHUw MjZjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDI2Y1x1MDI2ZFw1TFwnXDJc dTAyNmRcdTAyNmVcNyFcMlwyXHUwMjZlXHUwMjZmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc Ny5cMlwyXHUwMjZmXHUwMjcwXDdcYlwyXDJcdTAyNzBcdTAyNzFcN1x1MDBlY1wyXDJcdTAyNzEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDI3Mlw3XDMwXDJcMlx1MDI3Mlx1MDI3M1w3XHUw MGZhXDJcMlx1MDI3M1x1MDI3NFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzFcMlwyXHUw Mjc0XHUwMjc1XDchXDJcMlx1MDI3NVx1MDI3Nlw3PVwyXDJcdTAyNzZcdTAyNzciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwMjc3XHUwMjc4XDdcdTAwZWNcMlwyXHUwMjc4XHUw Mjc5XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyNzlcdTAyN2FcN1x1MDBm YVwyXDJcdTAyN2FcdTAyN2JcN1wzMVwyXDJcdTAyN2JcdTAyODEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3IVwyXDJcdTAyN2NcdTAyN2RcN1x1MDA4M1wyXDJcdTAyN2RcdTAyN2VcN1xiXDJc Mlx1MDI3ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjdmXDVcNjBcMzFcMlx1MDI3Zlx1 MDI4MFw3IVwyXDJcdTAyODBcdTAyODJcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XHUwMjgxXHUwMjdjXDNcMlwyXDJcdTAyODFcdTAyODJcM1wyXDJcMlx1MDI4Mlx1MDI4OCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyODNcdTAyODRcN1x1MDA4MVwyXDJcdTAy ODRcdTAyODVcN1xiXDJcMlx1MDI4NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjg2XDVc NjJcMzJcMlx1MDI4Nlx1MDI4N1w3IVwyXDJcdTAyODdcdTAyODlcM1wyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXHUwMjg4XHUwMjgzXDNcMlwyXDJcdTAyODhcdTAyODlcM1wyXDJcMlx1 MDI4OVx1MDI4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyOGFcdTAyOGJc N1x1MDA4MlwyXDJcdTAyOGJcdTAyOGNcN1xiXDJcMlx1MDI4YyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMjhkXDVcNjZcMzRcMlx1MDI4ZFx1MDI4ZVw3IVwyXDJcdTAyOGVcdTAyOTBcM1wy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwMjhmXHUwMjhhXDNcMlwyXDJcdTAyOGZc dTAyOTBcM1wyXDJcMlx1MDI5MFx1MDI5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTAyOTFcdTAyOTJcNThcMzVcMlx1MDI5Mlx1MDI5M1w3LVwyXDJcdTAyOTMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDI5NFw3IFwyXDJcdTAyOTQvXDNcMlwyXDJcdTAyOTVcdTAyOThc NUxcJ1wyXHUwMjk2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOTdcNyhcMlwyXHUwMjk3 XHUwMjk5XDVMXCdcMlx1MDI5OFx1MDI5NlwzXDJcMlwyXHUwMjk4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAyOTlcM1wyXDJcMlx1MDI5OVx1MDI5Y1wzXDJcMlwyXHUwMjlhXHUwMjliXDco XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjliXHUwMjlkXDVMXCdcMlx1MDI5Y1x1 MDI5YVwzXDJcMlwyXHUwMjljXHUwMjlkXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc Mlx1MDI5ZFx1MDJhMFwzXDJcMlwyXHUwMjllXHUwMjlmXDcoXDJcMlx1MDI5Zlx1MDJhMSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDVMXCdcMlx1MDJhMFx1MDI5ZVwzXDJcMlwyXHUwMmEwXHUw MmExXDNcMlwyXDJcdTAyYTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2MVwzXDJcMlwyXHUw MmEyXHUwMmE3XDVcNjRcMzNcMlx1MDJhM1x1MDJhNFw3KFwyXDJcdTAyYTQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDJhNlw1XDY0XDMzXDJcdTAyYTVcdTAyYTNcM1wyXDJcMlx1MDJhNlx1 MDJhOVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyYTdcdTAyYTVcM1wyXDJc Mlx1MDJhN1x1MDJhOFwzXDJcMlwyXHUwMmE4XDYzXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcMlx1MDJhOVx1MDJhN1wzXDJcMlwyXHUwMmFhXHUwMmFiXHRcM1wyXDJcdTAyYWJcNjUi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmFjXHUwMmFkXHRcNFwyXDJcdTAy YWRcNjdcM1wyXDJcMlx1MDJhZVx1MDJiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDU6XDM2 XDJcdTAyYWZcdTAyYWVcM1wyXDJcMlx1MDJiMFx1MDJiM1wzXDJcMlwyXHUwMmIxIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAyYWZcM1wyXDJcMlx1MDJiMVx1MDJiMlwzXDJcMlwyXHUwMmIy OVwzXDJcMlwyXHUwMmIzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYjFcM1wyXDJcMlx1 MDJiNFx1MDJiZlw1ZFw2M1wyXHUwMmI1XHUwMmJmXDVoXDY1XDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDJiNlx1MDJiZlw1alw2NlwyXHUwMmI3XHUwMmJmXDU+IFwyXHUwMmI4XHUwMmJm XDVAIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIhXDJcdTAyYjlcdTAyYmZcNUQjXDJcdTAyYmFc dTAyYmZcNTxcMzdcMlx1MDJiYlx1MDJiZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVGJFwy XHUwMmJjXHUwMmJmXDVIJVwyXHUwMmJkXHUwMmJmXDVcdTAxMWNcdTAwOGZcMlx1MDJiZSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmI0XDNcMlwyXDJcdTAyYmVcdTAyYjVcM1wyXDJcMlx1 MDJiZVx1MDJiNlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyYmVcdTAyYjdc M1wyXDJcMlx1MDJiZVx1MDJiOFwzXDJcMlwyXHUwMmJlXHUwMmI5XDMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcMlx1MDJiZVx1MDJiYVwzXDJcMlwyXHUwMmJlXHUwMmJiXDNcMlwyXDJc dTAyYmVcdTAyYmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmJlXHUwMmJk XDNcMlwyXDJcdTAyYmY7XDNcMlwyXDJcdTAyYzBcdTAyYzEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3XHUwMDliXDJcMlx1MDJjMVx1MDJjMlw3XHUwMGZiXDJcMlx1MDJjMlx1MDJjM1w3IVwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDJjM1x1MDJjNFw3XDYyXDJcMlx1MDJjNFx1 MDJjNVw3XGJcMlwyXHUwMmM1XHUwMmM2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBl Y1wyXDJcdTAyYzZcdTAyYzdcN1wzMFwyXDJcdTAyYzdcdTAyYzhcN1x1MDBmYSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJjOFx1MDJjZFw3XDMxXDJcMlx1MDJjOVx1MDJjYVw3IVwy XDJcdTAyY2FcdTAyY2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMDljXDJcMlx1MDJj Ylx1MDJjY1w3XGJcMlwyXHUwMmNjXHUwMmNlXDdcdTAwZmFcMiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcdTAyY2RcdTAyYzlcM1wyXDJcMlx1MDJjZFx1MDJjZVwzXDJcMlwyXHUwMmNlXHUw MmNmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDJjZlx1MDJkMFw3IFwyXDJc dTAyZDA9XDNcMlwyXDJcdTAyZDFcdTAyZTIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUw MDlkXDJcMlx1MDJkMlx1MDJkM1w3XHUwMGZiXDJcMlx1MDJkM1x1MDJlM1w3IVwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDJkNFx1MDJkNVw3VlwyXDJcdTAyZDVcdTAyZTNcNyFcMlwy XHUwMmQ2XHUwMmQ3XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlVcMlwyXHUwMmQ3XHUwMmUz XDchXDJcMlx1MDJkOFx1MDJkOVw3VFwyXDJcdTAyZDlcdTAyZTMiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3IVwyXDJcdTAyZGFcdTAyZGJcN1NcMlwyXHUwMmRiXHUwMmUzXDchXDJcMlx1MDJk Y1x1MDJkZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdYXDJcMlx1MDJkZFx1MDJlM1w3IVwy XDJcdTAyZGVcdTAyZGZcN1lcMlwyXHUwMmRmXHUwMmUzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcNyFcMlwyXHUwMmUwXHUwMmUxXDdaXDJcMlx1MDJlMVx1MDJlM1w3IVwyXDJcdTAyZTJcdTAy ZDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmUyXHUwMmQ0XDNcMlwyXDJc dTAyZTJcdTAyZDZcM1wyXDJcMlx1MDJlMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmQ4 XDNcMlwyXDJcdTAyZTJcdTAyZGFcM1wyXDJcMlx1MDJlMlx1MDJkY1wzXDJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTAyZTJcdTAyZGVcM1wyXDJcMlx1MDJlMlx1MDJlMFwzXDJcMlwy XHUwMmUzXHUwMmU4XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDJlNFx1MDJl NVw3XHUwMDhmXDJcMlx1MDJlNVx1MDJlNlw3XGJcMlwyXHUwMmU2IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAyZTdcN1x1MDBmYVwyXDJcdTAyZTdcdTAyZTlcNyFcMlwyXHUwMmU4XHUwMmU0 XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJlOFx1MDJlOVwzXDJcMlwyXHUw MmU5XHUwMmVhXDNcMlwyXDJcdTAyZWFcdTAyZWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 XHUwMDhlXDJcMlx1MDJlYlx1MDJlY1w3XGJcMlwyXHUwMmVjXHUwMmVkXDdcdTAwZmJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyZWRcdTAyZWVcNyFcMlwyXHUwMmVlXHUwMmVmXDdb XDJcMlx1MDJlZlx1MDJmMFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcYlwyXDJcdTAyZjBc dTAyZjFcNUxcJ1wyXHUwMmYxXHUwMmYyXDcgXDJcMlx1MDJmMj9cMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMmYzXHUwMzA0XDdcdTAwOWVcMlwyXHUwMmY0XHUwMmY1XDdcdTAw ZmJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyZjVcdTAzMDVcNyFcMlwyXHUwMmY2 XHUwMmY3XDdWXDJcMlx1MDJmN1x1MDMwNVw3ISIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc Mlx1MDJmOFx1MDJmOVw3VVwyXDJcdTAyZjlcdTAzMDVcNyFcMlwyXHUwMmZhXHUwMmZiIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcN1RcMlwyXHUwMmZiXHUwMzA1XDchXDJcMlx1MDJmY1x1MDJm ZFw3U1wyXDJcdTAyZmRcdTAzMDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTAy ZmVcdTAyZmZcN1hcMlwyXHUwMmZmXHUwMzA1XDchXDJcMlx1MDMwMFx1MDMwMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdZXDJcMlx1MDMwMVx1MDMwNVw3IVwyXDJcdTAzMDJcdTAzMDNcN1pc MlwyXHUwMzAzXHUwMzA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwMzA0XHUw MmY0XDNcMlwyXDJcdTAzMDRcdTAyZjZcM1wyXDJcMlx1MDMwNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMmY4XDNcMlwyXDJcdTAzMDRcdTAyZmFcM1wyXDJcMlx1MDMwNFx1MDJmY1wzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDRcdTAyZmVcM1wyXDJcMlx1MDMwNFx1 MDMwMFwzXDJcMlwyXHUwMzA0XHUwMzAyXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc Mlx1MDMwNVx1MDMwYVwzXDJcMlwyXHUwMzA2XHUwMzA3XDdcdTAwOGZcMlwyXHUwMzA3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTAzMDhcN1xiXDJcMlx1MDMwOFx1MDMwOVw3XHUwMGZhXDJc Mlx1MDMwOVx1MDMwYlw3ISIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDMwYVx1MDMw NlwzXDJcMlwyXHUwMzBhXHUwMzBiXDNcMlwyXDJcdTAzMGJcdTAzMGMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMzBjXHUwMzBkXDdcdTAwOWNcMlwyXHUwMzBkXHUwMzBlXDdc YlwyXDJcdTAzMGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDMxM1w1QlwiXDJcdTAzMGZc dTAzMTBcNyhcMlwyXHUwMzEwXHUwMzEyXDVCXCJcMlx1MDMxMSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzBmXDNcMlwyXDJcdTAzMTJcdTAzMTVcM1wyXDJcMlx1MDMxM1x1MDMxMVwzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMTNcdTAzMTRcM1wyXDJcMlx1MDMxNFx1 MDMxNlwzXDJcMlwyXHUwMzE1XHUwMzEzXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc Mlx1MDMxNlx1MDMyNlw3IVwyXDJcdTAzMTdcdTAzMThcN1x1MDA4ZVwyXDJcdTAzMTgiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDMxOVw3XGJcMlwyXHUwMzE5XHUwMzFhXDdcdTAwZmJcMlwy XHUwMzFhXHUwMzI3XDchIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzFiXHUwMzFj XDdcdTAwOGVcMlwyXHUwMzFjXHUwMzFkXDdcYlwyXDJcdTAzMWQiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDMxZVw3XHUwMGVjXDJcMlx1MDMxZVx1MDMxZlw3XDMwXDJcMlx1MDMxZlx1MDMy MFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwMzIwXHUwMzIxXDdcMzFc MlwyXHUwMzIxXHUwMzIyXDchXDJcMlx1MDMyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw MzIzXDdcdTAwOWZcMlwyXHUwMzIzXHUwMzI0XDdcYlwyXDJcdTAzMjRcdTAzMjVcN1x1MDBmYSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDMyNVx1MDMyN1w3IVwyXDJcdTAzMjZcdTAz MTdcM1wyXDJcMlx1MDMyNlx1MDMxYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAzMjdcdTAzMjhcM1wyXDJcMlx1MDMyOFx1MDMyOVw3W1wyXDJcdTAzMjkiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDMyYVw3XGJcMlwyXHUwMzJhXHUwMzJiXDVMXCdcMlx1MDMyYlx1MDMy Y1w3IFwyXDJcdTAzMmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIkFcM1wyXDJcMlx1MDMyZFx1 MDMyZVw3XHUwMGZhXDJcMlx1MDMyZUNcM1wyXDJcMlx1MDMyZiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMzMwXDdcdTAwYTBcMlwyXHUwMzMwXHUwMzMxXDdcdTAwZmJcMlwyXHUwMzMxXHUw MzM2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwMzMyXHUwMzMzXDdcdTAwOGZc MlwyXHUwMzMzXHUwMzM0XDdcYlwyXDJcdTAzMzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDMzNVw3XHUwMGZhXDJcMlx1MDMzNVx1MDMzN1w3IVwyXDJcdTAzMzZcdTAzMzJcM1wyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzM2XHUwMzM3XDNcMlwyXDJcdTAzMzdcdTAzM2Zc M1wyXDJcMlx1MDMzOFx1MDMzOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwOGVcMlwy XHUwMzM5XHUwMzNhXDdcYlwyXDJcdTAzM2FcdTAzM2JcN1x1MDBlY1wyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MDMzYlx1MDMzY1w3XDMwXDJcMlx1MDMzY1x1MDMzZFw3XHUwMGZhXDJc Mlx1MDMzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNlXDdcMzFcMlwyXHUwMzNlXHUw MzQwXDchXDJcMlx1MDMzZlx1MDMzOFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTAzNDBcdTAzNDFcM1wyXDJcMlx1MDM0MVx1MDMzZlwzXDJcMlwyXHUwMzQxXHUwMzQyXDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDM0Mlx1MDM0M1wzXDJcMlwyXHUwMzQzXHUw MzQ0XDdbXDJcMlx1MDM0NFx1MDM0NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJc dTAzNDVcdTAzNDZcNUxcJ1wyXHUwMzQ2XHUwMzQ3XDcgXDJcMlx1MDM0N0UiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzQ4XHUwMzQ5XDdsXDJcMlx1MDM0OVx1MDM0YVw1XHUw MTI0XHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDM0YVx1MDM0Ylw3IFwyXDJc dTAzNGJcdTAzNGNcNThcMzVcMlx1MDM0Y1x1MDM0ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdzXDJcMlx1MDM0ZFx1MDM0ZVw3IFwyXDJcdTAzNGVHXDNcMlwyXDJcdTAzNGZcdTAzNTAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3a1wyXDJcdTAzNTBcdTAzNTFcNVx1MDEyNFx1MDA5M1wy XHUwMzUxXHUwMzUyXDcgXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzUyXHUwMzUz XDU4XDM1XDJcdTAzNTNcdTAzNTRcN3NcMlwyXHUwMzU0XHUwMzU1XDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIiBcMlwyXHUwMzU1SVwzXDJcMlwyXHUwMzU2XHUwMzU3XDdcdTAwZmFcMlwyXHUw MzU3XHUwMzU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwMzU4XHUwMzU5XDdc dTAwZmFcMlwyXHUwMzU5XHUwMzVhXDchXDJcMlx1MDM1YSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzViXDdcdTAwZmFcMlwyXHUwMzViXHUwMzVjXDchXDJcMlx1MDM1Y1x1MDM1ZFw3XHUw MGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzVkXHUwMzVlXDchXDJcMlx1MDM1 ZVx1MDM1Zlw3XHUwMGZhXDJcMlx1MDM1ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzYw XDchXDJcMlx1MDM2MFx1MDM2MVw3XHUwMGZhXDJcMlx1MDM2MVx1MDM2Mlw3IVwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDM2Mlx1MDM2M1w3XHUwMGZhXDJcMlx1MDM2M1x1MDM2NFw3 IVwyXDJcdTAzNjRcdTAzNjUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1 MDM2NUtcM1wyXDJcMlx1MDM2Nlx1MDM2N1w3XDI2XDJcMlx1MDM2NyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMzY4XDdcdTAwZmFcMlwyXHUwMzY4XHUwMzY5XDchXDJcMlx1MDM2OVx1MDM2 YVw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzZhXHUwMzZiXDchXDJc Mlx1MDM2Ylx1MDM2Y1w3XHUwMGZhXDJcMlx1MDM2YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMzcyXDchXDJcMlx1MDM2ZFx1MDM2ZVw3XDI2XDJcMlx1MDM2ZVx1MDM2Zlw1SiZcMlx1MDM2 ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzcwXDdcMjdcMlwyXHUwMzcwXHUwMzczXDNc MlwyXDJcdTAzNzFcdTAzNzNcNUomXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM3Mlx1 MDM2ZFwzXDJcMlwyXHUwMzcyXHUwMzcxXDNcMlwyXDJcdTAzNzNcdTAzNzRcMyIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzc0XHUwMzc1XDdcMjdcMlwyXHUwMzc1TVwzXDJcMlwy XHUwMzc2XHUwMzc3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTAzNzdc dTAzNzhcN1wzMFwyXDJcdTAzNzhcdTAzNzlcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDM3OVx1MDM3YVw3XDMxXDJcMlx1MDM3YU9cM1wyXDJcMlx1MDM3Ylx1MDM3Y1w1 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJSKlwyXHUwMzdjXHUwMzdkXDVUK1wyXHUwMzdkUVwz XDJcMlwyXHUwMzdlXHUwMzdmXDdcdTAwOGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTAzN2ZcdTAzODBcN1xiXDJcMlx1MDM4MFx1MDM4MVw3XHUwMGZiXDJcMlx1MDM4MSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMzgzXDchXDJcMlx1MDM4Mlx1MDM3ZVwzXDJcMlwyXHUwMzgy XHUwMzgzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM4M1x1MDM4OVwzXDJc MlwyXHUwMzg0XHUwMzg1XDdcdTAwOGZcMlwyXHUwMzg1XHUwMzg2IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN1xiXDJcMlx1MDM4Nlx1MDM4N1w1WC1cMlx1MDM4N1x1MDM4OFw3IVwyXDJcdTAz ODhcdTAzOGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzg5XHUwMzg0XDNc MlwyXDJcdTAzODlcdTAzOGFcM1wyXDJcMlx1MDM4YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMzhmXDNcMlwyXDJcdTAzOGJcdTAzOGNcN1x1MDA5MVwyXDJcdTAzOGNcdTAzOGRcN1xiIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwMzhkXHUwMzhlXDdcdTAwZmFcMlwyXHUwMzhl XHUwMzkwXDchXDJcMlx1MDM4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzhiXDNcMlwy XDJcdTAzOGZcdTAzOTBcM1wyXDJcMlx1MDM5MFNcM1wyXDJcMlx1MDM5MSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwMzkyXDdcNjJcMlwyXHUwMzkyXHUwMzkzXDdcYlwyXDJcdTAzOTNcdTAz OTRcN1x1MDBlYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM5NFx1MDM5NVw3XDMw XDJcMlx1MDM5NVx1MDM5Nlw3XHUwMGZhXDJcMlx1MDM5NiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzk3XDdcMzFcMlwyXHUwMzk3XHUwMzk4XDchXDJcMlx1MDM5OFx1MDM5OVw3PVwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDM5OVx1MDM5YVw3XGJcMlwyXHUwMzlhXHUwMzli XDdcdTAwZWNcMlwyXHUwMzliXHUwMzljIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1wzMFwy XDJcdTAzOWNcdTAzOWRcN1x1MDBmYVwyXDJcdTAzOWRcdTAzOWVcN1wzMVwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDM5ZVVcM1wyXDJcMlx1MDM5Zlx1MDNhOFw3flwyXDJcdTAzYTBc dTAzYThcN3lcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTFcdTAzYThcN3tcMlwy XHUwM2EyXHUwM2E4XDdcdTAwODBcMlwyXHUwM2EzXHUwM2E4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN3xcMlwyXHUwM2E0XHUwM2E4XDdcMTc3XDJcMlx1MDNhNVx1MDNhOFw3elwyXDJcdTAz YTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNhOFw3fVwyXDJcdTAzYTdcdTAzOWZcM1wy XDJcMlx1MDNhN1x1MDNhMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYTdc dTAzYTFcM1wyXDJcMlx1MDNhN1x1MDNhMlwzXDJcMlwyXHUwM2E3XHUwM2EzXDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDNhN1x1MDNhNFwzXDJcMlwyXHUwM2E3XHUwM2E1XDNc MlwyXDJcdTAzYTdcdTAzYTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2E4 V1wzXDJcMlwyXHUwM2E5XHUwM2FhXDdcdTAwZmJcMlwyXHUwM2FhIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAzYWJcN1wzMlwyXDJcdTAzYWJcdTAzYWNcN1x1MDBmYVwyXDJcdTAzYWNcdTAz YjZcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMzXDJcMlx1MDNhZFx1MDNiMlw3XHUwMGZi XDJcMlx1MDNhZVx1MDNhZlw3XDM0XDJcMlx1MDNhZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwM2IxXDVcdTAxNWNcdTAwYWZcMlx1MDNiMFx1MDNhZVwzXDJcMlwyXHUwM2IxXHUwM2I0IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNiMlx1MDNiMFwzXDJcMlwyXHUwM2Iy XHUwM2IzXDNcMlwyXDJcdTAzYjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNiNlwzXDJc MlwyXHUwM2I0XHUwM2IyXDNcMlwyXDJcdTAzYjVcdTAzYTlcM1wyXDJcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwM2I1XHUwM2FkXDNcMlwyXDJcdTAzYjZZXDNcMlwyXDJcdTAzYjdcdTAz YjlcN1wzNVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDNiOFx1MDNiN1wzXDJcMlwy XHUwM2I4XHUwM2I5XDNcMlwyXDJcdTAzYjlcdTAzYmEiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwM2JhXHUwM2U0XDdcdTAwZmFcMlwyXHUwM2JiXHUwM2U0XDdcdTAwZDNcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAzYmNcdTAzZTRcN1x1MDBkNFwyXDJcdTAzYmRc dTAzZTRcN1x1MDBkNVwyXDJcdTAzYmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlNFw3 XHUwMGQ2XDJcMlx1MDNiZlx1MDNlNFw3XHUwMGQ3XDJcMlx1MDNjMFx1MDNjMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwM2MxXHUwM2MyXDdcMzZcMlwyXHUwM2MyXHUw M2MzXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTAzYzNcdTAzYzRcN1wz NlwyXDJcdTAzYzRcdTAzZTRcN1x1MDBmYVwyXDJcdTAzYzUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDNjNlw3XHUwMGZhXDJcMlx1MDNjNlx1MDNjN1w3XDM3XDJcMlx1MDNjN1x1MDNjOFw3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwM2M4XHUwM2M5XDdcMzdcMlwy XHUwM2M5XHUwM2U0XDdcdTAwZmFcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAzY2Fc dTAzY2JcN1x1MDBmYVwyXDJcdTAzY2JcdTAzY2NcNyBcMlwyXHUwM2NjXHUwM2NkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTAzY2RcdTAzY2VcNyBcMlwyXHUwM2NlXHUw M2NmXDVMXCdcMlx1MDNjZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2QwXDcgXDJcMlx1 MDNkMFx1MDNkMVw3XHUwMGVjXDJcMlx1MDNkMVx1MDNkMlw3XDMwIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwM2QyXHUwM2QzXDdcdTAwZmFcMlwyXHUwM2QzXHUwM2Q0XDdcMzFcMlwy XHUwM2Q0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZTRcM1wyXDJcMlx1MDNkNVx1MDNk Nlw3XHUwMGVjXDJcMlx1MDNkNlx1MDNkN1w3XDMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwM2Q3XHUwM2Q4XDdcdTAwZmFcMlwyXHUwM2Q4XHUwM2U0XDdcMzFcMlwyXHUwM2Q5IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZGFcN1wyNlwyXDJcdTAzZGFcdTAzZGZcN1x1MDBm YVwyXDJcdTAzZGJcdTAzZGNcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIVwyXDJcdTAzZGNc dTAzZGVcN1x1MDBmYVwyXDJcdTAzZGRcdTAzZGJcM1wyXDJcMlx1MDNkZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwM2UxXDNcMlwyXDJcdTAzZGZcdTAzZGRcM1wyXDJcMlx1MDNkZlx1MDNl MFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZTBcdTAzZTJcM1wyXDJcMlx1 MDNlMVx1MDNkZlwzXDJcMlwyXHUwM2UyXHUwM2U0XDciKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyN1wyXDJcdTAzZTNcdTAzYjhcM1wyXDJcMlx1MDNlM1x1MDNiYlwzXDJcMlwyXHUwM2UzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYmNcM1wyXDJcMlx1MDNlM1x1MDNiZFwzXDJcMlwy XHUwM2UzXHUwM2JlXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNlM1x1MDNi ZlwzXDJcMlwyXHUwM2UzXHUwM2MwXDNcMlwyXDJcdTAzZTNcdTAzYzVcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwM2UzXHUwM2NhXDNcMlwyXDJcdTAzZTNcdTAzZDVcM1wyXDJc Mlx1MDNlM1x1MDNkOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzZTRbXDNc MlwyXDJcdTAzZTVcdTAzZTZcN1x1MDA5MlwyXDJcdTAzZTYiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDNlN1w3XGJcMlwyXHUwM2U3XHUwM2U4XDdcdFwyXDJcdTAzZThcdTAzZTlcN1wzMFwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDNlOVx1MDNlYVw3XHUwMGZhXDJcMlx1MDNl YVx1MDNlYlw3XDMxXDJcMlx1MDNlYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXVwzXDJcMlwy XHUwM2VjXHUwM2VkXDdcdTAwOTNcMlwyXHUwM2VkX1wzXDJcMlwyXHUwM2VlIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzZjFcNVxcL1wyXHUwM2VmXHUwM2YxXDVeXDYwXDJcdTAzZjBcdTAz ZWVcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2YwXHUwM2VmXDNcMlwyXDJc dTAzZjFhXDNcMlwyXDJcdTAzZjJcdTAzZjdcNWBcNjEiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXHUwM2YzXHUwM2Y0XDchXDJcMlx1MDNmNFx1MDNmNlw1YFw2MVwyXHUwM2Y1XHUwM2YzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNmNlx1MDNmOVwzXDJcMlwyXHUwM2Y3 XHUwM2Y1XDNcMlwyXDJcdTAzZjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDNmOFwzXDJc MlwyXHUwM2Y4Y1wzXDJcMlwyXHUwM2Y5XHUwM2Y3XDNcMlwyXDJcdTAzZmEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDNmYlw3XDY3XDJcMlx1MDNmYlx1MDNmY1w3L1wyXDJcdTAzZmNcdTAz ZmRcN1xiXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwM2ZkXHUwM2ZlXDdcdTAwZmFc MlwyXHUwM2ZlXHUwM2ZmXDchXDJcMlx1MDNmZlx1MDQwMCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDcuXDJcMlx1MDQwMFx1MDQwMVw3XGJcMlwyXHUwNDAxXHUwNDAyXDdcdTAwZWNcMlwyXHUw NDAyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MDNcN1wzMFwyXDJcdTA0MDNcdTA0MDRc N1x1MDBmYVwyXDJcdTA0MDRcdTA0MDVcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDMxXDJc Mlx1MDQwNVx1MDQwOVw3IFwyXDJcdTA0MDZcdTA0MDhcNWZcNjRcMlx1MDQwN1x1MDQwNiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0MDhcdTA0MGJcM1wyXDJcMlx1MDQwOVx1 MDQwN1wzXDJcMlwyXHUwNDA5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MGFcM1wyXDJc Mlx1MDQwYVx1MDQwY1wzXDJcMlwyXHUwNDBiXHUwNDA5XDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQwY1x1MDQwZFw3XDY2XDJcMlx1MDQwZFx1MDQwZVw3IFwyXDJcdTA0MGVl XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDQwZlx1MDQxZlw1alw2NlwyXHUw NDEwXHUwNDFmXDVsXDY3XDJcdTA0MTFcdTA0MWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1 bjhcMlx1MDQxMlx1MDQxZlw1XHUwMGE0U1wyXHUwNDEzXHUwNDFmXDVwOVwyXHUwNDE0IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA0MWZcNVx1MDA4OEVcMlx1MDQxNVx1MDQxZlw1XHUwMGY4 fVwyXHUwNDE2XHUwNDFmXDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDExOFx1MDA4ZFwy XHUwNDE3XHUwNDFmXDVcdTAxMWFcdTAwOGVcMlx1MDQxOFx1MDQxZiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDVcdTAxMTBcdTAwODlcMlx1MDQxOVx1MDQxZlw1XHUwMTFjXHUwMDhmXDJcdTA0 MWFcdTA0MWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMTIwXHUwMDkxXDJcdTA0MWJc dTA0MWNcNVx1MDA5NkxcMlx1MDQxY1x1MDQxZFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIg XDJcMlx1MDQxZFx1MDQxZlwzXDJcMlwyXHUwNDFlXHUwNDBmXDNcMlwyXDJcdTA0MWVcdTA0MTAi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDFlXHUwNDExXDNcMlwyXDJcdTA0 MWVcdTA0MTJcM1wyXDJcMlx1MDQxZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDEzXDNc MlwyXDJcdTA0MWVcdTA0MTRcM1wyXDJcMlx1MDQxZVx1MDQxNVwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA0MWVcdTA0MTZcM1wyXDJcMlx1MDQxZVx1MDQxN1wzXDJcMlwyXHUw NDFlXHUwNDE4XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQxZVx1MDQxOVwz XDJcMlwyXHUwNDFlXHUwNDFhXDNcMlwyXDJcdTA0MWVcdTA0MWIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwNDFmZ1wzXDJcMlwyXHUwNDIwXHUwNDIxXDc4XDJcMlx1MDQyMVx1 MDQyMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDQyMlx1MDQyM1w3XGJcMlwy XHUwNDIzXHUwNDI0XDdcdTAwZmFcMlwyXHUwNDI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA0MzNcNyFcMlwyXHUwNDI1XHUwNDI2XDc5XDJcMlx1MDQyNlx1MDQyN1w3XGJcMlwyXHUwNDI3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0MjhcN1x1MDBlY1wyXDJcdTA0MjhcdTA0Mjlc N1wzMFwyXDJcdTA0MjlcdTA0MmFcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJc Mlx1MDQyYVx1MDQyYlw3XDMxXDJcMlx1MDQyYlx1MDQyY1w3IFwyXDJcdTA0MmMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDQyZFw3OlwyXDJcdTA0MmRcdTA0MmVcN1xiXDJcMlx1MDQyZVx1 MDQyZlw1TFwnXDJcdTA0MmYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQzMFw3IFwyXDJc dTA0MzBcdTA0MzJcM1wyXDJcMlx1MDQzMVx1MDQyNVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA0MzJcdTA0MzVcM1wyXDJcMlx1MDQzM1x1MDQzMVwzXDJcMlwyXHUwNDMzXHUw NDM0XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQzNFx1MDQzOVwzXDJcMlwy XHUwNDM1XHUwNDMzXDNcMlwyXDJcdTA0MzZcdTA0MzgiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1Zlw2NFwyXHUwNDM3XHUwNDM2XDNcMlwyXDJcdTA0MzhcdTA0M2JcM1wyXDJcMlx1MDQzOSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDM3XDNcMlwyXDJcdTA0MzlcdTA0M2FcM1wyXDJc Mlx1MDQzYVx1MDQzY1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0M2JcdTA0 MzlcM1wyXDJcMlx1MDQzY1x1MDQzZFw3XDY2XDJcMlx1MDQzZFx1MDQzZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDQzZWlcM1wyXDJcMlx1MDQzZlx1MDQ0MFw1XFwvXDJcdTA0 NDBcdTA0NDEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IFwyXDJcdTA0NDFrXDNcMlwyXDJc dTA0NDJcdTA0NDNcNV5cNjBcMlx1MDQ0M1x1MDQ0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDcgXDJcMlx1MDQ0NG1cM1wyXDJcMlx1MDQ0NVx1MDQ0Nlw3XHUwMDk0XDJcMlx1MDQ0Nlx1MDQ0 NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwNDQ3XHUwNDQ4XDchXDJc Mlx1MDQ0OFx1MDQ0OVw1XHUwMTI0XHUwMDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1 MDQ0OVx1MDQ0YVw3XHUwMDk1XDJcMlx1MDQ0YVx1MDQ0Ylw3IFwyXDJcdTA0NGJvXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDQ0Y1x1MDQ1MFw1cjpcMlx1MDQ0ZFx1MDQ1MFw1 ej5cMlx1MDQ0ZVx1MDQ1MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDV+QFwyXHUwNDRmXHUw NDRjXDNcMlwyXDJcdTA0NGZcdTA0NGRcM1wyXDJcMlx1MDQ0Zlx1MDQ0ZSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0NTBxXDNcMlwyXDJcdTA0NTFcdTA0NTJcNztcMlwyXHUw NDUyXHUwNDUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNz5cMlwyXHUwNDUzXHUwNDU0XDdc YlwyXDJcdTA0NTRcdTA0NTVcN1x1MDBlY1wyXDJcdTA0NTUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDQ1Nlw3XDMwXDJcMlx1MDQ1Nlx1MDQ1N1w3XHUwMGZhXDJcMlx1MDQ1N1x1MDQ1Y1w3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMzFcMlwyXHUwNDU4XHUwNDU5XDchXDJcMlx1MDQ1 OVx1MDQ1YVw3QFwyXDJcdTA0NWFcdTA0NWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJc MlwyXHUwNDViXHUwNDVkXDV2PFwyXHUwNDVjXHUwNDU4XDNcMlwyXDJcdTA0NWNcdTA0NWQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDVkXHUwNDcyXDNcMlwyXDJcdTA0NWVc dTA0NWZcNyFcMlwyXHUwNDVmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NjFcNWJcNjJc Mlx1MDQ2MFx1MDQ1ZVwzXDJcMlwyXHUwNDYwXHUwNDYxXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDQ2MVx1MDQ2MlwzXDJcMlwyXHUwNDYyXHUwNDczXDcgXDJcMlx1MDQ2M1x1 MDQ2NFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCIhXDJcMlx1MDQ2NFx1MDQ2Nlw1Ylw2Mlwy XHUwNDY1XHUwNDYzXDNcMlwyXDJcdTA0NjVcdTA0NjYiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwNDY2XHUwNDZlXDNcMlwyXDJcdTA0NjdcdTA0NmJcNyFcMlwyXHUwNDY4IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0NmFcNXQ7XDJcdTA0NjlcdTA0NjhcM1wyXDJcMlx1 MDQ2YVx1MDQ2ZFwzXDJcMlwyXHUwNDZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0Njlc M1wyXDJcMlx1MDQ2Ylx1MDQ2Y1wzXDJcMlwyXHUwNDZjXHUwNDZmXDNcMlwyXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDQ2ZFx1MDQ2YlwzXDJcMlwyXHUwNDZlXHUwNDY3XDNcMlwyXDJc dTA0NmVcdTA0NmZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNDZmXHUwNDcw XDNcMlwyXDJcdTA0NzBcdTA0NzFcNzxcMlwyXHUwNDcxXHUwNDczIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcNyBcMlwyXHUwNDcyXHUwNDYwXDNcMlwyXDJcdTA0NzJcdTA0NjVcM1wyXDJcMlx1 MDQ3MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgic1wzXDJcMlwyXHUwNDc0XHUwNDc3XDVwOVwy XHUwNDc1XHUwNDc3XDVcdTAwODhFXDJcdTA0NzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDQ3NFwzXDJcMlwyXHUwNDc2XHUwNDc1XDNcMlwyXDJcdTA0Nzd1XDNcMlwyXDJcdTA0NzgiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDQ3ZFw1eD1cMlx1MDQ3OVx1MDQ3YVw3KFwyXDJcdTA0 N2FcdTA0N2NcNXg9XDJcdTA0N2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ3OVwzXDJc MlwyXHUwNDdjXHUwNDdmXDNcMlwyXDJcdTA0N2RcdTA0N2JcM1wyXDJcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNDdkXHUwNDdlXDNcMlwyXDJcdTA0N2V3XDNcMlwyXDJcdTA0N2ZcdTA0 N2RcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNDgwXHUwNDgxXHRcNVwyXDJc dTA0ODF5XDNcMlwyXDJcdTA0ODJcdTA0ODNcNz5cMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDJcdTA0ODNcdTA0ODRcNz1cMlwyXHUwNDg0XHUwNDg1XDdcYlwyXDJcdTA0ODVcdTA0ODYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDQ4Nlx1MDQ4N1w3XDMwXDJcMlx1 MDQ4N1x1MDQ4OFw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNDg4XHUw NDg5XDdcMzFcMlwyXHUwNDg5XHUwNDhhXDchXDJcMlx1MDQ4YVx1MDQ4YiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDc+XDJcMlx1MDQ4Ylx1MDQ4Y1w3XGJcMlwyXHUwNDhjXHUwNDhkXDdcdTAw ZWNcMlwyXHUwNDhkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0OGVcN1wzMFwyXDJcdTA0 OGVcdTA0OGZcN1x1MDBmYVwyXDJcdTA0OGZcdTA0OTdcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDMxXDJcMlx1MDQ5MFx1MDQ5MVw3IVwyXDJcdTA0OTFcdTA0OTJcNz5cMlwyXHUwNDkyXHUw NDkzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDQ5M1x1MDQ5NFw3XHUwMGVj XDJcMlx1MDQ5NFx1MDQ5NVw3XDMwXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDk1 XHUwNDk2XDdcdTAwZmFcMlwyXHUwNDk2XHUwNDk4XDdcMzFcMlwyXHUwNDk3XHUwNDkwIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ5N1x1MDQ5OFwzXDJcMlwyXHUwNDk4XHUw NGE5XDNcMlwyXDJcdTA0OTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5YVw3IVwyXDJc dTA0OWFcdTA0OWJcN0BcMlwyXHUwNDliXHUwNDljXDdcYlwyXDJcdTA0OWMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDRhMVw1fD9cMlx1MDQ5ZFx1MDQ5ZVw3KFwyXDJcdTA0OWVcdTA0YTBc NXw/XDJcdTA0OWYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ5ZFwzXDJcMlwyXHUwNGEw XHUwNGEzXDNcMlwyXDJcdTA0YTFcdTA0OWZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGExXHUwNGEyXDNcMlwyXDJcdTA0YTJcdTA0YTRcM1wyXDJcMlx1MDRhM1x1MDRhMVwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA0YTRcdTA0YTVcNyFcMlwyXHUwNGE1 XHUwNGE2XDd0XDJcMlx1MDRhNlx1MDRhNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwy XDJcdTA0YTdcdTA0YThcN1x1MDBmYVwyXDJcdTA0YThcdTA0YWFcM1wyXDJcMlx1MDRhOSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDk5XDNcMlwyXDJcdTA0YTlcdTA0YWFcM1wyXDJcMlx1 MDRhYVx1MDRhZFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0YWJcdTA0YWNc NyFcMlwyXHUwNGFjXHUwNGFlXDViXDYyXDJcdTA0YWRcdTA0YWJcMyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXHUwNGFkXHUwNGFlXDNcMlwyXDJcdTA0YWVcdTA0YWZcM1wyXDJcMlx1 MDRhZlx1MDRiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDRiMHtcM1wyXDJc Mlx1MDRiMVx1MDRiNFw3XHUwMGZhXDJcMlx1MDRiMlx1MDRiNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDVWLFwyXHUwNGIzXHUwNGIxXDNcMlwyXDJcdTA0YjNcdTA0YjJcM1wyXDJcMlx1MDRi NH0iKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNGI1XHUwNGI4XDVcdTAwODBB XDJcdTA0YjZcdTA0YjhcNVx1MDA4NkRcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGI3 XHUwNGI1XDNcMlwyXDJcdTA0YjdcdTA0YjZcM1wyXDJcMlx1MDRiOFwxNzdcM1wyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNGI5XHUwNGU5XDduXDJcMlx1MDRiYVx1MDRiYlw3Klwy XDJcdTA0YmJcdTA0YmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGJjXHUw NGJkXDdcdTAwZWNcMlwyXHUwNGJkXHUwNGJlXDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA0YmVcdTA0YmZcN1x1MDBmYVwyXDJcdTA0YmZcdTA0YzBcN1wzMVwyXDJcdTA0YzBc dTA0YzEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA0YzFcdTA0YzJcN29cMlwy XHUwNGMyXHUwNGMzXDdcYlwyXDJcdTA0YzNcdTA0YzQiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1TFwnXDJcdTA0YzRcdTA0YzVcNyFcMlwyXHUwNGM1XHUwNGM2XDcvXDJcMlx1MDRjNlx1MDRj NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0YzdcdTA0YzhcN1x1MDBmYVwy XDJcdTA0YzhcdTA0YzlcNyFcMlwyXHUwNGM5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 Y2FcN1x1MDA5MFwyXDJcdTA0Y2FcdTA0Y2JcN1xiXDJcMlx1MDRjYlx1MDRjY1w3XHUwMGZhIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNGNjXHUwNGNkXDchXDJcMlx1MDRjZFx1MDRl YVwzXDJcMlwyXHUwNGNlXHUwNGNmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN29cMlwyXHUw NGNmXHUwNGQwXDdcYlwyXDJcdTA0ZDBcdTA0ZDFcNUxcJ1wyXHUwNGQxXHUwNGQyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGQyXHUwNGQzXDcvXDJcMlx1MDRkM1x1MDRkNFw3 XGJcMlwyXHUwNGQ0XHUwNGQ1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJc dTA0ZDVcdTA0ZDZcNyFcMlwyXHUwNGQ2XHUwNGQ3XDdcdTAwOTBcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTA0ZDdcdTA0ZDhcN1xiXDJcMlx1MDRkOFx1MDRkOVw3XHUwMGZhXDJcMlx1 MDRkOVx1MDRkYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDRkYVx1MDRlYVwz XDJcMlwyXHUwNGRiXHUwNGRjXDcvXDJcMlx1MDRkY1x1MDRkZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdcYlwyXDJcdTA0ZGRcdTA0ZGVcN1x1MDBmYVwyXDJcdTA0ZGVcdTA0ZGZcNyFcMlwy XHUwNGRmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZTBcN1x1MDA5MFwyXDJcdTA0ZTBc dTA0ZTVcN1xiXDJcMlx1MDRlMVx1MDRlMlw3XHUwMGZiIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXHUwNGUyXHUwNGU2XDchXDJcMlx1MDRlM1x1MDRlNFw3XHUwMGZhXDJcMlx1MDRlNCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGU2XDchXDJcMlx1MDRlNVx1MDRlMVwzXDJcMlwy XHUwNGU1XHUwNGUzXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRlNlx1MDRl YVwzXDJcMlwyXHUwNGU3XHUwNGU4XDdcdTAwZmFcMlwyXHUwNGU4XHUwNGVhIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGU5XHUwNGJhXDNcMlwyXDJcdTA0ZTlcdTA0Y2VcM1wy XDJcMlx1MDRlOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGRiXDNcMlwyXDJcdTA0ZTlc dTA0ZTdcM1wyXDJcMlx1MDRlOVx1MDRlYVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA0ZWFcdTA0ZWJcM1wyXDJcMlx1MDRlYlx1MDRmMFw1UClcMlx1MDRlY1x1MDRlZFw3ISIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDRlZFx1MDRlZVw3QFwyXDJcdTA0ZWVcdTA0 ZWZcN1xiXDJcMlx1MDRlZlx1MDRmMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAwODJC XDJcdTA0ZjBcdTA0ZWNcM1wyXDJcMlx1MDRmMFx1MDRmMVwzXDJcMlwyXHUwNGYxIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA0ZjZcM1wyXDJcMlx1MDRmMlx1MDRmM1w3IVwyXDJcdTA0ZjNc dTA0ZjRcN3RcMlwyXHUwNGY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA0ZjVcN1xiXDJc Mlx1MDRmNVx1MDRmN1w3XHUwMGZhXDJcMlx1MDRmNlx1MDRmMlwzXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXDJcdTA0ZjZcdTA0ZjdcM1wyXDJcMlx1MDRmN1x1MDRmYVwzXDJcMlwyXHUw NGY4XHUwNGY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNGY5XHUwNGZiXDVc dTAwYjRbXDJcdTA0ZmFcdTA0ZjhcM1wyXDJcMlx1MDRmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNGZiXDNcMlwyXDJcdTA0ZmJcdTA0ZmNcM1wyXDJcMlx1MDRmY1x1MDRmZFw3IFwyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDRmZFx1MDA4MVwzXDJcMlwyXHUwNGZlXHUwNTAz XDVcdTAwODRDXDJcdTA0ZmZcdTA1MDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3KFwyXDJc dTA1MDBcdTA1MDJcNVx1MDA4NENcMlx1MDUwMVx1MDRmZlwzXDJcMlwyXHUwNTAyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1MDVcM1wyXDJcMlx1MDUwM1x1MDUwMVwzXDJcMlwyXHUwNTAz XHUwNTA0XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDUwNFx1MDA4M1wzXDJc MlwyXHUwNTA1XHUwNTAzXDNcMlwyXDJcdTA1MDZcdTA1MDlcNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMGZhXDJcMlx1MDUwN1x1MDUwOVw1VixcMlx1MDUwOFx1MDUwNlwzXDJcMlwyXHUw NTA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MDdcM1wyXDJcMlx1MDUwOVx1MDA4NVwz XDJcMlwyXHUwNTBhXHUwNTBiXDdcdTAwOTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTA1MGJcdTA1MGNcN1x1MDA5YlwyXDJcdTA1MGNcdTA1MGRcN1xiXDJcMlx1MDUwZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNTBlXDdcdTAwZmJcMlwyXHUwNTBlXHUwNTBmXDchXDJcMlx1 MDUwZlx1MDUxMFw1VCsiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNTEwXHUwNTE0XDch XDJcMlx1MDUxMVx1MDUxMlw1Ylw2MlwyXHUwNTEyXHUwNTEzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNyFcMlwyXHUwNTEzXHUwNTE1XDNcMlwyXDJcdTA1MTRcdTA1MTFcM1wyXDJcMlx1MDUx NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTE1XDNcMlwyXDJcdTA1MTVcdTA1MTZcM1wy XDJcMlx1MDUxNlx1MDUxN1w3XHUwMDlhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUw NTE3XHUwNTE4XDcgXDJcMlx1MDUxOFx1MDA4N1wzXDJcMlwyXHUwNTE5XHUwNTIwIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcNVx1MDBiOF1cMlx1MDUxYVx1MDUyMFw1XHUwMGU4dVwyXHUwNTFi XHUwNTIwXDVcdTAwYzYiKQ0KDQorICAgICAgICBidWYud3JpdGUoImRcMlx1MDUxY1x1MDUyMFw1 XHUwMGQ0a1wyXHUwNTFkXHUwNTIwXDVcdTAwZTJyXDJcdTA1MWUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDUyMFw1XHUwMGYweVwyXHUwNTFmXHUwNTE5XDNcMlwyXDJcdTA1MWZcdTA1MWFc M1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNTFmXHUwNTFiXDNcMlwyXDJcdTA1 MWZcdTA1MWNcM1wyXDJcMlx1MDUxZlx1MDUxZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTA1MWZcdTA1MWVcM1wyXDJcMlx1MDUyMFx1MDA4OVwzXDJcMlwyXHUwNTIxIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA1MjJcNWBcNjFcMlx1MDUyMlx1MDUyM1w3IVwyXDJcdTA1 MjNcdTA1MmRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTI0XHUwNTJkXDVc dTAwOGNHXDJcdTA1MjVcdTA1MmRcNVx1MDA4ZUhcMlx1MDUyNlx1MDUyZCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDVcdTAwOTBJXDJcdTA1MjdcdTA1MmRcNVx1MDA5MkpcMlx1MDUyOFx1MDUy ZFw1XHUwMDk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJLXDJcdTA1MjlcdTA1MmRcNVx1MDEx Y1x1MDA4ZlwyXHUwNTJhXHUwNTJkXDVcdTAwOTZMXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDUyYlx1MDUyZFw1XHUwMDk4TVwyXHUwNTJjXHUwNTIxXDNcMlwyXDJcdTA1MmNcdTA1MjQi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTJjXHUwNTI1XDNcMlwyXDJcdTA1 MmNcdTA1MjZcM1wyXDJcMlx1MDUyYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTI3XDNc MlwyXDJcdTA1MmNcdTA1MjhcM1wyXDJcMlx1MDUyY1x1MDUyOVwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA1MmNcdTA1MmFcM1wyXDJcMlx1MDUyY1x1MDUyYlwzXDJcMlwyXHUw NTJkXHUwMDhiXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDUyZVx1MDUyZlw3 cFwyXDJcdTA1MmZcdTA1MzBcN1w2MlwyXDJcdTA1MzBcdTA1MzEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw3XGJcMlwyXHUwNTMxXHUwNTMyXDdcdTAwZWNcMlwyXHUwNTMyXHUwNTMzXDdcMzBc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1MzNcdTA1MzRcN1x1MDBmYVwyXDJcdTA1 MzRcdTA1MzVcN1wzMVwyXDJcdTA1MzVcdTA1NDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3 IVwyXDJcdTA1MzZcdTA1MzdcN0BcMlwyXHUwNTM3XHUwNTM4XDdcYlwyXDJcdTA1MzhcdTA1M2Qi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwNTM5XHUwNTNhXDcoXDJcMlx1 MDUzYVx1MDUzY1w1XHUwMDllUFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1M2JcdTA1 MzlcM1wyXDJcMlx1MDUzY1x1MDUzZlwzXDJcMlwyXHUwNTNkXHUwNTNiXDMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcMlx1MDUzZFx1MDUzZVwzXDJcMlwyXHUwNTNlXHUwNTQwXDNcMlwy XDJcdTA1M2ZcdTA1M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTQwXHUw NTQxXDchXDJcMlx1MDU0MVx1MDU0M1wzXDJcMlwyXHUwNTQyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA1MzZcM1wyXDJcMlx1MDU0Mlx1MDU0M1wzXDJcMlwyXHUwNTQzXHUwNTQ0XDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU0NFx1MDU0NVw1XHUwMTI0XHUwMDkzXDJc dTA1NDVcdTA1NDdcN3NcMlwyXHUwNTQ2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NDhc NyBcMlwyXHUwNTQ3XHUwNTQ2XDNcMlwyXDJcdTA1NDdcdTA1NDhcM1wyXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNTQ4XHUwMDhkXDNcMlwyXDJcdTA1NDlcdTA1NGFcN3JcMlwyXHUw NTRhXHUwNTRiXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw2MlwyXDJcdTA1NGJcdTA1NGNc N1xiXDJcMlx1MDU0Y1x1MDU0ZFw3XHUwMGVjXDJcMlx1MDU0ZCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNTRlXDdcMzBcMlwyXHUwNTRlXHUwNTRmXDdcdTAwZmFcMlwyXHUwNTRmXHUwNTUw XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA1NTBcdTA1NWRcNyFcMlwyXHUw NTUxXHUwNTUyXDdAXDJcMlx1MDU1Mlx1MDU1MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdc YlwyXDJcdTA1NTNcdTA1NThcNVx1MDA5ZVBcMlx1MDU1NFx1MDU1NVw3KFwyXDJcdTA1NTUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDU1N1w1XHUwMDllUFwyXHUwNTU2XHUwNTU0XDNcMlwy XDJcdTA1NTdcdTA1NWFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNTU4XHUw NTU2XDNcMlwyXDJcdTA1NThcdTA1NTlcM1wyXDJcMlx1MDU1OVx1MDU1YiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NWFcdTA1NThcM1wyXDJcMlx1MDU1Ylx1MDU1Y1w3IVwy XDJcdTA1NWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1ZVwzXDJcMlwyXHUwNTVkXHUw NTUxXDNcMlwyXDJcdTA1NWRcdTA1NWVcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwNTVlXHUwNTVmXDNcMlwyXDJcdTA1NWZcdTA1NjBcNVx1MDEyNFx1MDA5M1wyXHUwNTYwIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjJcN3NcMlwyXHUwNTYxXHUwNTYzXDcgXDJcMlx1 MDU2Mlx1MDU2MVwzXDJcMlwyXHUwNTYyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjNc M1wyXDJcMlx1MDU2M1x1MDA4ZlwzXDJcMlwyXHUwNTY0XHUwNTY1XDdsXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNTY1XHUwNTY2XDVcdTAxMjRcdTAwOTNcMlx1MDU2Nlx1MDU2N1w3 IFwyXDJcdTA1NjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU2OFw1XHUwMGI0W1wyXHUw NTY4XHUwNTZhXDdzXDJcMlx1MDU2OVx1MDU2Ylw3IFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlx1MDU2YVx1MDU2OVwzXDJcMlwyXHUwNTZhXHUwNTZiXDNcMlwyXDJcdTA1NmJcdTAwOTEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTZjXHUwNTZkXDdcdTAwYTRcMlwy XHUwNTZkXHUwNTZlXDdcdTAwYTVcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA1NmVc dTA1NmZcN1xiXDJcMlx1MDU2Zlx1MDU3MFw3XHUwMGZhXDJcMlx1MDU3MFx1MDA5MyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NzFcdTA1NzJcN1x1MDBhNlwyXDJcdTA1NzJc dTA1NzNcN1xiXDJcMlx1MDU3MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTc0XDdcdTAw ZWNcMlwyXHUwNTc0XHUwNTc1XDdcMzBcMlwyXHUwNTc1XHUwNTc2XDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDBmYVwyXDJcdTA1NzZcdTA1NzdcN1wzMVwyXDJcdTA1NzdcdTA1NzhcNyFc MlwyXHUwNTc4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOTVcM1wyXDJcMlx1MDU3OVx1 MDU3YVw3XHUwMGViXDJcMlx1MDU3YVx1MDU3Ylw3XGIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTA1N2JcdTA1N2NcNUxcJ1wyXHUwNTdjXHUwNTdkXDchXDJcMlx1MDU3ZFx1MDA5NyIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1N2VcdTA1N2ZcN3FcMlwyXHUwNTdm XHUwNTgwXDdcNjJcMlwyXHUwNTgwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ODFcN1xi XDJcMlx1MDU4MVx1MDU4Mlw3XHUwMGVjXDJcMlx1MDU4Mlx1MDU4M1w3XDMwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwNTgzXHUwNTg0XDdcdTAwZmFcMlwyXHUwNTg0XHUwNTg1XDdc MzFcMlwyXHUwNTg1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1OGFcNyFcMlwyXHUwNTg2 XHUwNTg3XDdNXDJcMlx1MDU4N1x1MDU4OFw3XGJcMlwyXHUwNTg4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1ODlcN1x1MDBmYVwyXDJcdTA1ODlcdTA1OGJcNyFcMlwyXHUwNThhXHUwNTg2 XDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDU4YVx1MDU4YlwzXDJcMlwyXHUw NThiXHUwNThjXDNcMlwyXDJcdTA1OGNcdTA1OGQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1 XHUwMTI0XHUwMDkzXDJcdTA1OGRcdTA1OGZcN3NcMlwyXHUwNThlXHUwNTkwXDcgXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNThmXHUwNThlXDNcMlwyXDJcdTA1OGZcdTA1OTBcM1wy XDJcMlx1MDU5MFx1MDA5OVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA1OTFc dTA1OTNcNVx1MDA4YUZcMlx1MDU5Mlx1MDU5MVwzXDJcMlwyXHUwNTkzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA1OTZcM1wyXDJcMlx1MDU5NFx1MDU5MlwzXDJcMlwyXHUwNTk0XHUwNTk1 XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU5NVx1MDA5YlwzXDJcMlwyXHUw NTk2XHUwNTk0XDNcMlwyXDJcdTA1OTdcdTA1OWZcNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwMGEwUVwyXHUwNTk4XHUwNTlmXDVcdTAwYTJSXDJcdTA1OTlcdTA1OWZcNVx1MDBhNlQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNTlhXHUwNTlmXDVcdTAwYTRTXDJcdTA1OWJcdTA1 OWZcNVx1MDBhOFVcMlx1MDU5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTlmXDVcdTAw YjBZXDJcdTA1OWRcdTA1OWZcNVx1MDBiMlpcMlx1MDU5ZVx1MDU5N1wzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJcdTA1OWVcdTA1OThcM1wyXDJcMlx1MDU5ZVx1MDU5OVwzXDJcMlwy XHUwNTllXHUwNTlhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU5ZVx1MDU5 YlwzXDJcMlwyXHUwNTllXHUwNTljXDNcMlwyXDJcdTA1OWUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDU5ZFwzXDJcMlwyXHUwNTlmXHUwMDlkXDNcMlwyXDJcdTA1YTBcdTA1YTlcN1x1MDBm YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDVhMVx1MDVhOVw3eVwyXDJcdTA1YTJc dTA1YTlcN3ZcMlwyXHUwNWEzXHUwNWE5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN3VcMlwy XHUwNWE0XHUwNWE5XDd7XDJcMlx1MDVhNVx1MDVhOVw3fFwyXDJcdTA1YTZcdTA1YTkiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3elwyXDJcdTA1YTdcdTA1YTlcN31cMlwyXHUwNWE4XHUwNWEw XDNcMlwyXDJcdTA1YThcdTA1YTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUw NWE4XHUwNWEyXDNcMlwyXDJcdTA1YThcdTA1YTNcM1wyXDJcMlx1MDVhOCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNWE0XDNcMlwyXDJcdTA1YThcdTA1YTVcM1wyXDJcMlx1MDVhOFx1MDVh NlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YThcdTA1YTdcM1wyXDJcMlx1 MDVhOVx1MDA5ZlwzXDJcMlwyXHUwNWFhXHUwNWFiXDciKQ0KDQorICAgICAgICBidWYud3JpdGUo ImtcMlwyXHUwNWFiXHUwNWFjXDVcdTAxMjRcdTAwOTNcMlx1MDVhY1x1MDViOVw3IFwyXDJcdTA1 YWQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVhZVw3QFwyXDJcdTA1YWVcdTA1YWZcN1xi XDJcMlx1MDVhZlx1MDViNFw1XHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQXDJcdTA1 YjBcdTA1YjFcNyhcMlwyXHUwNWIxXHUwNWIzXDVcdTAwOWVQXDJcdTA1YjJcdTA1YjAiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNWIzXHUwNWI2XDNcMlwyXDJcdTA1YjRcdTA1 YjJcM1wyXDJcMlx1MDViNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWI1XDNcMlwyXDJc dTA1YjVcdTA1YjdcM1wyXDJcMlx1MDViNlx1MDViNFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1YjdcdTA1YjhcNyFcMlwyXHUwNWI4XHUwNWJhXDNcMlwyXDJcdTA1YjlcdTA1 YWRcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNWI5XHUwNWJhXDNcMlwyXDJc dTA1YmFcdTA1YmJcM1wyXDJcMlx1MDViYlx1MDViYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDVcdTAwYjRbXDJcdTA1YmNcdTA1YmVcN3NcMlwyXHUwNWJkXHUwNWJmXDcgXDJcMlx1MDViZSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWJkXDNcMlwyXDJcdTA1YmVcdTA1YmZcM1wyXDJc Mlx1MDViZlx1MDBhMVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1YzBcdTA1 YzFcN0tcMlwyXHUwNWMxXHUwNWMyXDVcdTAxMjRcdTAwOTNcMlx1MDVjMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNWNmXDcgXDJcMlx1MDVjM1x1MDVjNFw3QFwyXDJcdTA1YzRcdTA1YzVc N1xiXDJcMlx1MDVjNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNhXDVcdTAwOWVQXDJc dTA1YzZcdTA1YzdcNyhcMlwyXHUwNWM3XHUwNWM5XDVcdTAwOWUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlBcMlx1MDVjOFx1MDVjNlwzXDJcMlwyXHUwNWM5XHUwNWNjXDNcMlwyXDJcdTA1Y2Fc dTA1YzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNWNhXHUwNWNiXDNcMlwy XDJcdTA1Y2JcdTA1Y2RcM1wyXDJcMlx1MDVjYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw NWNhXDNcMlwyXDJcdTA1Y2RcdTA1Y2VcNyFcMlwyXHUwNWNlXHUwNWQwXDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDVjZlx1MDVjM1wzXDJcMlwyXHUwNWNmXHUwNWQwXDNcMlwy XDJcdTA1ZDBcdTA1ZDFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwNWQxXHUw NWQyXDVcdTAwYjRbXDJcdTA1ZDJcdTA1ZDRcN3NcMlwyXHUwNWQzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA1ZDVcNyBcMlwyXHUwNWQ0XHUwNWQzXDNcMlwyXDJcdTA1ZDRcdTA1ZDVcM1wy XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQ1XHUwMGEzXDNcMlwyXDJcdTA1ZDZc dTA1ZGVcN2NcMlwyXHUwNWQ3XHUwNWQ4XDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBh NlRcMlx1MDVkOFx1MDVkOVw3IVwyXDJcdTA1ZDlcdTA1ZGZcM1wyXDJcMlx1MDVkYSIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWRiXDdcYlwyXDJcdTA1ZGJcdTA1ZGNcNVouXDJcdTA1ZGNc dTA1ZGRcNyFcMlwyXHUwNWRkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZGZcM1wyXDJc Mlx1MDVkZVx1MDVkN1wzXDJcMlwyXHUwNWRlXHUwNWRhXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDVkZlx1MDVlNFwzXDJcMlwyXHUwNWUwXHUwNWUxXDdcdTAwOWJcMlwyXHUw NWUxXHUwNWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDVlMlx1MDVlM1w3 XHUwMGZiXDJcMlx1MDVlM1x1MDVlNVw3IVwyXDJcdTA1ZTQiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDVlMFwzXDJcMlwyXHUwNWU0XHUwNWU1XDNcMlwyXDJcdTA1ZTVcdTAwYTVcM1wyXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWU2XHUwNWU3XDdcdTAwOTZcMlwyXHUwNWU3 XHUwNWU4XDdcYlwyXDJcdTA1ZThcdTA1ZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUw MTI0XHUwMDkzXDJcdTA1ZTlcdTAwYTdcM1wyXDJcMlx1MDVlYVx1MDVlYlw1XHUwMGFhIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJWXDJcdTA1ZWJcdTAwYTlcM1wyXDJcMlx1MDVlY1x1MDVlZFw3 P1wyXDJcdTA1ZWRcdTA1ZWUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PlwyXDJcdTA1ZWVc dTA1ZWZcN1xiXDJcMlx1MDVlZlx1MDVmMFw3XHUwMGVjXDJcMlx1MDVmMCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNWYxXDdcMzBcMlwyXHUwNWYxXHUwNWYyXDdcdTAwZmFcMlwyXHUwNWYy XHUwNWYzXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA1ZjNcdTA1ZjRcNyFc MlwyXHUwNWY0XHUwNWY1XDdcdTAwOTZcMlwyXHUwNWY1IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTA1ZjZcN1xiXDJcMlx1MDVmNlx1MDVmN1w1Wi5cMlx1MDVmN1x1MDVmOFw3IVwyXDJcdTA1 ZjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDVmOVw3QFwyXDJcdTA1ZjlcdTA1ZmFcN1xi XDJcMlx1MDVmYVx1MDVmZlw1XHUwMGFjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJXXDJcdTA1 ZmJcdTA1ZmNcNyFcMlwyXHUwNWZjXHUwNWZkXDd0XDJcMlx1MDVmZFx1MDVmZSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1ZmVcdTA2MDBcN1x1MDBmYVwyXDJcdTA1ZmZcdTA1 ZmJcM1wyXDJcMlx1MDVmZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjAwXDNcMlwyXDJc dTA2MDBcdTA2MDVcM1wyXDJcMlx1MDYwMVx1MDYwMlw3IVwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDYwMlx1MDYwNFw1XFwvXDJcdTA2MDNcdTA2MDFcM1wyXDJcMlx1MDYwNFx1MDYw N1wzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2MDVcdTA2MDNcM1wyXDJcMlx1 MDYwNVx1MDYwNlwzXDJcMlwyXHUwNjA2XHUwNjA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlx1MDYwN1x1MDYwNVwzXDJcMlwyXHUwNjA4XHUwNjA5XDcgXDJcMlx1MDYwOSIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFiXDNcMlwyXDJcdTA2MGFcdTA2MGZcNVx1MDBhZVhc Mlx1MDYwYlx1MDYwY1w3KFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDYwY1x1MDYw ZVw1XHUwMGFlWFwyXHUwNjBkXHUwNjBiXDNcMlwyXDJcdTA2MGVcdTA2MTEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjBmXHUwNjBkXDNcMlwyXDJcdTA2MGZcdTA2MTBcM1wy XDJcMlx1MDYxMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGFkXDNcMlwyXDJcdTA2MTFc dTA2MGZcM1wyXDJcMlx1MDYxMlx1MDYxZVw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXHUwNjEzXHUwNjFlXDdcdTAwZWRcMlwyXHUwNjE0XHUwNjFlXDdcdTAwZWVcMlwyXHUw NjE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MWVcN3lcMlwyXHUwNjE2XHUwNjFlXDd7 XDJcMlx1MDYxN1x1MDYxZVw3XHUwMDgwXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUw NjE4XHUwNjFlXDd8XDJcMlx1MDYxOVx1MDYxZVw3dlwyXDJcdTA2MWFcdTA2MWVcNyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgidVwyXDJcdTA2MWJcdTA2MWVcN3pcMlwyXHUwNjFjXHUwNjFlXDd9 XDJcMlx1MDYxZFx1MDYxMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MWRc dTA2MTNcM1wyXDJcMlx1MDYxZFx1MDYxNFwzXDJcMlwyXHUwNjFkIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2MTVcM1wyXDJcMlx1MDYxZFx1MDYxNlwzXDJcMlwyXHUwNjFkXHUwNjE3XDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDYxZFx1MDYxOFwzXDJcMlwyXHUwNjFk XHUwNjE5XDNcMlwyXDJcdTA2MWRcdTA2MWFcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwNjFkXHUwNjFiXDNcMlwyXDJcdTA2MWRcdTA2MWNcM1wyXDJcMlx1MDYxZVx1MDBhZiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MWZcdTA2MjBcN1x1MDA5N1wyXDJc dTA2MjBcdTA2MjFcNVx1MDEyNFx1MDA5MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2 MjFcdTA2MjJcNyBcMlwyXHUwNjIyXHUwMGIxXDNcMlwyXDJcdTA2MjNcdTA2MjQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3XHUwMDk4XDJcMlx1MDYyNFx1MDYyNVw1XHUwMTI0XHUwMDkzXDJc dTA2MjVcdTA2MjZcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiIFwyXDJcdTA2MjZcdTAwYjNc M1wyXDJcMlx1MDYyN1x1MDYyOVw1XHUwMGI2XFxcMlx1MDYyOCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNjI3XDNcMlwyXDJcdTA2MjlcdTA2MmNcM1wyXDJcMlx1MDYyYVx1MDYyOFwzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MmFcdTA2MmJcM1wyXDJcMlx1MDYyYlx1 MDBiNVwzXDJcMlwyXHUwNjJjXHUwNjJhXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc Mlx1MDYyZFx1MDYzMFw1XHUwMDhhRlwyXHUwNjJlXHUwNjMwXDVcdTAwOWNPXDJcdTA2MmYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDYyZFwzXDJcMlwyXHUwNjJmXHUwNjJlXDNcMlwyXDJc dTA2MzBcdTAwYjdcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjMxXHUwNjM0 XDVcdTAwYmFeXDJcdTA2MzJcdTA2MzRcNVx1MDBjMGFcMlx1MDYzM1x1MDYzMSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2MzNcdTA2MzJcM1wyXDJcMlx1MDYzNFx1MDBiOVwz XDJcMlwyXHUwNjM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MzZcN1xcXDJcMlx1MDYz Nlx1MDYzN1w1UipcMlx1MDYzN1x1MDYzOFw1VCtcMlx1MDYzOCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNjNlXDchXDJcMlx1MDYzOVx1MDYzYVw3QFwyXDJcdTA2M2FcdTA2M2JcN1xiXDJc Mlx1MDYzYiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjNjXDVcdTAwYmNfXDJcdTA2M2Nc dTA2M2RcNyFcMlwyXHUwNjNkXHUwNjNmXDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc Mlx1MDYzZVx1MDYzOVwzXDJcMlwyXHUwNjNlXHUwNjNmXDNcMlwyXDJcdTA2M2ZcdTA2NDQiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjQwXHUwNjQxXDd0XDJcMlx1MDY0MVx1 MDY0Mlw3XGJcMlwyXHUwNjQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2NDNcN1x1MDBm YVwyXDJcdTA2NDNcdTA2NDVcNyFcMlwyXHUwNjQ0XHUwNjQwXDNcMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlx1MDY0NFx1MDY0NVwzXDJcMlwyXHUwNjQ1XHUwNjQ2XDNcMlwyXDJcdTA2 NDZcdTA2NDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMGI0W1wyXHUwNjQ3XHUwNjQ4 XDddXDJcMlx1MDY0OFx1MDY0OVw3IFwyXDJcdTA2NDkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDBiYlwzXDJcMlwyXHUwNjRhXHUwNjRmXDVcdTAwYmVgXDJcdTA2NGJcdTA2NGNcNyhcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2NGNcdTA2NGVcNVx1MDBiZWBcMlx1MDY0ZFx1 MDY0YlwzXDJcMlwyXHUwNjRlXHUwNjUxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDY0Zlx1MDY0ZFwzXDJcMlwyXHUwNjRmXHUwNjUwXDNcMlwyXDJcdTA2NTAiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDBiZFwzXDJcMlwyXHUwNjUxXHUwNjRmXDNcMlwyXDJcdTA2NTJc dTA2NTlcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDY1M1x1MDY1OVw3 dVwyXDJcdTA2NTRcdTA2NTlcN3ZcMlwyXHUwNjU1XHUwNjU5IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN3dcMlwyXHUwNjU2XHUwNjU5XDd4XDJcMlx1MDY1N1x1MDY1OVw1VixcMlx1MDY1OFx1 MDY1MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2NThcdTA2NTNcM1wyXDJc Mlx1MDY1OFx1MDY1NFwzXDJcMlwyXHUwNjU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2 NTVcM1wyXDJcMlx1MDY1OFx1MDY1NlwzXDJcMlwyXHUwNjU4XHUwNjU3XDNcMlwyXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDY1OVx1MDBiZlwzXDJcMlwyXHUwNjVhXHUwNjViXDdcdTAw YTFcMlwyXHUwNjViXHUwNjVjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNVApXDJcdTA2NWNc dTA2NjJcNyFcMlwyXHUwNjVkXHUwNjVlXDdAXDJcMlx1MDY1ZVx1MDY1ZiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2NWZcdTA2NjBcNVx1MDBjMmJcMlx1MDY2MFx1MDY2MVw3 IVwyXDJcdTA2NjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY2M1wzXDJcMlwyXHUwNjYy XHUwNjVkXDNcMlwyXDJcdTA2NjJcdTA2NjNcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNjYzXHUwNjY0XDNcMlwyXDJcdTA2NjRcdTA2NjVcN1x1MDBhMlwyXDJcdTA2NjVcdTA2 NjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwNjY2XHUwNjY3XDdcdTAwZWNc MlwyXHUwNjY3XHUwNjY4XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2Njhc dTA2NjlcN1x1MDBmYVwyXDJcdTA2NjlcdTA2NmFcN1wzMVwyXDJcdTA2NmFcdTA2NmIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA2NmJcdTA2NmNcNVx1MDA5YU5cMlx1MDY2Y1x1 MDY2ZFw3XHUwMGEzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjZkXHUwNjZlXDcg XDJcMlx1MDY2ZVx1MDBjMVwzXDJcMlwyXHUwNjZmXHUwNjc0XDUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBjNGNcMlx1MDY3MFx1MDY3MVw3KFwyXDJcdTA2NzFcdTA2NzNcNVx1MDBjNGNc Mlx1MDY3MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjcwXDNcMlwyXDJcdTA2NzNcdTA2 NzZcM1wyXDJcMlx1MDY3NFx1MDY3MlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA2NzRcdTA2NzVcM1wyXDJcMlx1MDY3NVx1MDBjM1wzXDJcMlwyXHUwNjc2XHUwNjc0XDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDY3N1x1MDY3YVw3XHUwMGZhXDJcMlx1MDY3 OFx1MDY3YVw1VixcMlx1MDY3OSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjc3XDNcMlwy XDJcdTA2NzlcdTA2NzhcM1wyXDJcMlx1MDY3YVx1MDBjNVwzXDJcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA2N2JcdTA2N2VcNVx1MDBjOGVcMlx1MDY3Y1x1MDY3ZVw1XHUwMGQwaVwy XHUwNjdkXHUwNjdiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY3ZFx1MDY3 Y1wzXDJcMlwyXHUwNjdlXHUwMGM3XDNcMlwyXDJcdTA2N2YiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDY4MFw3XlwyXDJcdTA2ODBcdTA2ODFcNVIqXDJcdTA2ODFcdTA2ODJcNVQrXDJcdTA2 ODIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY4OFw3IVwyXDJcdTA2ODNcdTA2ODRcN0Bc MlwyXHUwNjg0XHUwNjg1XDdcYlwyXDJcdTA2ODUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDY4Nlw1XHUwMGNjZ1wyXHUwNjg2XHUwNjg3XDchXDJcMlx1MDY4N1x1MDY4OVwzXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2ODhcdTA2ODNcM1wyXDJcMlx1MDY4OFx1MDY4OVwz XDJcMlwyXHUwNjg5XHUwNjhlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY4 YVx1MDY4Ylw3dFwyXDJcdTA2OGJcdTA2OGNcN1xiXDJcMlx1MDY4YyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwNjhkXDdcdTAwZmFcMlwyXHUwNjhkXHUwNjhmXDchXDJcMlx1MDY4ZVx1MDY4 YVwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA2OGVcdTA2OGZcM1wyXDJcMlx1 MDY4Zlx1MDY5MFwzXDJcMlwyXHUwNjkwXHUwNjkxIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc NVx1MDBjYWZcMlx1MDY5MVx1MDY5Mlw1XHUwMGI0W1wyXHUwNjkyXHUwNjkzXDdfXDJcMiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjkzXHUwNjk0XDcgXDJcMlx1MDY5NFx1MDBjOVwzXDJc MlwyXHUwNjk1XHUwNjk2XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoImBcMlwyXHUwNjk2XHUw Njk4XDdcYlwyXDJcdTA2OTdcdTA2OTlcN1wzNVwyXDJcdTA2OThcdTA2OTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjk4XHUwNjk5XDNcMlwyXDJcdTA2OTlcdTA2OWFcM1wy XDJcMlx1MDY5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjliXDdcdTAwZmFcMlwyXHUw NjliXHUwNjljXDchXDJcMlx1MDY5Y1x1MDY5ZFw3YVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlx1MDY5ZFx1MDY5Zlw3XGJcMlwyXHUwNjllXHUwNmEwXDdcMzVcMlwyXHUwNjlmXHUwNjll IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY5Zlx1MDZhMFwzXDJcMlwyXHUw NmEwXHUwNmExXDNcMlwyXDJcdTA2YTEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZhMlw3 XHUwMGZhXDJcMlx1MDZhMlx1MDZhN1w3IVwyXDJcdTA2YTNcdTA2YTRcN2JcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcdTA2YTRcdTA2YTVcN1xiXDJcMlx1MDZhNVx1MDZhNlw3XHUwMGZh XDJcMlx1MDZhNlx1MDZhOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDZhN1x1 MDZhM1wzXDJcMlwyXHUwNmE3XHUwNmE4XDNcMlwyXDJcdTA2YTgiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDBjYlwzXDJcMlwyXHUwNmE5XHUwNmFlXDVcdTAwY2VoXDJcdTA2YWFcdTA2YWJc NyhcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA2YWJcdTA2YWRcNVx1MDBjZWhcMlx1 MDZhY1x1MDZhYVwzXDJcMlwyXHUwNmFkXHUwNmIwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlx1MDZhZVx1MDZhY1wzXDJcMlwyXHUwNmFlXHUwNmFmXDNcMlwyXDJcdTA2YWYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDBjZFwzXDJcMlwyXHUwNmIwXHUwNmFlXDNcMlwyXDJc dTA2YjFcdTA2YmJcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDZiMlx1 MDZiYlw3XHUwMGVmXDJcMlx1MDZiM1x1MDZiYlw3XHUwMGYwXDJcMlx1MDZiNCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNmJiXDdcdTAwZjFcMlwyXHUwNmI1XHUwNmJiXDdcdTAwZjJcMlwy XHUwNmI2XHUwNmJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmM1wyXDJcdTA2Yjdc dTA2YmJcN1x1MDBmNFwyXDJcdTA2YjhcdTA2YmJcN1x1MDBmNSIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlx1MDZiOVx1MDZiYlw1VixcMlx1MDZiYVx1MDZiMVwzXDJcMlwyXHUwNmJhXHUw NmIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDZiYVx1MDZiM1wzXDJcMlwy XHUwNmJhXHUwNmI0XDNcMlwyXDJcdTA2YmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDZi NVwzXDJcMlwyXHUwNmJhXHUwNmI2XDNcMlwyXDJcdTA2YmFcdTA2YjdcM1wyXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNmJhXHUwNmI4XDNcMlwyXDJcdTA2YmFcdTA2YjlcM1wyXDJc Mlx1MDZiYlx1MDBjZlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2YmNcdTA2 YmRcN1w2MFwyXDJcdTA2YmRcdTA2YmVcNVIqXDJcdTA2YmVcdTA2YmYiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw1VCtcMlx1MDZiZlx1MDZjNVw3IVwyXDJcdTA2YzBcdTA2YzFcN0BcMlwyXHUw NmMxXHUwNmMyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDZjMlx1MDZjM1w1 XHUwMGQyalwyXHUwNmMzXHUwNmM0XDchXDJcMlx1MDZjNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNmM2XDNcMlwyXDJcdTA2YzVcdTA2YzBcM1wyXDJcMlx1MDZjNVx1MDZjNlwzXDJcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2YzZcdTA2YzhcM1wyXDJcMlx1MDZjN1x1MDZj OVw1XHUwMGNhZlwyXHUwNmM4XHUwNmM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDZjOFx1MDZjOVwzXDJcMlwyXHUwNmM5XHUwNmNhXDNcMlwyXDJcdTA2Y2EiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDZjYlw1XHUwMGI0W1wyXHUwNmNiXHUwNmNjXDdcNjFcMlwyXHUw NmNjXHUwNmNkXDcgIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNmNkXHUwMGQxXDNc MlwyXDJcdTA2Y2VcdTA2ZDNcNVx1MDBjZWhcMlx1MDZjZiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwNmQwXDcoXDJcMlx1MDZkMFx1MDZkMlw1XHUwMGNlaFwyXHUwNmQxXHUwNmNmXDNcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDZkMlx1MDZkNVwzXDJcMlwyXHUwNmQzXHUw NmQxXDNcMlwyXDJcdTA2ZDNcdTA2ZDQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwNmQ0XHUwMGQzXDNcMlwyXDJcdTA2ZDVcdTA2ZDNcM1wyXDJcMlx1MDZkNiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwNmQ5XDVcdTAwZDZsXDJcdTA2ZDdcdTA2ZDlcNVx1MDBkY29cMlx1 MDZkOFx1MDZkNlwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA2ZDhcdTA2ZDdc M1wyXDJcMlx1MDZkOVx1MDBkNVwzXDJcMlwyXHUwNmRhXHUwNmRiIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN2ZcMlwyXHUwNmRiXHUwNmRjXDVQKVwyXHUwNmRjXHUwNmUyXDchXDJcMlx1MDZk ZFx1MDZkZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDZkZVx1MDZkZlw3XGJc MlwyXHUwNmRmXHUwNmUwXDVcdTAwZDhtXDJcdTA2ZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDZlMVw3IVwyXDJcdTA2ZTFcdTA2ZTNcM1wyXDJcMlx1MDZlMlx1MDZkZFwzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZTJcdTA2ZTNcM1wyXDJcMlx1MDZlM1x1MDZlOFwz XDJcMlwyXHUwNmU0XHUwNmU1XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoInRcMlwyXHUwNmU1 XHUwNmU2XDdcYlwyXDJcdTA2ZTZcdTA2ZTdcN1x1MDBmYVwyXDJcdTA2ZTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDZlOVw3IVwyXDJcdTA2ZThcdTA2ZTRcM1wyXDJcMlx1MDZlOFx1MDZl OVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2ZTlcdTA2ZWFcM1wyXDJcMlx1 MDZlYVx1MDZlYlw3aFwyXDJcdTA2ZWJcdTA2ZWNcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XGJcMlwyXHUwNmVjXHUwNmVkXDdcdTAwZmFcMlwyXHUwNmVkXHUwNmVlXDchXDJcMlx1MDZlZSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmVmXDdpXDJcMlx1MDZlZlx1MDZmMFw3XGJcMlwy XHUwNmYwXHUwNmYxXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA2ZjFc dTA2ZjJcNyFcMlwyXHUwNmYyXHUwNmYzXDVcdTAwYjRbXDJcdTA2ZjNcdTA2ZjQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3Z1wyXDJcdTA2ZjRcdTA2ZjVcNyBcMlwyXHUwNmY1XHUwMGQ3XDNc MlwyXDJcdTA2ZjZcdTA2ZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMGRhblwyXHUw NmY3XHUwNmY4XDcoXDJcMlx1MDZmOFx1MDZmYVw1XHUwMGRhblwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA2ZjlcdTA2ZjdcM1wyXDJcMlx1MDZmYVx1MDZmZFwzXDJcMlwyXHUwNmZiXHUw NmY5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDZmYlx1MDZmY1wzXDJcMlwy XHUwNmZjXHUwMGQ5XDNcMlwyXDJcdTA2ZmRcdTA2ZmIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwNmZlXHUwNzAyXDdcdTAwZmFcMlwyXHUwNmZmXHUwNzAyXDdcMTNcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MDBcdTA3MDJcNVYsXDJcdTA3MDFcdTA2ZmVcM1wy XDJcMlx1MDcwMVx1MDZmZlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA3MDFc dTA3MDBcM1wyXDJcMlx1MDcwMlx1MDBkYlwzXDJcMlwyXHUwNzAzXHUwNzA0IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN2RcMlwyXHUwNzA0XHUwNzA1XDVQKVwyXHUwNzA1XHUwNzBiXDchXDJc Mlx1MDcwNlx1MDcwNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDcwN1x1MDcw OFw3XGJcMlwyXHUwNzA4XHUwNzA5XDVcdTAwZGVwXDJcdTA3MDkiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDcwYVw3IVwyXDJcdTA3MGFcdTA3MGNcM1wyXDJcMlx1MDcwYlx1MDcwNlwzXDJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MGJcdTA3MGNcM1wyXDJcMlx1MDcwY1x1 MDcxMVwzXDJcMlwyXHUwNzBkXHUwNzBlXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoInRcMlwy XHUwNzBlXHUwNzBmXDdcYlwyXDJcdTA3MGZcdTA3MTBcN1x1MDBmYVwyXDJcdTA3MTAiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDcxMlw3IVwyXDJcdTA3MTFcdTA3MGRcM1wyXDJcMlx1MDcx MVx1MDcxMlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MTJcdTA3MTNcM1wy XDJcMlx1MDcxM1x1MDcxNFw3aFwyXDJcdTA3MTRcdTA3MTVcNyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXGJcMlwyXHUwNzE1XHUwNzE2XDdcdTAwZmFcMlwyXHUwNzE2XHUwNzE3XDchXDJcMlx1 MDcxNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzE4XDdpXDJcMlx1MDcxOFx1MDcxOVw3 XGJcMlwyXHUwNzE5XHUwNzFhXDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTA3MWFcdTA3MWZcNyFcMlwyXHUwNzFiXHUwNzFjXDdqXDJcMlx1MDcxY1x1MDcxZCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3MWRcdTA3MWVcN1x1MDBmYVwyXDJcdTA3MWVc dTA3MjBcNyFcMlwyXHUwNzFmIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MWJcM1wyXDJc Mlx1MDcxZlx1MDcyMFwzXDJcMlwyXHUwNzIwXHUwNzIxXDNcMlwyXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDcyMVx1MDcyMlw1XHUwMGI0W1wyXHUwNzIyXHUwNzIzXDdlXDJcMlx1MDcy M1x1MDcyNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDcgXDJcMlx1MDcyNFx1MDBkZFwzXDJc MlwyXHUwNzI1XHUwNzJhXDVcdTAwZTBxXDJcdTA3MjYiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDcyN1w3KFwyXDJcdTA3MjdcdTA3MjlcNVx1MDBlMHFcMlx1MDcyOFx1MDcyNlwzXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3MjlcdTA3MmNcM1wyXDJcMlx1MDcyYVx1MDcy OFwzXDJcMlwyXHUwNzJhXHUwNzJiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDcyYlx1MDBkZlwzXDJcMlwyXHUwNzJjXHUwNzJhXDNcMlwyXDJcdTA3MmQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDczMFw3XHUwMGZhXDJcMlx1MDcyZVx1MDczMFw1VixcMlx1MDcyZlx1 MDcyZFwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3MmZcdTA3MmVcM1wyXDJc Mlx1MDczMFx1MDBlMVwzXDJcMlwyXHUwNzMxXHUwNzMyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN1w2M1wyXDJcdTA3MzJcdTA3MzNcNVApXDJcdTA3MzNcdTA3MzhcNyFcMlwyXHUwNzM0XHUw NzM1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1w2NFwyXDJcdTA3MzVcdTA3MzZcN1xiXDJc Mlx1MDczNlx1MDczN1w3XHUwMGZhXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzM3 XHUwNzM5XDchXDJcMlx1MDczOFx1MDczNFwzXDJcMlwyXHUwNzM4XHUwNzM5XDMiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDczOVx1MDczZlwzXDJcMlwyXHUwNzNhXHUwNzNiXDdA XDJcMlx1MDczYlx1MDczYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3M2Nc dTA3M2RcNVx1MDBlNHNcMlx1MDczZFx1MDczZVw3IVwyXDJcdTA3M2UiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDc0MFwzXDJcMlwyXHUwNzNmXHUwNzNhXDNcMlwyXDJcdTA3M2ZcdTA3NDBc M1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzQwXHUwNzQxXDNcMlwyXDJcdTA3 NDFcdTA3NDJcNVx1MDBiNFtcMlx1MDc0Mlx1MDc0MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcNjVcMlwyXHUwNzQzXHUwNzQ0XDcgXDJcMlx1MDc0NFx1MDBlM1wzXDJcMlwyXHUwNzQ1IikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NGFcNVx1MDBlNnRcMlx1MDc0Nlx1MDc0N1w3KFwy XDJcdTA3NDdcdTA3NDlcNVx1MDBlNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidFwyXHUwNzQ4 XHUwNzQ2XDNcMlwyXDJcdTA3NDlcdTA3NGNcM1wyXDJcMlx1MDc0YVx1MDc0OCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3NGFcdTA3NGJcM1wyXDJcMlx1MDc0Ylx1MDBlNVwz XDJcMlwyXHUwNzRjIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NGFcM1wyXDJcMlx1MDc0 ZFx1MDc1Mlw3XHUwMGZhXDJcMlx1MDc0ZVx1MDc1Mlw3XHUwMGMwIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwNzRmXHUwNzUyXDdcdTAwYzFcMlwyXHUwNzUwXHUwNzUyXDVWLFwyXHUw NzUxXHUwNzRkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDc1MVx1MDc0ZVwz XDJcMlwyXHUwNzUxXHUwNzRmXDNcMlwyXDJcdTA3NTEiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MDc1MFwzXDJcMlwyXHUwNzUyXHUwMGU3XDNcMlwyXDJcdTA3NTNcdTA3YWVcN0FcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3NTRcdTA3NTVcNVApXDJcdTA3NTVcdTA3NWJcNyFc MlwyXHUwNzU2XHUwNzU3XDdAXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNzU3XHUw NzU4XDdcYlwyXDJcdTA3NThcdTA3NTlcNVx1MDBlY3dcMlx1MDc1OVx1MDc1YSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDc1YVx1MDc1Y1wzXDJcMlwyXHUwNzViXHUwNzU2XDNc MlwyXDJcdTA3NWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc1Y1wzXDJcMlwyXHUwNzVj XHUwNzVkXDNcMlwyXDJcdTA3NWRcdTA3NWVcNVx1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiW1wyXHUwNzVlXHUwN2FmXDNcMlwyXDJcdTA3NWZcdTA3NjBcN0NcMlwyXHUwNzYwXHUwNzYx IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDA4ZlwyXDJcdTA3NjFcdTA3NjJcN1xiXDJc Mlx1MDc2Mlx1MDc2M1w3XHUwMGZiXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwNzYz XHUwNzY0XDdcMzRcMlwyXHUwNzY0XHUwNzY1XDdcdTAwZmJcMlwyXHUwNzY1IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA3NjZcNyFcMlwyXHUwNzY2XHUwNzY3XDdcNjJcMlwyXHUwNzY3XHUw NzY4XDdcYlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc2OFx1MDc2OVw3XHUwMGVj XDJcMlx1MDc2OVx1MDc2YVw3XDMwXDJcMlx1MDc2YVx1MDc2YiIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDdcdTAwZmFcMlwyXHUwNzZiXHUwNzZjXDdcMzFcMlwyXHUwNzZjXHUwNzZkXDchXDJc Mlx1MDc2ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzZlXDc9XDJcMlx1MDc2ZVx1MDc2 Zlw3XGJcMlwyXHUwNzZmXHUwNzcwXDdcdTAwZWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcdTA3NzBcdTA3NzFcN1wzMFwyXDJcdTA3NzFcdTA3NzJcN1x1MDBmYVwyXDJcdTA3NzIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDc3M1w3XDMxXDJcMlx1MDc3M1x1MDc3NFw3IVwyXDJc dTA3NzRcdTA3NzVcNVx1MDBlYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgidlwyXHUwNzc1XHUw Nzc2XDdEXDJcMlx1MDc3Nlx1MDc3N1w3XHUwMDhmXDJcMlx1MDc3N1x1MDc3OCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3NzhcdTA3NzlcN1x1MDBmYlwyXDJcdTA3NzlcdTA3 N2FcN1wzNFwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDc3YVx1MDc3Ylw3XHUwMGZi XDJcMlx1MDc3Ylx1MDc3Y1w3IVwyXDJcdTA3N2NcdTA3N2QiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3XDYyXDJcMlx1MDc3ZFx1MDc3ZVw3XGJcMlwyXHUwNzdlXHUwNzdmXDdcdTAwZWNcMlwy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3N2ZcdTA3ODBcN1wzMFwyXDJcdTA3ODBcdTA3 ODFcN1x1MDBmYVwyXDJcdTA3ODFcdTA3ODIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMx XDJcMlx1MDc4Mlx1MDc4M1w3IVwyXDJcdTA3ODNcdTA3ODRcNz1cMlwyXHUwNzg0IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3ODVcN1xiXDJcMlx1MDc4NVx1MDc4Nlw3XHUwMGVjXDJcMlx1 MDc4Nlx1MDc4N1w3XDMwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNzg3XHUwNzg4 XDdcdTAwZmFcMlwyXHUwNzg4XHUwNzg5XDdcMzFcMlwyXHUwNzg5IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3OGFcNyFcMlwyXHUwNzhhXHUwNzhiXDVcdTAwZWF2XDJcdTA3OGJcdTA3OGNc N0VcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3OGNcdTA3OGRcN1x1MDA4ZlwyXDJc dTA3OGRcdTA3OGVcN1xiXDJcMlx1MDc4ZVx1MDc4ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcdTAwZmJcMlwyXHUwNzhmXHUwNzkwXDdcMzRcMlwyXHUwNzkwXHUwNzkxXDdcdTAwZmIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA3OTFcdTA3OTJcNyFcMlwyXHUwNzkyXHUwNzkz XDdcNjJcMlwyXHUwNzkzXHUwNzk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1 MDc5NFx1MDc5NVw3XHUwMGVjXDJcMlx1MDc5NVx1MDc5Nlw3XDMwXDJcMiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwNzk2XHUwNzk3XDdcdTAwZmFcMlwyXHUwNzk3XHUwNzk4XDdcMzFcMlwy XHUwNzk4XHUwNzk5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwNzk5XHUwNzlh XDc9XDJcMlx1MDc5YVx1MDc5Ylw3XGJcMlwyXHUwNzliXHUwNzljIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN1x1MDBlY1wyXDJcdTA3OWNcdTA3OWRcN1wzMFwyXDJcdTA3OWRcdTA3OWVcN1x1 MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDc5ZVx1MDc5Zlw3XDMxXDJcMlx1 MDc5Zlx1MDdhMFw3IVwyXDJcdTA3YTBcdTA3YTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1 XHUwMGVhdlwyXHUwN2ExXHUwN2EyXDdAXDJcMlx1MDdhMlx1MDdhM1w3XGJcMlwyXHUwN2EzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YTRcNVx1MDBlY3dcMlx1MDdhNFx1MDdhNVw3IVwy XDJcdTA3YTVcdTA3YTdcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwN2E2XHUw N2ExXDNcMlwyXDJcdTA3YTZcdTA3YTdcM1wyXDJcMlx1MDdhN1x1MDdhYiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3YThcdTA3YWFcNVx1MDA4Y0dcMlx1MDdhOVx1MDdhOFwz XDJcMlwyXHUwN2FhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YWRcM1wyXDJcMlx1MDdh Ylx1MDdhOVwzXDJcMlwyXHUwN2FiXHUwN2FjXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDdhY1x1MDdhZlwzXDJcMlwyXHUwN2FkXHUwN2FiXDNcMlwyXDJcdTA3YWVcdTA3NTRc MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwN2FlXHUwNzVmXDNcMlwyXDJcdTA3 YWZcdTA3YjBcM1wyXDJcMlx1MDdiMFx1MDdiMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdC XDJcMlx1MDdiMVx1MDdiMlw3IFwyXDJcdTA3YjJcdTAwZTlcM1wyXDJcMlx1MDdiM1x1MDdiNCIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdgXDJcMlx1MDdiNFx1MDdiNVw3XGJcMlwyXHUwN2I1 XHUwN2I2XDdcdTAwZmFcMlwyXHUwN2I2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3Yjdc NyFcMlwyXHUwN2I3XHUwN2I4XDdhXDJcMlx1MDdiOFx1MDdiOVw3XGJcMlwyXHUwN2I5IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA3YmFcN1x1MDBmYVwyXDJcdTA3YmFcdTA3YmZcNyFcMlwy XHUwN2JiXHUwN2JjXDdiXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwN2JjXHUwN2Jk XDdcYlwyXDJcdTA3YmRcdTA3YmVcN1x1MDBmYVwyXDJcdTA3YmVcdTA3YzAiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3IVwyXDJcdTA3YmZcdTA3YmJcM1wyXDJcMlx1MDdiZlx1MDdjMFwzXDJc MlwyXHUwN2MwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3YzVcM1wyXDJcMlx1MDdjMVx1 MDdjMlw3Y1wyXDJcdTA3YzJcdTA3YzNcN1xiXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwN2MzXHUwN2M0XDdcdTAwZmFcMlwyXHUwN2M0XHUwN2M2XDchXDJcMlx1MDdjNVx1MDdjMSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3YzVcdTA3YzZcM1wyXDJcMlx1MDdj Nlx1MDBlYlwzXDJcMlwyXHUwN2M3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3Y2NcNVx1 MDBlZXhcMlx1MDdjOFx1MDdjOVw3KFwyXDJcdTA3YzlcdTA3Y2JcNVx1MDBlZSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgieFwyXHUwN2NhXHUwN2M4XDNcMlwyXDJcdTA3Y2JcdTA3Y2VcM1wyXDJc Mlx1MDdjY1x1MDdjYSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA3Y2NcdTA3 Y2RcM1wyXDJcMlx1MDdjZFx1MDBlZFwzXDJcMlwyXHUwN2NlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA3Y2NcM1wyXDJcMlx1MDdjZlx1MDdkMFx0XDZcMlwyXHUwN2QwXHUwMGVmXDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdkMVx1MDgyY1w3RlwyXDJcdTA3ZDJcdTA3 ZDNcNVApXDJcdTA3ZDNcdTA3ZDlcNyFcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA3 ZDRcdTA3ZDVcN0BcMlwyXHUwN2Q1XHUwN2Q2XDdcYlwyXDJcdTA3ZDZcdTA3ZDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw1XHUwMGY0e1wyXHUwN2Q3XHUwN2Q4XDchXDJcMlx1MDdkOFx1MDdk YVwzXDJcMlwyXHUwN2Q5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZDRcM1wyXDJcMlx1 MDdkOVx1MDdkYVwzXDJcMlwyXHUwN2RhXHUwN2RiXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDdkYlx1MDdkY1w1XHUwMGI0W1wyXHUwN2RjXHUwODJkXDNcMlwyXDJcdTA3ZGRc dTA3ZGUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3SFwyXDJcdTA3ZGVcdTA3ZGZcN1x1MDA4 ZlwyXDJcdTA3ZGZcdTA3ZTBcN1xiXDJcMlx1MDdlMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XHUwN2UxXDdcdTAwZmJcMlwyXHUwN2UxXHUwN2UyXDdcMzRcMlwyXHUwN2UyXHUwN2UzXDciKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTA3ZTNcdTA3ZTRcNyFcMlwyXHUwN2U0 XHUwN2U1XDdcNjJcMlwyXHUwN2U1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZTZcN1xi XDJcMlx1MDdlNlx1MDdlN1w3XHUwMGVjXDJcMlx1MDdlN1x1MDdlOFw3XDMwIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwN2U4XHUwN2U5XDdcdTAwZmFcMlwyXHUwN2U5XHUwN2VhXDdc MzFcMlwyXHUwN2VhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZWJcNyFcMlwyXHUwN2Vi XHUwN2VjXDc9XDJcMlx1MDdlY1x1MDdlZFw3XGJcMlwyXHUwN2VkIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA3ZWVcN1x1MDBlY1wyXDJcdTA3ZWVcdTA3ZWZcN1wzMFwyXDJcdTA3ZWZcdTA3 ZjBcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDdmMFx1MDdmMVw3XDMx XDJcMlx1MDdmMVx1MDdmMlw3IVwyXDJcdTA3ZjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDdmM1w1XHUwMGYyelwyXHUwN2YzXHUwN2Y0XDdJXDJcMlx1MDdmNFx1MDdmNVw3XHUwMDhmIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwN2Y1XHUwN2Y2XDdcYlwyXDJcdTA3ZjZcdTA3 ZjdcN1x1MDBmYlwyXDJcdTA3ZjciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDdmOFw3XDM0 XDJcMlx1MDdmOFx1MDdmOVw3XHUwMGZiXDJcMlx1MDdmOVx1MDdmYVw3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCIhXDJcMlx1MDdmYVx1MDdmYlw3XDYyXDJcMlx1MDdmYlx1MDdmY1w3XGJcMlwy XHUwN2ZjXHUwN2ZkIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBlY1wyXDJcdTA3ZmRc dTA3ZmVcN1wzMFwyXDJcdTA3ZmVcdTA3ZmZcN1x1MDBmYSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcMlx1MDdmZlx1MDgwMFw3XDMxXDJcMlx1MDgwMFx1MDgwMVw3IVwyXDJcdTA4MDFcdTA4 MDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PVwyXDJcdTA4MDJcdTA4MDNcN1xiXDJcMlx1 MDgwM1x1MDgwNFw3XHUwMGVjXDJcMlx1MDgwNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw ODA1XDdcMzBcMlwyXHUwODA1XHUwODA2XDdcdTAwZmFcMlwyXHUwODA2XHUwODA3XDciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA4MDdcdTA4MDhcNyFcMlwyXHUwODA4XHUwODA5 XDVcdTAwZjJ6XDJcdTA4MDkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgwYVw3SlwyXDJc dTA4MGFcdTA4MGJcN1x1MDA4ZlwyXDJcdTA4MGJcdTA4MGNcN1xiIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwODBjXHUwODBkXDdcdTAwZmJcMlwyXHUwODBkXHUwODBlXDdcMzRcMlwy XHUwODBlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MGZcN1x1MDBmYlwyXDJcdTA4MGZc dTA4MTBcNyFcMlwyXHUwODEwXHUwODExXDdcNjIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcdTA4MTFcdTA4MTJcN1xiXDJcMlx1MDgxMlx1MDgxM1w3XHUwMGVjXDJcMlx1MDgxMyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODE0XDdcMzBcMlwyXHUwODE0XHUwODE1XDdcdTAwZmFc MlwyXHUwODE1XHUwODE2XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA4MTZc dTA4MTdcNyFcMlwyXHUwODE3XHUwODE4XDc9XDJcMlx1MDgxOFx1MDgxOSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA4MTlcdTA4MWFcN1x1MDBlY1wyXDJcdTA4MWFcdTA4MWJc N1wzMFwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDgxYlx1MDgxY1w3XHUwMGZhXDJc Mlx1MDgxY1x1MDgxZFw3XDMxXDJcMlx1MDgxZFx1MDgxZSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDchXDJcMlx1MDgxZVx1MDgyNFw1XHUwMGYyelwyXHUwODFmXHUwODIwXDdAXDJcMlx1MDgy MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODIxXDdcYlwyXDJcdTA4MjFcdTA4MjJcNVx1 MDBmNHtcMlx1MDgyMlx1MDgyM1w3IVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDgy M1x1MDgyNVwzXDJcMlwyXHUwODI0XHUwODFmXDNcMlwyXDJcdTA4MjRcdTA4MjUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODI1XHUwODI5XDNcMlwyXDJcdTA4MjZcdTA4Mjhc NVx1MDA4Y0dcMlx1MDgyNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODI2XDNcMlwyXDJc dTA4MjhcdTA4MmJcM1wyXDJcMlx1MDgyOVx1MDgyN1wzXDJcMlwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA4MjlcdTA4MmFcM1wyXDJcMlx1MDgyYVx1MDgyZFwzXDJcMlwyXHUwODJiXHUw ODI5XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDgyY1x1MDdkMlwzXDJcMlwy XHUwODJjXHUwN2RkXDNcMlwyXDJcdTA4MmRcdTA4MmUiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwODJlXHUwODJmXDdHXDJcMlx1MDgyZlx1MDgzMFw3IFwyXDJcdTA4MzBcdTAw ZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODMxXHUwODMyXDdgXDJcMlx1 MDgzMlx1MDgzM1w3XGJcMlwyXHUwODMzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MzRc N1x1MDBmYVwyXDJcdTA4MzRcdTA4MzVcNyFcMlwyXHUwODM1XHUwODM2XDdhXDIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwyXHUwODM2XHUwODM3XDdcYlwyXDJcdTA4MzdcdTA4MzhcN1x1MDBm YVwyXDJcdTA4MzhcdTA4M2QiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA4Mzlc dTA4M2FcN2JcMlwyXHUwODNhXHUwODNiXDdcYlwyXDJcdTA4M2JcdTA4M2MiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDgzY1x1MDgzZVw3IVwyXDJcdTA4M2RcdTA4Mzlc M1wyXDJcMlx1MDgzZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODNlXDNcMlwyXDJcdTA4 M2VcdTA4NDNcM1wyXDJcMlx1MDgzZlx1MDg0MFw3Y1wyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDg0MFx1MDg0MVw3XGJcMlwyXHUwODQxXHUwODQyXDdcdTAwZmFcMlwyXHUwODQyXHUw ODQ0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwODQzXHUwODNmXDNcMlwyXDJc dTA4NDNcdTA4NDRcM1wyXDJcMlx1MDg0NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGYz XDNcMlwyXDJcdTA4NDVcdTA4NGFcNVx1MDBmNnxcMlx1MDg0Nlx1MDg0N1w3KFwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcMlx1MDg0N1x1MDg0OVw1XHUwMGY2fFwyXHUwODQ4XHUwODQ2XDNc MlwyXDJcdTA4NDlcdTA4NGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODRh XHUwODQ4XDNcMlwyXDJcdTA4NGFcdTA4NGJcM1wyXDJcMlx1MDg0YiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMGY1XDNcMlwyXDJcdTA4NGNcdTA4NGFcM1wyXDJcMlx1MDg0ZFx1MDg0ZVx0 XDdcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NGVcdTAwZjdcM1wyXDJcMlx1MDg0 Zlx1MDg1NFw1XHUwMTA0XHUwMDgzXDJcdTA4NTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDg1NFw1XHUwMGZjXDE3N1wyXHUwODUxXHUwODU0XDVcdTAwZmVcdTAwODBcMlx1MDg1MiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODU0XDVcdTAxMGVcdTAwODhcMlx1MDg1M1x1MDg0Zlwz XDJcMlwyXHUwODUzXHUwODUwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg1 M1x1MDg1MVwzXDJcMlwyXHUwODUzXHUwODUyXDNcMlwyXDJcdTA4NTQiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDBmOVwzXDJcMlwyXHUwODU1XHUwODU2XDVcdTAxMDRcdTAwODNcMlx1MDg1 Nlx1MDg1NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMGFcdTAwODZcMlx1MDg1N1x1 MDg1OFw1XHUwMTBjXHUwMDg3XDJcdTA4NThcdTA4NTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1XHUwMTBlXHUwMDg4XDJcdTA4NTlcdTAwZmJcM1wyXDJcMlx1MDg1YVx1MDg1Ylw1XHUwMTBh IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwODZcMlx1MDg1Ylx1MDBmZFwzXDJcMlwyXHUw ODVjXHUwODVkXDVcdTAxMGNcdTAwODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwODVk XHUwMGZmXDNcMlwyXDJcdTA4NWVcdTA4NjVcNXA5XDJcdTA4NWZcdTA4NjVcNSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMDg4RVwyXHUwODYwXHUwODY1XDVcdTAwZjh9XDJcdTA4NjFcdTA4 NjVcNVx1MDExOFx1MDA4ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA4NjJcdTA4NjVc NVx1MDExY1x1MDA4ZlwyXHUwODYzXHUwODY1XDVcdTAxMTBcdTAwODkiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXHUwODY0XHUwODVlXDNcMlwyXDJcdTA4NjRcdTA4NWZcM1wyXDJcMlx1MDg2 NFx1MDg2MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4NjRcdTA4NjFcM1wy XDJcMlx1MDg2NFx1MDg2MlwzXDJcMlwyXHUwODY0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA4NjNcM1wyXDJcMlx1MDg2NVx1MDEwMVwzXDJcMlwyXHUwODY2XHUwODZiXDVwOVwyXHUwODY3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4NmJcNVx1MDA4OEVcMlx1MDg2OFx1MDg2Ylw1 XHUwMTE4XHUwMDhkXDJcdTA4NjlcdTA4NmIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUw MTEwXHUwMDg5XDJcdTA4NmFcdTA4NjZcM1wyXDJcMlx1MDg2YVx1MDg2N1wzXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA4NmFcdTA4NjhcM1wyXDJcMlx1MDg2YVx1MDg2OVwzXDJc MlwyXHUwODZiXHUwMTAzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg2Y1x1 MDg2ZFw3bFwyXDJcdTA4NmRcdTA4NmVcNVx1MDEyNFx1MDA5MyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcdTA4NmVcdTA4NzJcNyBcMlwyXHUwODZmXHUwODcxXDVcdTAxMDBcdTAwODFcMlx1 MDg3MCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODZmXDNcMlwyXDJcdTA4NzFcdTA4NzRc M1wyXDJcMlx1MDg3Mlx1MDg3MFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 NzJcdTA4NzNcM1wyXDJcMlx1MDg3M1x1MDg3NVwzXDJcMlwyXHUwODc0XHUwODcyXDMiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDg3NVx1MDg3Nlw3c1wyXDJcdTA4NzZcdTA4Nzdc NyBcMlwyXHUwODc3XHUwMTA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg3 OFx1MDg4NVw3a1wyXDJcdTA4NzlcdTA4N2FcN0BcMlwyXHUwODdhXHUwODdiIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDg3Ylx1MDg4MFw1XHUwMDllUFwyXHUwODdjXHUwODdk XDcoXDJcMlx1MDg3ZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODdmXDVcdTAwOWVQXDJc dTA4N2VcdTA4N2NcM1wyXDJcMlx1MDg3Zlx1MDg4MlwzXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXDJcdTA4ODBcdTA4N2VcM1wyXDJcMlx1MDg4MFx1MDg4MVwzXDJcMlwyXHUwODgxXHUw ODgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg4Mlx1MDg4MFwzXDJcMlwy XHUwODgzXHUwODg0XDchXDJcMlx1MDg4NCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODg2 XDNcMlwyXDJcdTA4ODVcdTA4NzlcM1wyXDJcMlx1MDg4NVx1MDg4NlwzXDJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA4ODZcdTA4ODdcM1wyXDJcMlx1MDg4N1x1MDg4OFw1XHUwMTI0 XHUwMDkzXDJcdTA4ODgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDg4OVw3IFwyXDJcdTA4 ODlcdTAxMDdcM1wyXDJcMlx1MDg4YVx1MDg5N1w3S1wyXDJcdTA4OGIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDg4Y1w3QFwyXDJcdTA4OGNcdTA4OGRcN1xiXDJcMlx1MDg4ZFx1MDg5Mlw1 XHUwMDllIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJQXDJcdTA4OGVcdTA4OGZcNyhcMlwyXHUw ODhmXHUwODkxXDVcdTAwOWVQXDJcdTA4OTBcdTA4OGUiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwODkxXHUwODk0XDNcMlwyXDJcdTA4OTJcdTA4OTBcM1wyXDJcMlx1MDg5MiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODkzXDNcMlwyXDJcdTA4OTNcdTA4OTVcM1wyXDJc Mlx1MDg5NFx1MDg5MlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4OTVcdTA4 OTZcNyFcMlwyXHUwODk2XHUwODk4XDNcMlwyXDJcdTA4OTdcdTA4OGJcMyIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDJcMlwyXHUwODk3XHUwODk4XDNcMlwyXDJcdTA4OThcdTA4OTlcM1wyXDJc Mlx1MDg5OVx1MDg5YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVcdTAxMjRcdTAwOTNcMlx1 MDg5YVx1MDg5Ylw3IFwyXDJcdTA4OWJcdTAxMDlcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXHUwODljXHUwOGE5XDdrXDJcMlx1MDg5ZFx1MDg5ZVw3QFwyXDJcdTA4OWVcdTA4OWZc NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXGJcMlwyXHUwODlmXHUwOGE0XDVcdTAwOWVQXDJc dTA4YTBcdTA4YTFcNyhcMlwyXHUwOGExIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YTNc NVx1MDA5ZVBcMlx1MDhhMlx1MDhhMFwzXDJcMlwyXHUwOGEzXHUwOGE2XDNcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDhhNFx1MDhhMlwzXDJcMlwyXHUwOGE0XHUwOGE1XDNcMlwy XDJcdTA4YTVcdTA4YTciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGE2XHUw OGE0XDNcMlwyXDJcdTA4YTdcdTA4YThcNyFcMlwyXHUwOGE4IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4YWFcM1wyXDJcMlx1MDhhOVx1MDg5ZFwzXDJcMlwyXHUwOGE5XHUwOGFhXDNcMlwy XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhhYVx1MDhhYlwzXDJcMlwyXHUwOGFiXHUw OGFjXDVcdTAxMjRcdTAwOTNcMlx1MDhhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGIw XDcgXDJcMlx1MDhhZFx1MDhhZlw1XHUwMTAwXHUwMDgxXDJcdTA4YWVcdTA4YWQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGFmXHUwOGIyXDNcMlwyXDJcdTA4YjBcdTA4YWVc M1wyXDJcMlx1MDhiMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGIxXDNcMlwyXDJcdTA4 YjFcdTA4YjNcM1wyXDJcMlx1MDhiMlx1MDhiMFwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4YjNcdTA4YjRcN3NcMlwyXHUwOGI0XHUwOGI1XDcgXDJcMlx1MDhiNVx1MDEwYlwz XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA4YjZcdTA4YzNcN0tcMlwyXHUwOGI3 XHUwOGI4XDdAXDJcMlx1MDhiOFx1MDhiOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwy XDJcdTA4YjlcdTA4YmVcNVx1MDA5ZVBcMlx1MDhiYVx1MDhiYlw3KFwyXDJcdTA4YmIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDhiZFw1XHUwMDllUFwyXHUwOGJjXHUwOGJhXDNcMlwyXDJc dTA4YmRcdTA4YzBcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOGJlXHUwOGJj XDNcMlwyXDJcdTA4YmVcdTA4YmZcM1wyXDJcMlx1MDhiZlx1MDhjMSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA4YzBcdTA4YmVcM1wyXDJcMlx1MDhjMVx1MDhjMlw3IVwyXDJc dTA4YzIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjNFwzXDJcMlwyXHUwOGMzXHUwOGI3 XDNcMlwyXDJcdTA4YzNcdTA4YzRcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw OGM0XHUwOGM1XDNcMlwyXDJcdTA4YzVcdTA4YzZcNVx1MDEyNFx1MDA5M1wyXHUwOGM2IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA4Y2FcNyBcMlwyXHUwOGM3XHUwOGM5XDVcdTAxMDBcdTAw ODFcMlx1MDhjOFx1MDhjNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4Yzlc dTA4Y2NcM1wyXDJcMlx1MDhjYVx1MDhjOFwzXDJcMlwyXHUwOGNhIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA4Y2JcM1wyXDJcMlx1MDhjYlx1MDhjZFwzXDJcMlwyXHUwOGNjXHUwOGNhXDNc MlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhjZFx1MDhjZVw3c1wyXDJcdTA4Y2Vc dTA4Y2ZcNyBcMlwyXHUwOGNmXHUwMTBkXDNcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJc Mlx1MDhkMFx1MDhkMVw3cFwyXDJcdTA4ZDFcdTA4ZDJcN1w2MlwyXDJcdTA4ZDJcdTA4ZDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwOGQzXHUwOGQ0XDdcdTAwZWNcMlwyXHUw OGQ0XHUwOGQ1XDdcMzBcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZDVcdTA4ZDZc N1x1MDBmYVwyXDJcdTA4ZDZcdTA4ZDdcN1wzMVwyXDJcdTA4ZDdcdTA4ZTQiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3IVwyXDJcdTA4ZDhcdTA4ZDlcN0BcMlwyXHUwOGQ5XHUwOGRhXDdcYlwy XDJcdTA4ZGFcdTA4ZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwOGRi XHUwOGRjXDcoXDJcMlx1MDhkY1x1MDhkZVw1XHUwMDllUFwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA4ZGRcdTA4ZGJcM1wyXDJcMlx1MDhkZVx1MDhlMVwzXDJcMlwyXHUwOGRmXHUwOGRk XDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDhkZlx1MDhlMFwzXDJcMlwyXHUw OGUwXHUwOGUyXDNcMlwyXDJcdTA4ZTFcdTA4ZGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwOGUyXHUwOGUzXDchXDJcMlx1MDhlM1x1MDhlNVwzXDJcMlwyXHUwOGU0IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZDhcM1wyXDJcMlx1MDhlNFx1MDhlNVwzXDJcMlwyXHUw OGU1XHUwOGU2XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhlNlx1MDhlN1w1 XHUwMTI0XHUwMDkzXDJcdTA4ZTdcdTA4ZThcN3NcMlwyXHUwOGU4IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA4ZTlcNyBcMlwyXHUwOGU5XHUwMTBmXDNcMlwyXDJcdTA4ZWFcdTA4ZWVcNVx1 MDExMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDhhXDJcdTA4ZWJcdTA4ZWVcNVx1MDEx NFx1MDA4YlwyXHUwOGVjXHUwOGVlXDVcdTAxMTYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDA4Y1wyXHUwOGVkXHUwOGVhXDNcMlwyXDJcdTA4ZWRcdTA4ZWJcM1wyXDJcMlx1MDhlZCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGVjXDNcMlwyXDJcdTA4ZWVcdTAxMTFcM1wyXDJcMlx1 MDhlZlx1MDhmMFw3bVwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDhmMFx1MDhmMVw3 XHUwMDk2XDJcMlx1MDhmMVx1MDhmMlw3XGJcMlwyXHUwOGYyXHUwOGYzIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA4ZjNcdTA4ZjRcNyFcMlwyXHUwOGY0XHUwOGY1XDd0 XDJcMlx1MDhmNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGY2XDdcYlwyXDJcdTA4ZjZc dTA4ZjdcN1x1MDBmYVwyXDJcdTA4ZjdcdTA4ZjhcNyAiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTA4ZjhcdTAxMTNcM1wyXDJcMlx1MDhmOVx1MDhmYVw3TlwyXDJcdTA4ZmFcdTA4ZmIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3PVwyXDJcdTA4ZmJcdTA4ZmNcN1xiXDJcMlx1MDhm Y1x1MDhmZFw3XHUwMGVjXDJcMlx1MDhmZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGZl XDdcMzBcMlwyXHUwOGZlXHUwOGZmXDdcdTAwZmFcMlwyXHUwOGZmXHUwOTAwXDciKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlwzMVwyXDJcdTA5MDBcdTA5MDFcNyFcMlwyXHUwOTAxXHUwOTAyXDc+ XDJcMlx1MDkwMlx1MDkwMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA5MDNc dTA5MDRcN1x1MDBlY1wyXDJcdTA5MDRcdTA5MDVcN1wzMFwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDkwNVx1MDkwNlw3XHUwMGZhXDJcMlx1MDkwNlx1MDkwN1w3XDMxXDJcMlx1MDkw N1x1MDkwZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDkwOFx1MDkwOVw3Plwy XDJcdTA5MDlcdTA5MGFcN1xiXDJcMlx1MDkwYVx1MDkwYiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDdcdTAwZWNcMlwyXHUwOTBiXHUwOTBjXDdcMzBcMlwyXHUwOTBjXHUwOTBkXDdcdTAwZmEi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA5MGRcdTA5MGZcN1wzMVwyXDJcdTA5MGVc dTA5MDhcM1wyXDJcMlx1MDkwZVx1MDkwZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTA5MGZcdTA5MTBcM1wyXDJcMlx1MDkxMFx1MDkxMVw3IFwyXDJcdTA5MTEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDExNVwzXDJcMlwyXHUwOTEyXHUwOTEzXHRcYlwyXDJcdTA5MTNc dTA5MTRcN1x1MDA4NyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDkxNFx1MDkxNVw3 IVwyXDJcdTA5MTVcdTA5MTZcNy9cMlwyXHUwOTE2XHUwOTE3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcN1xiXDJcMlx1MDkxN1x1MDkxOFw3XHUwMGZhXDJcMlx1MDkxOFx1MDkxOVw3IVwyXDJc dTA5MTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDkxYVw3XDYyXDJcMlx1MDkxYVx1MDkx Ylw3XGJcMlwyXHUwOTFiXHUwOTFjXDdcdTAwZWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XDJcdTA5MWNcdTA5MWRcN1wzMFwyXDJcdTA5MWRcdTA5MWVcN1x1MDBmYVwyXDJcdTA5MWUiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDkxZlw3XDMxXDJcMlx1MDkxZlx1MDkyMFw3IVwyXDJc dTA5MjBcdTA5MjFcNz1cMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjFcdTA5MjJc N1xiXDJcMlx1MDkyMlx1MDkyM1w3XHUwMGVjXDJcMlx1MDkyM1x1MDkyNCIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDdcMzBcMlwyXHUwOTI0XHUwOTI1XDdcdTAwZmFcMlwyXHUwOTI1XHUwOTMx XDdcMzFcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MjZcdTA5MjdcNyFcMlwyXHUw OTI3XHUwOTI4XDdAXDJcMlx1MDkyOFx1MDkyOVw3XGIiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXDJcdTA5MjlcdTA5MmVcNVx1MDA5ZVBcMlx1MDkyYVx1MDkyYlw3KFwyXDJcdTA5MmJcdTA5 MmQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwOTJjXHUwOTJhXDNcMlwy XDJcdTA5MmRcdTA5MzBcM1wyXDJcMlx1MDkyZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw OTJjXDNcMlwyXDJcdTA5MmVcdTA5MmZcM1wyXDJcMlx1MDkyZlx1MDkzMlwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzBcdTA5MmVcM1wyXDJcMlx1MDkzMVx1MDkyNlwzXDJc MlwyXHUwOTMxXHUwOTMyXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDkzMlx1 MDkzN1wzXDJcMlwyXHUwOTMzXHUwOTM0XDchXDJcMlx1MDkzNFx1MDkzNSIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDkzNVx1MDkzNlw3XGJcMlwyXHUwOTM2XHUwOTM4XDdcdTAw ZmFcMlwyXHUwOTM3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5MzNcM1wyXDJcMlx1MDkz N1x1MDkzOFwzXDJcMlwyXHUwOTM4XHUwOTM5XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDkzOVx1MDkzYVw3IFwyXDJcdTA5M2FcdTAxMTdcM1wyXDJcMlx1MDkzYlx1MDkzY1w3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJMXDJcMlx1MDkzY1x1MDkzZFw3XHUwMGZhXDJcMlx1 MDkzZFx1MDkzZVw3IFwyXDJcdTA5M2UiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDExOVwz XDJcMlwyXHUwOTNmXHUwOTQxXDdcdTAwODhcMlwyXHUwOTQwXHUwOTQyXDchIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcMlwyXHUwOTQxXHUwOTQwXDNcMlwyXDJcdTA5NDFcdTA5NDJcM1wyXDJc Mlx1MDk0Mlx1MDk0MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5NDNcdTA5 NDRcNy5cMlwyXHUwOTQ0XHUwOTQ1XDdcYlwyXDJcdTA5NDUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDk0Nlw3XHUwMGVjXDJcMlx1MDk0Nlx1MDk0N1w3XDMwXDJcMlx1MDk0N1x1MDk0OFw3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwOTQ4XHUwOTQ5XDdcMzFcMlwy XHUwOTQ5XHUwOTU0XDchXDJcMlx1MDk0YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTRi XDdcdTAwOGRcMlwyXHUwOTRiXHUwOTRjXDdcdTAwZmFcMlwyXHUwOTRjXHUwOTRkIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcNyFcMlwyXHUwOTRkXHUwOTRlXDdcdTAwODlcMlwyXHUwOTRlXHUw OTRmXHRcdFwyXDJcdTA5NGYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk1NVw3IFwyXDJc dTA5NTBcdTA5NTFcN01cMlwyXHUwOTUxXHUwOTUyXDdcYlwyXDJcdTA5NTIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDk1M1w3XHUwMGZhXDJcMlx1MDk1M1x1MDk1NVw3IFwyXDJcdTA5NTRc dTA5NGFcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwOTU0XHUwOTUwXDNcMlwy XDJcdTA5NTVcdTAxMWJcM1wyXDJcMlx1MDk1Nlx1MDk1NyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDdcdTAwYTdcMlwyXHUwOTU3XHUwOTU4XDdbXDJcMlx1MDk1OFx1MDk1OVw3XGJcMlwyXHUw OTU5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTFcNUxcJ1wyXHUwOTVhXHUwOTViXDch XDJcMlx1MDk1Ylx1MDk1Y1w3XHUwMGE5XDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUw OTVjXHUwOTk5XDdcYlwyXDJcdTA5NWRcdTA5NjFcN1NcMlwyXHUwOTVlXHUwOTVmIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5NWZcdTA5NjBcN1x1MDBmYVwyXDJcdTA5NjBc dTA5NjJcN1wzM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk2MVx1MDk1ZVwzXDJc MlwyXHUwOTYxXHUwOTYyXDNcMlwyXDJcdTA5NjJcdTA5OWFcMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMlwyXHUwOTYzXHUwOTY3XDdUXDJcMlx1MDk2NFx1MDk2NVw3XDMyXDJcMlx1MDk2 NVx1MDk2NiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwOTY2XHUwOTY4 XDdcMzNcMlwyXHUwOTY3XHUwOTY0XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDk2N1x1MDk2OFwzXDJcMlwyXHUwOTY4XHUwOTlhXDNcMlwyXDJcdTA5NjlcdTA5NmRcNyIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiVVwyXDJcdTA5NmFcdTA5NmJcN1wzMlwyXDJcdTA5NmJcdTA5 NmNcN1x1MDBmYVwyXDJcdTA5NmMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk2ZVw3XDMz XDJcMlx1MDk2ZFx1MDk2YVwzXDJcMlwyXHUwOTZkXHUwOTZlXDNcMlwyIikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcMlx1MDk2ZVx1MDk5YVwzXDJcMlwyXHUwOTZmXHUwOTczXDdWXDJcMlx1MDk3 MFx1MDk3MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcMzJcMlwyXHUwOTcxXHUwOTcyXDdc dTAwZmFcMlwyXHUwOTcyXHUwOTc0XDdcMzNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTA5NzNcdTA5NzBcM1wyXDJcMlx1MDk3M1x1MDk3NFwzXDJcMlwyXHUwOTc0XHUwOTlhXDMiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDk3NVx1MDk3OVw3UlwyXDJcdTA5NzZcdTA5 NzdcN1wzMlwyXDJcdTA5NzdcdTA5NzgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZh XDJcMlx1MDk3OFx1MDk3YVw3XDMzXDJcMlx1MDk3OVx1MDk3NlwzXDJcMlwyIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5NzlcdTA5N2FcM1wyXDJcMlx1MDk3YVx1MDk5YVwzXDJcMlwyXHUw OTdiXHUwOTdmXDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIldcMlwyXHUwOTdjXHUwOTdkXDdc MzJcMlwyXHUwOTdkXHUwOTdlXDdcdTAwZmFcMlwyXHUwOTdlIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTA5ODBcN1wzM1wyXDJcdTA5N2ZcdTA5N2NcM1wyXDJcMlx1MDk3Zlx1MDk4MFwzXDJc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA5ODBcdTA5OWFcM1wyXDJcMlx1MDk4MVx1 MDk4NVw3WFwyXDJcdTA5ODJcdTA5ODMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMyXDJc Mlx1MDk4M1x1MDk4NFw3XHUwMGZhXDJcMlx1MDk4NFx1MDk4Nlw3XDMzXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwOTg1XHUwOTgyXDNcMlwyXDJcdTA5ODVcdTA5ODZcM1wyXDJcMlx1 MDk4Nlx1MDk5YVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ODdcdTA5OGJc N1lcMlwyXHUwOTg4XHUwOTg5XDdcMzJcMlwyXHUwOTg5XHUwOThhIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcN1x1MDBmYVwyXDJcdTA5OGFcdTA5OGNcN1wzM1wyXDJcdTA5OGJcdTA5ODhcM1wy XDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOThiXHUwOThjXDNcMlwyXDJcdTA5OGNc dTA5OWFcM1wyXDJcMlx1MDk4ZFx1MDk5MVw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJaXDJc Mlx1MDk4ZVx1MDk4Zlw3XDMyXDJcMlx1MDk4Zlx1MDk5MFw3XHUwMGZhXDJcMlx1MDk5MCIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTkyXDdcMzNcMlwyXHUwOTkxXHUwOThlXDNcMlwyXDJc dTA5OTFcdTA5OTJcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwOTkyXHUwOTlh XDNcMlwyXDJcdTA5OTNcdTA5OTdcN1x1MDBmYlwyXDJcdTA5OTRcdTA5OTUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk5NVx1MDk5Nlw3XHUwMGZhXDJcMlx1MDk5Nlx1MDk5 OFw3XDMzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTk3XHUwOTk0XDNcMlwyXDJc dTA5OTdcdTA5OThcM1wyXDJcMlx1MDk5OFx1MDk5YVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXDJcdTA5OTlcdTA5NWRcM1wyXDJcMlx1MDk5OVx1MDk2M1wzXDJcMlwyXHUwOTk5XHUw OTY5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDk5OVx1MDk2ZlwzXDJcMlwy XHUwOTk5XHUwOTc1XDNcMlwyXDJcdTA5OTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDk3 YlwzXDJcMlwyXHUwOTk5XHUwOTgxXDNcMlwyXDJcdTA5OTlcdTA5ODdcM1wyXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwOTk5XHUwOThkXDNcMlwyXDJcdTA5OTlcdTA5OTNcM1wyXDJc Mlx1MDk5YVx1MDk5ZVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5OWJcdTA5 OWRcNVx1MDExZVx1MDA5MFwyXHUwOTljXHUwOTliXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDk5ZFx1MDlhMFwzXDJcMlwyXHUwOTllXHUwOTljXDNcMlwyXDJcdTA5OWVcdTA5 OWZcMyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwOTlmXHUwOWEyXDNcMlwyXDJc dTA5YTBcdTA5OWVcM1wyXDJcMlx1MDlhMVx1MDk1YSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA5YTFcdTA5YTJcM1wyXDJcMlx1MDlhMlx1MDlhYlwzXDJcMlwyXHUwOWEzIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTdcNyFcMlwyXHUwOWE0XHUwOWE2XDVcdTAxMWNc dTAwOGZcMlx1MDlhNVx1MDlhNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5 YTZcdTA5YTlcM1wyXDJcMlx1MDlhN1x1MDlhNVwzXDJcMlwyXHUwOWE3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTA5YThcM1wyXDJcMlx1MDlhOFx1MDlhYVwzXDJcMlwyXHUwOWE5XHUwOWE3 XDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlhYVx1MDlhY1w3XHUwMGE4XDJc Mlx1MDlhYlx1MDlhM1wzXDJcMlwyXHUwOWFiXHUwOWFjIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMlx1MDlhY1x1MDlhZFwzXDJcMlwyXHUwOWFkXHUwOWFlXDcgXDJcMlx1MDlhZSIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMTFkXDNcMlwyXDJcdTA5YWZcdTA5YjBcNyFcMlwy XHUwOWIwXHUwOWI0XDdcdTAwYWEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA5YjFc dTA5YjJcN1wzMlwyXDJcdTA5YjJcdTA5YjNcN1x1MDBmYVwyXDJcdTA5YjMiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MDliNVw3XDMzXDJcMlx1MDliNFx1MDliMVwzXDJcMlwyXHUwOWI0XHUw OWI1XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDliNVx1MDliYVwzXDJcMlwy XHUwOWI2XHUwOWI3XDdcMzRcMlwyXHUwOWI3XHUwOWI5IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcNVx1MDE1Y1x1MDBhZlwyXHUwOWI4XHUwOWI2XDNcMlwyXDJcdTA5YjlcdTA5YmNcM1wyXDIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwOWJhXHUwOWI4XDNcMlwyXDJcdTA5YmFcdTA5 YmJcM1wyXDJcMlx1MDliYlx1MDliZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA5YmNcdTA5YmFcM1wyXDJcMlx1MDliZFx1MDliZVw3XGJcMlwyXHUwOWJlIikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5YmZcN1x1MDBmYVwyXDJcdTA5YmZcdTAxMWZcM1wyXDJcMlx1MDlj MFx1MDljMVw1XHUwMTIyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwOTJcMlx1MDljMVx1 MDljMlw3IFwyXDJcdTA5YzJcdTAxMjFcM1wyXDJcMlx1MDljMyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwOWM0XDdcdTAwYWJcMlwyXHUwOWM0XHUwMTIzXDNcMlwyXDJcdTA5YzVcdTA5Y2Fc NVx1MDEyOCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk1XDJcdTA5YzZcdTA5YzdcN1x1 MDBkY1wyXDJcdTA5YzdcdTA5YzlcNVx1MDEyOFx1MDA5NSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDJcdTA5YzhcdTA5YzZcM1wyXDJcMlx1MDljOVx1MDljY1wzXDJcMlwyXHUwOWNhXHUwOWM4 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDljYVx1MDljYlwzXDJcMlwyXHUw OWNiXHUwMTI1XDNcMlwyXDJcdTA5Y2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDljYVwz XDJcMlwyXHUwOWNkXHUwOWQyXDVcdTAxMjhcdTAwOTVcMlx1MDljZVx1MDljZiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDdcdTAwZGNcMlwyXHUwOWNmXHUwOWQxXDVcdTAxMjhcdTAwOTVcMlx1 MDlkMFx1MDljZVwzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ZDFcdTA5ZDRc M1wyXDJcMlx1MDlkMlx1MDlkMFwzXDJcMlwyXHUwOWQyXHUwOWQzIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDlkM1x1MDEyN1wzXDJcMlwyXHUwOWQ0XHUwOWQyXDNcMlwyXDJc dTA5ZDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkYVw1XHUwMTJhXHUwMDk2XDJcdTA5 ZDZcdTA5ZDdcN1x1MDBkYlwyXDJcdTA5ZDdcdTA5ZDkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilw1XHUwMTJhXHUwMDk2XDJcdTA5ZDhcdTA5ZDZcM1wyXDJcMlx1MDlkOVx1MDlkY1wzXDJcMiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA5ZGFcdTA5ZDhcM1wyXDJcMlx1MDlkYVx1MDlk YlwzXDJcMlwyXHUwOWRiXHUwMTI5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDlkY1x1MDlkYVwzXDJcMlwyXHUwOWRkXHUwOWUyXDVcdTAxMmNcdTAwOTciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXHUwOWRlXHUwOWRmXDcoXDJcMlx1MDlkZlx1MDllMVw1XHUwMTJjXHUw MDk3XDJcdTA5ZTAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlkZVwzXDJcMlwyXHUwOWUx XHUwOWU0XDNcMlwyXDJcdTA5ZTJcdTA5ZTBcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwOWUyXHUwOWUzXDNcMlwyXDJcdTA5ZTNcdTAxMmJcM1wyXDJcMlx1MDllNFx1MDllMlwz IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcdTA5ZTVcdTA5ZWFcNVx1MDEyZVx1MDA5 OFwyXHUwOWU2XHUwOWU3XDcpXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWU3XHUw OWU5XDVcdTAxMmVcdTAwOThcMlx1MDllOFx1MDllNlwzXDJcMlwyXHUwOWU5IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5ZWNcM1wyXDJcMlx1MDllYVx1MDllOFwzXDJcMlwyXHUwOWVhXHUw OWViXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDllYlx1MDEyZFwzXDJcMlwy XHUwOWVjXHUwOWVhXDNcMlwyXDJcdTA5ZWRcdTA5ZjFcNSIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMTMyXHUwMDlhXDJcdTA5ZWVcdTA5ZjBcNVx1MDEzMFx1MDA5OVwyXHUwOWVmXHUwOWVl IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlmMFx1MDlmM1wzXDJcMlwyXHUw OWYxXHUwOWVmXDNcMlwyXDJcdTA5ZjEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDlmMlwz XDJcMlwyXHUwOWYyXHUwMTJmXDNcMlwyXDJcdTA5ZjNcdTA5ZjFcM1wyXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwOWY0XHUwOWY1XDdcIlwyXDJcdTA5ZjVcdTA5ZjlcNVx1MDEzMlx1 MDA5YVwyXHUwOWY2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjdcNyNcMlwyXHUwOWY3 XHUwOWY5XDVcdTAxMzJcdTAwOWFcMlx1MDlmOFx1MDlmNCIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA5ZjhcdTA5ZjZcM1wyXDJcMlx1MDlmOVx1MDEzMVwzXDJcMlwyXHUwOWZh IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZmVcNVx1MDEzNlx1MDA5Y1wyXHUwOWZiXHUw OWZkXDVcdTAxMzRcdTAwOWJcMlx1MDlmYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOWZi XDNcMlwyXDJcdTA5ZmRcdTBhMDBcM1wyXDJcMlx1MDlmZVx1MDlmY1wzXDJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA5ZmVcdTA5ZmZcM1wyXDJcMlx1MDlmZlx1MDEzM1wzXDJcMlwy XHUwYTAwXHUwOWZlXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGEwMVx1MGEw Mlw3JVwyXDJcdTBhMDJcdTBhMGFcNVx1MDEzNlx1MDA5Y1wyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBhMDNcdTBhMDRcNyRcMlwyXHUwYTA0XHUwYTBhXDVcdTAxMzZcdTAwOWNcMlx1MGEw NSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTA2XDdcJ1wyXDJcdTBhMDZcdTBhMGFcNVx1 MDEzNlx1MDA5Y1wyXHUwYTA3XHUwYTA4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcNyZcMlwy XHUwYTA4XHUwYTBhXDVcdTAxMzZcdTAwOWNcMlx1MGEwOVx1MGEwMVwzXDJcMiIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXDJcdTBhMDlcdTBhMDNcM1wyXDJcMlx1MGEwOVx1MGEwNVwzXDJcMlwy XHUwYTA5XHUwYTA3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGEwYVx1MDEz NVwzXDJcMlwyXHUwYTBiXHUwYTBmXDVcdTAxM2FcdTAwOWUiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlwyXHUwYTBjXHUwYTBlXDVcdTAxMzhcdTAwOWRcMlx1MGEwZFx1MGEwY1wzXDJcMlwyXHUw YTBlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTFcM1wyXDJcMlx1MGEwZlx1MGEwZFwz XDJcMlwyXHUwYTBmXHUwYTEwXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEx MFx1MDEzN1wzXDJcMlwyXHUwYTExXHUwYTBmXDNcMlwyXDJcdTBhMTJcdTBhMTNcNyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXGZcMlwyXHUwYTEzXHUwYTE3XDVcdTAxM2FcdTAwOWVcMlx1MGEx NFx1MGExNVw3XHJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMTVcdTBhMTdcNVx1 MDEzYVx1MDA5ZVwyXHUwYTE2XHUwYTEyXDNcMlwyXDJcdTBhMTYiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGExNFwzXDJcMlwyXHUwYTE3XHUwMTM5XDNcMlwyXDJcdTBhMThcdTBhMWNcNVx1 MDEzZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGEwXDJcdTBhMTlcdTBhMWJcNVx1MDEz Y1x1MDA5ZlwyXHUwYTFhXHUwYTE5XDNcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1 MGExYlx1MGExZVwzXDJcMlwyXHUwYTFjXHUwYTFhXDNcMlwyXDJcdTBhMWNcdTBhMWQiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTFkXHUwMTNiXDNcMlwyXDJcdTBhMWVcdTBh MWNcM1wyXDJcMlx1MGExZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTIwXDdcMTZcMlwy XHUwYTIwXHUwYTI0XDVcdTAxM2VcdTAwYTBcMlx1MGEyMVx1MGEyMiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDdcMzVcMlwyXHUwYTIyXHUwYTI0XDVcdTAxM2VcdTAwYTBcMlx1MGEyM1x1MGEx ZlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhMjNcdTBhMjFcM1wyXDJcMlx1 MGEyNFx1MDEzZFwzXDJcMlwyXHUwYTI1XHUwYTI5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc NVx1MDE0Mlx1MDBhMlwyXHUwYTI2XHUwYTI4XDVcdTAxNDBcdTAwYTFcMlx1MGEyN1x1MGEyNiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhMjhcdTBhMmJcM1wyXDJcMlx1MGEy OVx1MGEyN1wzXDJcMlwyXHUwYTI5IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhMmFcM1wy XDJcMlx1MGEyYVx1MDEzZlwzXDJcMlwyXHUwYTJiXHUwYTI5XDNcMlwyXDIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlx1MGEyY1x1MGEyZFw3XDE3XDJcMlx1MGEyZFx1MGEzM1w1XHUwMTQyXHUw MGEyXDJcdTBhMmUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGEyZlw3XDM3XDJcMlx1MGEy Zlx1MGEzM1w1XHUwMTQyXHUwMGEyXDJcdTBhMzBcdTBhMzEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlw3XDIwXDJcMlx1MGEzMVx1MGEzM1w1XHUwMTQyXHUwMGEyXDJcdTBhMzJcdTBhMmNcM1wy IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTMyXHUwYTJlXDNcMlwyXDJcdTBhMzJc dTBhMzBcM1wyXDJcMlx1MGEzM1x1MDE0MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTBhMzRcdTBhMzVcN1wzMFwyXDJcdTBhMzVcdTBhMzZcdFxuXDJcMlx1MGEzNiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwYTM4XDdcMzFcMlwyXHUwYTM3XHUwYTM0XDNcMlwyXDJcdTBh MzhcdTBhM2JcM1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYTM5XHUwYTM3XDNc MlwyXDJcdTBhMzlcdTBhM2FcM1wyXDJcMlx1MGEzYVx1MGEzYyIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMlwyXDJcdTBhM2JcdTBhMzlcM1wyXDJcMlx1MGEzY1x1MGEzZFw1XHUwMTQ0XHUw MGEzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGEzZFx1MDE0M1wzXDJcMlwyXHUwYTNl XHUwYTRiXDVcdTAxNDZcdTAwYTRcMlx1MGEzZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTRiXDVcdTAxNDhcdTAwYTVcMlx1MGE0MFx1MGE0Ylw1XHUwMTRhXHUwMGE2XDJcdTBhNDEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGE0Ylw1XHUwMTRjXHUwMGE3XDJcdTBhNDJcdTBhNGJc NVx1MDE0ZVx1MDBhOFwyXHUwYTQzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNGJcNVx1 MDE2Y1x1MDBiN1wyXHUwYTQ0XHUwYTRiXDVcdTAxNmVcdTAwYjhcMlx1MGE0NSIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYTRiXDVcdTAxODRcdTAwYzNcMlx1MGE0Nlx1MGE0Ylw1XHUwMTk0 XHUwMGNiXDJcdTBhNDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE0OFw3XHUwMGRkXDJc Mlx1MGE0OFx1MGE0Ylw1XHUwMTQ0XHUwMGEzXDJcdTBhNDlcdTBhNGIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlw1XHUwMTRhXHUwMGE2XDJcdTBhNGFcdTBhM2VcM1wyXDJcMlx1MGE0YVx1MGEz ZlwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhNGFcdTBhNDBcM1wyXDJcMlx1 MGE0YVx1MGE0MVwzXDJcMlwyXHUwYTRhXHUwYTQyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlx1MGE0YVx1MGE0M1wzXDJcMlwyXHUwYTRhXHUwYTQ0XDNcMlwyXDJcdTBhNGEiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGE0NVwzXDJcMlwyXHUwYTRhXHUwYTQ2XDNcMlwyXDJc dTBhNGFcdTBhNDdcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTRhXHUwYTQ5 XDNcMlwyXDJcdTBhNGJcdTAxNDVcM1wyXDJcMlx1MGE0Y1x1MGE0ZFw3IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAwZTdcMlwyXHUwYTRkXHUwYTRlXDdcMzBcMlwyXHUwYTRlXHUwYTRmXDVc dTAxMjZcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYTRmXHUwYTUwXDchXDJc Mlx1MGE1MFx1MGE1MVw1XHUwMTI2XHUwMDk0XDJcdTBhNTEiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MGE1Mlw3XDMxXDJcMlx1MGE1Mlx1MDE0N1wzXDJcMlwyXHUwYTUzXHUwYTU0XDdcdTAw ZTUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhNTRcdTBhNTVcN1wzMFwyXDJcdTBh NTVcdTBhNTZcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNTZc dTBhNTdcNyFcMlwyXHUwYTU3XHUwYTU4XDVcdTAxMjZcdTAwOTRcMlx1MGE1OCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYTU5XDdcMzFcMlwyXHUwYTU5XHUwMTQ5XDNcMlwyXDJcdTBhNWFc dTBhNWJcN1x1MDBlNiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGE1Ylx1MGE1Y1w3 XDMwXDJcMlx1MGE1Y1x1MGE1ZFw1XHUwMTI2XHUwMDk0XDIiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MGE1ZFx1MGE1ZVw3IVwyXDJcdTBhNWVcdTBhNWZcNVx1MDEyNlx1MDA5NFwyXHUwYTVm IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNjBcNyFcMlwyXHUwYTYwXHUwYTYxXDVMXCdc Mlx1MGE2MVx1MGE2Mlw3XDMxXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTYyXHUw MTRiXDNcMlwyXDJcdTBhNjNcdTBhNjRcN1wzMFwyXDJcdTBhNjRcdTBhNjUiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw1XHUwMTI2XHUwMDk0XDJcdTBhNjVcdTBhNjZcN1wzMVwyXDJcdTBhNjZc dTAxNGRcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTY3XHUwYTczXDVcdTAx NTBcdTAwYTlcMlx1MGE2OFx1MGE3M1w1XHUwMTUyXHUwMGFhIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlx1MGE2OVx1MGE3M1w1XHUwMTU0XHUwMGFiXDJcdTBhNmFcdTBhNzNcNVx1MDE1Nlx1 MDBhYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhNmJcdTBhNzNcNVx1MDE1OFx1MDBh ZFwyXHUwYTZjXHUwYTczXDVcdTAxNWVcdTAwYjAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwy XHUwYTZkXHUwYTczXDVcdTAxNjBcdTAwYjFcMlx1MGE2ZVx1MGE3M1w1XHUwMTYyXHUwMGIyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGE2Zlx1MGE3M1w1XHUwMTY0XHUwMGIzXDJcdTBh NzBcdTBhNzNcNVx1MDE2Nlx1MDBiNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhNzFc dTBhNzNcNVx1MDE2YVx1MDBiNlwyXHUwYTcyXHUwYTY3XDNcMlwyXDJcdTBhNzIiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGE2OFwzXDJcMlwyXHUwYTcyXHUwYTY5XDNcMlwyXDJcdTBhNzJc dTBhNmFcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTcyXHUwYTZiXDNcMlwy XDJcdTBhNzJcdTBhNmNcM1wyXDJcMlx1MGE3Mlx1MGE2ZFwzIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcMlwyXDJcdTBhNzJcdTBhNmVcM1wyXDJcMlx1MGE3Mlx1MGE2ZlwzXDJcMlwyXHUwYTcy XHUwYTcwIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE3Mlx1MGE3MVwzXDJc MlwyXHUwYTczXHUwMTRmXDNcMlwyXDJcdTBhNzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGE3NVw3XHUwMGM3XDJcMlx1MGE3NVx1MDE1MVwzXDJcMlwyXHUwYTc2XHUwYTc3XDdcdTAwYzgi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhNzdcdTBhNzhcN1x1MDBjOVwyXDJcdTBh NzhcdTBhNzlcN1wzMFwyXDJcdTBhNzkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE3YVw3 XHUwMGZhXDJcMlx1MGE3YVx1MGE4NVw3XDMxXDJcMlx1MGE3Ylx1MGE3Y1w3IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcIlwyXDJcdTBhN2NcdTBhODZcN1x1MDBmYVwyXDJcdTBhN2RcdTBhN2Vc NyRcMlwyXHUwYTdlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODZcN1x1MDBmYVwyXDJc dTBhN2ZcdTBhODBcNyVcMlwyXHUwYTgwXHUwYTg2XDdcdTAwZmEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTBhODFcdTBhODJcNyZcMlwyXHUwYTgyXHUwYTg2XDdcdTAwZmFcMlwyXHUw YTgzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhODRcN1wnXDJcMlx1MGE4NFx1MGE4Nlw3 XHUwMGZhXDJcMlx1MGE4NVx1MGE3YlwzXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJc dTBhODVcdTBhN2RcM1wyXDJcMlx1MGE4NVx1MGE3ZlwzXDJcMlwyXHUwYTg1XHUwYTgxIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGE4NVx1MGE4M1wzXDJcMlwyXHUwYTg2XHUw MTUzXDNcMlwyXDJcdTBhODciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGE4OFw3XHUwMGNh XDJcMlx1MGE4OFx1MGE5M1w1XHUwMTVhXHUwMGFlXDJcdTBhODlcdTBhOGEiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlw3XCJcMlwyXHUwYThhXHUwYTk0XDdcdTAwZmFcMlwyXHUwYThiXHUwYThj XDckXDJcMlx1MGE4YyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTk0XDdcdTAwZmFcMlwy XHUwYThkXHUwYThlXDclXDJcMlx1MGE4ZVx1MGE5NFw3XHUwMGZhIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlwyXHUwYThmXHUwYTkwXDcmXDJcMlx1MGE5MFx1MGE5NFw3XHUwMGZhXDJcMlx1 MGE5MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTkyXDdcJ1wyXDJcdTBhOTJcdTBhOTRc N1x1MDBmYVwyXDJcdTBhOTNcdTBhODlcM1wyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XHUwYTkzXHUwYThiXDNcMlwyXDJcdTBhOTNcdTBhOGRcM1wyXDJcMlx1MGE5M1x1MGE4ZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhOTNcdTBhOTFcM1wyXDJcMlx1MGE5NFx1 MDE1NVwzXDJcMlwyXHUwYTk1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTZcN1x1MDBj YlwyXDJcdTBhOTZcdTBhYTFcNVx1MDE1YVx1MDBhZVwyXHUwYTk3XHUwYTk4IikNCg0KKyAgICAg ICAgYnVmLndyaXRlKCJcN1wiXDJcMlx1MGE5OFx1MGFhMlw1XHUwMTVhXHUwMGFlXDJcdTBhOTlc dTBhOWFcNyRcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBhOWFcdTBhYTJcNVx1MDE1 YVx1MDBhZVwyXHUwYTliXHUwYTljXDclXDJcMlx1MGE5YyIpDQoNCisgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYWEyXDVcdTAxNWFcdTAwYWVcMlx1MGE5ZFx1MGE5ZVw3JlwyXDJcdTBhOWVcdTBhYTIi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlw1XHUwMTVhXHUwMGFlXDJcdTBhOWZcdTBhYTBcN1wn XDJcMlx1MGFhMFx1MGFhMlw1XHUwMTVhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYWVc Mlx1MGFhMVx1MGE5N1wzXDJcMlwyXHUwYWExXHUwYTk5XDNcMlwyXDJcdTBhYTEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGE5YlwzXDJcMlwyXHUwYWExXHUwYTlkXDNcMlwyXDJcdTBhYTFc dTBhOWZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWEyXHUwMTU3XDNcMlwy XDJcdTBhYTNcdTBhYTRcN1x1MDBjY1wyXDJcdTBhYTRcdTBhYTUiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlw1XHUwMTVhXHUwMGFlXDJcdTBhYTVcdTBhYTdcN1wiXDJcMlx1MGFhNlx1MGFhOFw3 XHUwMGZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYWE3XHUwYWE2XDNcMlwyXDJc dTBhYThcdTBhYTlcM1wyXDJcMlx1MGFhOVx1MGFhNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTBhYTlcdTBhYWFcM1wyXDJcMlx1MGFhYVx1MDE1OVwzXDJcMlwyXHUwYWFiIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBhYWNcN1x1MDBmYlwyXDJcdTBhYWNcdTBhYWRcN1wz MlwyXDJcdTBhYWRcdTBhYWVcNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1 MGFhZVx1MGFiOFw3XDMzXDJcMlx1MGFhZlx1MGFiNFw3XHUwMGZiXDIiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlwyXHUwYWIwXHUwYWIxXDdcMzRcMlwyXHUwYWIxXHUwYWIzXDVcdTAxNWNcdTAw YWZcMlx1MGFiMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWIwXDNcMlwyXDJcdTBhYjNc dTBhYjZcM1wyXDJcMlx1MGFiNFx1MGFiMlwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcdTBhYjRcdTBhYjVcM1wyXDJcMlx1MGFiNVx1MGFiOFwzXDJcMlwyXHUwYWI2XHUwYWI0XDMi KQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGFiN1x1MGFhYlwzXDJcMlwyXHUwYWI3 XHUwYWFmXDNcMlwyXDJcdTBhYjhcdTAxNWIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXHUwYWI5XHUwYWJkXDdcdTAwZmJcMlwyXHUwYWJhXHUwYWJiXDdcMzJcMlwyIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTBhYmJcdTBhYmNcN1x1MDBmYVwyXDJcdTBhYmNcdTBhYmVcN1wz M1wyXDJcdTBhYmRcdTBhYmEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYWJk XHUwYWJlXDNcMlwyXDJcdTBhYmVcdTAxNWRcM1wyXDJcMlx1MGFiZiIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwYWMwXDdcdTAwY2RcMlwyXHUwYWMwXHUwYWMxXDdcMzBcMlwyXHUwYWMxXHUw YWMyXHQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwxM1wyXDJcdTBhYzJcdTBhYzNcN1wzMVwy XDJcdTBhYzNcdTAxNWZcM1wyXDJcMlx1MGFjNCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YWM1XDdcdTAwY2VcMlwyXHUwYWM1XHUwYWM2XDdcMzBcMlwyXHUwYWM2XHUwYWM3XDciKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTBhYzdcdTBhYzhcN1wzMVwyXDJcdTBhYzhc dTAxNjFcM1wyXDJcMlx1MGFjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYWNhXDdcdTAw Y2ZcMlwyXHUwYWNhXHUwYWQwXDdcMzBcMlwyXHUwYWNiXHUwYWNjXDciKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDBlY1wyXDJcdTBhY2NcdTBhY2RcN1wzMFwyXDJcdTBhY2RcdTBhY2VcN1x1 MDBmYVwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGFjZVx1MGFkMVw3XDMxXDJcMlx1 MGFjZlx1MGFkMVw3XHUwMGZhXDJcMlx1MGFkMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YWNiXDNcMlwyXDJcdTBhZDBcdTBhY2ZcM1wyXDJcMlx1MGFkMVx1MGFkMlwzXDJcMlwyIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTBhZDJcdTBhZDNcN1wzMVwyXDJcdTBhZDNcdTAxNjNcM1wy XDJcMlx1MGFkNFx1MGFkNSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZDBcMlwyXHUw YWQ1XHUwMTY1XDNcMlwyXDJcdTBhZDZcdTBhZDdcN1x1MDBkMVwyIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcMlx1MGFkN1x1MGFkOFw3XDMwXDJcMlx1MGFkOFx1MGFkOVw1TFwnXDJcdTBhZDlc dTBhZGEiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGFkYVx1MDE2N1wzXDJc MlwyXHUwYWRiXHUwYWRjXHRcZlwyXDJcdTBhZGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MDE2OVwzXDJcMlwyXHUwYWRkXHUwYWRlXDdcdTAwZDJcMlwyXHUwYWRlXHUwYWRmXDdcMzAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBhZGZcdTBhZTRcNVgtXDJcdTBhZTBcdTBhZTFc NyhcMlwyXHUwYWUxXHUwYWUyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN0BcMlwyXHUwYWUy XHUwYWUzXDdcYlwyXDJcdTBhZTNcdTBhZTVcNVx1MDE2OFx1MDBiNSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTBhZTRcdTBhZTBcM1wyXDJcMlx1MGFlNFx1MGFlNVwzXDJcMlwyXHUwYWU1 XHUwYWU2IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFlNlx1MGFlN1w3XDMx XDJcMlx1MGFlN1x1MDE2YlwzXDJcMlwyXHUwYWU4IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBhZTlcdFxyXDJcMlx1MGFlOVx1MDE2ZFwzXDJcMlwyXHUwYWVhXHUwYWY1XDVcdTAxNzAiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDBiOVwyXHUwYWViXHUwYWY1XDVcdTAxNzJcdTAwYmFc Mlx1MGFlY1x1MGFmNVw1XHUwMTc0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAwYmJcMlx1 MGFlZFx1MGFmNVw1XHUwMTc2XHUwMGJjXDJcdTBhZWVcdTBhZjVcNVx1MDE3OCIpDQoNCisgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMGJkXDJcdTBhZWZcdTBhZjVcNVx1MDE3YVx1MDBiZVwyXHUwYWYw XHUwYWY1XDVcdTAxN2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDBiZlwyXHUwYWYxXHUw YWY1XDVcdTAxN2VcdTAwYzBcMlx1MGFmMlx1MGFmNVw1XHUwMTgwIikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTAwYzFcMlx1MGFmM1x1MGFmNVw1XHUwMTgyXHUwMGMyXDJcdTBhZjRcdTBhZWFc M1wyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYWY0XHUwYWViXDNcMlwyXDJcdTBh ZjRcdTBhZWNcM1wyXDJcMlx1MGFmNFx1MGFlZCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTBhZjRcdTBhZWVcM1wyXDJcMlx1MGFmNFx1MGFlZlwzXDJcMlwyXHUwYWY0IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjBcM1wyXDJcMlx1MGFmNFx1MGFmMVwzXDJcMlwyXHUw YWY0XHUwYWYyXDNcMlwyXDIiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFmNFx1MGFmM1wz XDJcMlwyXHUwYWY1XHUwMTZmXDNcMlwyXDJcdTBhZjZcdTBhZjdcNyIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMGRhXDJcMlx1MGFmN1x1MGFmOFw3XDMwXDJcMlx1MGFmOFx1MGFmOVw1XHUw MTI2XHUwMDk0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGFmOVx1MGFmYVw3XDMxXDJc Mlx1MGFmYVx1MDE3MVwzXDJcMlwyXHUwYWZiXHUwYWZjIikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcN1x1MDBkZlwyXDJcdTBhZmNcdTBhZmRcN1wzMFwyXDJcdTBhZmRcdTBhZmVcNVx1MDEyNiIp DQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBhZmVcdTBhZmZcN1wzMVwyXDJcdTBh ZmZcdTAxNzNcM1wyXDJcMlx1MGIwMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjAxXDdc dTAwZThcMlwyXHUwYjAxXHUwYjA5XDdcMzBcMlwyXHUwYjAyXHUwYjAzXDciKQ0KDQorICAgICAg ICBidWYud3JpdGUoIipcMlwyXHUwYjAzXHUwYjA0XDdcYlwyXDJcdTBiMDRcdTBiMDVcN1x1MDBl Y1wyXDJcdTBiMDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIwNlw3XDMwXDJcMlx1MGIw Nlx1MGIwN1w3XHUwMGZhXDJcMlx1MGIwN1x1MGIwOFw3IikNCg0KKyAgICAgICAgYnVmLndyaXRl KCJcMzFcMlwyXHUwYjA4XHUwYjBhXDchXDJcMlx1MGIwOVx1MGIwMlwzXDJcMlwyXHUwYjA5XHUw YjBhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGIwYVx1MGIxMFwzXDJcMlwy XHUwYjBiXHUwYjBjXDdbXDJcMlx1MGIwYyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjBk XDdcYlwyXDJcdTBiMGRcdTBiMGVcNUxcJ1wyXHUwYjBlXHUwYjBmXDchXDJcMlx1MGIwZiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjExXDNcMlwyXDJcdTBiMTBcdTBiMGJcM1wyXDJcMlx1 MGIxMFx1MGIxMVwzXDJcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMTFcdTBiMTJc M1wyXDJcMlx1MGIxMlx1MGIxM1w1XHUwMTI2XHUwMDk0XDJcdTBiMTMiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGIxNFw3XDMxXDJcMlx1MGIxNFx1MDE3NVwzXDJcMlwyXHUwYjE1XHUwYjE2 XDdcdTAwZTkiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiMTZcdTBiMTdcN1wzMFwy XDJcdTBiMTdcdTBiMThcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBiMThcdTBiMTlcN1wzMVwyXDJcdTBiMTlcdTAxNzdcM1wyXDJcMlx1MGIxYVx1MGIxYiIpDQoN CisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZTBcMlwyXHUwYjFiXHUwYjFjXDdcMzBcMlwyXHUw YjFjXHUwYjFkXDVcdTAxMjYiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDA5NFwyXHUwYjFk XHUwYjFlXDdcMzFcMlwyXHUwYjFlXHUwMTc5XDNcMlwyXDJcdTBiMWYiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MGIyNFw3XHUwMGUxXDJcMlx1MGIyMFx1MGIyMVw3XDIxXDJcMlx1MGIyMVx1 MGIyMlw3IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcYlwyXDJcdTBiMjJcdTBiMjNcN1x1MDBm YVwyXDJcdTBiMjNcdTBiMjVcNyFcMlwyXHUwYjI0IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJc dTBiMjBcM1wyXDJcMlx1MGIyNFx1MGIyNVwzXDJcMlwyXHUwYjI1XHUwYjI2XDNcMlwyXDIiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MGIyNlx1MGIyN1w3XDMwXDJcMlx1MGIyN1x1MGIyOFw1 XHUwMTI2XHUwMDk0XDJcdTBiMjgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIyOVw3XDMx XDJcMlx1MGIyOVx1MDE3YlwzXDJcMlwyXHUwYjJhXHUwYjJiXDdcdTAwZTIiKQ0KDQorICAgICAg ICBidWYud3JpdGUoIlwyXDJcdTBiMmJcdTBiMmNcN1wzMFwyXDJcdTBiMmNcdTBiMmRcNVx1MDEy Nlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiMmRcdTBiMmVcN1wzMVwyXDJc dTBiMmVcdTAxN2RcM1wyXDJcMlx1MGIyZlx1MGIzMCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgi XDdcdTAwZTNcMlwyXHUwYjMwXHUwYjMxXDdcMzBcMlwyXHUwYjMxXHUwYjMyXDVcdTAxMjYiKQ0K DQorICAgICAgICBidWYud3JpdGUoIlx1MDA5NFwyXHUwYjMyXHUwYjMzXDdcMzFcMlwyXHUwYjMz XHUwMTdmXDNcMlwyXDJcdTBiMzQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGIzNVw3XHUw MGU0XDJcMlx1MGIzNVx1MGIzNlw3XDMwXDJcMlx1MGIzNlx1MGIzN1w1IikNCg0KKyAgICAgICAg YnVmLndyaXRlKCJcdTAxMjZcdTAwOTRcMlx1MGIzN1x1MGIzOFw3XDMxXDJcMlx1MGIzOFx1MDE4 MVwzXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBiMzlcdTBiM2FcN1x1MDBkZVwy XDJcdTBiM2FcdTBiM2JcN1wzMFwyXDJcdTBiM2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1 MGI0MFw1WC1cMlx1MGIzY1x1MGIzZFw3KFwyXDJcdTBiM2RcdTBiM2VcN0BcMlwyXHUwYjNlIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiM2ZcN1xiXDJcMlx1MGIzZlx1MGI0MVw1XHUwMTY4 XHUwMGI1XDJcdTBiNDBcdTBiM2MiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUw YjQwXHUwYjQxXDNcMlwyXDJcdTBiNDFcdTBiNDJcM1wyXDJcMlx1MGI0MiIpDQoNCisgICAgICAg IGJ1Zi53cml0ZSgiXHUwYjQzXDchXDJcMlx1MGI0M1x1MGI0NFw1XHUwMTI2XHUwMDk0XDJcdTBi NDRcdTBiNDUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI0NVx1MDE4M1wz XDJcMlwyXHUwYjQ2XHUwYjRjXDVcdTAxODZcdTAwYzQiKQ0KDQorICAgICAgICBidWYud3JpdGUo IlwyXHUwYjQ3XHUwYjRjXDVcdTAxODhcdTAwYzVcMlx1MGI0OFx1MGI0Y1w1XHUwMThjXHUwMGM3 IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MGI0OVx1MGI0Y1w1XHUwMThlXHUwMGM4XDJc dTBiNGFcdTBiNGNcNVx1MDE5MFx1MDBjOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTBi NGJcdTBiNDZcM1wyXDJcMlx1MGI0Ylx1MGI0N1wzXDJcMlwyXHUwYjRiXHUwYjQ4IikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI0Ylx1MGI0OVwzXDJcMlwyXHUwYjRiXHUwYjRh XDNcMlwyXDJcdTBiNGMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDE4NVwzXDJcMlwyXHUw YjRkXHUwYjRlXDdcdTAwYzJcMlwyXHUwYjRlXHUwYjRmXDdcMzAiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTBiNGZcdTBiNTBcNVx1MDEyNlx1MDA5NFwyXHUwYjUwXHUwYjUxXDdcMjJc MlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiNTFcdTBiNTJcNVx1MDEyNlx1MDA5NFwy XHUwYjUyXHUwYjUzXDdcMzZcMlwyXHUwYjUzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBi NTRcNVx1MDEyNlx1MDA5NFwyXHUwYjU0XHUwYjU1XDdcMzFcMlwyXHUwYjU1XHUwMTg3IikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI1Nlx1MGI1N1w3XHUwMGMzXDJcMlx1MGI1 N1x1MGI1OFw3XDMwXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjU4XHUwYjVkXDVc dTAxOGFcdTAwYzZcMlx1MGI1OVx1MGI1YVw3KFwyXDJcdTBiNWEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGI1Y1w1XHUwMThhXHUwMGM2XDJcdTBiNWJcdTBiNTlcM1wyXDJcMlx1MGI1Y1x1 MGI1ZiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNWRcdTBiNWJcM1wyXDJc Mlx1MGI1ZFx1MGI1ZVwzXDJcMlwyXHUwYjVlIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBi NjBcM1wyXDJcMlx1MGI1Zlx1MGI1ZFwzXDJcMlwyXHUwYjYwXHUwYjYxXDchXDJcMiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwYjYxXHUwYjYyXDVcdTAxMjZcdTAwOTRcMlx1MGI2Mlx1MGI2 M1w3IVwyXDJcdTBiNjMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGI2NFw1XHUwMTI2XHUw MDk0XDJcdTBiNjRcdTBiNjVcNyFcMlwyXHUwYjY1XHUwYjY2IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYjY2XHUwYjY3XDdcMzFcMlwyXHUwYjY3XHUwMTg5XDNc MiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGI2OFx1MGI2OVx0XDE2XDJcMlx1MGI2 OVx1MDE4YlwzXDJcMlwyXHUwYjZhXHUwYjZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcN1x1 MDBjNFwyXDJcdTBiNmJcdTBiNmNcN1wzMFwyXDJcdTBiNmNcdTBiNmRcNVx1MDEyNiIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiNmRcdTBiNmVcNyFcMlwyXHUwYjZlXHUwYjZm XDVcdTAxMjZcdTAwOTQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYjZmXHUwYjcwXDch XDJcMlx1MGI3MFx1MGI3MVw1XHUwMTI2XHUwMDk0XDJcdTBiNzEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MGI3Mlw3XDMxXDJcMlx1MGI3Mlx1MDE4ZFwzXDJcMlwyXHUwYjczXHUwYjc0XDdc dTAwYzUiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiNzRcdTBiNzVcN1wzMFwyXDJc dTBiNzVcdTBiNzZcNVx1MDEyNlx1MDA5NFwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBi NzZcdTBiNzdcNyFcMlwyXHUwYjc3XHUwYjc4XDVcdTAxMjZcdTAwOTRcMlx1MGI3OCIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwYjc5XDchXDJcMlx1MGI3OVx1MGI3YVw1XHUwMTI2XHUwMDk0 XDJcdTBiN2FcdTBiN2IiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI3Ylx1 MDE4ZlwzXDJcMlwyXHUwYjdjXHUwYjdkXDdcdTAwYzZcMlwyIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTBiN2RcdTBiN2VcN1wzMFwyXDJcdTBiN2VcdTBiN2ZcN0BcMlwyXHUwYjdmXHUwYjgw XDciKQ0KDQorICAgICAgICBidWYud3JpdGUoIlxiXDJcMlx1MGI4MFx1MGI4NVw1XHUwMTkyXHUw MGNhXDJcdTBiODFcdTBiODJcNyhcMlwyIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiODJc dTBiODRcNVx1MDE5Mlx1MDBjYVwyXHUwYjgzXHUwYjgxXDNcMlwyXDJcdTBiODQiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MGI4N1wzXDJcMlwyXHUwYjg1XHUwYjgzXDNcMlwyXDJcdTBiODVc dTBiODZcM1wyXDJcMiIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwYjg2XHUwYjg4XDNcMlwy XDJcdTBiODdcdTBiODVcM1wyXDJcMlx1MGI4OFx1MGI4OVw3IikNCg0KKyAgICAgICAgYnVmLndy aXRlKCIhXDJcMlx1MGI4OVx1MGI4YVw1XHUwMTI2XHUwMDk0XDJcdTBiOGFcdTBiOGJcNyFcMlwy XHUwYjhiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiOGNcNVx1MDEyNlx1MDA5NFwyXHUw YjhjXHUwYjhkXDchXDJcMlx1MGI4ZFx1MGI4ZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDVc dTAxMjZcdTAwOTRcMlx1MGI4ZVx1MGI4Zlw3XDMxXDJcMlx1MGI4Zlx1MDE5MVwzXDIiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTBiOTBcdTBiOTFcdFwxN1wyXDJcdTBiOTFcdTAxOTNc M1wyXDJcMlx1MGI5Mlx1MGI5MyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZWFcMlwy XHUwYjkzXHUwYjk0XDdcMzBcMlwyXHUwYjk0XHUwYjk1XDVcdTAxMjYiKQ0KDQorICAgICAgICBi dWYud3JpdGUoIlx1MDA5NFwyXHUwYjk1XHUwYjlkXDdcMzZcMlwyXHUwYjk2XHUwYjk3XDVcdTAx MjRcdTAwOTMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXHUwYjk3XHUwYjk4XDchXDJcMlx1 MGI5OFx1MGI5OVw1XHUwMTI0XHUwMDkzXDJcdTBiOTkiKQ0KDQorICAgICAgICBidWYud3JpdGUo Ilx1MGI5YVw3IFwyXDJcdTBiOWFcdTBiOWNcM1wyXDJcMlx1MGI5Ylx1MGI5NlwzXDJcMlwyIikN Cg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTBiOWNcdTBiOWZcM1wyXDJcMlx1MGI5ZFx1MGI5Ylwz XDJcMlwyXHUwYjlkXHUwYjllXDMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MGI5 ZVx1MGJhMFwzXDJcMlwyXHUwYjlmXHUwYjlkXDNcMlwyXDJcdTBiYTBcdTBiYTEiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGJhMVx1MDE5NVwzXDJcMlwyXHUwMGYwXHUwMTk5 XHUwMTliXHUwMWE1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAxYTlcdTAxYWNcdTAxYjRc dTAxYjlcdTAxYmRcdTAxYzBcdTAxYzZcdTAxY2JcdTAxY2YiKQ0KDQorICAgICAgICBidWYud3Jp dGUoIlx1MDFkMlx1MDFkOFx1MDFlYVx1MDFlY1x1MDFmNFx1MDFmZFx1MDIwNlx1MDIwZlx1MDIx OCIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjIxXHUwMjJhXHUwMjMzXHUwMjNjXHUwMjQ1 XHUwMjRiXHUwMjUzXHUwMjViXHUwMjYzIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTAyODFc dTAyODhcdTAyOGZcdTAyOThcdTAyOWNcdTAyYTBcdTAyYTdcdTAyYjFcdTAyYmUiKQ0KDQorICAg ICAgICBidWYud3JpdGUoIlx1MDJjZFx1MDJlMlx1MDJlOFx1MDMwNFx1MDMwYVx1MDMxM1x1MDMy Nlx1MDMzNlx1MDM0MSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzcyXHUwMzgyXHUwMzg5 XHUwMzhmXHUwM2E3XHUwM2IyXHUwM2I1XHUwM2I4XHUwM2RmIikNCg0KKyAgICAgICAgYnVmLndy aXRlKCJcdTAzZTNcdTAzZjBcdTAzZjdcdTA0MDlcdTA0MWVcdTA0MzNcdTA0MzlcdTA0NGZcdTA0 NWMiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDQ2MFx1MDQ2NVx1MDQ2Ylx1MDQ2ZVx1MDQ3 Mlx1MDQ3Nlx1MDQ3ZFx1MDQ5N1x1MDRhMSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwNGE5 XHUwNGFkXHUwNGIzXHUwNGI3XHUwNGU1XHUwNGU5XHUwNGYwXHUwNGY2XHUwNGZhIikNCg0KKyAg ICAgICAgYnVmLndyaXRlKCJcdTA1MDNcdTA1MDhcdTA1MTRcdTA1MWZcdTA1MmNcdTA1M2RcdTA1 NDJcdTA1NDdcdTA1NTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDU1ZFx1MDU2Mlx1MDU2 YVx1MDU4YVx1MDU4Zlx1MDU5NFx1MDU5ZVx1MDVhOFx1MDViNCIpDQoNCisgICAgICAgIGJ1Zi53 cml0ZSgiXHUwNWI5XHUwNWJlXHUwNWNhXHUwNWNmXHUwNWQ0XHUwNWRlXHUwNWU0XHUwNWZmXHUw NjA1IikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MGZcdTA2MWRcdTA2MmFcdTA2MmZcdTA2 MzNcdTA2M2VcdTA2NDRcdTA2NGZcdTA2NTgiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDY2 Mlx1MDY3NFx1MDY3OVx1MDY3ZFx1MDY4OFx1MDY4ZVx1MDY5OFx1MDY5Zlx1MDZhNyIpDQoNCisg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNmFlXHUwNmJhXHUwNmM1XHUwNmM4XHUwNmQzXHUwNmQ4XHUw NmUyXHUwNmU4XHUwNmZiIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MDFcdTA3MGJcdTA3 MTFcdTA3MWZcdTA3MmFcdTA3MmZcdTA3MzhcdTA3M2ZcdTA3NGEiKQ0KDQorICAgICAgICBidWYu d3JpdGUoIlx1MDc1MVx1MDc1Ylx1MDdhNlx1MDdhYlx1MDdhZVx1MDdiZlx1MDdjNVx1MDdjY1x1 MDdkOSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwODI0XHUwODI5XHUwODJjXHUwODNkXHUw ODQzXHUwODRhXHUwODUzXHUwODY0XHUwODZhIikNCg0KKyAgICAgICAgYnVmLndyaXRlKCJcdTA4 NzJcdTA4ODBcdTA4ODVcdTA4OTJcdTA4OTdcdTA4YTRcdTA4YTlcdTA4YjBcdTA4YmUiKQ0KDQor ICAgICAgICBidWYud3JpdGUoIlx1MDhjM1x1MDhjYVx1MDhkZlx1MDhlNFx1MDhlZFx1MDkwZVx1 MDkyZVx1MDkzMVx1MDkzNyIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTQxXHUwOTU0XHUw OTYxXHUwOTY3XHUwOTZkXHUwOTczXHUwOTc5XHUwOTdmXHUwOTg1IikNCg0KKyAgICAgICAgYnVm LndyaXRlKCJcdTA5OGJcdTA5OTFcdTA5OTdcdTA5OTlcdTA5OWVcdTA5YTFcdTA5YTdcdTA5YWJc dTA5YjQiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MDliYVx1MDljYVx1MDlkMlx1MDlkYVx1 MDllMlx1MDllYVx1MDlmMVx1MDlmOFx1MDlmZSIpDQoNCisgICAgICAgIGJ1Zi53cml0ZSgiXHUw YTA5XHUwYTBmXHUwYTE2XHUwYTFjXHUwYTIzXHUwYTI5XHUwYTMyXHUwYTM5XHUwYTRhIikNCg0K KyAgICAgICAgYnVmLndyaXRlKCJcdTBhNzJcdTBhODVcdTBhOTNcdTBhYTFcdTBhYTlcdTBhYjRc dTBhYjdcdTBhYmRcdTBhZDAiKQ0KDQorICAgICAgICBidWYud3JpdGUoIlx1MGFlNFx1MGFmNFx1 MGIwOVx1MGIxMFx1MGIyNFx1MGI0MFx1MGI0Ylx1MGI1ZFx1MGI4NSIpDQoNCisgICAgICAgIGJ1 Zi53cml0ZSgiXHUwYjlkIikNCg0KKyAgICAgICAgcmV0dXJuIGJ1Zi5nZXR2YWx1ZSgpDQoNCisN Cg0KKw0KDQorY2xhc3MgVmZyU3ludGF4UGFyc2VyICggUGFyc2VyICk6DQoNCisNCg0KKyAgICBn cmFtbWFyRmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KDQorDQoNCisgICAgYXRuID0gQVRORGVz ZXJpYWxpemVyKCkuZGVzZXJpYWxpemUoc2VyaWFsaXplZEFUTigpKQ0KDQorDQoNCisgICAgZGVj aXNpb25zVG9ERkEgPSBbIERGQShkcywgaSkgZm9yIGksIGRzIGluIGVudW1lcmF0ZShhdG4uZGVj aXNpb25Ub1N0YXRlKSBdDQoNCisNCg0KKyAgICBzaGFyZWRDb250ZXh0Q2FjaGUgPSBQcmVkaWN0 aW9uQ29udGV4dENhY2hlKCkNCg0KKw0KDQorICAgIGxpdGVyYWxOYW1lcyA9IFsgIjxJTlZBTElE PiIsICInc2hvdyciLCAiJ3B1c2gnIiwgIidwb3AnIiwgIicjcHJhZ21hJyIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAiJ3BhY2snIiwgIic9JyIsICInSU1BR0VfVE9LRU4nIiwgIidIT1JJWk9O VEFMJyIsICInTVVMVElfTElORSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIic8PCciLCAi Jz4+JyIsICInKyciLCAiJyonIiwgIiclJyIsICInZm9ybWF0JyIsICInPyciLA0KDQorICAgICAg ICAgICAgICAgICAgICAgIicjZGVmaW5lJyIsICInI2luY2x1ZGUnIiwgIidmb3JtcGtndHlwZSci LCAiJ3snIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInfSciLCAiJygnIiwgIicpJyIsICIn WyciLCAiJ10nIiwgIicuJyIsICInLSciLCAiJzonIiwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICInLyciLCAiJzsnIiwgIicsJyIsICInPT0nIiwgIichPSciLCAiJzw9JyIsICInPCciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgIic+PSciLCAiJz4nIiwgIid8JyIsICInJiciLCAiJ2Rldmlj ZXBhdGgnIiwgIidmb3Jtc2V0JyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2Zvcm1zZXRp ZCciLCAiJ2VuZGZvcm1zZXQnIiwgIid0aXRsZSciLCAiJ2Zvcm1pZCciLA0KDQorICAgICAgICAg ICAgICAgICAgICAgIidvbmVvZiciLCAiJ2VuZG9uZW9mJyIsICIncHJvbXB0JyIsICInb3JkZXJl ZGxpc3QnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInbWF4Y29udGFpbmVycyciLCAiJ2Vu ZGxpc3QnIiwgIidlbmRmb3JtJyIsICInZm9ybSciLA0KDQorICAgICAgICAgICAgICAgICAgICAg Iidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwgIidtYXBndWlkJyIsICInc3VidGl0bGUnIiwNCg0K KyAgICAgICAgICAgICAgICAgICAgICInZW5kc3VidGl0bGUnIiwgIidoZWxwJyIsICIndGV4dCci LCAiJ29wdGlvbiciLCAiJ2ZsYWdzJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2RhdGUn IiwgIidlbmRkYXRlJyIsICIneWVhciciLCAiJ21vbnRoJyIsICInZGF5JyIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAiJ3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSci LCAiJ3NlY29uZCciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidncmF5b3V0aWYnIiwgIids YWJlbCciLCAiJ3RpbWVvdXQnIiwgIidpbnZlbnRvcnknIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICInX05PTl9OVl9EQVRBX01BUCciLCAiJ3N0cnVjdCciLCAiJ3VuaW9uJyIsICInQk9PTEVB TiciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidVSU5UNjQnIiwgIidVSU5UMzInIiwgIidV SU5UMTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAgICInRUZJX0hJSV9EQVRFJyIsICInRUZJX0hJSV9USU1FJyIsICInRUZJX0hJSV9SRUYn IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInZ3VpZCciLCAiJ2NoZWNrYm94JyIsICInZW5k Y2hlY2tib3gnIiwgIidudW1lcmljJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2VuZG51 bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICInZGVmYXVsdCciLCAiJ3Bhc3N3b3JkJyIsICInZW5kcGFzc3dvcmQnIiwg IidzdHJpbmcnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInZW5kc3RyaW5nJyIsICInbWlu c2l6ZSciLCAiJ21heHNpemUnIiwgIidlbmNvZGluZyciLA0KDQorICAgICAgICAgICAgICAgICAg ICAgIidzdXBwcmVzc2lmJyIsICInZGlzYWJsZWlmJyIsICInaGlkZGVuJyIsICInZ290byciLA0K DQorICAgICAgICAgICAgICAgICAgICAgIidmb3Jtc2V0Z3VpZCciLCAiJ2luY29uc2lzdGVudGlm JyIsICInd2FybmluZ2lmJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ25vc3VibWl0aWYn IiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQnIiwgIidNQU5VRkFDVFVSSU5HJyIsDQoN CisgICAgICAgICAgICAgICAgICAgICAiJ0NIRUNLQk9YX0RFRkFVTFQnIiwgIidDSEVDS0JPWF9E RUZBVUxUX01GRyciLCAiJ0lOVEVSQUNUSVZFJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAi J05WX0FDQ0VTUyciLCAiJ1JFU0VUX1JFUVVJUkVEJyIsICInUkVDT05ORUNUX1JFUVVJUkVEJyIs DQoNCisgICAgICAgICAgICAgICAgICAgICAiJ0xBVEVfQ0hFQ0snIiwgIidSRUFEX09OTFknIiwg IidPUFRJT05TX09OTFknIiwgIidSRVNUX1NUWUxFJyIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAiJ2NsYXNzJyIsICInc3ViY2xhc3MnIiwgIidjbGFzc2d1aWQnIiwgIid0eXBlZGVmJyIsDQoN CisgICAgICAgICAgICAgICAgICAgICAiJ3Jlc3RvcmUnIiwgIidzYXZlJyIsICInZGVmYXVsdHMn IiwgIidiYW5uZXInIiwgIidhbGlnbiciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidsZWZ0 JyIsICIncmlnaHQnIiwgIidjZW50ZXInIiwgIidsaW5lJyIsICInbmFtZSciLA0KDQorICAgICAg ICAgICAgICAgICAgICAgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rpb25pZCciLCAi J2ltYWdlJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2xvY2tlZCciLCAiJ3J1bGUnIiwg IidlbmRydWxlJyIsICIndmFsdWUnIiwgIidyZWFkJyIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAiJ3dyaXRlJyIsICIncmVzZXRidXR0b24nIiwgIidlbmRyZXNldGJ1dHRvbiciLCAiJ2RlZmF1 bHRzdG9yZSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidhdHRyaWJ1dGUnIiwgIid2YXJz dG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSciLA0KDQorICAgICAgICAgICAgICAg ICAgICAgIiduYW1ldmFsdWV2YXJzdG9yZSciLCAiJ2FjdGlvbiciLCAiJ2NvbmZpZyciLCAiJ2Vu ZGFjdGlvbiciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidyZWZyZXNoJyIsICInaW50ZXJ2 YWwnIiwgIid2YXJzdG9yZWRldmljZSciLCAiJ2d1aWRvcCciLA0KDQorICAgICAgICAgICAgICAg ICAgICAgIidlbmRndWlkb3AnIiwgIidkYXRhdHlwZSciLCAiJ2RhdGEnIiwgIidtb2RhbCciLCAi J05PTl9ERVZJQ0UnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInRElTS19ERVZJQ0UnIiwg IidWSURFT19ERVZJQ0UnIiwgIidORVRXT1JLX0RFVklDRSciLA0KDQorICAgICAgICAgICAgICAg ICAgICAgIidJTlBVVF9ERVZJQ0UnIiwgIidPTkJPQVJEX0RFVklDRSciLCAiJ09USEVSX0RFVklD RSciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidTRVRVUF9BUFBMSUNBVElPTiciLCAiJ0dF TkVSQUxfQVBQTElDQVRJT04nIiwgIidGUk9OVF9QQUdFJyIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAiJ1NJTkdMRV9VU0UnIiwgIidZRUFSX1NVUFBSRVNTJyIsICInTU9OVEhfU1VQUFJFU1Mn IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInREFZX1NVUFBSRVNTJyIsICInSE9VUl9TVVBQ UkVTUyciLCAiJ01JTlVURV9TVVBQUkVTUyciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidT RUNPTkRfU1VQUFJFU1MnIiwgIidTVE9SQUdFX05PUk1BTCciLCAiJ1NUT1JBR0VfVElNRSciLA0K DQorICAgICAgICAgICAgICAgICAgICAgIidTVE9SQUdFX1dBS0VVUCciLCAiJ1VOSVFVRSciLCAi J05PRU1QVFknIiwgIidjb25kJyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAiJ2ZpbmQnIiwg IidtaWQnIiwgIid0b2tlbiciLCAiJ3NwYW4nIiwgIidkdXAnIiwgIid2YXJlcXZhbCciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgIid2YXInIiwgIidpZGVxdmFsJyIsICInaWRlcWlkJyIsICIn aWRlcXZhbGxpc3QnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICIncXVlc3Rpb25yZWYnIiwg IidydWxlcmVmJyIsICInc3RyaW5ncmVmJyIsICIncHVzaHRoaXMnIiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICInc2VjdXJpdHknIiwgIidnZXQnIiwgIidUUlVFJyIsICInRkFMU0UnIiwgIidP TkUnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInT05FUyciLCAiJ1pFUk8nIiwgIidVTkRF RklORUQnIiwgIidWRVJTSU9OJyIsICInbGVuZ3RoJyIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAiJ0FORCciLCAiJ09SJyIsICInTk9UJyIsICInc2V0JyIsICInficiLCAiJ2Jvb2x2YWwnIiwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICInc3RyaW5ndmFsJyIsICIndW5pbnR2YWwnIiwgIid0 b3VwcGVyJyIsICIndG9sb3dlciciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidtYXRjaCci LCAiJ21hdGNoMiciLCAiJ2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCg0KKyAgICAg ICAgICAgICAgICAgICAgICInc3RyaW5ncmVmdmFsJyIsICInbWFwJyIsICIncmVmcmVzaGd1aWQn IiwgIidTVFJJTkdfVE9LRU4nIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInT1BUSU9OX0RF RkFVTFQnIiwgIidPUFRJT05fREVGQVVMVF9NRkcnIiwgIidOVU1FUklDX1NJWkVfMSciLA0KDQor ICAgICAgICAgICAgICAgICAgICAgIidOVU1FUklDX1NJWkVfMiciLCAiJ05VTUVSSUNfU0laRV80 JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICInRElTUExB WV9JTlRfREVDJyIsICInRElTUExBWV9VSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9IRVgnIiwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICInSU5TRU5TSVRJVkUnIiwgIidTRU5TSVRJVkUnIiwg IidMQVNUX05PTl9NQVRDSCciLA0KDQorICAgICAgICAgICAgICAgICAgICAgIidGSVJTVF9OT05f TUFUQ0gnIiBdDQoNCisNCg0KKyAgICBzeW1ib2xpY05hbWVzID0gWyAiPElOVkFMSUQ+IiwgIjxJ TlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsICI8SU5W QUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+ IiwgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAiPElOVkFMSUQ+IiwgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBl IiwgIk9wZW5CcmFjZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlQnJhY2UiLCAi T3BlblBhcmVuIiwgIkNsb3NlUGFyZW4iLCAiT3BlbkJyYWNrZXQiLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICJDbG9zZUJyYWNrZXQiLCAiRG90IiwgIk5lZ2F0aXZlIiwgIkNvbG9uIiwgIlNs YXNoIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiU2VtaWNvbG9uIiwgIkNvbW1hIiwgIkVx dWFsIiwgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsDQoNCisgICAgICAgICAgICAgICAgICAgICAg Ikxlc3MiLCAiR3JlYXRlckVxdWFsIiwgIkdyZWF0ZXIiLCAiQml0V2lzZU9yIiwgIkJpdFdpc2VB bmQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQiLCAi Rm9ybVNldElkIiwgIkVuZEZvcm1TZXQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJUaXRs ZSIsICJGb3JtSWQiLCAiT25lT2YiLCAiRW5kT25lT2YiLCAiUHJvbXB0IiwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAiT3JkZXJlZExpc3QiLCAiTWF4Q29udGFpbmVycyIsICJFbmRMaXN0Iiwg IkVuZEZvcm0iLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJGb3JtIiwgIkZvcm1NYXAiLCAi TWFwVGl0bGUiLCAiTWFwR3VpZCIsICJTdWJ0aXRsZSIsDQoNCisgICAgICAgICAgICAgICAgICAg ICAgIkVuZFN1YnRpdGxlIiwgIkhlbHAiLCAiVGV4dCIsICJPcHRpb24iLCAiRkxBR1MiLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICJEYXRlIiwgIkVuZERhdGUiLCAiWWVhciIsICJNb250aCIs ICJEYXkiLCAiVGltZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIkVuZFRpbWUiLCAiSG91 ciIsICJNaW51dGUiLCAiU2Vjb25kIiwgIkdyYXlPdXRJZiIsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgIkxhYmVsIiwgIlRpbWVvdXQiLCAiSW52ZW50b3J5IiwgIk5vbk52RGF0YU1hcCIsICJT dHJ1Y3QiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJVbmlvbiIsICJCb29sZWFuIiwgIlVp bnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiVWlu dDgiLCAiRUZJX1NUUklOR19JRCIsICJFRklfSElJX0RBVEUiLCAiRUZJX0hJSV9USU1FIiwNCg0K KyAgICAgICAgICAgICAgICAgICAgICAiRUZJX0hJSV9SRUYiLCAiVXVpZCIsICJDaGVja0JveCIs ICJFbmRDaGVja0JveCIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWMiLCAiRW5k TnVtZXJpYyIsICJNaW5pbXVtIiwgIk1heGltdW0iLCAiU3RlcCIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgIkRlZmF1bHQiLCAiUGFzc3dvcmQiLCAiRW5kUGFzc3dvcmQiLCAiU3RyaW5nIiwg IkVuZFN0cmluZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk1pblNpemUiLCAiTWF4U2l6 ZSIsICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwgIkRpc2FibGVJZiIsDQoNCisgICAgICAgICAg ICAgICAgICAgICAgIkhpZGRlbiIsICJHb3RvIiwgIkZvcm1TZXRHdWlkIiwgIkluY29uc2lzdGVu dElmIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiV2FybmluZ0lmIiwgIk5vU3VibWl0SWYi LCAiRW5kSWYiLCAiS2V5IiwgIkRlZmF1bHRGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAiTWFudWZhY3R1cmluZ0ZsYWciLCAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIsICJDaGVja0JveERl ZmF1bHRNZmdGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJhY3RpdmVGbGFn IiwgIk5WQWNjZXNzRmxhZyIsICJSZXNldFJlcXVpcmVkRmxhZyIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgIlJlY29ubmVjdFJlcXVpcmVkRmxhZyIsICJMYXRlQ2hlY2tGbGFnIiwgIlJlYWRP bmx5RmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbk9ubHlGbGFnIiwgIlJl c3RTdHlsZUZsYWciLCAiQ2xhc3MiLCAiU3ViY2xhc3MiLA0KDQorICAgICAgICAgICAgICAgICAg ICAgICJDbGFzc0d1aWQiLCAiVHlwZURlZiIsICJSZXN0b3JlIiwgIlNhdmUiLCAiRGVmYXVsdHMi LA0KDQorICAgICAgICAgICAgICAgICAgICAgICJCYW5uZXIiLCAiQWxpZ24iLCAiTGVmdCIsICJS aWdodCIsICJDZW50ZXIiLCAiTGluZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk5hbWUi LCAiVmFySWQiLCAiUXVlc3Rpb24iLCAiUXVlc3Rpb25JZCIsICJJbWFnZSIsDQoNCisgICAgICAg ICAgICAgICAgICAgICAgIkxvY2tlZCIsICJSdWxlIiwgIkVuZFJ1bGUiLCAiVmFsdWUiLCAiUmVh ZCIsICJXcml0ZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlJlc2V0QnV0dG9uIiwgIkVu ZFJlc2V0QnV0dG9uIiwgIkRlZmF1bHRTdG9yZSIsICJBdHRyaWJ1dGUiLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXplIiwgIk5hbWVW YWx1ZVZhclN0b3JlIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiQWN0aW9uIiwgIkNvbmZp ZyIsICJFbmRBY3Rpb24iLCAiUmVmcmVzaCIsICJJbnRlcnZhbCIsDQoNCisgICAgICAgICAgICAg ICAgICAgICAgIlZhcnN0b3JlRGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3AiLCAiRGF0YVR5 cGUiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJEYXRhIiwgIk1vZGFsIiwgIkNsYXNzTm9u RGV2aWNlIiwgIkNsYXNzRGlza0RldmljZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIkNs YXNzVmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXREZXZpY2Ui LA0KDQorICAgICAgICAgICAgICAgICAgICAgICJDbGFzc09uQm9hcmREZXZpY2UiLCAiQ2xhc3NP dGhlckRldmljZSIsICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICJTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiIsICJTdWJjbGFzc0Zyb250UGFn ZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlN1YmNsYXNzU2luZ2xlVXNlIiwgIlllYXJT dXBwcHJlc3NGbGFnIiwgIk1vbnRoU3VwcHJlc3NGbGFnIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAiRGF5U3VwcHJlc3NGbGFnIiwgIkhvdXJTdXBwcHJlc3NGbGFnIiwgIk1pbnV0ZVN1cHBy ZXNzRmxhZyIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZFN1cHByZXNzRmxhZyIs ICJTdG9yYWdlTm9ybWFsRmxhZyIsICJTdG9yYWdlVGltZUZsYWciLA0KDQorICAgICAgICAgICAg ICAgICAgICAgICJTdG9yYWdlV2FrZVVwRmxhZyIsICJVbmlRdWVGbGFnIiwgIk5vRW1wdHlGbGFn IiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiQ29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2si LCAiU3BhbiIsICJEdXAiLCAiVmFyRXFWYWwiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJW YXIiLCAiSWRFcVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3QiLCAiUXVlc3Rpb25SZWYiLA0K DQorICAgICAgICAgICAgICAgICAgICAgICJSdWxlUmVmIiwgIlN0cmluZ1JlZiIsICJQdXNoVGhp cyIsICJTZWN1cml0eSIsICJHZXQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJUcnVlU3lt Ym9sIiwgIkZhbHNlU3ltYm9sIiwgIk9uZSIsICJPbmVzIiwgIlplcm8iLA0KDQorICAgICAgICAg ICAgICAgICAgICAgICJVbmRlZmluZWQiLCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9S IiwgIk5PVCIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIlNldCIsICJCaXRXaXNlTm90Iiwg IkJvb2xWYWwiLCAiU3RyaW5nVmFsIiwgIlVuSW50VmFsIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAiVG9VcHBlciIsICJUb0xvd2VyIiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIs DQoNCisgICAgICAgICAgICAgICAgICAgICAgIlF1ZXN0aW9uUmVmVmFsIiwgIlN0cmluZ1JlZlZh bCIsICJNYXAiLCAiUmVmcmVzaEd1aWQiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJTdHJp bmdUb2tlbiIsICJPcHRpb25EZWZhdWx0IiwgIk9wdGlvbkRlZmF1bHRNZmciLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZU9uZSIsICJOdW1lcmljU2l6ZVR3byIsICJOdW1l cmljU2l6ZUZvdXIiLA0KDQorICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZUVpZ2h0 IiwgIkRpc1BsYXlJbnREZWMiLCAiRGlzUGxheVVJbnREZWMiLA0KDQorICAgICAgICAgICAgICAg ICAgICAgICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsICJTZW5zaXRpdmUiLCAiTGFz dE5vbk1hdGNoIiwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAiRmlyc3ROb25NYXRjaCIsICJO dW1iZXIiLCAiU3RyaW5nSWRlbnRpZmllciIsICJDb21wbGV4RGVmaW5lIiwNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAiTGluZURlZmluaXRpb24iLCAiSW5jbHVkZURlZmluaXRpb24iLCAiV2hp dGVzcGFjZSIsDQoNCisgICAgICAgICAgICAgICAgICAgICAgIk5ld2xpbmUiLCAiTGluZUNvbW1l bnQiLCAiRXh0ZXJuIiBdDQoNCisNCg0KKyAgICBSVUxFX3ZmclByb2dyYW0gPSAwDQoNCisgICAg UlVMRV9wcmFnbWFQYWNrU2hvd0RlZiA9IDENCg0KKyAgICBSVUxFX3ByYWdtYVBhY2tTdGFja0Rl ZiA9IDINCg0KKyAgICBSVUxFX3ByYWdtYVBhY2tOdW1iZXIgPSAzDQoNCisgICAgUlVMRV92ZnJQ cmFnbWFQYWNrRGVmaW5pdGlvbiA9IDQNCg0KKyAgICBSVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0 aW9uID0gNQ0KDQorICAgIFJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbiA9IDYNCg0KKyAgICBS VUxFX3ZmckRhdGFTdHJ1Y3RGaWVsZHMgPSA3DQoNCisgICAgUlVMRV9kYXRhU3RydWN0RmllbGQ2 NCA9IDgNCg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDMyID0gOQ0KDQorICAgIFJVTEVfZGF0 YVN0cnVjdEZpZWxkMTYgPSAxMA0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkOCA9IDExDQoN CisgICAgUlVMRV9kYXRhU3RydWN0RmllbGRCb29sID0gMTINCg0KKyAgICBSVUxFX2RhdGFTdHJ1 Y3RGaWVsZFN0cmluZyA9IDEzDQoNCisgICAgUlVMRV9kYXRhU3RydWN0RmllbGREYXRlID0gMTQN Cg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFRpbWUgPSAxNQ0KDQorICAgIFJVTEVfZGF0YVN0 cnVjdEZpZWxkUmVmID0gMTYNCg0KKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXIgPSAxNw0K DQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQgPSAxOA0KDQorICAgIFJVTEVfZGF0YVN0 cnVjdEJpdEZpZWxkMzIgPSAxOQ0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMTYgPSAy MA0KDQorICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkOCA9IDIxDQoNCisgICAgUlVMRV92ZnJG b3JtU2V0RGVmaW5pdGlvbiA9IDIyDQoNCisgICAgUlVMRV9jbGFzc2d1aWREZWZpbml0aW9uID0g MjMNCg0KKyAgICBSVUxFX2NsYXNzRGVmaW5pdGlvbiA9IDI0DQoNCisgICAgUlVMRV92YWxpZENs YXNzTmFtZXMgPSAyNQ0KDQorICAgIFJVTEVfc3ViY2xhc3NEZWZpbml0aW9uID0gMjYNCg0KKyAg ICBSVUxFX3ZmckZvcm1TZXRMaXN0ID0gMjcNCg0KKyAgICBSVUxFX3ZmckZvcm1TZXQgPSAyOA0K DQorICAgIFJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlID0gMjkNCg0KKyAgICBSVUxFX3Zm clN0YXRlbWVudFZhclN0b3JlTGluZWFyID0gMzANCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFZh clN0b3JlRWZpID0gMzENCg0KKyAgICBSVUxFX3ZmclZhclN0b3JlRWZpQXR0ciA9IDMyDQoNCisg ICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSA9IDMzDQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0ID0gMzQNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVu dFN1cHByZXNzSWZGb3JtU2V0ID0gMzUNCg0KKyAgICBSVUxFX2d1aWRTdWJEZWZpbml0aW9uID0g MzYNCg0KKyAgICBSVUxFX2d1aWREZWZpbml0aW9uID0gMzcNCg0KKyAgICBSVUxFX2dldFN0cmlu Z0lkID0gMzgNCg0KKyAgICBSVUxFX3ZmclF1ZXN0aW9uSGVhZGVyID0gMzkNCg0KKyAgICBSVUxF X3ZmclF1ZXN0aW9uQmFzZUluZm8gPSA0MA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50SGVhZGVy ID0gNDENCg0KKyAgICBSVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCA9IDQyDQoNCisgICAg UlVMRV92ZnJTdG9yYWdlVmFySWQgPSA0Mw0KDQorICAgIFJVTEVfdmZyQ29uc3RhbnRWYWx1ZUZp ZWxkID0gNDQNCg0KKyAgICBSVUxFX3ZmckltYWdlVGFnID0gNDUNCg0KKyAgICBSVUxFX3Zmckxv Y2tlZFRhZyA9IDQ2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0VGFnID0gNDcNCg0KKyAg ICBSVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0ID0gNDgNCg0KKyAgICBSVUxFX3ZmckZvcm1E ZWZpbml0aW9uID0gNDkNCg0KKyAgICBSVUxFX3ZmckZvcm0gPSA1MA0KDQorICAgIFJVTEVfdmZy Rm9ybU1hcERlZmluaXRpb24gPSA1MQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50SW1hZ2UgPSA1 Mg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50TG9ja2VkID0gNTMNCg0KKyAgICBSVUxFX3ZmclN0 YXRlbWVudFJ1bGVzID0gNTQNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXQgPSA1NQ0KDQor ICAgIFJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUgPSA1Ng0KDQorICAgIFJVTEVfdmZyU3RhdGVt ZW50U3ViVGl0bGVDb21wb25lbnQgPSA1Nw0KDQorICAgIFJVTEVfdmZyU3VidGl0bGVGbGFncyA9 IDU4DQoNCisgICAgUlVMRV9zdWJ0aXRsZUZsYWdzRmllbGQgPSA1OQ0KDQorICAgIFJVTEVfdmZy U3RhdGVtZW50U3RhdGljVGV4dCA9IDYwDQoNCisgICAgUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVs ZCA9IDYxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSA9IDYyDQoNCisg ICAgUlVMRV92ZnJTdGF0ZW1lbnRHb3RvID0gNjMNCg0KKyAgICBSVUxFX3ZmckdvdG9GbGFncyA9 IDY0DQoNCisgICAgUlVMRV9nb3RvRmxhZ3NGaWVsZCA9IDY1DQoNCisgICAgUlVMRV92ZnJTdGF0 ZW1lbnRSZXNldEJ1dHRvbiA9IDY2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbnMg PSA2Nw0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcgPSA2OA0KDQorICAgIFJV TEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYgPSA2OQ0KDQorICAgIFJVTEVfdmZyU3RhdGVt ZW50Tm9TdWJtaXRJZiA9IDcwDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVz dCA9IDcxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoID0gNzINCg0KKyAgICBSVUxF X3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlID0gNzMNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVu dFJlZnJlc2hFdmVudCA9IDc0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5nSWYgPSA3 NQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0ID0gNzYNCg0KKyAgICBS VUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnID0gNzcNCg0KKyAgICBSVUxFX2ZsYWdz RmllbGQgPSA3OA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0ID0gNzkN Cg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0ID0gODANCg0KKyAgICBSVUxF X3ZmclN0YXRlbWVudERlZmF1bHQgPSA4MQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50VmFsdWUg PSA4Mg0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucyA9IDgzDQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiA9IDg0DQoNCisgICAgUlVMRV92ZnJPbmVPZk9wdGlvbkZs YWdzID0gODUNCg0KKyAgICBSVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCA9IDg2DQoNCisgICAg UlVMRV92ZnJTdGF0ZW1lbnRSZWFkID0gODcNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFdyaXRl ID0gODgNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCA9IDg5DQoN CisgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiA9IDkwDQoNCisgICAgUlVMRV92 ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSA9IDkxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRDaGVj a0JveCA9IDkyDQoNCisgICAgUlVMRV92ZnJDaGVja0JveEZsYWdzID0gOTMNCg0KKyAgICBSVUxF X2NoZWNrYm94RmxhZ3NGaWVsZCA9IDk0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRBY3Rpb24g PSA5NQ0KDQorICAgIFJVTEVfdmZyQWN0aW9uRmxhZ3MgPSA5Ng0KDQorICAgIFJVTEVfYWN0aW9u RmxhZ3NGaWVsZCA9IDk3DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSA9IDk4 DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljID0gOTkNCg0KKyAgICBSVUxFX3ZmclNl dE1pbk1heFN0ZXAgPSAxMDANCg0KKyAgICBSVUxFX3Zmck51bWVyaWNGbGFncyA9IDEwMQ0KDQor ICAgIFJVTEVfbnVtZXJpY0ZsYWdzRmllbGQgPSAxMDINCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVu dE9uZU9mID0gMTAzDQoNCisgICAgUlVMRV92ZnJPbmVvZkZsYWdzRmllbGQgPSAxMDQNCg0KKyAg ICBSVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUgPSAxMDUNCg0KKyAgICBSVUxFX3ZmclN0YXRl bWVudFN0cmluZyA9IDEwNg0KDQorICAgIFJVTEVfdmZyU3RyaW5nRmxhZ3NGaWVsZCA9IDEwNw0K DQorICAgIFJVTEVfc3RyaW5nRmxhZ3NGaWVsZCA9IDEwOA0KDQorICAgIFJVTEVfdmZyU3RhdGVt ZW50UGFzc3dvcmQgPSAxMDkNCg0KKyAgICBSVUxFX3ZmclBhc3N3b3JkRmxhZ3NGaWVsZCA9IDEx MA0KDQorICAgIFJVTEVfcGFzc3dvcmRGbGFnc0ZpZWxkID0gMTExDQoNCisgICAgUlVMRV92ZnJT dGF0ZW1lbnRPcmRlcmVkTGlzdCA9IDExMg0KDQorICAgIFJVTEVfdmZyT3JkZXJlZExpc3RGbGFn cyA9IDExMw0KDQorICAgIFJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkID0gMTE0DQoNCisgICAg UlVMRV92ZnJTdGF0ZW1lbnREYXRlID0gMTE1DQoNCisgICAgUlVMRV9taW5NYXhEYXRlU3RlcERl ZmF1bHQgPSAxMTYNCg0KKyAgICBSVUxFX3ZmckRhdGVGbGFncyA9IDExNw0KDQorICAgIFJVTEVf ZGF0ZUZsYWdzRmllbGQgPSAxMTgNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVudFRpbWUgPSAxMTkN Cg0KKyAgICBSVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCA9IDEyMA0KDQorICAgIFJVTEVfdmZy VGltZUZsYWdzID0gMTIxDQoNCisgICAgUlVMRV90aW1lRmxhZ3NGaWVsZCA9IDEyMg0KDQorICAg IFJVTEVfdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwgPSAxMjMNCg0KKyAgICBSVUxFX3ZmclN0YXRl bWVudENvbmRpdGlvbmFsTmV3ID0gMTI0DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmU3RhdCA9IDEyNQ0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdCA9IDEy Ng0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QgPSAxMjcNCg0KKyAgICBSVUxFX3Zm clN0YXRlbWVudFN0YXRMaXN0T2xkID0gMTI4DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnREaXNh YmxlSWZTdGF0ID0gMTI5DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVz c0lmID0gMTMwDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmID0g MTMxDQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyA9IDEzMg0KDQor ICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyA9IDEzMw0KDQorICAgIFJVTEVf dmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0ID0gMTM0DQoNCisgICAgUlVMRV92ZnJTdGF0 ZW1lbnRJbnZhbGlkID0gMTM1DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVu ID0gMTM2DQoNCisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5ID0gMTM3DQoN CisgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cyA9IDEzOA0K DQorICAgIFJVTEVfdmZyU3RhdGVtZW50TGFiZWwgPSAxMzkNCg0KKyAgICBSVUxFX3ZmclN0YXRl bWVudEJhbm5lciA9IDE0MA0KDQorICAgIFJVTEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uID0gMTQx DQoNCisgICAgUlVMRV92ZnJFeHRlbnNpb25EYXRhID0gMTQyDQoNCisgICAgUlVMRV92ZnJTdGF0 ZW1lbnRNb2RhbCA9IDE0Mw0KDQorICAgIFJVTEVfdmZyTW9kYWxUYWcgPSAxNDQNCg0KKyAgICBS VUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb24gPSAxNDUNCg0KKyAgICBSVUxFX3ZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIgPSAxNDYNCg0KKyAgICBSVUxFX2FuZFRlcm0gPSAxNDcNCg0KKyAgICBS VUxFX2JpdHdpc2VvclRlcm0gPSAxNDgNCg0KKyAgICBSVUxFX2JpdHdpc2VhbmRUZXJtID0gMTQ5 DQoNCisgICAgUlVMRV9lcXVhbFRlcm0gPSAxNTANCg0KKyAgICBSVUxFX2VxdWFsVGVybVN1cHBs ZW1lbnRhcnkgPSAxNTENCg0KKyAgICBSVUxFX2NvbXBhcmVUZXJtID0gMTUyDQoNCisgICAgUlVM RV9jb21wYXJlVGVybVN1cHBsZW1lbnRhcnkgPSAxNTMNCg0KKyAgICBSVUxFX3NoaWZ0VGVybSA9 IDE1NA0KDQorICAgIFJVTEVfc2hpZnRUZXJtU3VwcGxlbWVudGFyeSA9IDE1NQ0KDQorICAgIFJV TEVfYWRkTWludXNUZXJtID0gMTU2DQoNCisgICAgUlVMRV9hZGRNaW51c1Rlcm1TdXBwbGVtZW50 YXJ5ID0gMTU3DQoNCisgICAgUlVMRV9tdWx0ZGl2bW9kVGVybSA9IDE1OA0KDQorICAgIFJVTEVf bXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5ID0gMTU5DQoNCisgICAgUlVMRV9jYXN0VGVybSA9 IDE2MA0KDQorICAgIFJVTEVfYXRvbVRlcm0gPSAxNjENCg0KKyAgICBSVUxFX3ZmckV4cHJlc3Np b25DYXRlbmF0ZSA9IDE2Mg0KDQorICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoID0gMTYzDQoN CisgICAgUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gyID0gMTY0DQoNCisgICAgUlVMRV92ZnJFeHBy ZXNzaW9uUGFyZW4gPSAxNjUNCg0KKyAgICBSVUxFX3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rp b24gPSAxNjYNCg0KKyAgICBSVUxFX2R1cEV4cCA9IDE2Nw0KDQorICAgIFJVTEVfdmFyZXF2YWxF eHAgPSAxNjgNCg0KKyAgICBSVUxFX2lkZXF2YWxFeHAgPSAxNjkNCg0KKyAgICBSVUxFX2lkZXFp ZEV4cCA9IDE3MA0KDQorICAgIFJVTEVfaWRlcXZhbGxpc3RFeHAgPSAxNzENCg0KKyAgICBSVUxF X3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSA9IDE3Mg0KDQorICAgIFJVTEVfYXJyYXlOYW1lID0g MTczDQoNCisgICAgUlVMRV9xdWVzdGlvbnJlZjFFeHAgPSAxNzQNCg0KKyAgICBSVUxFX3J1bGVy ZWZFeHAgPSAxNzUNCg0KKyAgICBSVUxFX3N0cmluZ3JlZjFFeHAgPSAxNzYNCg0KKyAgICBSVUxF X3B1c2h0aGlzRXhwID0gMTc3DQoNCisgICAgUlVMRV9zZWN1cml0eUV4cCA9IDE3OA0KDQorICAg IFJVTEVfbnVtZXJpY1ZhclN0b3JlVHlwZSA9IDE3OQ0KDQorICAgIFJVTEVfZ2V0RXhwID0gMTgw DQoNCisgICAgUlVMRV92ZnJFeHByZXNzaW9uQ29uc3RhbnQgPSAxODENCg0KKyAgICBSVUxFX3Zm ckV4cHJlc3Npb25VbmFyeU9wID0gMTgyDQoNCisgICAgUlVMRV9sZW5ndGhFeHAgPSAxODMNCg0K KyAgICBSVUxFX2JpdHdpc2Vub3RFeHAgPSAxODQNCg0KKyAgICBSVUxFX3F1ZXN0aW9uMjNyZWZF eHAgPSAxODUNCg0KKyAgICBSVUxFX3N0cmluZ3JlZjJFeHAgPSAxODYNCg0KKyAgICBSVUxFX3Rv Ym9vbEV4cCA9IDE4Nw0KDQorICAgIFJVTEVfdG9zdHJpbmdFeHAgPSAxODgNCg0KKyAgICBSVUxF X3VuaW50RXhwID0gMTg5DQoNCisgICAgUlVMRV90b3VwcGVyRXhwID0gMTkwDQoNCisgICAgUlVM RV90b2x3ZXJFeHAgPSAxOTENCg0KKyAgICBSVUxFX3NldEV4cCA9IDE5Mg0KDQorICAgIFJVTEVf dmZyRXhwcmVzc2lvblRlcm5hcnlPcCA9IDE5Mw0KDQorICAgIFJVTEVfY29uZGl0aW9uYWxFeHAg PSAxOTQNCg0KKyAgICBSVUxFX2ZpbmRFeHAgPSAxOTUNCg0KKyAgICBSVUxFX2ZpbmRGb3JtYXQg PSAxOTYNCg0KKyAgICBSVUxFX21pZEV4cCA9IDE5Nw0KDQorICAgIFJVTEVfdG9rZW5FeHAgPSAx OTgNCg0KKyAgICBSVUxFX3NwYW5FeHAgPSAxOTkNCg0KKyAgICBSVUxFX3NwYW5GbGFncyA9IDIw MA0KDQorICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hcCA9IDIwMQ0KDQorDQoNCisgICAgcnVsZU5h bWVzID0gIFsgInZmclByb2dyYW0iLCAicHJhZ21hUGFja1Nob3dEZWYiLCAicHJhZ21hUGFja1N0 YWNrRGVmIiwNCg0KKyAgICAgICAgICAgICAgICAgICAicHJhZ21hUGFja051bWJlciIsICJ2ZnJQ cmFnbWFQYWNrRGVmaW5pdGlvbiIsICJ2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbiIsDQoNCisgICAg ICAgICAgICAgICAgICAgInZmckRhdGFVbmlvbkRlZmluaXRpb24iLCAidmZyRGF0YVN0cnVjdEZp ZWxkcyIsICJkYXRhU3RydWN0RmllbGQ2NCIsDQoNCisgICAgICAgICAgICAgICAgICAgImRhdGFT dHJ1Y3RGaWVsZDMyIiwgImRhdGFTdHJ1Y3RGaWVsZDE2IiwgImRhdGFTdHJ1Y3RGaWVsZDgiLA0K DQorICAgICAgICAgICAgICAgICAgICJkYXRhU3RydWN0RmllbGRCb29sIiwgImRhdGFTdHJ1Y3RG aWVsZFN0cmluZyIsICJkYXRhU3RydWN0RmllbGREYXRlIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAiZGF0YVN0cnVjdEZpZWxkVGltZSIsICJkYXRhU3RydWN0RmllbGRSZWYiLCAiZGF0YVN0cnVj dEZpZWxkVXNlciIsDQoNCisgICAgICAgICAgICAgICAgICAgImRhdGFTdHJ1Y3RCaXRGaWVsZDY0 IiwgImRhdGFTdHJ1Y3RCaXRGaWVsZDMyIiwgImRhdGFTdHJ1Y3RCaXRGaWVsZDE2IiwNCg0KKyAg ICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkOCIsICJ2ZnJGb3JtU2V0RGVmaW5p dGlvbiIsICJjbGFzc2d1aWREZWZpbml0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiY2xh c3NEZWZpbml0aW9uIiwgInZhbGlkQ2xhc3NOYW1lcyIsICJzdWJjbGFzc0RlZmluaXRpb24iLA0K DQorICAgICAgICAgICAgICAgICAgICJ2ZnJGb3JtU2V0TGlzdCIsICJ2ZnJGb3JtU2V0IiwgInZm clN0YXRlbWVudERlZmF1bHRTdG9yZSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRl bWVudFZhclN0b3JlTGluZWFyIiwgInZmclN0YXRlbWVudFZhclN0b3JlRWZpIiwNCg0KKyAgICAg ICAgICAgICAgICAgICAidmZyVmFyU3RvcmVFZmlBdHRyIiwgInZmclN0YXRlbWVudFZhclN0b3Jl TmFtZVZhbHVlIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50RGlzYWJsZUlm Rm9ybVNldCIsICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCIsDQoNCisgICAgICAgICAg ICAgICAgICAgImd1aWRTdWJEZWZpbml0aW9uIiwgImd1aWREZWZpbml0aW9uIiwgImdldFN0cmlu Z0lkIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyUXVlc3Rpb25IZWFkZXIiLCAidmZyUXVl c3Rpb25CYXNlSW5mbyIsICJ2ZnJTdGF0ZW1lbnRIZWFkZXIiLA0KDQorICAgICAgICAgICAgICAg ICAgICJxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQiLCAidmZyU3RvcmFnZVZhcklkIiwgInZmckNv bnN0YW50VmFsdWVGaWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmckltYWdlVGFnIiwg InZmckxvY2tlZFRhZyIsICJ2ZnJTdGF0ZW1lbnRTdGF0VGFnIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAidmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiLCAidmZyRm9ybURlZmluaXRpb24iLCAidmZy Rm9ybSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmckZvcm1NYXBEZWZpbml0aW9uIiwgInZm clN0YXRlbWVudEltYWdlIiwgInZmclN0YXRlbWVudExvY2tlZCIsDQoNCisgICAgICAgICAgICAg ICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZmclN0YXRlbWVudFN0YXQiLCAidmZyU3RhdGVt ZW50U3ViVGl0bGUiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudCIsICJ2ZnJTdWJ0aXRsZUZsYWdzIiwNCg0KKyAgICAgICAgICAgICAgICAgICAi c3VidGl0bGVGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFN0YXRpY1RleHQiLCAic3RhdGljVGV4 dEZsYWdzRmllbGQiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRDcm9zc1Jl ZmVyZW5jZSIsICJ2ZnJTdGF0ZW1lbnRHb3RvIiwgInZmckdvdG9GbGFncyIsDQoNCisgICAgICAg ICAgICAgICAgICAgImdvdG9GbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFJlc2V0QnV0dG9uIiwg InZmclN0YXRlbWVudFF1ZXN0aW9ucyIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRl bWVudFF1ZXN0aW9uVGFnIiwgInZmclN0YXRlbWVudEluY29uc2lzdGVudElmIiwNCg0KKyAgICAg ICAgICAgICAgICAgICAidmZyU3RhdGVtZW50Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0ZW1lbnREaXNh YmxlSWZRdWVzdCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudFJlZnJlc2gi LCAidmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2 ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQiLCAidmZyU3RhdGVtZW50V2FybmluZ0lmIiwNCg0KKyAg ICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0IiwgInZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uVGFnIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiZmxhZ3NGaWVs ZCIsICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QiLCAidmZyU3RhdGVtZW50R3JheU91dElm UXVlc3QiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnREZWZhdWx0IiwgInZm clN0YXRlbWVudFZhbHVlIiwgInZmclN0YXRlbWVudE9wdGlvbnMiLA0KDQorICAgICAgICAgICAg ICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiIsICJ2ZnJPbmVPZk9wdGlvbkZsYWdzIiwg Im9uZW9mb3B0aW9uRmxhZ3NGaWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRl bWVudFJlYWQiLCAidmZyU3RhdGVtZW50V3JpdGUiLCAidmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0IiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b24iLCAidmZyU3RhdGVtZW50Qm9vbGVhblR5cGUiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2 ZnJTdGF0ZW1lbnRDaGVja0JveCIsICJ2ZnJDaGVja0JveEZsYWdzIiwgImNoZWNrYm94RmxhZ3NG aWVsZCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEFjdGlvbiIsICJ2ZnJB Y3Rpb25GbGFncyIsICJhY3Rpb25GbGFnc0ZpZWxkIiwNCg0KKyAgICAgICAgICAgICAgICAgICAi dmZyU3RhdGVtZW50TnVtZXJpY1R5cGUiLCAidmZyU3RhdGVtZW50TnVtZXJpYyIsICJ2ZnJTZXRN aW5NYXhTdGVwIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyTnVtZXJpY0ZsYWdzIiwgIm51 bWVyaWNGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudE9uZU9mIiwNCg0KKyAgICAgICAgICAgICAg ICAgICAidmZyT25lb2ZGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFN0cmluZ1R5cGUiLCAidmZy U3RhdGVtZW50U3RyaW5nIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RyaW5nRmxhZ3NG aWVsZCIsICJzdHJpbmdGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudFBhc3N3b3JkIiwNCg0KKyAg ICAgICAgICAgICAgICAgICAidmZyUGFzc3dvcmRGbGFnc0ZpZWxkIiwgInBhc3N3b3JkRmxhZ3NG aWVsZCIsICJ2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIsDQoNCisgICAgICAgICAgICAgICAgICAg InZmck9yZGVyZWRMaXN0RmxhZ3MiLCAib3JkZXJlZGxpc3RGbGFnc0ZpZWxkIiwgInZmclN0YXRl bWVudERhdGUiLA0KDQorICAgICAgICAgICAgICAgICAgICJtaW5NYXhEYXRlU3RlcERlZmF1bHQi LCAidmZyRGF0ZUZsYWdzIiwgImRhdGVGbGFnc0ZpZWxkIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAidmZyU3RhdGVtZW50VGltZSIsICJtaW5NYXhUaW1lU3RlcERlZmF1bHQiLCAidmZyVGltZUZs YWdzIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidGltZUZsYWdzRmllbGQiLCAidmZyU3RhdGVt ZW50Q29uZGl0aW9uYWwiLCAidmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXciLA0KDQorICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdCIsICJ2ZnJTdGF0ZW1lbnRH cmF5T3V0SWZTdGF0IiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3RhdExp c3QiLCAidmZyU3RhdGVtZW50U3RhdExpc3RPbGQiLCAidmZyU3RhdGVtZW50RGlzYWJsZUlmU3Rh dCIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNz SWYiLCAidmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZiIsDQoNCisgICAgICAgICAgICAg ICAgICAgInZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3IiwgInZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXROZXciLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRJbmNvbnNp c3RlbnRJZlN0YXQiLCAidmZyU3RhdGVtZW50SW52YWxpZCIsDQoNCisgICAgICAgICAgICAgICAg ICAgInZmclN0YXRlbWVudEludmFsaWRIaWRkZW4iLCAidmZyU3RhdGVtZW50SW52YWxpZEludmVu dG9yeSIsDQoNCisgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudEludmFsaWRTYXZlUmVz dG9yZURlZmF1bHRzIiwgInZmclN0YXRlbWVudExhYmVsIiwNCg0KKyAgICAgICAgICAgICAgICAg ICAidmZyU3RhdGVtZW50QmFubmVyIiwgInZmclN0YXRlbWVudEV4dGVuc2lvbiIsICJ2ZnJFeHRl bnNpb25EYXRhIiwNCg0KKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50TW9kYWwiLCAi dmZyTW9kYWxUYWciLCAidmZyU3RhdGVtZW50RXhwcmVzc2lvbiIsDQoNCisgICAgICAgICAgICAg ICAgICAgInZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIiLCAiYW5kVGVybSIsICJiaXR3aXNlb3JU ZXJtIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiYml0d2lzZWFuZFRlcm0iLCAiZXF1YWxUZXJt IiwgImVxdWFsVGVybVN1cHBsZW1lbnRhcnkiLA0KDQorICAgICAgICAgICAgICAgICAgICJjb21w YXJlVGVybSIsICJjb21wYXJlVGVybVN1cHBsZW1lbnRhcnkiLCAic2hpZnRUZXJtIiwNCg0KKyAg ICAgICAgICAgICAgICAgICAic2hpZnRUZXJtU3VwcGxlbWVudGFyeSIsICJhZGRNaW51c1Rlcm0i LCAiYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeSIsDQoNCisgICAgICAgICAgICAgICAgICAgIm11 bHRkaXZtb2RUZXJtIiwgIm11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSIsICJjYXN0VGVybSIs DQoNCisgICAgICAgICAgICAgICAgICAgImF0b21UZXJtIiwgInZmckV4cHJlc3Npb25DYXRlbmF0 ZSIsICJ2ZnJFeHByZXNzaW9uTWF0Y2giLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJFeHBy ZXNzaW9uTWF0Y2gyIiwgInZmckV4cHJlc3Npb25QYXJlbiIsICJ2ZnJFeHByZXNzaW9uQnVpbGRJ bkZ1bmN0aW9uIiwNCg0KKyAgICAgICAgICAgICAgICAgICAiZHVwRXhwIiwgInZhcmVxdmFsRXhw IiwgImlkZXF2YWxFeHAiLCAiaWRlcWlkRXhwIiwgImlkZXF2YWxsaXN0RXhwIiwNCg0KKyAgICAg ICAgICAgICAgICAgICAidmZyUXVlc3Rpb25EYXRhRmllbGROYW1lIiwgImFycmF5TmFtZSIsICJx dWVzdGlvbnJlZjFFeHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJydWxlcmVmRXhwIiwgInN0 cmluZ3JlZjFFeHAiLCAicHVzaHRoaXNFeHAiLCAic2VjdXJpdHlFeHAiLA0KDQorICAgICAgICAg ICAgICAgICAgICJudW1lcmljVmFyU3RvcmVUeXBlIiwgImdldEV4cCIsICJ2ZnJFeHByZXNzaW9u Q29uc3RhbnQiLA0KDQorICAgICAgICAgICAgICAgICAgICJ2ZnJFeHByZXNzaW9uVW5hcnlPcCIs ICJsZW5ndGhFeHAiLCAiYml0d2lzZW5vdEV4cCIsDQoNCisgICAgICAgICAgICAgICAgICAgInF1 ZXN0aW9uMjNyZWZFeHAiLCAic3RyaW5ncmVmMkV4cCIsICJ0b2Jvb2xFeHAiLCAidG9zdHJpbmdF eHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJ1bmludEV4cCIsICJ0b3VwcGVyRXhwIiwgInRv bHdlckV4cCIsICJzZXRFeHAiLCAidmZyRXhwcmVzc2lvblRlcm5hcnlPcCIsDQoNCisgICAgICAg ICAgICAgICAgICAgImNvbmRpdGlvbmFsRXhwIiwgImZpbmRFeHAiLCAiZmluZEZvcm1hdCIsICJt aWRFeHAiLA0KDQorICAgICAgICAgICAgICAgICAgICJ0b2tlbkV4cCIsICJzcGFuRXhwIiwgInNw YW5GbGFncyIsICJ2ZnJFeHByZXNzaW9uTWFwIiBdDQoNCisNCg0KKyAgICBFT0YgPSBUb2tlbi5F T0YNCg0KKyAgICBUX18wPTENCg0KKyAgICBUX18xPTINCg0KKyAgICBUX18yPTMNCg0KKyAgICBU X18zPTQNCg0KKyAgICBUX180PTUNCg0KKyAgICBUX181PTYNCg0KKyAgICBUX182PTcNCg0KKyAg ICBUX183PTgNCg0KKyAgICBUX184PTkNCg0KKyAgICBUX185PTEwDQoNCisgICAgVF9fMTA9MTEN Cg0KKyAgICBUX18xMT0xMg0KDQorICAgIFRfXzEyPTEzDQoNCisgICAgVF9fMTM9MTQNCg0KKyAg ICBUX18xND0xNQ0KDQorICAgIFRfXzE1PTE2DQoNCisgICAgRGVmaW5lPTE3DQoNCisgICAgSW5j bHVkZT0xOA0KDQorICAgIEZvcm1Qa2dUeXBlPTE5DQoNCisgICAgT3BlbkJyYWNlPTIwDQoNCisg ICAgQ2xvc2VCcmFjZT0yMQ0KDQorICAgIE9wZW5QYXJlbj0yMg0KDQorICAgIENsb3NlUGFyZW49 MjMNCg0KKyAgICBPcGVuQnJhY2tldD0yNA0KDQorICAgIENsb3NlQnJhY2tldD0yNQ0KDQorICAg IERvdD0yNg0KDQorICAgIE5lZ2F0aXZlPTI3DQoNCisgICAgQ29sb249MjgNCg0KKyAgICBTbGFz aD0yOQ0KDQorICAgIFNlbWljb2xvbj0zMA0KDQorICAgIENvbW1hPTMxDQoNCisgICAgRXF1YWw9 MzINCg0KKyAgICBOb3RFcXVhbD0zMw0KDQorICAgIExlc3NFcXVhbD0zNA0KDQorICAgIExlc3M9 MzUNCg0KKyAgICBHcmVhdGVyRXF1YWw9MzYNCg0KKyAgICBHcmVhdGVyPTM3DQoNCisgICAgQml0 V2lzZU9yPTM4DQoNCisgICAgQml0V2lzZUFuZD0zOQ0KDQorICAgIERldmljZVBhdGg9NDANCg0K KyAgICBGb3JtU2V0PTQxDQoNCisgICAgRm9ybVNldElkPTQyDQoNCisgICAgRW5kRm9ybVNldD00 Mw0KDQorICAgIFRpdGxlPTQ0DQoNCisgICAgRm9ybUlkPTQ1DQoNCisgICAgT25lT2Y9NDYNCg0K KyAgICBFbmRPbmVPZj00Nw0KDQorICAgIFByb21wdD00OA0KDQorICAgIE9yZGVyZWRMaXN0PTQ5 DQoNCisgICAgTWF4Q29udGFpbmVycz01MA0KDQorICAgIEVuZExpc3Q9NTENCg0KKyAgICBFbmRG b3JtPTUyDQoNCisgICAgRm9ybT01Mw0KDQorICAgIEZvcm1NYXA9NTQNCg0KKyAgICBNYXBUaXRs ZT01NQ0KDQorICAgIE1hcEd1aWQ9NTYNCg0KKyAgICBTdWJ0aXRsZT01Nw0KDQorICAgIEVuZFN1 YnRpdGxlPTU4DQoNCisgICAgSGVscD01OQ0KDQorICAgIFRleHQ9NjANCg0KKyAgICBPcHRpb249 NjENCg0KKyAgICBGTEFHUz02Mg0KDQorICAgIERhdGU9NjMNCg0KKyAgICBFbmREYXRlPTY0DQoN CisgICAgWWVhcj02NQ0KDQorICAgIE1vbnRoPTY2DQoNCisgICAgRGF5PTY3DQoNCisgICAgVGlt ZT02OA0KDQorICAgIEVuZFRpbWU9NjkNCg0KKyAgICBIb3VyPTcwDQoNCisgICAgTWludXRlPTcx DQoNCisgICAgU2Vjb25kPTcyDQoNCisgICAgR3JheU91dElmPTczDQoNCisgICAgTGFiZWw9NzQN Cg0KKyAgICBUaW1lb3V0PTc1DQoNCisgICAgSW52ZW50b3J5PTc2DQoNCisgICAgTm9uTnZEYXRh TWFwPTc3DQoNCisgICAgU3RydWN0PTc4DQoNCisgICAgVW5pb249NzkNCg0KKyAgICBCb29sZWFu PTgwDQoNCisgICAgVWludDY0PTgxDQoNCisgICAgVWludDMyPTgyDQoNCisgICAgVWludDE2PTgz DQoNCisgICAgVWludDg9ODQNCg0KKyAgICBFRklfU1RSSU5HX0lEPTg1DQoNCisgICAgRUZJX0hJ SV9EQVRFPTg2DQoNCisgICAgRUZJX0hJSV9USU1FPTg3DQoNCisgICAgRUZJX0hJSV9SRUY9ODgN Cg0KKyAgICBVdWlkPTg5DQoNCisgICAgQ2hlY2tCb3g9OTANCg0KKyAgICBFbmRDaGVja0JveD05 MQ0KDQorICAgIE51bWVyaWM9OTINCg0KKyAgICBFbmROdW1lcmljPTkzDQoNCisgICAgTWluaW11 bT05NA0KDQorICAgIE1heGltdW09OTUNCg0KKyAgICBTdGVwPTk2DQoNCisgICAgRGVmYXVsdD05 Nw0KDQorICAgIFBhc3N3b3JkPTk4DQoNCisgICAgRW5kUGFzc3dvcmQ9OTkNCg0KKyAgICBTdHJp bmc9MTAwDQoNCisgICAgRW5kU3RyaW5nPTEwMQ0KDQorICAgIE1pblNpemU9MTAyDQoNCisgICAg TWF4U2l6ZT0xMDMNCg0KKyAgICBFbmNvZGluZz0xMDQNCg0KKyAgICBTdXBwcmVzc0lmPTEwNQ0K DQorICAgIERpc2FibGVJZj0xMDYNCg0KKyAgICBIaWRkZW49MTA3DQoNCisgICAgR290bz0xMDgN Cg0KKyAgICBGb3JtU2V0R3VpZD0xMDkNCg0KKyAgICBJbmNvbnNpc3RlbnRJZj0xMTANCg0KKyAg ICBXYXJuaW5nSWY9MTExDQoNCisgICAgTm9TdWJtaXRJZj0xMTINCg0KKyAgICBFbmRJZj0xMTMN Cg0KKyAgICBLZXk9MTE0DQoNCisgICAgRGVmYXVsdEZsYWc9MTE1DQoNCisgICAgTWFudWZhY3R1 cmluZ0ZsYWc9MTE2DQoNCisgICAgQ2hlY2tCb3hEZWZhdWx0RmxhZz0xMTcNCg0KKyAgICBDaGVj a0JveERlZmF1bHRNZmdGbGFnPTExOA0KDQorICAgIEludGVyYWN0aXZlRmxhZz0xMTkNCg0KKyAg ICBOVkFjY2Vzc0ZsYWc9MTIwDQoNCisgICAgUmVzZXRSZXF1aXJlZEZsYWc9MTIxDQoNCisgICAg UmVjb25uZWN0UmVxdWlyZWRGbGFnPTEyMg0KDQorICAgIExhdGVDaGVja0ZsYWc9MTIzDQoNCisg ICAgUmVhZE9ubHlGbGFnPTEyNA0KDQorICAgIE9wdGlvbk9ubHlGbGFnPTEyNQ0KDQorICAgIFJl c3RTdHlsZUZsYWc9MTI2DQoNCisgICAgQ2xhc3M9MTI3DQoNCisgICAgU3ViY2xhc3M9MTI4DQoN CisgICAgQ2xhc3NHdWlkPTEyOQ0KDQorICAgIFR5cGVEZWY9MTMwDQoNCisgICAgUmVzdG9yZT0x MzENCg0KKyAgICBTYXZlPTEzMg0KDQorICAgIERlZmF1bHRzPTEzMw0KDQorICAgIEJhbm5lcj0x MzQNCg0KKyAgICBBbGlnbj0xMzUNCg0KKyAgICBMZWZ0PTEzNg0KDQorICAgIFJpZ2h0PTEzNw0K DQorICAgIENlbnRlcj0xMzgNCg0KKyAgICBMaW5lPTEzOQ0KDQorICAgIE5hbWU9MTQwDQoNCisg ICAgVmFySWQ9MTQxDQoNCisgICAgUXVlc3Rpb249MTQyDQoNCisgICAgUXVlc3Rpb25JZD0xNDMN Cg0KKyAgICBJbWFnZT0xNDQNCg0KKyAgICBMb2NrZWQ9MTQ1DQoNCisgICAgUnVsZT0xNDYNCg0K KyAgICBFbmRSdWxlPTE0Nw0KDQorICAgIFZhbHVlPTE0OA0KDQorICAgIFJlYWQ9MTQ5DQoNCisg ICAgV3JpdGU9MTUwDQoNCisgICAgUmVzZXRCdXR0b249MTUxDQoNCisgICAgRW5kUmVzZXRCdXR0 b249MTUyDQoNCisgICAgRGVmYXVsdFN0b3JlPTE1Mw0KDQorICAgIEF0dHJpYnV0ZT0xNTQNCg0K KyAgICBWYXJzdG9yZT0xNTUNCg0KKyAgICBFZml2YXJzdG9yZT0xNTYNCg0KKyAgICBWYXJTaXpl PTE1Nw0KDQorICAgIE5hbWVWYWx1ZVZhclN0b3JlPTE1OA0KDQorICAgIEFjdGlvbj0xNTkNCg0K KyAgICBDb25maWc9MTYwDQoNCisgICAgRW5kQWN0aW9uPTE2MQ0KDQorICAgIFJlZnJlc2g9MTYy DQoNCisgICAgSW50ZXJ2YWw9MTYzDQoNCisgICAgVmFyc3RvcmVEZXZpY2U9MTY0DQoNCisgICAg R3VpZE9wPTE2NQ0KDQorICAgIEVuZEd1aWRPcD0xNjYNCg0KKyAgICBEYXRhVHlwZT0xNjcNCg0K KyAgICBEYXRhPTE2OA0KDQorICAgIE1vZGFsPTE2OQ0KDQorICAgIENsYXNzTm9uRGV2aWNlPTE3 MA0KDQorICAgIENsYXNzRGlza0RldmljZT0xNzENCg0KKyAgICBDbGFzc1ZpZGVvRGV2aWNlPTE3 Mg0KDQorICAgIENsYXNzTmV0d29ya0RldmljZT0xNzMNCg0KKyAgICBDbGFzc0lucHV0RGV2aWNl PTE3NA0KDQorICAgIENsYXNzT25Cb2FyZERldmljZT0xNzUNCg0KKyAgICBDbGFzc090aGVyRGV2 aWNlPTE3Ng0KDQorICAgIFN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbj0xNzcNCg0KKyAgICBTdWJj bGFzc0dlbmVyYWxBcHBsaWNhdGlvbj0xNzgNCg0KKyAgICBTdWJjbGFzc0Zyb250UGFnZT0xNzkN Cg0KKyAgICBTdWJjbGFzc1NpbmdsZVVzZT0xODANCg0KKyAgICBZZWFyU3VwcHByZXNzRmxhZz0x ODENCg0KKyAgICBNb250aFN1cHByZXNzRmxhZz0xODINCg0KKyAgICBEYXlTdXBwcmVzc0ZsYWc9 MTgzDQoNCisgICAgSG91clN1cHBwcmVzc0ZsYWc9MTg0DQoNCisgICAgTWludXRlU3VwcHJlc3NG bGFnPTE4NQ0KDQorICAgIFNlY29uZFN1cHByZXNzRmxhZz0xODYNCg0KKyAgICBTdG9yYWdlTm9y bWFsRmxhZz0xODcNCg0KKyAgICBTdG9yYWdlVGltZUZsYWc9MTg4DQoNCisgICAgU3RvcmFnZVdh a2VVcEZsYWc9MTg5DQoNCisgICAgVW5pUXVlRmxhZz0xOTANCg0KKyAgICBOb0VtcHR5RmxhZz0x OTENCg0KKyAgICBDb25kPTE5Mg0KDQorICAgIEZpbmQ9MTkzDQoNCisgICAgTWlkPTE5NA0KDQor ICAgIFRvaz0xOTUNCg0KKyAgICBTcGFuPTE5Ng0KDQorICAgIER1cD0xOTcNCg0KKyAgICBWYXJF cVZhbD0xOTgNCg0KKyAgICBWYXI9MTk5DQoNCisgICAgSWRFcVZhbD0yMDANCg0KKyAgICBJZEVx SWQ9MjAxDQoNCisgICAgSWRFcVZhbExpc3Q9MjAyDQoNCisgICAgUXVlc3Rpb25SZWY9MjAzDQoN CisgICAgUnVsZVJlZj0yMDQNCg0KKyAgICBTdHJpbmdSZWY9MjA1DQoNCisgICAgUHVzaFRoaXM9 MjA2DQoNCisgICAgU2VjdXJpdHk9MjA3DQoNCisgICAgR2V0PTIwOA0KDQorICAgIFRydWVTeW1i b2w9MjA5DQoNCisgICAgRmFsc2VTeW1ib2w9MjEwDQoNCisgICAgT25lPTIxMQ0KDQorICAgIE9u ZXM9MjEyDQoNCisgICAgWmVybz0yMTMNCg0KKyAgICBVbmRlZmluZWQ9MjE0DQoNCisgICAgVmVy c2lvbj0yMTUNCg0KKyAgICBMZW5ndGg9MjE2DQoNCisgICAgQU5EPTIxNw0KDQorICAgIE9SPTIx OA0KDQorICAgIE5PVD0yMTkNCg0KKyAgICBTZXQ9MjIwDQoNCisgICAgQml0V2lzZU5vdD0yMjEN Cg0KKyAgICBCb29sVmFsPTIyMg0KDQorICAgIFN0cmluZ1ZhbD0yMjMNCg0KKyAgICBVbkludFZh bD0yMjQNCg0KKyAgICBUb1VwcGVyPTIyNQ0KDQorICAgIFRvTG93ZXI9MjI2DQoNCisgICAgTWF0 Y2g9MjI3DQoNCisgICAgTWF0Y2gyPTIyOA0KDQorICAgIENhdGVuYXRlPTIyOQ0KDQorICAgIFF1 ZXN0aW9uUmVmVmFsPTIzMA0KDQorICAgIFN0cmluZ1JlZlZhbD0yMzENCg0KKyAgICBNYXA9MjMy DQoNCisgICAgUmVmcmVzaEd1aWQ9MjMzDQoNCisgICAgU3RyaW5nVG9rZW49MjM0DQoNCisgICAg T3B0aW9uRGVmYXVsdD0yMzUNCg0KKyAgICBPcHRpb25EZWZhdWx0TWZnPTIzNg0KDQorICAgIE51 bWVyaWNTaXplT25lPTIzNw0KDQorICAgIE51bWVyaWNTaXplVHdvPTIzOA0KDQorICAgIE51bWVy aWNTaXplRm91cj0yMzkNCg0KKyAgICBOdW1lcmljU2l6ZUVpZ2h0PTI0MA0KDQorICAgIERpc1Bs YXlJbnREZWM9MjQxDQoNCisgICAgRGlzUGxheVVJbnREZWM9MjQyDQoNCisgICAgRGlzUGxheVVJ bnRIZXg9MjQzDQoNCisgICAgSW5zZW5zaXRpdmU9MjQ0DQoNCisgICAgU2Vuc2l0aXZlPTI0NQ0K DQorICAgIExhc3ROb25NYXRjaD0yNDYNCg0KKyAgICBGaXJzdE5vbk1hdGNoPTI0Nw0KDQorICAg IE51bWJlcj0yNDgNCg0KKyAgICBTdHJpbmdJZGVudGlmaWVyPTI0OQ0KDQorICAgIENvbXBsZXhE ZWZpbmU9MjUwDQoNCisgICAgTGluZURlZmluaXRpb249MjUxDQoNCisgICAgSW5jbHVkZURlZmlu aXRpb249MjUyDQoNCisgICAgV2hpdGVzcGFjZT0yNTMNCg0KKyAgICBOZXdsaW5lPTI1NA0KDQor ICAgIExpbmVDb21tZW50PTI1NQ0KDQorICAgIEV4dGVybj0yNTYNCg0KKw0KDQorICAgIGRlZiBf X2luaXRfXyhzZWxmLCBpbnB1dDpUb2tlblN0cmVhbSwgb3V0cHV0OlRleHRJTyA9IHN5cy5zdGRv dXQpOg0KDQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGlucHV0LCBvdXRwdXQpDQoNCisgICAg ICAgIHNlbGYuY2hlY2tWZXJzaW9uKCI0LjcuMiIpDQoNCisgICAgICAgIHNlbGYuX2ludGVycCA9 IFBhcnNlckFUTlNpbXVsYXRvcihzZWxmLCBzZWxmLmF0biwgc2VsZi5kZWNpc2lvbnNUb0RGQSwg c2VsZi5zaGFyZWRDb250ZXh0Q2FjaGUpDQoNCisgICAgICAgIHNlbGYuX3ByZWRpY2F0ZXMgPSBO b25lDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJQcm9ncmFtQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAgICAgICBk ZWYgdmZyRm9ybVNldERlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVmaW5pdGlv bkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJQcmFnbWFQYWNrRGVmaW5p dGlvbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuVmZyUHJhZ21hUGFja0RlZmluaXRpb25Db250ZXh0KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQsaSkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0 cnVjdERlZmluaXRpb25Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4 dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVmaW5pdGlv bkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUHJvZ3JhbQ0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclByb2dyYW0i ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQcm9ncmFtKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJQcm9ncmFtKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclByb2dyYW1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDAsIHNlbGYuUlVMRV92ZnJQcm9ncmFtKQ0K DQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0K KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0MDkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzMgb3IgKCgoKF9sYSAtIDc4KSkg JiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA3OCkpICYgKCgxIDw8IChWZnJTeW50YXhQ YXJzZXIuU3RydWN0IC0gNzgpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVW5pb24gLSA3OCkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UeXBlRGVmIC0gNzgpKSkpICE9IDApOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRl cnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDAsc2VsZi5fY3R4KQ0KDQorICAgICAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NDA0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyUHJhZ21hUGFja0RlZmluaXRpb24o KQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBl bGlmIGxhXyA9PSAyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA1DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdERlZmluaXRpb24oKQ0KDQor ICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxh XyA9PSAzOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA2DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVVuaW9uRGVmaW5pdGlvbigpDQoNCisgICAgICAg ICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQxMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0MTINCg0KKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNldERl ZmluaXRpb24oKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgUHJhZ21hUGFja1Nob3dEZWZDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9wcmFnbWFQYWNrU2hvd0RlZg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTaG93RGVmIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0UHJhZ21hUGFja1Nob3dEZWYoc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHByYWdtYVBhY2tTaG93RGVm KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlByYWdt YVBhY2tTaG93RGVmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyLCBzZWxmLlJVTEVfcHJhZ21hUGFja1Nob3dE ZWYpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTQNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzApDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBQcmFnbWFQ YWNrU3RhY2tEZWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ByYWdtYVBhY2tTdGFja0RlZg0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTdGFja0RlZiIgKToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tTdGFja0RlZihz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg cHJhZ21hUGFja1N0YWNrRGVmKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNCwgc2VsZi5S VUxFX3ByYWdtYVBhY2tTdGFja0RlZikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDE2DQoNCisgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KF9sYT09 VmZyU3ludGF4UGFyc2VyLlRfXzEgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMik6DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQ cmVkaWN0KHNlbGYuX2lucHV0LDIsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09 IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxNw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0MjMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0MjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDIyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFByYWdtYVBhY2tOdW1iZXJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHJhZ21hUGFja051bWJlcg0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tOdW1iZXIiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRQcmFnbWFQYWNrTnVtYmVyKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBw cmFnbWFQYWNrTnVtYmVyKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDYsIHNlbGYuUlVMRV9w cmFnbWFQYWNrTnVtYmVyKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoN CisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MjYNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcjoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDI1DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFZmclByYWdtYVBhY2tEZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBwcmFnbWFQYWNrU2hvd0RlZihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdt YVBhY2tTaG93RGVmQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHByYWdtYVBh Y2tTdGFja0RlZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFja0RlZkNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBwcmFnbWFQYWNrTnVtYmVyKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUHJh Z21hUGFja051bWJlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyUHJhZ21hUGFja0RlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJQcmFn bWFQYWNrRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOCwgc2Vs Zi5SVUxFX3ZmclByYWdtYVBhY2tEZWZpbml0aW9uKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDI4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX18zKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyOQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0MzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzQNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50 ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw1LHNlbGYuX2N0eCkNCg0KKyAgICAgICAg ICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzENCg0K KyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tTaG93RGVmKCkNCg0KKw0KDQorICAgICAg ICAgICAgZWxpZiBsYV8gPT0gMjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDMy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5wcmFnbWFQYWNrU3RhY2tEZWYoKQ0KDQorDQoNCisg ICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0MzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tOdW1iZXIoKQ0KDQorDQoN CisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzYNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJEYXRhU3Ry dWN0RGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAg ICBzZWxmLk4yID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cnVjdChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJ1Y3QsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENs b3NlQnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFjZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVHlwZURlZihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UeXBlRGVm LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOb25OdkRhdGFNYXAoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJEYXRhU3RydWN0RGVmaW5pdGlvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRGF0YVN0cnVjdERlZmluaXRpb24o c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAxMCwgc2VsZi5SVUxFX3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKQ0KDQorICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0MzkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLlR5cGVEZWY6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQzOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlR5cGVE ZWYpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0MQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RydWN0KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQ0Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQ0Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDQ1DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTjEgPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NDkN Cg0KKyAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdEZpZWxkcyhGYWxzZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0NTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlQnJhY2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDUyDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0NTENCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQ1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxm Lk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk4yID0gTm9uZSAjIFRva2Vu DQoNCisNCg0KKyAgICAgICAgZGVmIFVuaW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuaW9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBPcGVuQnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJE YXRhU3RydWN0RmllbGRzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFR5cGVEZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVHlwZURlZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Tm9uTnZEYXRhTWFwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3Ry aW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRGF0YVVuaW9uRGVmaW5p dGlvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRh dGFVbmlvbkRlZmluaXRpb24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJEYXRhVW5pb25EZWZpbml0aW9uKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckRhdGFVbmlv bkRlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyLCBzZWxmLlJVTEVfdmZyRGF0YVVuaW9uRGVm aW5pdGlvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAg ICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDU3DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5UeXBlRGVmOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UeXBlRGVmKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVuaW9uKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2MQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm9uTnZE YXRhTWFwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjANCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQoNCisNCg0K Kw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2NA0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDYzDQoNCisgICAgICAgICAg ICAgICAgbG9jYWxjdHguTjEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjYNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0NjcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVj dEZpZWxkcyhUcnVlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2OA0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0NzANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ2OQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4 Lk4yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKw0K DQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDcyDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJEYXRhU3Ry dWN0RmllbGRzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5v bmUNCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQoNCisN Cg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ2NENv bnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDY0 Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDMyKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNl ci5EYXRhU3RydWN0RmllbGQzMkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGRhdGFTdHJ1Y3RGaWVsZDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQxNkNvbnRleHQpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCxpKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVs ZDhDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGQ4Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZEJv b2woc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRCb29sQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5n Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk U3RyaW5nQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVs ZERhdGUoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGREYXRlQ29udGV4dCxpKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRU aW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFJl ZihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFVzZXJDb250ZXh0 KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29u dGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNl ci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQzMkNvbnRl eHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDMy Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2 KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDhDb250 ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4 Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRhU3RydWN0 RmllbGRzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy RGF0YVN0cnVjdEZpZWxkcyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZiwgRmllbGRJ blVuaW9uKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJE YXRhU3RydWN0RmllbGRzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEZpZWxk SW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0LCBzZWxmLlJV TEVfdmZyRGF0YVN0cnVjdEZpZWxkcykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDkwDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gODApKSAmIH4w eDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDgwKSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNl ci5Cb29sZWFuIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDY0IC0gODApKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDMyIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuVWludDE2IC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDggLSA4MCkp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEIC0gODApKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRUZJX0hJSV9USU1FIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9S RUYgLSA4MCkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg4DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgbGFfID0g c2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxNCxzZWxmLl9jdHgpDQoN CisgICAgICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NzQNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Rmll bGQ2NChGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQor ICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NzUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Rmll bGQzMihGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQor ICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDM6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NzYNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Rmll bGQxNihGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQor ICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDQ6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NzcNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0Rmll bGQ4KEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisg ICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQ3OA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVs ZEJvb2woRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0K KyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDc5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZp ZWxkU3RyaW5nKEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQor DQoNCisgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNzoNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDQ4MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1 Y3RGaWVsZERhdGUoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoN CisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA4Og0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDgxDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0 cnVjdEZpZWxkVGltZShGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAgICAgICAgIHBhc3MN Cg0KKw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDk6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0ODINCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRh U3RydWN0RmllbGRSZWYoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBwYXNz DQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMDoNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Mw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmRh dGFTdHJ1Y3RGaWVsZFVzZXIoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAgICAgICAgICAgICBw YXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMToNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4NA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LmRhdGFTdHJ1Y3RCaXRGaWVsZDY0KEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgICAgICAgICAg ICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTI6DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODUNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5kYXRhU3RydWN0Qml0RmllbGQzMihGaWVsZEluVW5pb24pDQoNCisgICAgICAgICAgICAg ICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDEzOg0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDg2DQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxkMTYoRmllbGRJblVuaW9uKQ0KDQorICAgICAgICAg ICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxNDoN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4Nw0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RCaXRGaWVsZDgoRmllbGRJblVuaW9uKQ0KDQorICAgICAg ICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBEYXRhU3RydWN0RmllbGQ2NENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5GaWVs ZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0K KyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQoNCisNCg0KKyAg ICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZp ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNr ZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQ2NA0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZDY0 IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZp ZWxkNjQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGQ2NCkN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNDkzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5VaW50NjQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk0DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTgNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTUNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMA0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgRGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmll bGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoN CisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQorDQoNCisg ICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlm aWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFj a2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0 LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkMzINCg0KKw0K DQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoN CisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGQz MiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RG aWVsZDMyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiBkYXRhU3RydWN0RmllbGQzMihzZWxmLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDMyQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE4LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkMzIp DQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDUwMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMw0KDQorICAg ICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA3DQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVu QnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MDkNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIERhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZp ZWxkSW5VbmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0K DQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0KDQor ICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuQnJh Y2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tl dCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2DQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxk MTYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0 RmllbGQxNihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQxNkNvbnRl eHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2 KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1MTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlVpbnQxNikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTINCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxNg0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxMw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MTQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDUxNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlQnJhY2tldCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTE4DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBEYXRhU3RydWN0RmllbGQ4Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZp ZWxkSW5VbmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0K DQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0KDQor ICAgICAgICBkZWYgVWludDgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVWludDgsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZp ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNr ZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQ4DQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkOCIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVs ZDgoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQorICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDIyLCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkOCkNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTIwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5VaW50OCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjENCg0KKyAgICAgICAgICAg IGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyNQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyMg0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1MjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyNA0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tl dCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTI3DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBE YXRhU3RydWN0RmllbGRCb29sQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5V bmlvbiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0KDQorICAgICAg ICBkZWYgQm9vbGVhbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Cb29sZWFuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFja2V0 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkQm9vbA0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZEJv b2wiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0 RmllbGRCb29sKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiBkYXRhU3RydWN0RmllbGRCb29sKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisN Cg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9v bENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RG aWVsZEJvb2wpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUyOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQm9vbGVhbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 MzANCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzNA0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzMQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzINCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUzMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlQnJhY2tldCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBEYXRhU3RydWN0RmllbGRTdHJpbmdDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5V bmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0g Tm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5V bmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBFRklfU1RSSU5HX0lEKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9TVFJJTkdfSUQs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IENsb3NlQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV9kYXRhU3RydWN0RmllbGRTdHJpbmcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGRTdHJpbmciICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGRTdHJpbmcoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGRhdGFTdHJ1 Y3RGaWVsZFN0cmluZyhzZWxmLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFN0cmluZ0NvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAyNiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFN0cmluZykNCg0K KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTM4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FRklfU1RSSU5HX0lEKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzOQ0KDQor ICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQzDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5P cGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTQwDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTQyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NDUN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0K KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQor ICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25l KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRv a2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQor DQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNr ZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0 cnVjdEZpZWxkRGF0ZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdERhdGFTdHJ1Y3RGaWVsZERhdGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXREYXRhU3RydWN0RmllbGREYXRlKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGREYXRlKHNlbGYs IEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuRGF0YVN0cnVjdEZpZWxkRGF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl LCBGaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOCwg c2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0Nw0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0OA0KDQorICAgICAgICAgICAgbG9jYWxjdHguTiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTUyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTQ5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUxDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisg ICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVs ZFRpbWVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0K DQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxm LkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJ X1RJTUUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkVGltZQ0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZFRpbWUi ICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Rmll bGRUaW1lKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiBkYXRhU3RydWN0RmllbGRUaW1lKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0K KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVGltZUNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVs ZFRpbWUpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1Ng0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU1Nw0KDQorICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTYxDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTU4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNr ZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1OQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTYwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA1NjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQor ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisN Cg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVu aW9uPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBO b25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVu aW9uDQoNCisNCg0KKyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9z ZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf ZGF0YVN0cnVjdEZpZWxkUmVmDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkUmVmIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkUmVmKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0RmllbGRSZWYoc2Vs ZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5EYXRhU3RydWN0RmllbGRSZWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSwgRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzIs IHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGRSZWYpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2NQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTY2DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5OID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1NzANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTY4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxk VXNlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLlQgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYu TiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVs ZEluVW5pb24NCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBP cGVuQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFVz ZXINCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3Ry dWN0RmllbGRVc2VyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 RGF0YVN0cnVjdEZpZWxkVXNlcihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0K DQorDQoNCisNCg0KKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkVXNlcihzZWxmLCBGaWVsZEluVW5p b24pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZFVzZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmllbGRJblVu aW9uKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQsIHNlbGYuUlVMRV9k YXRhU3RydWN0RmllbGRVc2VyKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzQNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LlQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3NQ0KDQorICAgICAgICAgICAgbG9jYWxj dHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU3Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc4DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODENCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1 Y3RCaXRGaWVsZDY0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9 IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAg ICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkZpZWxkSW5Vbmlv biA9IEZpZWxkSW5Vbmlvbg0KDQorDQoNCisgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWlu dDY0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0 cnVjdEJpdEZpZWxkNjQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXREYXRhU3RydWN0Qml0RmllbGQ2NCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ2NChz ZWxmLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIEZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM2LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQpDQoNCisgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4 Mw0KDQorICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVpbnQ2NCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmlu Z0lkZW50aWZpZXI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4NA0KDQorICAg ICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODcN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU4OQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu RmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2Vu DQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNl bGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQoNCisNCg0KKyAgICAgICAgZGVmIENvbG9u KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJp bmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQzMg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDMyIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGRhdGFTdHJ1 Y3RCaXRGaWVsZDMyKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzgsIHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQzMikNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTkxDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5Mw0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTkyDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDU5NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTk2DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNTk3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBEYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJ blVuaW9uPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkQg PSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KDQor ICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCg0KKw0KDQorICAg ICAgICBkZWYgQ29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQxNihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MTYsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDE2DQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMTYiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0Rmll bGQxNihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxkMTYoc2VsZiwgRmllbGRJblVuaW9uKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RCaXRG aWVsZDE2KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1OTkNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LkQg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gNjAxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2MDANCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKw0KDQorDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjAzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MDQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2MDUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZp bmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDhDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KDQorICAgICAg ICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25l ICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9u DQoNCisNCg0KKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50OChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkOA0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RCaXRG aWVsZDgiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3Ry dWN0Qml0RmllbGQ4KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ4KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZp ZWxkOENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0Miwgc2VsZi5SVUxFX2RhdGFTdHJ1 Y3RCaXRGaWVsZDgpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYwNw0KDQorICAgICAgICAgICAgbG9jYWxj dHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYwOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjA4DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisNCg0KKw0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjEy DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjEzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJGb3JtU2V0RGVmaW5pdGlv bkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fU0VUX09QKQ0KDQor DQoNCisgICAgICAgIGRlZiBGb3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1TZXQsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIFRpdGxlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlRpdGxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdU b2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoNCisNCg0K KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu SGVscCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybVNldExpc3Qoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJGb3JtU2V0TGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmRG b3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZEZvcm1TZXQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsYXNzR3VpZChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc0d1 aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGNsYXNzZ3VpZERlZmluaXRpb24oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIENsYXNzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsYXNzLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBjbGFzc0RlZmluaXRp b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgU3ViY2xhc3Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3MsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHN1YmNsYXNzRGVmaW5pdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRGVmaW5pdGlvbkNvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldERlZmluaXRp b24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3Jt U2V0RGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmckZvcm1TZXREZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQor DQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmKToNCg0KKw0K DQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0RGVmaW5pdGlv bkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgNDQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0RGVmaW5pdGlvbikNCg0K KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjE1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Gb3JtU2V0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxNg0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVXVpZCkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA2MTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjE4DQoNCisgICAgICAgICAgICBz ZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MTkNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYyMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVGl0bGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIxDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYyMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjIzDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNjI0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI1DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDYyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI3DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYyOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MjkNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYzMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzMQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYzMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzMNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYzOQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ2xhc3NHdWlkOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2MzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbGFzc0d1aWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzNQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYzNg0KDQorICAgICAgICAgICAgICAgIHNlbGYu Y2xhc3NndWlkRGVmaW5pdGlvbihsb2NhbGN0eC5Ob2RlKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA2MzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQ2DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5DbGFzczoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQxDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xhc3MpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY0Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDY0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NEZWZpbml0aW9uKCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQ0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY1Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuU3ViY2xhc3M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY0OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN1YmNsYXNzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2NTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN1YmNsYXNz RGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1MQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTUNCg0KKyAgICAgICAgICAgIHNlbGYudmZy Rm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEZvcm1TZXQp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjU3DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDbGFzc2d1aWREZWZp bml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9r aW5nU3RhdGU6aW50PS0xLCBOb2RlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAgICAgICAg c2VsZi5HdWlkTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQoNCisN Cg0KKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCxp KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NsYXNzZ3Vp ZERlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRDbGFzc2d1aWREZWZpbml0aW9uIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2xhc3NndWlkRGVmaW5pdGlvbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgY2xhc3NndWlkRGVmaW5pdGlvbihzZWxmLCBO b2RlKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5DbGFzc2d1 aWREZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE5vZGUpDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0Niwgc2VsZi5SVUxFX2NsYXNzZ3Vp ZERlZmluaXRpb24pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1OQ0KDQorICAgICAgICAgICAgc2VsZi5n dWlkRGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYyDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIGxhXyA9 IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMzMsc2VsZi5fY3R4KQ0K DQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY2MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYxDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY2Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNl bGYuX2lucHV0LDM0LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjQNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY2NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0K DQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzANCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY4DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZp bml0aW9uKCkNCg0KKw0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDbGFzc0RlZmluaXRpb25Db250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KDQorDQoNCisgICAgICAgIGRl ZiB2YWxpZENsYXNzTmFtZXMoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQsaSkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jbGFzc0RlZmluaXRpb24NCg0K Kw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDbGFzc0RlZmluaXRp b24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDbGFzc0RlZmlu aXRpb24oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIGNsYXNzRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQ4LCBzZWxm LlJVTEVfY2xhc3NEZWZpbml0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzINCg0KKyAgICAgICAg ICAgIHNlbGYudmFsaWRDbGFzc05hbWVzKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NzcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09 VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjczDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzQNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnZhbGlkQ2xhc3NOYW1lcygpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDY3OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZhbGlkQ2xhc3NOYW1lc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNsYXNzTmFtZSA9IDANCg0KKw0KDQor ICAgICAgICBkZWYgQ2xhc3NOb25EZXZpY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NOb25EZXZpY2UsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIENsYXNzRGlza0RldmljZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIENsYXNzVmlkZW9EZXZpY2Uoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NWaWRlb0RldmljZSwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgQ2xhc3NOZXR3b3JrRGV2aWNlKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzTmV0d29ya0Rl dmljZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xhc3NJbnB1dERldmljZShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc0lu cHV0RGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbGFzc09uQm9hcmREZXZpY2Uoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xhc3NPbkJvYXJkRGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbGFzc090aGVyRGV2 aWNlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsYXNzT3RoZXJEZXZpY2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92YWxpZENsYXNzTmFtZXMN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWYWxpZENsYXNz TmFtZXMiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYWxpZENs YXNzTmFtZXMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZhbGlkQ2xhc3NOYW1lcyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WYWxpZENsYXNzTmFtZXNDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDUwLCBz ZWxmLlJVTEVfdmFsaWRDbGFzc05hbWVzKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODANCg0KKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBub3QoKCgo KF9sYSAtIDE3MCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTcwKSkgJiAoKDEg PDwgKFZmclN5bnRheFBhcnNlci5DbGFzc05vbkRldmljZSAtIDE3MCkpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5DbGFzc0Rpc2tEZXZpY2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuQ2xhc3NWaWRlb0RldmljZSAtIDE3MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DbGFz c05ldHdvcmtEZXZpY2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NJbnB1 dERldmljZSAtIDE3MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DbGFzc09uQm9hcmREZXZp Y2UgLSAxNzApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NPdGhlckRldmljZSAtIDE3 MCkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRj aChzZWxmKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBT dWJjbGFzc0RlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9H VUlEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdWJjbGFzc1NldHVwQXBwbGljYXRpb24oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdWJjbGFz c0dlbmVyYWxBcHBsaWNhdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgU3ViY2xhc3NGcm9udFBhZ2Uoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NGcm9udFBhZ2Us IDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN1YmNsYXNzU2luZ2xlVXNlKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2lu Z2xlVXNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3ViY2xhc3NEZWZpbml0aW9uDQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3ViY2xhc3NEZWZpbml0aW9uIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3ViY2xhc3NEZWZpbml0aW9u KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiBzdWJjbGFzc0RlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1Miwgc2Vs Zi5SVUxFX3N1YmNsYXNzRGVmaW5pdGlvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjgyDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KCgo KChfbGEgLSAxNzcpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE3NykpICYgKCgx IDw8IChWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NTZXR1cEFwcGxpY2F0aW9uIC0gMTc3KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uIC0gMTc3KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzRnJvbnRQYWdlIC0gMTc3KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzU2luZ2xlVXNlIC0gMTc3KSkpKSAhPSAwKSBvciBf bGE9PVZmclN5bnRheFBhcnNlci5OdW1iZXIpOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckZvcm1TZXRMaXN0Q29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xLCBOb2RlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K DQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gTm9kZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJGb3JtU2V0KHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29u dGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldExpc3QNCg0KKw0K DQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoN CisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJGb3JtU2V0TGlzdCIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckZvcm1TZXRMaXN0 KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiB2ZnJGb3JtU2V0TGlzdChzZWxmLCBOb2RlKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLCBOb2RlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTQs IHNlbGYuUlVMRV92ZnJGb3JtU2V0TGlzdCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg3DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBh cnNlci5Gb3JtIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLkZvcm1NYXAgb3IgKCgoKF9sYSAtIDEw NSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA1KSkgJiAoKDEgPDwgKFZmclN5 bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gMTA1KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRp c2FibGVJZiAtIDEwNSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEwNSkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRWZp dmFyc3RvcmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVlVmFyU3Rv cmUgLSAxMDUpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTA1KSkpKSAhPSAw KToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi52ZnJGb3JtU2V0KCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjg5 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZy Rm9ybVNldENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckZv cm1EZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybU1hcERlZmluaXRpb24oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRJbWFnZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEltYWdlQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTGluZWFy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZShzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFZhclN0b3JlTmFtZVZhbHVlQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERlZmF1 bHRTdG9yZUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRE aXNhYmxlSWZGb3JtU2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNl dENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmRm9ybVNldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Q29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyRm9ybVNldA0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXQiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtU2V0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJGb3JtU2V0KHNlbGYpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDU2LCBzZWxmLlJVTEVfdmZyRm9ybVNldCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcwMA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZvcm1dOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2OTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm1EZWZp bml0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybU1hcF06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDY5MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyRm9ybU1hcERlZmluaXRp b24oKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5JbWFnZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY5Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2UoKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5WYXJzdG9yZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5 Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoKQ0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5FZml2YXJzdG9yZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDY5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVFZmko KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZV06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDY5NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFy U3RvcmVOYW1lVmFsdWUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmVdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudERlZmF1bHRTdG9yZSgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZl06DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWZdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTgNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KCkNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3VpZE9w XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk5DQoNCisgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAg ZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50RGVmYXVsdFN0 b3JlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREVGQVVMVFNUT1JFX09Q KQ0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBz ZWxmLlMgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUgIyBUb2tl bg0KDQorDQoNCisgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3Ry aW5nSWRlbnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBBdHRyaWJ1dGUoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu QXR0cmlidXRlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0 U3RvcmUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1OCwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudERlZmF1bHRTdG9yZSkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzAyDQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzAzDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3MDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwNQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDcNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcwOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwOQ0KDQorICAgICAgICAgICAg bG9jYWxjdHguUyA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3MTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE1DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5Db21tYToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzExDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcxMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE0DQoNCisgICAgICAgICAg ICAgICAgbG9jYWxjdHguQSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K Kw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzE3DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X1ZBUlNUT1JFX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tlbg0KDQor ICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5T TiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBWYXJzdG9yZShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJzdG9y ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTmFtZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAg ICAgICAgZGVmIFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmlu aXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBVaW50MzIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50NjQo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuVWludDY0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJ SV9EQVRFLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9U SU1FLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyIiApOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCA2MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKQ0KDQorICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3MTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlZhcnN0b3JlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczNg0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MjANCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5UTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDcyMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5VaW50OF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDcyMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDE2 XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDE2KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3MjUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDMyXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjcNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuVWludDY0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI4DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDY0KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjkNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRF XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMwDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3MzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA3MzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUZdOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3MzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FRklfSElJX1JFRikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzM1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzQyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzM4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczOQ0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0MA0KDQorICAgICAgICAgICAgICAgIGxvY2Fs Y3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3NDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzQ0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDYN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDcNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc0OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVXVpZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDkNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzUwDQoNCisgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAg IGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFZhclN0b3Jl RWZpQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5n U3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfRUZJX09Q KQ0KDQorICAgICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAg c2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBU b2tlbg0KDQorICAgICAgICAgICAgc2VsZi5WTiA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAg ICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIEVmaXZhcnN0b3Jl KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVmaXZhcnN0b3JlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBBdHRyaWJ1dGUoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQXR0 cmlidXRlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJWYXJTdG9yZUVmaUF0dHIoc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZm clZhclN0b3JlRWZpQXR0ckNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclZhclN0b3JlRWZpQXR0ckNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IFV1aWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuVXVpZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50 OChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50OCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgVWludDY0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX0hJSV9E QVRFKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkVGSV9ISUlfREFURSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX0hJSV9USU1F KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfVElNRSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX0hJSV9SRUYoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RUZJX0hJSV9SRUYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE5hbWUoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZSwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFy U2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5WYXJTaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVy KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIFZhcklkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcklkLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlRWZpDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFy U3RvcmVFZmkiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnRWYXJTdG9yZUVmaShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0K DQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3RvcmVFZmkoc2VsZik6DQoNCisN Cg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3Rv cmVFZmlDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDYyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVF ZmkpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRWZpdmFyc3RvcmUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzcw DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcl06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc1NA0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlROID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzU1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzU2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVWludDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1Nw0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5VaW50MTZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTgNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjANCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDc2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3NjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5VaW50NjQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Mw0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5FRklfSElJX0RBVEVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjQNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2NQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJ X1RJTUVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjYNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRl06DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2OA0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA3NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYp DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzYNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlZhcklkOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzINCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzczDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc0DQoNCisgICAgICAg ICAgICAgICAgbG9jYWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3NQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA3NzgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkF0dHJpYnV0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzkNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzgwDQoNCisgICAgICAgICAgICBzZWxmLnZmclZhclN0b3JlRWZpQXR0 cigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg1DQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNl T3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc4MQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzgyDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJWYXJTdG9y ZUVmaUF0dHIoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3ODcNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzg4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDQNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFk YXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw0NSxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBp ZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg5DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmFtZSkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzkwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzkx DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09 IDI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5Mw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5hbWUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5NQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDc5Nw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlZOID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3OTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVmFyU2l6ZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAx DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODAyDQoNCisgICAgICAgICAgICAgICAgbG9j YWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODAzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA3 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwOA0KDQorICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5p dGlvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA5DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJWYXJT dG9yZUVmaUF0dHJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5BdHRyID0gMA0KDQorDQoNCisgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyVmFyU3RvcmVF ZmlBdHRyDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy VmFyU3RvcmVFZmlBdHRyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQor DQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJWYXJTdG9yZUVmaUF0dHIoc2VsZik6DQoNCisNCg0K KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3RvcmVFZmlBdHRyQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCA2NCwgc2VsZi5SVUxFX3ZmclZhclN0b3JlRWZpQXR0cikNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50VmFyU3Rv cmVOYW1lVmFsdWVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9S RV9OQU1FX1ZBTFVFX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0K DQorICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRl ZiBOYW1lVmFsdWVWYXJTdG9yZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lVmFsdWVWYXJTdG9yZSwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGd1aWREZWZp bml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBWYXJJZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5WYXJJZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTmFtZShz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk5hbWUpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdU b2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoNCisNCg0K KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlIiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVO YW1lVmFsdWUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTmFt ZVZhbHVlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3Jl TmFtZVZhbHVlKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZhclN0b3JlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDgxNA0KDQorICAgICAgICAgICAgbG9jYWxjdHguU04gPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgxNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODIwDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODE2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDgxNw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxOA0KDQorICAgICAgICAgICAg ICAgIGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTkNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODI5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAg ICB3aGlsZSBUcnVlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjINCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OYW1lKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 MjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODI1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4MjYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgy Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyOA0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4MzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgICAgIGlmIG5vdCAoX2xhPT1WZnJTeW50YXhQYXJzZXIuTmFtZSk6DQoNCisg ICAgICAgICAgICAgICAgICAgIGJyZWFrDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1aWQpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODM0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzNQ0K DQorICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gODM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQor ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0K DQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfRElTQUJMRV9JRl9PUCkNCg0KKw0KDQor ICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJGb3JtU2V0TGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldA0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1T ZXQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1l bnREaXNhYmxlSWZGb3JtU2V0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYpOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERp c2FibGVJZkZvcm1TZXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50 RGlzYWJsZUlmRm9ybVNldCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgz OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzOQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDANCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDENCg0KKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNl dExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDINCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDg0Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQor ICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9P UCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoNCisNCg0K KyAgICAgICAgZGVmIHZmckZvcm1TZXRMaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldExpc3RD b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldA0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dFN1cHByZXNzSWZGb3JtU2V0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoc2VsZikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihz ZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNz SWZGb3JtU2V0KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA3MCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODQ1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdXBwcmVzc0lmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Ng0KDQor ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4NDcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDgNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyRm9ybVNldExpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4NDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkVuZElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1MA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgR3Vp ZFN1YkRlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEd1aWQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkd1aWQgPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLkd1aWQgPSBHdWlkDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfZ3VpZFN1YkRlZmluaXRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRHdWlkU3ViRGVmaW5pdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdEd1aWRTdWJEZWZpbml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBndWlkU3ViRGVmaW5pdGlvbihzZWxm LCBHdWlkKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5HdWlk U3ViRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBHdWlkKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzIsIHNlbGYuUlVMRV9ndWlkU3Vi RGVmaW5pdGlvbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1Mg0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDg1Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU0DQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODU1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NTYNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4NTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1OA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDg1OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODYwDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NjINCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 NjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2NQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODY2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBHdWlkRGVmaW5pdGlvbkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxm Lk5vZGUgPSBWZnJUcmVlTm9kZSgpDQoNCisgICAgICAgICAgICBzZWxmLkd1aWQgPSBFRklfR1VJ RCgpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5CcmFjZSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBp OmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlQnJhY2Uo c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSwgaSkNCg0KKw0KDQorICAgICAg ICBkZWYgZ3VpZFN1YkRlZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlvbkNv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZ3VpZERlZmluaXRpb24N Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHdWlkRGVmaW5p dGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEd1aWREZWZp bml0aW9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNzQsIHNlbGYu UlVMRV9ndWlkRGVmaW5pdGlvbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg2OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNl KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2OQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg3MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODcxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gODcy DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDg4MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZV06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg3NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gODc2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5ndWlkU3ViRGVmaW5pdGlvbihs b2NhbGN0eC5HdWlkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzcNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0aW9uKGxvY2FsY3R4Lkd1aWQp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODgyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAg ZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgR2V0U3RyaW5nSWRDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2Vs Zi5TdHJpbmdJZCA9ICcnDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9nZXRTdHJpbmdJZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdEdldFN0cmluZ0lkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0R2V0U3RyaW5nSWQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIGdldFN0cmluZ0lkKHNlbGYpOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdldFN0cmluZ0lkQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA3 Niwgc2VsZi5SVUxFX2dldFN0cmluZ0lkKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODg0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODUNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4ODYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODcNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJR dWVzdGlvbkhlYWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSwgT3BPYmo9Tm9uZSwgUVR5cGU9Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5RVHlwZSA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNl bGYuT3BPYmogPSBPcE9iag0KDQorICAgICAgICAgICAgc2VsZi5RVHlwZSA9IFFUeXBlDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVz dGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rpb25IZWFkZXINCg0KKw0KDQor ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkhlYWRlciIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uSGVh ZGVyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmLCBPcE9iaiwgUVR5cGUpOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE9wT2JqLCBRVHlwZSkNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDc4LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25IZWFkZXIpDQoN CisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODkNCg0KKyAgICAgICAgICAgIHNl bGYudmZyUXVlc3Rpb25CYXNlSW5mbyhPcE9iaiwgUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gODkwDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEhlYWRlcihPcE9i aikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE9wT2JqPU5vbmUs IFFUeXBlPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5PcE9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0K DQorICAgICAgICAgICAgc2VsZi5RSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAg ICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBUcnVlDQoNCisgICAgICAgICAgICBzZWxmLlFOID0g Tm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLklEID0gTm9uZSAjIFRva2VuDQoNCisg ICAgICAgICAgICBzZWxmLk9wT2JqID0gT3BPYmoNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5cGUg PSBRVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBOYW1lKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5hbWUsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgVmFySWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0 b3JhZ2VWYXJJZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBRdWVzdGlvbklkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWQsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclF1ZXN0aW9uQmFzZUluZm8NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZvIiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyUXVlc3Rp b25CYXNlSW5mbyhzZWxmLCBPcE9iaiwgUVR5cGUpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSwgT3BPYmosIFFUeXBlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgODAsIHNlbGYuUlVMRV92ZnJRdWVzdGlvbkJhc2VJbmZvKQ0KDQorICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4OTYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLk5hbWU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg5Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5h bWUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg5Mw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg5NA0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlFOID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkw Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuVmFySWQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg5OA0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTkNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5MDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0 eC5CYXNlSW5mbywgbG9jYWxjdHguQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5MDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA5DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBh cnNlci5RdWVzdGlvbklkOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDUNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbklkKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MDYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5MDcNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JRCA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTA4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9i aj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuT3BPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gT3BPYmoN Cg0KKw0KDQorICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgSGVscChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5IZWxw LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SGVhZGVyDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SGVh ZGVyIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50SGVhZGVyKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZiwgT3BPYmopOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBPcE9iaikNCg0KKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SGVhZGVyKQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTExDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTEyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxMw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTE0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE1DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTE2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNw0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTE4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjANCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDky Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyMw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisgICAgICAgICAgICBzZWxmLlFIRmxhZyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuTyA9IE5v bmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisgICAg ICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgUmVhZE9u bHlGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgSW50ZXJhY3Rp dmVGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgUmVzZXRS ZXF1aXJlZEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IFJlc3RTdHlsZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYg UmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgMCkNCg0KKw0K DQorICAgICAgICBkZWYgT3B0aW9uT25seUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE5WQWNjZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIExhdGVDaGVja0ZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoN CisNCg0KKyAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgODQsIHNlbGYuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQp DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzMNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9r ZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5SZWFkT25seUZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTI1 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlG bGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWddOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuSW50ZXJhY3RpdmVGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZ106DQoN CisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykNCg0KKyAgICAgICAgICAgICAg ICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVz dFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjgNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTI5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVj b25uZWN0UmVxdWlyZWRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZ106DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzANCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5P ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLk5WQWNjZXNzRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCA3KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzENCg0KKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTlZB Y2Nlc3NGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDkzMg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFi bGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xLCBCYXNlSW5mbz1Ob25lLCBDaGVja0ZsYWc9Tm9uZSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gTm9uZQ0K DQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm LlZhcklkU3RyID0gJycNCg0KKyAgICAgICAgICAgIHNlbGYuQmFzZUluZm8gPSBCYXNlSW5mbw0K DQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBDaGVja0ZsYWcNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RvcmFnZVZhcklkDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IGN0 eC5CYXNlSW5mbw0KDQorICAgICAgICAgICAgc2VsZi5DaGVja0ZsYWcgPSBjdHguQ2hlY2tGbGFn DQoNCisgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gY3R4LlZhcklkU3RyDQoNCisNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkUnVsZTFDb250ZXh0KFZmclN0b3JhZ2VW YXJJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuVmZy U3RvcmFnZVZhcklkQ29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJz ZXIpDQoNCisgICAgICAgICAgICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAg ICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0 eCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoN CisgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorICAgICAg ICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMSIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUxKHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkUnVs ZTJDb250ZXh0KFZmclN0b3JhZ2VWYXJJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkg YSBWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dA0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoNCisgICAgICAgICAgICBzZWxmLlNOMiA9IE5vbmUg IyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAg ICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCg0KKyAgICAg ICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCg0KKyAgICAgICAgZGVmIGFy cmF5TmFtZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RvcmFnZVZhcklkUnVsZTIiICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMihzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0b3JhZ2VW YXJJZChzZWxmLCBCYXNlSW5mbywgQ2hlY2tGbGFnKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSwgQmFzZUluZm8sIENoZWNrRmxhZykNCg0KKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDg2LCBzZWxmLlJVTEVfdmZyU3RvcmFnZVZhcklkKQ0KDQorICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA5NDcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCw1NCxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdl VmFySWRSdWxlMUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA5MzUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5MzYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM3DQoNCisg ICAgICAgICAgICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM4DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCg0KKyAg ICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRS dWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 MzkNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NDQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoNCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk0MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 NDENCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcnJheU5hbWUoKQ0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gOTQ2DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisNCg0K KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQor ICAgIGNsYXNzIFZmckNvbnN0YW50VmFsdWVGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlZhbHVlID0gRUZJX0lG Ul9UWVBFX1ZBTFVFKCkNCg0KKyAgICAgICAgICAgIHNlbGYuVmFsdWVMaXN0ID0gW10NCg0KKyAg ICAgICAgICAgIHNlbGYuTGlzdFR5cGUgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1i ZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IE5lZ2F0aXZlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBUcnVlU3ltYm9s KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlRydWVTeW1ib2wsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZhbHNlU3ltYm9sKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZh bHNlU3ltYm9sLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPbmUoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBPbmVzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFplcm8o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuWmVybywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTbGFzaChzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2xhc2gsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERl ZmluaXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVu QnJhY2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlbkJyYWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlQnJhY2UsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckNvbnN0YW50 VmFsdWVGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmckNvbnN0YW50VmFsdWVGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyQ29uc3RhbnRWYWx1ZUZpZWxkKHNl bGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckNvbnN0 YW50VmFsdWVGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODgsIHNlbGYuUlVMRV92ZnJDb25zdGFudFZh bHVlRmllbGQpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Mw0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU3LHNlbGYuX2N0eCkNCg0KKyAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTUwDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDk0OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OZWdhdGl2ZSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDk1Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFf ID09IDI6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk1NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkZhbHNlU3ltYm9sKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQor ICAgICAgICAgICAgZWxpZiBsYV8gPT0gNDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk1 NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZSkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDU6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTYNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PbmVzKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gNjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk1Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlpl cm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICBlbGlmIGxh XyA9PSA3Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTU4DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTYwDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTYyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBs YV8gPT0gODoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2Mw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTY0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk2NQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDk2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYg bGFfID09IDk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA5KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjgNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk2OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTcw DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDk3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24o KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk3NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5 NzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Ng0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTc3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAg ICAgICAgICAgIGVsaWYgbGFfID09IDEwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3 OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODANCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk4MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTgy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFf ID09IDExOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MTEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4Mw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTg0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdo aWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gOTg1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg2 DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5MQ0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZUJyYWNlKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJJbWFnZVRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X0lNQUdFX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBJbWFnZShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbWFnZSwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJl bihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZySW1hZ2VU YWcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJJbWFn ZVRhZyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckltYWdl VGFnKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJJbWFnZVRhZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTAsIHNlbGYuUlVMRV92ZnJJ bWFnZVRhZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5NQ0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSW1hZ2UpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTk2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Nw0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5OTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTkNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyTG9ja2VkVGFnQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZm clRyZWVOb2RlKEVGSV9JRlJfTE9DS0VEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBMb2NrZWQo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTG9ja2VkLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTG9ja2VkVGFnDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyTG9ja2VkVGFn IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyTG9ja2VkVGFn KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiB2ZnJMb2NrZWRUYWcoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUp DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA5Miwgc2VsZi5SVUxFX3Zmckxv Y2tlZFRhZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDINCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxvY2tlZCkNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAg ICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckxvY2tlZFRhZyhzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckxv Y2tlZFRhZ0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50U3RhdFRhZw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFN0YXRUYWciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN0YXRUYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDk0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRh ZykNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMDYNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg dG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5JbWFnZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA0DQoN CisgICAgICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxvY2tl ZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA1DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJMb2NrZWRUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24o c2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEs IE5vZGU9Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2Rl DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWcoc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN0YXRUYWdDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRTdGF0VGFnQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QiICk6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3Qoc2VsZiwgTm9kZSk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwgTm9kZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QpDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA4DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFN0YXRUYWcoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTMNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2Fs dCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNTksc2VsZi5fY3R4 KQ0KDQorICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2FsdCE9QVROLklOVkFMSURfQUxU X05VTUJFUjoNCg0KKyAgICAgICAgICAgICAgICBpZiBfYWx0PT0xOg0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAwOQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwMTANCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0 VGFnKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAxNQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9h bHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU5LHNlbGYuX2N0 eCkNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgVmZyRm9ybURlZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0g VmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBGb3JtKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkZvcm0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIFRpdGxlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlRpdGxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZEZvcm0oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kRm9ybSwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0LGkpDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1EZWZpbml0aW9uDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybURlZmluaXRpb24iICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtRGVmaW5pdGlvbihzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy Rm9ybURlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyRm9ybURlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDk4LCBzZWxmLlJVTEVf dmZyRm9ybURlZmluaXRpb24pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTYNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm0pDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTAxNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9y bUlkKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTgNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTAxOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjANCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwMjENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpdGxlKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjINCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAy Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4p DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyNA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwMjUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDI2DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwMjcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDMxDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5P bmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5HcmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJlbCAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVt ZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3Rv IC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEg PDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYg LSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDExMCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJh bm5lciAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDExMCkpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuUnVsZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDEx MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuR3VpZE9wIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1vZGFs IC0gMTEwKSkpKSAhPSAwKSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZDoNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAyOA0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZyRm9ybSgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzMNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTAzNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5k Rm9ybSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM1DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJGb3Jt Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3Rh dGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SW1hZ2Uoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMb2NrZWQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRMb2NrZWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50UnVsZXMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RGVmYXVsdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25k aXRpb25hbENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRM YWJlbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEJhbm5lcihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEJhbm5lckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRJbnZhbGlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50TW9kYWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmckZvcm0NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJGb3JtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyRm9ybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQor DQoNCisNCg0KKyAgICBkZWYgdmZyRm9ybShzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJGb3JtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMDAsIHNlbGYuUlVM RV92ZnJGb3JtKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA1Mg0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0 b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkltYWdlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAz Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2UoKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5Mb2NrZWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM4DQoNCisg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRMb2NrZWQoKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5S dWxlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAzOQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50UnVsZXMoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0XToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0MA0KDQorICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RGVmYXVsdCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlLCBWZnJT eW50YXhQYXJzZXIuVGV4dCwgVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNlci5S ZXNldEJ1dHRvbl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDENCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVP ZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LCBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZy U3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwgVmZyU3ludGF4UGFy c2VyLk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0 cmluZywgVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9u cygpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYs IFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJ Zl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDMNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGFiZWxd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDQ0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRMYWJlbCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJhbm5lcl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDUNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEJhbm5lcigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgVmZyU3ludGF4 UGFyc2VyLkhpZGRlbiwgVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5T YXZlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Ng0KDQorICAgICAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkd1aWRPcF06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDcNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1vZGFsXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0OA0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50TW9kYWwoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZF06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwNTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQor DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBWZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJU cmVlTm9kZShFRklfSUZSX0ZPUk1fTUFQX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5TMSA9IE5v bmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBGb3JtTWFwKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1NYXAsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIENvbW1hKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFbmRGb3JtKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVu ZEZvcm0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXBUaXRs ZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk1hcFRp dGxlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwg aSkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE1h cEd1aWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5N YXBHdWlkKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwR3VpZCwgaSkNCg0KKw0KDQorICAgICAg ICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LGkpDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgdmZyRm9ybShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybUNvbnRleHQpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1Db250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uDQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybU1hcERlZmluaXRpb24iICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg dmZyRm9ybU1hcERlZmluaXRpb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwMiwg c2VsZi5SVUxFX3ZmckZvcm1NYXBEZWZpbml0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU0DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtTWFwKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkZvcm1JZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU2DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEwNTcNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlMxID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzMNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk1hcFRpdGxl Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU5DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFwVGl0bGUpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwNjANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDYxDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4p DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjINCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwNjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjQN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTWFwR3VpZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2 Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjgNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2 OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3NQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDc5 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSAoKCgoX2xh IC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwgKFZm clN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVy ZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1 bHQgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LlN1cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIu SW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAt IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLkJhbm5lciAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFn ZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMTApKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuUnVsZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5S ZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTAp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLk1vZGFsIC0gMTEwKSkpKSAhPSAwKSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5S ZWZyZXNoR3VpZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3Ng0KDQorICAg ICAgICAgICAgICAgIHNlbGYudmZyRm9ybSgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEwODENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTA4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRW5kRm9ybSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDgzDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0K KyAgICAgICAgZGVmIHZmckltYWdlVGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEltYWdlDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SW1hZ2UiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJbWFn ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyU3RhdGVtZW50SW1hZ2Uoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwNCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudEltYWdlKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTA4NQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJJbWFnZVRhZygpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTA4Ng0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyTG9ja2VkVGFnKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRMb2NrZWQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJTdGF0ZW1lbnRMb2NrZWQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRMb2NrZWQoc2VsZikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudExvY2tlZChzZWxm KToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRMb2NrZWRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudExvY2tl ZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODgNCg0KKyAgICAgICAg ICAgIHNlbGYudmZyTG9ja2VkVGFnKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDg5 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9k ZShFRklfSUZSX1JVTEVfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIFJ1bGUoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUnVsZSwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kUnVsZShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRSdWxlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UnVsZXMNCg0KKw0K DQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoN CisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSdWxl cyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVu dFJ1bGVzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiB2ZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTA4 LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UnVsZXMpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDkxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5SdWxlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTINCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTA5Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5NA0KDQorICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDk1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5FbmRSdWxlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTYNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZm clN0YXRlbWVudFN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxl Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRpY1Rl eHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0aWNUZXh0Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXQNCg0KKw0KDQorICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0IiApOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdChzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 U3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1l bnRTdGF0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEw MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEwOTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1YlRpdGxlKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVGV4dF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDk5DQoNCisg ICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KCkNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuR290bywgVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExMDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudENyb3Nz UmVmZXJlbmNlKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoN CisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZm clRyZWVOb2RlKEVGSV9JRlJfU1VCVElUTEVfT1ApDQoNCisgICAgICAgICAgICBzZWxmLk9wT2Jq ID0gQ0lmclN1YnRpdGxlKCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VidGl0bGUoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VidGl0 bGUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFRleHQoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJl cihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgRW5kU3VidGl0bGUoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kU3VidGl0bGUsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0K Kw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN1YnRpdGxlRmxhZ3Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdWJ0aXRsZUZsYWdzQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN1YlRpdGxlQ29tcG9uZW50Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRs ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyU3RhdGVtZW50U3ViVGl0bGUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3ViVGl0bGVDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEx Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1YlRpdGxlKQ0KDQorICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTAz DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDUN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTEwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEw Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMDgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTA5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTQNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw2NSxzZWxmLl9jdHgpDQoNCisgICAgICAgICAg ICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTExMA0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTExDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExMTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTEzDQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdWJ0aXRsZUZsYWdzKCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTEzNg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNl bGYuX2lucHV0LDcwLHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE4DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5D b21tYToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTYNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTE3DQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCg0KKw0KDQorDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjANCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorDQoNCisgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTIzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0 aXZlUHJlZGljdChzZWxmLl9pbnB1dCw2NyxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICAgICAg aWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTIxDQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEyMg0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisN Cg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTMyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5Db21tYToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjUN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI5DQoNCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgICAgICB3aGls ZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAo KDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNz d29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLSA0NikpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQ YXJzZXIuUmVzZXRCdXR0b24gb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuQWN0aW9uOg0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMjYNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoKQ0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzENCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorDQoNCisNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTEzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkVuZFN1YnRpdGxlKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTM1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dFF1ZXN0aW9ucyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21w b25lbnQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dWJUaXRsZUNvbXBvbmVudChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTE0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQpDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTQwDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu U3VidGl0bGUsIFZmclN5bnRheFBhcnNlci5UZXh0LCBWZnJTeW50YXhQYXJzZXIuR290bywgVmZy U3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MzgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0LCBWZnJTeW50YXhQYXJzZXIu RGF0ZSwgVmZyU3ludGF4UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwgVmZy U3ludGF4UGFyc2VyLk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4 UGFyc2VyLlN0cmluZywgVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVz dGlvbnMoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyU3VidGl0bGVGbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlN1YkZsYWdzID0gMA0KDQor DQoNCisgICAgICAgIGRlZiBzdWJ0aXRsZUZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxhZ3NGaWVs ZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxhZ3NG aWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdWJ0aXRsZUZsYWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3VidGl0bGVGbGFncyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN1YnRpdGxlRmxhZ3Moc2VsZikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN1YnRpdGxlRmxhZ3Moc2VsZik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVG bGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMTE2LCBzZWxmLlJVTEVfdmZyU3VidGl0bGVGbGFncykNCg0K KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTE0Mg0KDQorICAgICAgICAgICAgc2VsZi5zdWJ0aXRsZUZsYWdzRmll bGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDcNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0Mw0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3VidGl0 bGVGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0OQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFN1YnRpdGxl RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQoNCisgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJl cihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdWJ0aXRsZUZsYWdz RmllbGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTdWJ0 aXRsZUZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRTdWJ0aXRsZUZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIHN1YnRpdGxlRmxhZ3NGaWVsZChzZWxmKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmllbGRDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDExOCwgc2VsZi5SVUxFX3N1YnRpdGxlRmxhZ3NGaWVsZCkNCg0KKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE1MA0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIG5vdChfbGE9PVZmclN5bnRheFBhcnNlci5UX183IG9yIF9sYT09VmZy U3ludGF4UGFyc2VyLk51bWJlcik6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVySW5saW5lKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmNvbnN1bWUoKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RhdGljVGV4dENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAg ICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1RFWFRfT1ApDQoNCisgICAgICAg ICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLlMyID0gTm9u ZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLlMzID0gTm9uZSAjIFRva2VuDQoNCisgICAg ICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuUzQgPSBO b25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgVGV4dChzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlRleHQpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5UZXh0LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBIZWxwKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhlbHAsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVu KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg TnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3RhdGljVGV4dEZsYWdzRmllbGRDb250ZXh0 KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdGF0aWNUZXh0RmxhZ3NGaWVsZENv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZM QUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dCIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXRpY1RleHQoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRl bWVudFN0YXRpY1RleHQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdGljVGV4dENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTIwLCBzZWxm LlJVTEVfdmZyU3RhdGVtZW50U3RhdGljVGV4dCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Mg0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTUzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTQNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTE1NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1Ng0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExNTcNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LlMxID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1OQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTE2MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4 dCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTYxDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExNjINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjMNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTY0DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5TMiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY1DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzMNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0 aXZlUHJlZGljdChzZWxmLl9pbnB1dCw3MyxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBs YV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2Ng0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTY3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVGV4dCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2 OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTE3MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE3 MQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMzID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTcyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0K Kw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5MQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDc1LHNlbGYuX2N0eCkNCg0KKyAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTc1 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzYNCg0KKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTc4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0aWNUZXh0RmxhZ3NGaWVsZCgpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExODMNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNzkNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4MA0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRpY1RleHRGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExODUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Ng0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTg4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4OQ0KDQorICAgICAgICAgICAg ICAgIGxvY2FsY3R4LlM0ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor DQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk1DQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5Mw0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0 VGFnTGlzdChsb2NhbGN0eC5Ob2RlKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTk3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBTdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkZsYWcg PSAwDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAg ICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgcXVlc3Rpb25o ZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdGF0aWNUZXh0RmxhZ3NG aWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0YXRp Y1RleHRGbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIHN0YXRpY1RleHRGbGFnc0ZpZWxkKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0Zp ZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAxMjIsIHNlbGYuUlVMRV9zdGF0aWNUZXh0RmxhZ3NGaWVsZCkN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDENCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9r ZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5OQ0KDQor ICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgVmZyU3ludGF4UGFyc2VyLk5W QWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQ YXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxh ZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9u bHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0K Kw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQor DQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQor ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRHb3RvKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50R290b0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlc2V0QnV0 dG9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnRDcm9zc1JlZmVyZW5jZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2Uoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRl bWVudENyb3NzUmVmZXJlbmNlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAx MjQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSkNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDUNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Hb3Rv XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDMNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEdvdG8oKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRSZXNldEJ1dHRvbigpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlv bihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHb3RvQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUkVGX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5PcE9i aiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuT0hPYmogPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAg ICAgIHNlbGYuUU4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgR290byhzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5H b3RvLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Mo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckdvdG9GbGFncyhzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmckdvdG9GbGFnc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXko c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuS2V5LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBEZXZpY2VQYXRoKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRldmljZVBh dGgsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIEZvcm1TZXRHdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlkLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFF1ZXN0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRHb3RvDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50R290byIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEdvdG8oc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudEdvdG8o c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50R290b0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTI2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R290 bykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6 DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTIwNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuR290bykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU1DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuRGV2aWNlUGF0aF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyMDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZXZp Y2VQYXRoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjExDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEyDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTIxNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybVNldEd1aWQpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTIxOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1J ZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyMA0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjINCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyMw0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyNQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTIyNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZF06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjgNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTIyOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzANCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTIzMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTIzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzNQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjM2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb24pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy MzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM4DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMjM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZvcm1JZF06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Gb3JtSWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDINCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjQ0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDUNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTI0Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAg ICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToNCg0KKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDcNCg0KKyAgICAgICAgICAgICAgICAg ICAgbG9jYWxjdHguUU4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0OA0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTI0OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUwDQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0K DQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjUzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21w dCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsIFZmclN5bnRheFBhcnNlci5WYXJJZCwgVmZyU3ludGF4 UGFyc2VyLlF1ZXN0aW9uSWRdOg0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEyNTcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxj dHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NjINCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MSxz ZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTI1OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU5DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjANCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJHb3RvRmxhZ3MobG9jYWxjdHgu T3BPYmopDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNjgNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFf ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MixzZWxmLl9jdHgp DQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTI2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY1DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI2Nw0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K Kw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Mg0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNzANCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI3MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyNzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6 DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckdvdG9GbGFnc0NvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgT2JqPU5v bmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAg c2VsZi5PYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkdvdG9GbGFncyA9IDANCg0KKyAg ICAgICAgICAgIHNlbGYuT2JqID0gT2JqDQoNCisNCg0KKyAgICAgICAgZGVmIGdvdG9GbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckdvdG9GbGFncw0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckdvdG9GbGFncyIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckdvdG9GbGFncyhzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyR290b0ZsYWdzKHNlbGYs IE9iaik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyR290 b0ZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE9iaikNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyOCwgc2VsZi5SVUxFX3ZmckdvdG9GbGFncykN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTI3Ng0KDQorICAgICAgICAgICAgc2VsZi5nb3RvRmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4MQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc3DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjc4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5nb3RvRmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODMNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBHb3RvRmxhZ3NGaWVs ZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLkZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9r ZW4NCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25o ZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9nb3RvRmxhZ3NGaWVsZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdEdvdG9GbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0R290b0ZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIGdvdG9GbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAxMzAsIHNlbGYuUlVMRV9nb3RvRmxhZ3NGaWVsZCkNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODYNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4NA0KDQorICAgICAgICAgICAgICAgIGxv Y2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkludGVyYWN0aXZlRmxhZywgVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3lu dGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVx dWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgVmZyU3ludGF4UGFyc2Vy LlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQ YXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjg1DQoN CisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZy U3RhdGVtZW50UmVzZXRCdXR0b25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lG Ul9SRVNFVF9CVVRUT05fT1ApDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gQ0lmclJlc2V0 QnV0dG9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisg ICAgICAgIGRlZiBSZXNldEJ1dHRvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgRGVmYXVsdFN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFkZXJD b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kUmVzZXRCdXR0b24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5k UmVzZXRCdXR0b24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVzZXRCdXR0b24NCg0KKw0KDQor ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1 dHRvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudFJlc2V0QnV0dG9uKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisN Cg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZXNldEJ1dHRv bkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTMyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UmVzZXRCdXR0b24p DQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyODgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlJlc2V0QnV0dG9uKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODkN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy OTENCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTINCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyOTMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 SGVhZGVyKGxvY2FsY3R4Lk9wT2JqKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTQN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTgNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkltYWdlIG9yIF9sYT09VmZyU3lu dGF4UGFyc2VyLkxvY2tlZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5NQ0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QobG9jYWxjdHgu Tm9kZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5Ng0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FbmRSZXNldEJ1dHRvbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzAxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29s b24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoN CisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRRdWVzdGlvbnNDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0g Tm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudERhdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREYXRl Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudE51bWVyaWNU eXBlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RyaW5nVHlwZShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50T3JkZXJlZExpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcmRl cmVkTGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRU aW1lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25zDQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25zIiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVl c3Rpb25zKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25zQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxMzQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbnMpDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA5DQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hl Y2tCb3gsIFZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTMwMw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50Qm9vbGVhblR5cGUo KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5EYXRlXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDQN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERhdGUoKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk51bWVyaWNdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTMwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TnVtZXJpY1R5 cGUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmluZ106DQoN CisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3RdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50T3JkZXJlZExpc3QoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UaW1lXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzMDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFRpbWUoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9u ZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3RhdFRhZ0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudERpc2FibGVJZlF1ZXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFJlZnJlc2goc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoQ29u dGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhcnN0b3JlRGV2 aWNlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJl ZnJlc2hFdmVudENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRXYXJuaW5nSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFn DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50UXVlc3Rpb25UYWciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoc2VsZik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UXVlc3Rpb25UYWdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1 ZXN0aW9uVGFnKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTMyMg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkltYWdlLCBWZnJTeW50YXhQYXJzZXIuTG9ja2VkXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFN0YXRUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzEy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMTQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElm KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzE1DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEz MTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KCkN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuUmVmcmVzaF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzE3 DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuVmFyc3RvcmVEZXZpY2VdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxOA0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UoKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5HdWlkT3BdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxOQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuUmVmcmVzaEd1aWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgOCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyMA0KDQorICAg ICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KCkNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuV2FybmluZ0lmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjENCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFdhcm5pbmdJZigpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBO b1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0lOQ09O U0lTVEVOVF9JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgSW5jb25zaXN0ZW50SWYoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW5j b25zaXN0ZW50SWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZg0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElmIiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0 ZW50SWYoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYpOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAxMzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZikN Cg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTMyNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMy NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyNw0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMwDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMzENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNDQNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzMyDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzMzMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM0DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTMzOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAg ICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMzM2DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQxDQoNCisgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM0 Ng0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ5DQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIGxh XyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTEsc2VsZi5fY3R4 KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzNDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAg ZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Tm9TdWJtaXRJ ZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9PUCkN Cg0KKw0KDQorICAgICAgICBkZWYgTm9TdWJtaXRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBQcm9tcHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBT dHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFH UywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRl eHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Tm9TdWJt aXRJZg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudE5vU3VibWl0SWYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dE5vU3VibWl0SWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE5v U3VibWl0SWYpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTM1Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0 KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTMNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1NQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzNTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU3DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzENCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdT Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU5DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNjANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYxDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTM2Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2Mg0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzYzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzY4DQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEzNjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTM3Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc2 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTQsc2Vs Zi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50RGlz YWJsZUlmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9ESVNBQkxF X0lGX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBEaXNhYmxlSWYoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZR dWVzdChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3RDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDE0Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3OA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzNzkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lv bigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4MA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzODENCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4Mg0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM4NA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQ cmVkaWN0KHNlbGYuX2lucHV0LDk1LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9 PSAxOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzgzDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQor ICAgIGNsYXNzIFZmclN0YXRlbWVudFJlZnJlc2hDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5v ZGUoRUZJX0lGUl9SRUZSRVNIX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWZyZXNoKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJl ZnJlc2gsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEludGVydmFsKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVydmFsLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaA0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFJlZnJlc2giICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0 ZW1lbnRSZWZyZXNoKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFJlZnJlc2hDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0NCwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFJlZnJlc2gpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzg2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWZyZXNo KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODcNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkludGVydmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzODgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4OQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50VmFy c3RvcmVEZXZpY2VDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9WQVJTVE9S RV9ERVZJQ0VfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIFZhcnN0b3JlRGV2aWNlKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcnN0 b3JlRGV2aWNlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dFZhcnN0b3JlRGV2aWNlDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZShzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVt ZW50VmFyc3RvcmVEZXZpY2Uoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0 Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKQ0KDQorICAgICAgICB0cnk6 DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM5MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM5Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzkzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzk0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5NQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzOTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Nw0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRSZWZyZXNoRXZlbnRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9SRUZS RVNIX0lEX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWZyZXNoR3VpZChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWZyZXNoR3Vp ZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5H dWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJlZnJl c2hFdmVudA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFJlZnJlc2hFdmVudCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50UmVmcmVzaEV2 ZW50KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFJlZnJlc2hFdmVudENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQ4LCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50UmVmcmVzaEV2ZW50KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTM5OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVmcmVz aEd1aWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMA0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDAxDQoNCisgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDAyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1dBUk5JTkdfSUZfT1ApDQoNCisNCg0K KyAgICAgICAgZGVmIFdhcm5pbmdJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2Vu KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ1Rva2VuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoN CisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVGlt ZW91dChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5UaW1lb3V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50V2Fybmlu Z0lmDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3Rh dGVtZW50V2FybmluZ0lmIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50V2FybmluZ0lmKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0K DQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYoc2VsZik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V2Fy bmluZ0lmQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5n SWYpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLldhcm5pbmdJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA1 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA3DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQwOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQxMQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNg0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVGltZW91dDoNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxMg0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE0MTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE0DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0MTgNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxOQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQyMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDk3 LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDIwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVu dFF1ZXN0aW9uVGFnTGlzdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IE5vZGUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50UXVlc3Rpb25UYWcoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnQ29udGV4dCkNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdDb250ZXh0 LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9u VGFnTGlzdA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdChzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50UXVl c3Rpb25UYWdMaXN0KHNlbGYsIE5vZGUpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlzdENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMTUyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0KQ0KDQorICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDI2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAg ICB3aGlsZSAoKCgoX2xhIC0gMTA2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAx MDYpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDEwNikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5XYXJuaW5nSWYgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTm9TdWJt aXRJZiAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDEwNikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5Mb2NrZWQgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuUmVmcmVzaCAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmlj ZSAtIDEwNikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMDYpKSkpICE9IDAp IG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNDIzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZygpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjgNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN1cHByZXNzSWZRdWVzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlP dXRJZlF1ZXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dFZhbHVlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3Rh dGVtZW50T3B0aW9ucyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9wdGlvbnNDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UmVhZChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFJlYWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZy U3RhdGVtZW50V3JpdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQsMCkN Cg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25UYWcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvblRhZyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZ0NvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTU0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcpDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDM2DQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu U3VwcHJlc3NJZl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDI5DQoNCisgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5HcmF5T3V0SWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMA0KDQorICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKQ0KDQorICAgICAgICAg ICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5WYWx1ZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMxDQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYWx1ZSgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzMg0KDQorICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RGVmYXVsdCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbl06DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDMzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRPcHRpb25zKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVhZF06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDM0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWFkKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuV3JpdGVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgNykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzNQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50V3JpdGUoKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2Ug Tm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgRmxhZ3NGaWVsZENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAg ICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUg IyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBJbnRlcmFjdGl2ZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZywg MCkNCg0KKw0KDQorICAgICAgICBkZWYgRGVmYXVsdEZsYWcoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWcsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIFJlc2V0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFn LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZWNvbm5lY3RSZXF1aXJlZEZsYWcoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVjb25u ZWN0UmVxdWlyZWRGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TlZBY2Nlc3NGbGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxh dGVDaGVja0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9mbGFnc0ZpZWxkDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RmxhZ3NGaWVsZCIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZsYWdzRmllbGQoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGZs YWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTU2LCBzZWxmLlJVTEVfZmxhZ3NGaWVsZCkN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDYNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9r ZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQzOA0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 MzkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JbnRlcmFj dGl2ZUZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWdd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0MQ0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNl dFJlcXVpcmVkRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDQyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZ106DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDQzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWdd Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0NA0KDQorICAgICAgICAgICAgICAgIGxv Y2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkxhdGVDaGVja0ZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgOCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0 NQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5MYXRlQ2hlY2tGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24o c2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfU1VQUFJFU1NfSUZfT1ApDQoNCisNCg0K KyAgICAgICAgZGVmIFN1cHByZXNzSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4 cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkxpc3RDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg RW5kSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRW5kSWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 U3VwcHJlc3NJZlF1ZXN0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVl c3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTgsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDgNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQ0OQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDUwDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQ2Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ1Mg0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTMNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDU4DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBf bGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDU0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0NTUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjANCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTQ2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDY1DQoNCisgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NjYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 NjgNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxMDMs c2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50 R3JheU91dElmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQ UkVTU19JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgR3JheU91dElmKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5G bGFnc0ZpZWxkQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NG aWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 R3JheU91dElmUXVlc3QNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1l bnRHcmF5T3V0SWZRdWVzdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdENvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYw LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QpDQoNCisgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0NzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJ ZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcxDQoNCisgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0 NzINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDg1DQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDc0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3NQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE0ODANCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzYNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQ3Nw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQo KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4Mg0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDgzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODcN Cg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2Fs Y3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4OA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTQ5MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDEwNixzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ4OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKw0KDQorDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJf REVGQVVMVF9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KDQorICAg ICAgICAgICAgc2VsZi5TTiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBEZWZh dWx0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkRlZmF1bHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhbHVl KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiB2ZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJDb25z dGFudFZhbHVlRmllbGRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgRGVmYXVs dFN0b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRlZmF1bHRTdG9yZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRl bnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyU3RhdGVtZW50RGVmYXVsdA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERlZmF1bHQiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZh dWx0KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudERlZmF1bHRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2Miwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudERlZmF1bHQpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTINCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LkQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0KQ0KDQorDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTUwMA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhbHVlXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50VmFsdWUoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk0 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlRfXzVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk2 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Nw0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ5OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDYNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwMg0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZSkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTUwMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDQNCg0K KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYWx1ZUNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBW ZnJUcmVlTm9kZShFRklfSUZSX1ZBTFVFX09QKQ0KDQorDQoNCisgICAgICAgIGRlZiBWYWx1ZShz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5WYWx1ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFZhbHVlDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50VmFsdWUiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYWx1ZShzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy U3RhdGVtZW50VmFsdWUoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2NCwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFZhbHVlKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUwOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFsdWUpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTEw DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgVmZyU3RhdGVtZW50T3B0aW9uc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50T25lT2ZPcHRpb25Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudE9wdGlvbnMNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPcHRpb25zIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50T3B0aW9u cyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRPcHRpb25zQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1l bnRPcHRpb25zKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxMg0KDQor ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbigpDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklf SUZSX09ORV9PRl9PUFRJT05fT1ApDQoNCisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9r ZW4NCg0KKyAgICAgICAgICAgIHNlbGYuS04gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAg ICBkZWYgT3B0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wdGlvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVGV4dChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5U ZXh0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFsdWUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZm ckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckNvbnN0YW50VmFsdWVGaWVsZENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJPbmVPZk9wdGlvbkZsYWdzKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgS2V5KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgdmZySW1hZ2VUYWcoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFnQ29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LGkpDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudE9uZU9mT3B0aW9uDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 T25lT2ZPcHRpb24iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2VsZik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25l T2ZPcHRpb25Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE9uZU9m T3B0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcHRpb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUx NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTcNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTE5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTIxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTIyDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5WYWx1ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTIzDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjQNCg0KKyAgICAgICAgICAgIHNlbGYudmZyQ29u c3RhbnRWYWx1ZUZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI1DQoNCisg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNTI2DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUyNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTI4DQoNCisgICAgICAgICAgICBzZWxmLnZmck9u ZU9mT3B0aW9uRmxhZ3MoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzMNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFf ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxMDksc2VsZi5fY3R4 KQ0KDQorICAgICAgICAgICAgaWYgbGFfID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1MjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzMA0KDQorICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTUzMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzIN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5LTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzOQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuQ29tbWE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzNg0KDQorICAgICAgICAgICAgICAgIHNl bGYudmZySW1hZ2VUYWcoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQxDQoN CisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1NDINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoN CisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K DQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoN CisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5I RmxhZ3MgPSAwDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCg0KKw0KDQorICAgICAg ICBkZWYgb25lb2ZvcHRpb25GbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmllbGRDb250 ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmll bGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyT25lT2ZPcHRpb25GbGFncw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmck9uZU9mT3B0aW9uRmxhZ3MiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdzKHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJPbmVPZk9wdGlvbkZs YWdzKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm ck9uZU9mT3B0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3MCwgc2VsZi5SVUxFX3Zmck9uZU9m T3B0aW9uRmxhZ3MpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDQNCg0KKyAgICAgICAgICAgIHNlbGYu b25lb2ZvcHRpb25GbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTQ5 DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZm clN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDYNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1NTENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBPbmVvZm9wdGlvbkZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDAN Cg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLkEgPSBO b25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KDQorDQoN CisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBP cHRpb25EZWZhdWx0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9w dGlvbkRlZmF1bHRNZmcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZywgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgUmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIFJlc3RTdHlsZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZywgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxh ZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1 cmluZ0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRG bGFnLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFn LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9vbmVvZm9wdGlvbkZsYWdzRmllbGQNCg0K Kw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRPbmVvZm9wdGlvbkZs YWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRPbmVv Zm9wdGlvbkZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0K Kw0KDQorDQoNCisgICAgZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmllbGRD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDE3Miwgc2VsZi5SVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCkNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjMNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU1Mg0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuT3B0aW9uRGVmYXVsdF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTUzDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVs dCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZ106DQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3B0aW9uRGVmYXVsdE1mZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcpDQoNCisgICAgICAgICAgICAgICAg cGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlc2V0 UmVxdWlyZWRGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTYNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykN Cg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNTU3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVz dFN0eWxlRmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1h bnVmYWN0dXJpbmdGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxh ZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTU2MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRl ZmF1bHRGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWddOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1NjENCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5BID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MYXRlQ2hl Y2tGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDExKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYyDQoNCisgICAgICAgICAg ICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0Zs YWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWFkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVG SV9JRlJfUkVBRF9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgUmVhZChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWFkLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50UmVhZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFJlYWQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRSZWFkKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0K DQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWFkKHNlbGYpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlYWRDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDE3NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJlYWQpDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTY1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5SZWFkKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjYN Cg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU2Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAg c2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9XUklURV9PUCkNCg0KKw0KDQorICAgICAg ICBkZWYgV3JpdGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuV3JpdGUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZQ0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFdyaXRlIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50V3JpdGUo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHZmclN0YXRlbWVudFdyaXRlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFdyaXRlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNzYsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRXcml0ZSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1NjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLldyaXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzANCg0KKyAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU3 MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBOb2Rl PU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxp c3Qoc2VsZiwgTm9kZSk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsIE5vZGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAx NzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QpDQoNCisgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1NzYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdo aWxlICgoKChfbGEgLSA2MSkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gNjEpKSAm ICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9wdGlvbiAtIDYxKSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkdyYXlPdXRJZiAtIDYxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQg LSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNjEpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmIC0gNjEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuSW5jb25zaXN0ZW50SWYgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5XYXJuaW5n SWYgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmIC0gNjEpKSkpICE9 IDApIG9yICgoKChfbGEgLSAxNDQpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE0 NCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxNDQpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuTG9ja2VkIC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZhbHVl IC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlYWQgLSAxNDQpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuV3JpdGUgLSAxNDQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVm cmVzaCAtIDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSAtIDE0 NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxNDQpKSkpICE9IDApIG9yIF9s YT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTczDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvbigpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzgNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rp b25UYWdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25UYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRh Z0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb24NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTgw LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24pDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTgxDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGlzYWJs ZUlmLCBWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYsIFZmclN5bnRheFBhcnNlci5XYXJu aW5nSWYsIFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmLCBWZnJTeW50YXhQYXJzZXIuSW1hZ2Us IFZmclN5bnRheFBhcnNlci5Mb2NrZWQsIFZmclN5bnRheFBhcnNlci5SZWZyZXNoLCBWZnJTeW50 YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2UsIFZmclN5bnRheFBhcnNlci5HdWlkT3AsIFZmclN5bnRh eFBhcnNlci5SZWZyZXNoR3VpZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTc5DQoN CisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZygpDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk9wdGlvbiwgVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHQsIFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCBWZnJTeW50YXhQYXJzZXIuVmFs dWUsIFZmclN5bnRheFBhcnNlci5SZWFkLCBWZnJTeW50YXhQYXJzZXIuV3JpdGVdOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTU4MA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25UYWcoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxs eToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9j YWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50Qm9vbGVhblR5cGVDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRDaGVj a0JveChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEFjdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RhdGVtZW50Qm9vbGVhblR5cGUNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEJvb2xlYW5UeXBlKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0 ZW1lbnRCb29sZWFuVHlwZShzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTgyLCBz ZWxmLlJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUpDQoNCisgICAgICAgIHRyeToNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTg1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3hdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50Q2hlY2tCb3goKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU4NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50QWN0aW9uKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoN CisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZm clRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tCT1hfT1ApDQoNCisgICAgICAgICAgICBzZWxmLk9wT2Jq ID0gQ0lmckNoZWNrQm94KCkNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lP Tl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRv a2VuDQoNCisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAg ICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUlu Zm9Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SGVhZGVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIEVuZENoZWNrQm94KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZENoZWNrQm94LCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBD aGVja0JveChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5DaGVja0JveCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyQ2hlY2tCb3hG bGFncyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94RmxhZ3NDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgS2V5KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveA0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENoZWNrQm94 IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 Q2hlY2tCb3goc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZmclN0YXRlbWVudENoZWNrQm94KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxODQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveCkNCg0KKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTU4Nw0KDQorICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNoZWNrQm94KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODgNCg0KKyAg ICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5PcE9iaiwgbG9jYWxj dHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4OQ0KDQorICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmopDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTU5MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5Ng0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu RkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTENCg0KKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTINCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTkzDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJDaGVja0JveEZsYWdzKCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5NA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjAyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5LZXk6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE1OTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1OTkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjAxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDQNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYwNQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRW5kQ2hlY2tCb3gpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTYwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFncyA9 IDANCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorDQoNCisgICAgICAgIGRlZiBj aGVja2JveEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQsaSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJDaGVja0JveEZs YWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyQ2hl Y2tCb3hGbGFncyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckNoZWNrQm94RmxhZ3Moc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIHZmckNoZWNrQm94RmxhZ3Moc2VsZik6DQoNCisNCg0KKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTg2LCBzZWxmLlJVTEVfdmZyQ2hlY2tCb3hGbGFncykNCg0KKyAgICAgICAgc2VsZi5fbGEg PSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYw OA0KDQorICAgICAgICAgICAgc2VsZi5jaGVja2JveEZsYWdzRmllbGQoKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2MTMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTYwOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYxMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tib3hGbGFnc0ZpZWxkKCkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxNQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIENoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0t MSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBz ZWxmLkxGbGFnID0gMA0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCg0KKyAgICAgICAg ICAgIHNlbGYuRCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5NID0gTm9uZSAj IFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIERlZmF1bHRGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5nRmxhZywgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ2hlY2tCb3hEZWZhdWx0RmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DaGVja0JveERlZmF1bHRGbGFn LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDaGVja0JveERlZmF1bHRNZmdGbGFnKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94RGVmYXVsdE1mZ0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2hlY2tib3hGbGFnc0ZpZWxkDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2hlY2tib3hGbGFn c0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hlY2ti b3hGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBjaGVja2JveEZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxODgsIHNlbGYuUlVMRV9jaGVja2JveEZsYWdzRmllbGQpDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIyDQoNCisgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVy XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRG bGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTcNCg0KKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5EID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWcpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2MTgNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5NID0gc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVm YXVsdEZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxOQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdEZsYWcpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWddOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYyMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNoZWNrQm94RGVmYXVsdE1mZ0ZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQor ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxh ZywgVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVx dWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50 YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZy U3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxh Z106DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjIxDQoNCisgICAgICAgICAgICAgICAg c2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVB bHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAg ZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50QWN0aW9uQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQUNUSU9OX09QKQ0KDQorICAgICAg ICAgICAgc2VsZi5PcE9iaiA9IENJZnJBY3Rpb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5RVHlw ZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQoNCisNCg0KKyAgICAgICAgZGVm IEFjdGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5BY3Rpb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uSGVh ZGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBDb25maWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29uZmlnLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3Bl blBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3Qoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgRW5kQWN0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZEFjdGlvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRkxB R1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckFjdGlvbkZsYWdzKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclN0YXRlbWVudEFjdGlvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEFjdGlvbiIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEFjdGlvbihzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 QWN0aW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudEFjdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTkwLCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50QWN0aW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjI0DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5BY3Rpb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYyNQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5P cE9iaiwgbG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyNg0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTYzMg0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQor ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2MjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYy OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnZmckFjdGlvbkZsYWdzKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYz MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM0DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db25maWcpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYzNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM2DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjM3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYzOA0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MzkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0MA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY0MQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVz dGlvblRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjQyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRBY3Rpb24p DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Mw0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyQWN0aW9uRmxh Z3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdT dGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAg ICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjdGlvbkZsYWdz RmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckFjdGlvbkZsYWdzDQoNCisNCg0KKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyQWN0aW9uRmxhZ3MiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJBY3Rpb25GbGFncyhzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyQWN0 aW9uRmxhZ3Moc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0K KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5Miwgc2VsZi5SVUxFX3ZmckFjdGlv bkZsYWdzKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ1DQoNCisgICAgICAgICAgICBzZWxmLmFjdGlv bkZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTANCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Ng0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Nw0KDQorICAgICAgICAgICAgICAgIHNl bGYuYWN0aW9uRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 NTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBB Y3Rpb25GbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxm Lk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV9hY3Rpb25GbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWN0aW9uRmxhZ3NGaWVsZCIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFjdGlvbkZsYWdzRmllbGQoc2VsZikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGFjdGlvbkZsYWdz RmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu QWN0aW9uRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQor ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTk0LCBzZWxmLlJVTEVfYWN0aW9uRmxh Z3NGaWVsZCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 NTUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTY1Mw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgVmZyU3ludGF4 UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLCBW ZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0 ZUNoZWNrRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2Vy Lk9wdGlvbk9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlv bmhlYWRlckZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24o c2VsZikNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROdW1lcmljKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRPbmVPZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9u ZU9mQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnROdW1lcmljVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudE51bWVy aWNUeXBlKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudE51bWVyaWNUeXBlQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTYsIHNlbGYuUlVMRV92 ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2NTkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljXToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2NTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dE51bWVyaWMoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZl06DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjU4DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPbmVPZigpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBWZnJTdGF0ZW1lbnROdW1lcmljQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9J RlJfTlVNRVJJQ19PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyTnVtZXJpYygp DQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9O T1JNQUwNCg0KKyAgICAgICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KDQorDQoNCisgICAg ICAgIGRlZiBOdW1lcmljKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWMsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1 ZXN0aW9uQmFzZUluZm8oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmclNldE1pbk1heFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmROdW1lcmljKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZE51bWVyaWMsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIHZmck51bWVyaWNGbGFncyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmck51bWVyaWNGbGFn c0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudE51bWVyaWMNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnROdW1lcmljIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRO dW1lcmljQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmlj KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNjYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1lcmljKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjINCg0K KyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5PcE9iaiwgbG9j YWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2Mw0KDQorICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmopDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTY2NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3MA0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjUNCg0KKyAgICAg ICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1Mp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjYNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjY3DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJOdW1lcmljRmxhZ3Mo KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY4DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2NzYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktleToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLktleSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3Mw0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2NzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3OA0KDQorICAg ICAgICAgICAgc2VsZi52ZnJTZXRNaW5NYXhTdGVwKGxvY2FsY3R4Lk9wT2JqKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE2NzkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTY4MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5k TnVtZXJpYykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjgxDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJT ZXRNaW5NYXhTdGVwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9iaj1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkkgPSBO b25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTjIgPSBOb25lICMgVG9rZW4NCg0KKyAg ICAgICAgICAgIHNlbGYuQSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5TID0g Tm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk9wT2JqID0gT3BPYmoNCg0KKw0KDQor ICAgICAgICBkZWYgTWluaW11bShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5pbXVtLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBD b21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IE1heGltdW0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTWF4aW11bSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdGVwKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0ZXAsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE5lZ2F0aXZlKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5OZWdhdGl2ZSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclNldE1p bk1heFN0ZXANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTZXRNaW5NYXhTdGVwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU2V0TWluTWF4U3RlcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0K DQorDQoNCisNCg0KKyAgICBkZWYgdmZyU2V0TWluTWF4U3RlcChzZWxmLCBPcE9iaik6DQoNCisN Cg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBPcE9iaikNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwMCwgc2VsZi5SVUxFX3ZmclNldE1pbk1heFN0ZXApDQoN CisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQor ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2ODMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk1pbmltdW0pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4NA0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNjg2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY4NQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4xID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoNCisNCg0KKw0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2ODgNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTY4OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjkxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTMNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjkyDQoNCisgICAgICAgICAgICAgICAgbG9jYWxj dHguTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCg0KKw0KDQorDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5NQ0KDQorICAgICAgICAgICAgbG9jYWxjdHgu QSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjk2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAxDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5TdGVw Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjk3DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RlcCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTY5OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTkNCg0KKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5TID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzAwDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgVmZyTnVtZXJpY0ZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorICAgICAgICAg ICAgc2VsZi5MRmxhZ3MgPSAwDQoNCisgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNwZWNpZmll ZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5OdW1l cmljRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk51 bWVyaWNGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdp c2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3Zmck51bWVyaWNGbGFncw0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck51bWVyaWNGbGFncyIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck51bWVyaWNGbGFncyhzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyTnVtZXJpY0ZsYWdz KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck51 bWVyaWNGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjAyLCBzZWxmLlJVTEVfdmZyTnVtZXJpY0ZsYWdz KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzAzDQoNCisgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFn c0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzA4DQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5C aXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDQNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm51 bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxMA0K DQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIE51bWVy aWNGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLklz U2V0VHlwZSA9IEZhbHNlDQoNCisgICAgICAgICAgICBzZWxmLklzRGlzcGxheVNwZWNpZmllZCA9 IEZhbHNlDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtZXJp Y1NpemVPbmUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWVy aWNTaXplVHdvKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1l cmljU2l6ZUZvdXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBO dW1lcmljU2l6ZUVpZ2h0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHQsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIERpc1BsYXlJbnREZWMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRGlzUGxheUludERlYywgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgRGlzUGxheVVJbnREZWMoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWMsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIERpc1BsYXlVSW50SGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4LCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRl ckZsYWdzRmllbGRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX251 bWVyaWNGbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0TnVtZXJpY0ZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXROdW1lcmljRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgbnVtZXJpY0ZsYWdzRmllbGQoc2VsZik6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY0ZsYWdzRmll bGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDIwNCwgc2VsZi5SVUxFX251bWVyaWNGbGFnc0ZpZWxkKQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyMA0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk51bWJlcl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzExDQoNCisgICAg ICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmVdOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTcxMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWVyaWNTaXplT25lKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3b106DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd28pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXpl Rm91cl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5OdW1lcmljU2l6ZUVpZ2h0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6 ZUVpZ2h0KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5SW50RGVjXToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE3MTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5EaXNQbGF5SW50RGVjKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludERlY106DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWMpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlV SW50SGV4XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTgNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludEhleCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuSW50ZXJhY3RpdmVGbGFnLCBWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJT eW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RS ZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLCBWZnJTeW50YXhQYXJz ZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsIFZmclN5bnRh eFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX09O RV9PRl9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyT25lT2YoKQ0KDQorICAg ICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQoN CisgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYg T25lT2Yoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT25lT2YsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUlu Zm8oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEhlYWRlckNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uTGlzdENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBFbmRPbmVPZihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRPbmVPZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyT25lb2ZGbGFnc0ZpZWxkKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclNldE1pbk1heFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4dCww KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T25lT2YNCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPbmVPZiIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0 ZW1lbnRPbmVPZihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA2LCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50T25lT2YpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjINCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZU9mKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3MjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0 eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcy NA0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmop DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyNQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTczMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 MjYNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjcNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI4DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJP bmVvZkZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI5DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisN Cg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzQNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk1pbmltdW06 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzMNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmclNldE1pbk1heFN0ZXAobG9jYWxjdHguT3BPYmopDQoNCisNCg0KKw0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzYNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTczNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RW5kT25lT2YpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczOA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZy T25lb2ZGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorICAgICAgICAgICAgc2Vs Zi5MRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5O dW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy Lk51bWVyaWNGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJp dFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3Zmck9uZW9mRmxhZ3NGaWVsZA0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9uZW9mRmxhZ3NGaWVsZCIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck9uZW9mRmxhZ3NGaWVsZChzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy T25lb2ZGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmck9uZW9mRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjA4LCBzZWxmLlJV TEVfdmZyT25lb2ZGbGFnc0ZpZWxkKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzQwDQoNCisgICAgICAg ICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzQ1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBf bGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3NDENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDINCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTc0Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN0cmluZ1R5cGVDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0g Tm9uZQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg dmZyU3RhdGVtZW50UGFzc3dvcmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRQYXNzd29yZENv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3Ry aW5nVHlwZQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFN0cmluZ1R5cGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKHNl bGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0cmluZ1R5cGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVu dFN0cmluZ1R5cGUpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzUwDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NDgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0cmluZygpDQoN CisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLlBhc3N3b3JkXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFBhc3N3b3JkKCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0 YXRlbWVudFN0cmluZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1NUUklO R19PUCkNCg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyU3RyaW5nKCkNCg0KKyAgICAg ICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQor ICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk1p biA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5NYXggPSBOb25lICMgVG9rZW4N Cg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZywgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNv bnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZFN0cmluZyhzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRT dHJpbmcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE1pblNpemUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWluU2l6ZSwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTWF4U2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5NYXhTaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RyaW5nRmxhZ3NGaWVsZENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudFN0cmluZw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudFN0cmluZyIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0cmluZyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50U3RyaW5nKHNlbGYp Og0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFN0cmluZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjEyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RyaW5n KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToN Cg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNzUyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmcpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1Mw0KDQor ICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxj dHguUVR5cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1NA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTc2MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3NTUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 NTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzU3DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc1OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY2DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5LZXk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjINCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3NjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY0DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY1DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3NjgNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk1pbiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk1pblNpemUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTc2OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3 MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3Mg0KDQorICAgICAgICAgICAgbG9jYWxjdHguTWF4 ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4U2l6ZSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzQNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzc1DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc2DQoNCisgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkVuZFN0cmluZykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzc4 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBWZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQor ICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQoNCisNCg0KKyAgICAgICAgZGVmIHN0cmluZ0Zs YWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwg aSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0cmluZ0ZsYWdzRmllbGQNCg0KKw0K DQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoN CisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdHJpbmdGbGFnc0Zp ZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RyaW5n RmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisN Cg0KKyAgICBkZWYgdmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxmKToNCg0KKw0KDQorICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAyMTQsIHNlbGYuUlVMRV92ZnJTdHJpbmdGbGFnc0ZpZWxkKQ0KDQorICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNzgwDQoNCisgICAgICAgICAgICBzZWxmLnN0cmluZ0ZsYWdzRmllbGQoKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3ODUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc4MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTc4Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nRmxhZ3NGaWVsZCgpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODcNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dChQ YXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0x KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuSEZsYWcgPSAwDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KDQorICAgICAgICAg ICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3RyaW5nRmxhZ3NGaWVsZA0KDQorDQoNCisgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ0ZsYWdzRmllbGQiICk6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTdHJpbmdGbGFnc0ZpZWxkKHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBzdHJp bmdGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0 ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxNiwgc2VsZi5SVUxFX3N0 cmluZ0ZsYWdzRmllbGQpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzkxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3ODgNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX184XToNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX184KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsIFZmclN5bnRh eFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywg VmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxh dGVDaGVja0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNl ci5PcHRpb25Pbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc5MA0KDQorICAgICAgICAgICAgICAgIHNlbGYucXVlc3Rp b25oZWFkZXJGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9u KHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoN CisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFBhc3N3b3JkQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUEFTU1dPUkRfT1ApDQoNCisgICAgICAgICAgICBz ZWxmLk9wT2JqID0gQ0lmclBhc3N3b3JkKCkNCg0KKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBF RklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorICAgICAgICAgICAgc2VsZi5GID0g Tm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLk1pbiA9IE5vbmUgIyBUb2tlbg0KDQor ICAgICAgICAgICAgc2VsZi5NYXggPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYg UGFzc3dvcmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuUGFzc3dvcmQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9u SGVhZGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5z KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQsMCkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBFbmRQYXNzd29yZChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRQYXNzd29yZCwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTWluU2l6ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5NaW5TaXplLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXhT aXplKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk1heFNpemUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclBhc3N3b3JkRmxhZ3NG aWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBF bmNvZGluZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5FbmNvZGluZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxB R1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRQYXNzd29yZA0K DQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dFBhc3N3b3JkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50UGFzc3dvcmQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0K Kw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudFBhc3N3b3JkKHNlbGYpOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFBhc3N3b3JkQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyMTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRQYXNzd29yZCkNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc5Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuUGFzc3dvcmQpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5NA0KDQorICAgICAg ICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5 cGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5NQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTgwMQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE3OTYNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTcNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk4DQoNCisgICAgICAgICAgICAgICAgc2VsZi52 ZnJQYXNzd29yZEZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx Nzk5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDcNCg0KKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktl eToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwMw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLktleSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTgwNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTgwOQ0KDQorICAgICAgICAgICAgbG9jYWxjdHguTWluID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTWluU2l6ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEw DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODEyDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODEzDQoNCisgICAgICAgICAgICBsb2NhbGN0eC5NYXggPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhTaXplKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4MTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxNQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4MTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjENCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkVuY29kaW5nOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE3DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5jb2RpbmcpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE5DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODIwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4MjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgy NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kUGFzc3dvcmQp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNQ0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyUGFzc3dvcmRG bGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cg0KKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KDQorDQoNCisgICAgICAgIGRlZiBwYXNz d29yZEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJQYXNzd29yZEZsYWdz RmllbGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJQ YXNzd29yZEZsYWdzRmllbGQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJQYXNzd29yZEZsYWdzRmllbGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJQYXNzd29yZEZs YWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyMCwgc2VsZi5SVUxFX3ZmclBhc3N3b3JkRmxhZ3NG aWVsZCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyNw0KDQorICAgICAgICAgICAgc2VsZi5wYXNzd29y ZEZsYWdzRmllbGQoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzINCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyOA0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyOQ0KDQorICAgICAgICAgICAgICAgIHNl bGYucGFzc3dvcmRGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTgzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQor ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KDQorDQoNCisgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBxdWVzdGlvbmhl YWRlckZsYWdzRmllbGQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Bhc3N3b3JkRmxhZ3NGaWVs ZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFBhc3N3b3Jk RmxhZ3NGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFBh c3N3b3JkRmxhZ3NGaWVsZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQor DQoNCisNCg0KKyAgICBkZWYgcGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYpOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjIyLCBzZWxmLlJVTEVfcGFzc3dvcmRGbGFnc0ZpZWxkKQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNw0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51 bWJlcl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODM1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JbnRl cmFjdGl2ZUZsYWcsIFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNl ci5SZXNldFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxh ZywgVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZWFkT25s eUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLlJl c3RTdHlsZUZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgzNg0KDQorICAgICAg ICAgICAgICAgIHNlbGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNl IE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVu dE9yZGVyZWRMaXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfT1JERVJF RF9MSVNUX09QKQ0KDQorICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJPcmRlcmVkTGlzdCgp DQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9O T1JNQUwNCg0KKyAgICAgICAgICAgIHNlbGYuTSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAg ICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIE9yZGVyZWRMaXN0 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9yZGVyZWRMaXN0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRl cihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIEVuZExpc3Qoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kTGlzdCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg U2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyT3JkZXJlZExpc3RGbGFncyhzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAg ICAgICBkZWYgTWF4Q29udGFpbmVycyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhDb250YWluZXJzLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudE9yZGVyZWRMaXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3RhdGVtZW50T3JkZXJlZExpc3QiICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdChzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVt ZW50T3JkZXJlZExpc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyNCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODM5DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQwDQoNCisgICAgICAgICAgICBzZWxmLnZmclF1 ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxODQxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ2DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5NYXhDb250YWluZXJzOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQyDQoN CisgICAgICAgICAgICAgICAgbG9jYWxjdHguTSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk1heENvbnRhaW5lcnMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDMNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODQ1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTMNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLkZMQUdTOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ4DQoNCisgICAg ICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdT KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ5DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTg1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyT3JkZXJlZExpc3RG bGFncygpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTENCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1NQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5FbmRMaXN0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NTcNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZm ck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5IRmxhZ3MgPSAwDQoNCisgICAgICAgICAgICBz ZWxmLkxGbGFncyA9IDANCg0KKw0KDQorICAgICAgICBkZWYgb3JkZXJlZGxpc3RGbGFnc0ZpZWxk KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyT3JkZXJlZExpc3RGbGFncw0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9yZGVyZWRMaXN0 RmxhZ3MiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJPcmRl cmVkTGlzdEZsYWdzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiB2ZnJPcmRlcmVkTGlzdEZsYWdzKHNlbGYpOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck9yZGVyZWRMaXN0RmxhZ3NDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDIyNiwgc2VsZi5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MpDQoNCisgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4NTkNCg0KKyAgICAgICAgICAgIHNlbGYub3JkZXJlZGxpc3RGbGFnc0ZpZWxkKCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODY0DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjANCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4NjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm9yZGVyZWRsaXN0Rmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjYNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBPcmRlcmVkbGlzdEZs YWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52 b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K DQorICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWcg PSAwDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFVuaVF1ZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgTm9FbXB0eUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTm9FbXB0eUZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfb3JkZXJlZGxp c3RGbGFnc0ZpZWxkDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0T3JkZXJlZGxpc3RGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBvcmRlcmVkbGlzdEZsYWdzRmllbGQo c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuT3JkZXJl ZGxpc3RGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjgsIHNlbGYuUlVMRV9vcmRlcmVkbGlz dEZsYWdzRmllbGQpDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODcxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4NjcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlVuaVF1ZUZsYWddOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTg2OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlVuaVF1ZUZsYWcpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5vRW1wdHlGbGFnXToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4NjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Ob0VtcHR5RmxhZykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLCBWZnJT eW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZs YWcsIFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNl ci5MYXRlQ2hlY2tGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQ YXJzZXIuT3B0aW9uT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnF1 ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2Vw dGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5 Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREYXRlQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfREFURV9PUCkNCg0KKyAgICAgICAgICAgIHNlbGYu T3BPYmogPSBDSWZyRGF0ZSgpDQoNCisgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJ T05fVFlQRS5RVUVTVElPTl9EQVRFDQoNCisgICAgICAgICAgICBzZWxmLlZhbCA9IEVGSV9JRlJf VFlQRV9WQUxVRSgpDQoNCisgICAgICAgICAgICBzZWxmLkYxID0gTm9uZSAjIFRva2VuDQoNCisg ICAgICAgICAgICBzZWxmLkYyID0gTm9uZSAjIFRva2VuDQoNCisNCg0KKyAgICAgICAgZGVmIERh dGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRGF0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRW5kRGF0ZShzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmREYXRlLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9u SGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6 aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRp b25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFllYXIoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWWVhciwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhcklk LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYg UHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu UHJvbXB0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCBpKQ0KDQorDQoNCisgICAgICAg IGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4s IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5IZWxwKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgaSkNCg0KKw0KDQorICAgICAgICBk ZWYgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5NaW5NYXhEYXRlU3RlcERlZmF1bHRDb250ZXh0 KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NaW5NYXhEYXRlU3RlcERlZmF1bHRD b250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgTW9udGgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGgsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIERheShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EYXksIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZm ckRhdGVGbGFncyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGVGbGFnc0NvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZihzZWxmLCBpOmludD1O b25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zm clN0YXRlbWVudERhdGUNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnREYXRlIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU3RhdGVtZW50RGF0ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50RGF0ZShzZWxmKToNCg0KKw0K DQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREYXRlQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyMzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREYXRlKQ0KDQorICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5E YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjQNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Q cm9tcHQsIFZmclN5bnRheFBhcnNlci5OYW1lLCBWZnJTeW50YXhQYXJzZXIuVmFySWQsIFZmclN5 bnRheFBhcnNlci5RdWVzdGlvbklkXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTg3NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxjdHgu T3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODc1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODENCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLkZMQUdTOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Ng0KDQor ICAgICAgICAgICAgICAgICAgICBsb2NhbGN0eC5GMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Nw0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3OA0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnZmckRhdGVGbGFncygpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODc5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4 Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0 KGxvY2FsY3R4Lk5vZGUpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlllYXJdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODg1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuWWVhcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4Ng0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODg3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxODkxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTINCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTMNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk4DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwMQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTAyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTAzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA0DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTkwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhEYXRlU3RlcERlZmF1bHQobG9jYWxj dHguVmFsLmRhdGUsIDApDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDcNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Nb250aCkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwOA0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTA5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMA0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTENCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTEzDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTQNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5MTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTE2DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE5MTgNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTIwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5I ZWxwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTIyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTkyMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxOTI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTkyNw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI4DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5taW5NYXhEYXRlU3RlcERlZmF1bHQobG9jYWxjdHguVmFsLmRhdGUsIDEpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MjkNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5W YXJJZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzMQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MzINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTMzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RG90KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM0DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTM2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UHJvbXB0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTM3DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTkzOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQwDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTQxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTk0Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQzDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGVscCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTk0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDUNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Ng0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTk0Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0OA0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTk1MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWluTWF4RGF0ZVN0ZXBE ZWZhdWx0KGxvY2FsY3R4LlZhbC5kYXRlLCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTU2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5NTENCg0KKyAgICAgICAgICAgICAgICAgICAgbG9jYWxjdHgu RjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5NTINCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5NTMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZnJEYXRlRmxhZ3MoKQ0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1NA0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLklu Y29uc2lzdGVudElmOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1OA0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjMNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwYXNz DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTY2 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmREYXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NjcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIE1pbk1heERhdGVTdGVwRGVm YXVsdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSwgRGF0ZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRGF0ZSA9IE5vbmUNCg0K KyAgICAgICAgICAgIHNlbGYuS2V5VmFsdWUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4g PSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRGF0ZSA9IERhdGUNCg0KKyAgICAg ICAgICAgIHNlbGYuS2V5VmFsdWUgPSBLZXlWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRlZiBNaW5p bXVtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk1pbmltdW0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXhpbXVtKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk1heGltdW0sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RlcCwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgRGVmYXVsdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0LCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfbWluTWF4RGF0ZVN0ZXBEZWZhdWx0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0IiApOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBtaW5N YXhEYXRlU3RlcERlZmF1bHQoc2VsZiwgRGF0ZSwgS2V5VmFsdWUpOg0KDQorDQoNCisgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk1pbk1heERhdGVTdGVwRGVmYXVsdENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBEYXRlLCBLZXlWYWx1ZSkNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzMiwgc2VsZi5SVUxFX21pbk1heERhdGVTdGVwRGVm YXVsdCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTWluaW11bSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTcw DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTcyDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTczDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5NYXhpbXVtKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTk3NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzYNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5ODENCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0ZXA6DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5NzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdGVwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTc4DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTk4MA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTg3DQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5EZWZhdWx0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTgzDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5ODUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTg2DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisN Cg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyRGF0ZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KDQor DQoNCisgICAgICAgIGRlZiBkYXRlRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0 KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRlRmxhZ3NGaWVsZENvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRl RmxhZ3MNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJE YXRlRmxhZ3MiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJE YXRlRmxhZ3Moc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoN CisgICAgZGVmIHZmckRhdGVGbGFncyhzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJEYXRlRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzNCwgc2VsZi5S VUxFX3ZmckRhdGVGbGFncykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4OQ0KDQorICAgICAgICAgICAg c2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5NA0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTkwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lz ZU9yKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTkxDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBEYXRlRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkxGbGFnID0gMA0KDQorDQoNCisgICAgICAg IGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBZZWFyU3VwcHBy ZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5ZZWFyU3VwcHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTW9u dGhTdXBwcmVzc0ZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTW9udGhTdXBwcmVzc0ZsYWcsIDApDQoNCisNCg0KKyAgICAgICAg ZGVmIERheVN1cHByZXNzRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EYXlTdXBwcmVzc0ZsYWcsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIFN0b3JhZ2VOb3JtYWxGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBTdG9yYWdlVGltZUZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVRpbWVGbGFnLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBTdG9yYWdlV2FrZVVwRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZywg MCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGVGbGFnc0ZpZWxkDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0ZUZsYWdzRmllbGQiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRlRmxhZ3NGaWVsZChzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZGF0 ZUZsYWdzRmllbGQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzNiwgc2VsZi5SVUxFX2RhdGVG bGFnc0ZpZWxkKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTk3DQoNCisgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSAxODEpKSAm IH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE4MSkpICYgKCgxIDw8IChWZnJTeW50YXhQ YXJzZXIuWWVhclN1cHBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu TW9udGhTdXBwcmVzc0ZsYWcgLSAxODEpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGF5U3Vw cHJlc3NGbGFnIC0gMTgxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxG bGFnIC0gMTgxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZyAtIDE4 MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4MSkpKSkg IT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxm KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRUaW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVElNRV9PUCkN Cg0KKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyVGltZSgpDQoNCisgICAgICAgICAgICBz ZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAgICAgICAg ICBzZWxmLlZhbCA9IEVGSV9JRlJfVFlQRV9WQUxVRSgpDQoNCisgICAgICAgICAgICBzZWxmLkYx ID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLkYyID0gTm9uZSAjIFRva2VuDQoN CisNCg0KKyAgICAgICAgZGVmIFRpbWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGltZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg RW5kVGltZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5FbmRUaW1lLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIEhvdXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuSG91ciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFySWQoc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlZhcklkLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdJZGVu dGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIs IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgUHJvbXB0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0 LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBk ZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAg ICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4s IGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwg aSkNCg0KKw0KDQorICAgICAgICBkZWYgbWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5NaW5NYXhU aW1lU3RlcERlZmF1bHRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5N aW5NYXhUaW1lU3RlcERlZmF1bHRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg TWludXRlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk1pbnV0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vjb25kKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlY29u ZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyVGltZUZsYWdzKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy VGltZUZsYWdzQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEluY29uc2lzdGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbnRleHQpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElm Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VGltZQ0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFRpbWUiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNl bGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2 ZnJTdGF0ZW1lbnRUaW1lKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzOCwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFRpbWUpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTkNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpbWUpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjA5MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUs IFZmclN5bnRheFBhcnNlci5WYXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRdOg0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAwDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi52ZnJRdWVzdGlvbkhlYWRlcihsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDENCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAwNw0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDAyDQoNCisgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4 LkYxID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDAzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDA0DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyVGltZUZsYWdzKCkNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDUNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDA5DQoNCisgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuSG91cl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTENCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ib3VyKQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDEyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVmFySWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw MTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDE0DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjAxNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAx Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTcNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjAxOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlByb21wdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAxOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjANCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAyMQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAyMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMw0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwMjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAy NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjYNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjgNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwMzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDMxDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzINCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1pbk1heFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwudGltZSwgMCkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjAzMw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk1pbnV0ZSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAzNA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZhcklk KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjAzNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwMzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3Qp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzgNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDM5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9t cHQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDENCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDQyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw NDMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDQNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwNDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MDQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDcNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDQ4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0OQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUwDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDUxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1Mw0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDU0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5taW5NYXhUaW1lU3RlcERlZmF1 bHQobG9jYWxjdHguVmFsLnRpbWUsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwNTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZWNv bmQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTYNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA1Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTgNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDU5DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDYwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjA2MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDYyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDYzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2NA0K DQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2Vu KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMDY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDY3 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2OA0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDY5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuSGVscCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3MA0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjA3Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Mw0KDQor ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3NA0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwNzUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Ng0KDQorICAg ICAgICAgICAgICAgIHNlbGYubWluTWF4VGltZVN0ZXBEZWZhdWx0KGxvY2FsY3R4LlZhbC50aW1l LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDgyDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzcN Cg0KKyAgICAgICAgICAgICAgICAgICAgbG9jYWxjdHguRjIgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5GTEFHUykNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzgN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzkNCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi52ZnJUaW1lRmxhZ3MoKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjA4MA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwODcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg ICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmOg0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4NA0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIwODkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDkyDQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5FbmRUaW1lKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwOTMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv bikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIE1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgVGltZT1Ob25l LCBLZXlWYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuVGltZSA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuS2V5VmFs dWUgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAg ICAgICAgIHNlbGYuVGltZSA9IFRpbWUNCg0KKyAgICAgICAgICAgIHNlbGYuS2V5VmFsdWUgPSBL ZXlWYWx1ZQ0KDQorDQoNCisgICAgICAgIGRlZiBNaW5pbXVtKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbmltdW0sIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkN Cg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KDQorDQoNCisgICAgICAgIGRlZiBNYXhpbXVtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1heGltdW0sIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIFN0ZXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuU3RlcCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRGVmYXVsdChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5EZWZhdWx0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbWluTWF4VGltZVN0ZXBE ZWZhdWx0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TWlu TWF4VGltZVN0ZXBEZWZhdWx0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0TWluTWF4VGltZVN0ZXBEZWZhdWx0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBtaW5NYXhUaW1lU3RlcERlZmF1bHQoc2VsZiwg VGltZSwgS2V5VmFsdWUpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLk1pbk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlLCBUaW1lLCBLZXlWYWx1ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI0MCwgc2VsZi5SVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCkNCg0KKyAgICAgICAgc2VsZi5f bGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjA5NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWluaW11bSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk2DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIw OTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk5 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXhpbXVtKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwMQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDcNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLlN0ZXA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDMNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdGVwKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjEwNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwNg0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTEzDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5EZWZhdWx0Og0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTA5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjExMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTENCg0KKyAgICAgICAgICAgICAg ICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTEyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K DQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyVGlt ZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9r aW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KDQorDQoNCisgICAgICAgIGRlZiB0aW1lRmxh Z3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJT eW50YXhQYXJzZXIuVGltZUZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJUaW1lRmxhZ3MNCg0KKw0KDQorICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJUaW1lRmxhZ3MiICk6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJUaW1lRmxhZ3Moc2VsZikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclRpbWVGbGFncyhz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJUaW1l RmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDI0Miwgc2VsZi5SVUxFX3ZmclRpbWVGbGFncykNCg0KKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjExNQ0KDQorICAgICAgICAgICAgc2VsZi50aW1lRmxhZ3NGaWVsZCgpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyMA0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTE2DQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTE3DQoNCisgICAgICAgICAgICAgICAgc2VsZi50aW1lRmxhZ3NGaWVs ZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjINCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBUaW1lRmxhZ3NGaWVsZENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLkxGbGFnID0gMA0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBIb3VyU3VwcHByZXNzRmxhZyhzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ib3VyU3VwcHByZXNz RmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTWludXRlU3VwcHJlc3NGbGFnKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbnV0 ZVN1cHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU2Vjb25kU3VwcHJlc3NGbGFn KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNlY29uZFN1cHByZXNzRmxhZywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RvcmFnZU5v cm1hbEZsYWcoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RvcmFnZU5vcm1hbEZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0 b3JhZ2VUaW1lRmxhZyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdG9yYWdlVGltZUZsYWcsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IFN0b3JhZ2VXYWtlVXBGbGFnKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VXYWtlVXBGbGFnLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfdGltZUZsYWdzRmllbGQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRUaW1lRmxhZ3NGaWVsZCIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFRpbWVGbGFnc0ZpZWxkKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0aW1lRmxhZ3NGaWVsZChzZWxm KToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5UaW1lRmxhZ3NG aWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjQ0LCBzZWxmLlJVTEVfdGltZUZsYWdzRmllbGQpDQoNCisg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxMjMNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4NCkpICYgfjB4M2YpID09IDAgYW5k ICgoMSA8PCAoX2xhIC0gMTg0KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ib3VyU3VwcHBy ZXNzRmxhZyAtIDE4NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NaW51dGVTdXBwcmVzc0Zs YWcgLSAxODQpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU2Vjb25kU3VwcHJlc3NGbGFnIC0g MTg0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnIC0gMTg0KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZyAtIDE4NCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4NCkpKSkgIT0gMCkgb3IgX2xh PT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRp b25hbENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisg ICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRl bWVudERpc2FibGVJZlN0YXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0 Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KDQorDQoNCisgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFs IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 Q29uZGl0aW9uYWwoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENvbmRpdGlvbmFsQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyNDYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCkNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4g PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5EaXNhYmxlSWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyNQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlN1cHByZXNzSWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyNg0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5HcmF5T3V0SWZdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEyNw0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50R3JheU91dElmU3RhdCgpDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjgN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdCgp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWZTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3IiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxO ZXcoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3KHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3Q29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAyNDgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldykNCg0K KyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCg0KKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjEzMg0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5l dygpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEzMw0KDQorICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTM0DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29uc2lzdGVudElm U3RhdCgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0K KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQor DQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxm Lk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZT dGF0TmV3KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNz SWZTdGF0DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy U3RhdGVtZW50U3VwcHJlc3NJZlN0YXQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdChzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1MCwgc2VsZi5S VUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjEzNg0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVz c0lmU3RhdE5ldygpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50 PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91 dElmU3RhdE5ldyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdChzZWxmKQ0KDQorICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91 dElmU3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTIsIHNlbGYuUlVM RV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjEzOA0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0TmV3KCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9k ZSA9IE5vbmUNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN0YXRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg dmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25z Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlv bmFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRFeHRlbnNpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0 LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0DQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3QiICk6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxm KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZy U3RhdGVtZW50U3RhdExpc3Qoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1NCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE0Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlLCBWZnJTeW50 YXhQYXJzZXIuVGV4dCwgVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNlci5SZXNl dEJ1dHRvbl06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTQwDQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0KCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2YsIFZmclN5 bnRheFBhcnNlci5PcmRlcmVkTGlzdCwgVmZyU3ludGF4UGFyc2VyLkRhdGUsIFZmclN5bnRheFBh cnNlci5UaW1lLCBWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsIFZmclN5bnRheFBhcnNlci5OdW1l cmljLCBWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5bnRheFBhcnNlci5TdHJpbmcsIFZm clN5bnRheFBhcnNlci5BY3Rpb25dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0MQ0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuR3JheU91dElmLCBWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiwgVmZyU3ludGF4UGFy c2VyLkRpc2FibGVJZiwgVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmXToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxNDINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudENvbmRpdGlvbmFsKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGFiZWxdOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjE0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TGFi ZWwoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjE0NA0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLCBWZnJTeW50YXhQ YXJzZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE0NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxp ZCgpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0 YXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFF1ZXN0aW9uc0NvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRMYWJlbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExhYmVsQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWQoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0T2xkIiApOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3RPbGQoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZm clN0YXRlbWVudFN0YXRMaXN0T2xkKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy NTYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZCkNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTINCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdWJ0aXRs ZSwgVmZyU3ludGF4UGFyc2VyLlRleHQsIFZmclN5bnRheFBhcnNlci5Hb3RvLCBWZnJTeW50YXhQ YXJzZXIuUmVzZXRCdXR0b25dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0OA0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdCgpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9u ZU9mLCBWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsIFZmclN5bnRheFBhcnNlci5EYXRlLCBW ZnJTeW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94LCBWZnJTeW50YXhQ YXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50YXhQYXJzZXIu U3RyaW5nLCBWZnJTeW50YXhQYXJzZXIuQWN0aW9uXToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxNDkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9ucygp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkxhYmVsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTAN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudExhYmVsKCkNCg0KKyAgICAgICAg ICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQYXJzZXIuSGlkZGVuLCBWZnJTeW50YXhQYXJzZXIuUmVz dG9yZSwgVmZyU3ludGF4UGFyc2VyLlNhdmVdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjE1MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW52YWxpZCgpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisN Cg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVG SV9JRlJfRElTQUJMRV9JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRp c2FibGVJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0 Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3Rh dExpc3RDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudERpc2FibGVJZlN0YXQNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0IiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdChzZWxmKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVt ZW50RGlzYWJsZUlmU3RhdChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTgs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KQ0KDQorICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTU0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1NQ0KDQorICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU2 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2MA0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQg KCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lT2YgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4 dCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR3JheU91 dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFu ZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0 ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtIDExMCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAt IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU3DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxNjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2NA0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgVmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIFN1cHByZXNz SWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU3VwcHJlc3NJZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhw cmVzc2lvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0LDApDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGZs YWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZy U3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENv bW1hKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNvbW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50Z3JheW91dElmU3VwcHJlc3NJZiIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudGdy YXlvdXRJZlN1cHByZXNzSWYoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0K Kw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWYoc2VsZik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 Z3JheW91dElmU3VwcHJlc3NJZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjYwLCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50Z3JheW91dElmU3VwcHJlc3NJZikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Ng0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZikNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTc5DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTY4 DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2OQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNzQNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNzANCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjE3MQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3Ng0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTc3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODENCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjE4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAg ICAgICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQml0 V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZg0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudHN1cHBy ZXNzSWZHcmF5T3V0SWYiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRzdXBwcmVzc0lm R3JheU91dElmKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2Miwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYpDQoNCisgICAgICAgIHNl bGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxODQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyYXlP dXRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTk3DQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4NQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMTg2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4Nw0KDQorICAg ICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxOTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxODgNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE4OQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdz RmllbGQoKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE5NA0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIxOTkNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAg ICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXROZXdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVT U19JRl9PUCkNCg0KKw0KDQorICAgICAgICBkZWYgU3VwcHJlc3NJZihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAg IGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoN CisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu RmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdz RmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRTdGF0TGlzdENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJp dFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3VwcHJl c3NJZlN0YXROZXciICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRO ZXcoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXdDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2NCwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAyDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMTUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyMDQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA1DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIx MA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAg d2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjIwNg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjA3DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjEyDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyMTMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxNw0KDQor ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjE4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyMg0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkg JiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8IChWZnJTeW50YXhQ YXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRhdGUg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFi ZWwgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFy c2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNh YmxlSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yICgoKChfbGEgLSAxMTAp KSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8IChWZnJTeW50 YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu UmVzdG9yZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3Ag LSAxMTApKSkpICE9IDApOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjE5DQoN CisgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0TGlzdCgpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyNQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjIyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ld0NvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dSQVlfT1VUX0lGX09QKQ0KDQorDQoN CisgICAgICAgIGRlZiBHcmF5T3V0SWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IEVuZElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywg MCkNCg0KKw0KDQorICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQoN CisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdENvbnRl eHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0 Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmlu dD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3IiApOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3JheU91dElm U3RhdE5ldyhzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKToNCg0KKw0KDQorICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0 TmV3Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyNjYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRHcmF5T3V0SWZT dGF0TmV3KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjI4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjI0MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuRkxBR1M6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIy MjkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzMA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyMzENCg0KKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM2DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjMyDQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzMNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyMzgNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIzOQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorDQoNCisNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQzDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDQNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjQ4DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisg ICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwg KF9sYSAtIDQ2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0 NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNr Qm94IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8g LSA0NikpKSkgIT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8 PCAoX2xhIC0gMTEwKSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAt IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXN0b3JlIC0gMTEwKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVz ZXRCdXR0b24gLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQWN0aW9uIC0gMTEwKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkd1aWRPcCAtIDExMCkpKSkgIT0gMCk6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFN0YXRMaXN0KCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1 MA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjUxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRJZikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjUyDQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBW ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5v ZGUoRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIEluY29u c2lzdGVudElmKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBQcm9t cHQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuUHJvbXB0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElm LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCg0KKw0KDQorICAgICAgICBkZWYg ZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg Qml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0DQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50SW5j b25zaXN0ZW50SWZTdGF0IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3Rl bnRJZlN0YXQoc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNjgsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQpDQoNCisgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyNTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkluY29uc2lz dGVudElmKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTUNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTcNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyNTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjU5DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjI2MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYxDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjc0DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjI2Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYzDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuZmxh Z3NGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09 VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyNjUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2 Ng0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KDQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3MQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjcy DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNzYNCg0KKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjI3Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI3OA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0K KyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50 SW52YWxpZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoN CisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHNDb250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWQNCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxp ZChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBk ZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsIHNlbGYuc3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzAs IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI4Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkhpZGRlbl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjgwDQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRJbnZhbGlkSGlkZGVuKCkNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5XToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODENCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXN0b3JlLCBWZnJTeW50 YXhQYXJzZXIuU2F2ZV06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjgyDQoNCisgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cygp DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBj bGFzcyBWZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNl clJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKw0KDQorICAgICAgICBkZWYgSGlkZGVuKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkhpZGRl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFsdWUsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEtl eShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5LZXksIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVu DQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmclN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K DQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRIaWRkZW4o c2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjcyLCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50SW52YWxpZEhpZGRlbikNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIyODUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhpZGRlbikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg2DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5WYWx1ZSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mjg3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg5 DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5MQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjkyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI5Mw0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgVmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisNCg0KKyAgICAgICAgZGVmIEludmVudG9yeShzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5J bnZlbnRvcnksIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9 Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIE51bWJlcihz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xv c2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIFRleHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgaSkNCg0KKw0K DQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkNCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50 b3J5IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50SW52YWxpZEludmVudG9yeShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0K DQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeShzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJ bnZhbGlkSW52ZW50b3J5Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoNCisg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1l bnRJbnZhbGlkSW52ZW50b3J5KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk1DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjI5Ng0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuSGVscCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk3DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyOTgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTkNCg0KKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwMQ0KDQorICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMzAyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAzDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzMDQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwNQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjMwNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDcNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMzA4DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDkNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzMTYNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlRleHQ6DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzMTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UZXh0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzExDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMxMg0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzEzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE0DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE1DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKw0KDQorDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjMxOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmlu YWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4g bG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50SW52YWxpZFNhdmVS ZXN0b3JlRGVmYXVsdHNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KDQorDQoNCisgICAgICAgIGRlZiBEZWZhdWx0cyhzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0cywgMCkNCg0KKw0K DQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQor DQoNCisgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAg ICAgZGVmIFByb21wdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rv a2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgaSkNCg0KKw0KDQor ICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVu LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0K DQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIEhlbHAoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgU2F2ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TYXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBSZXN0 b3JlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlJlc3RvcmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCg0K Kw0KDQorDQoNCisgICAgICAgIGRlZiBLZXkoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZh dWx0cw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVs dHMoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRT YXZlUmVzdG9yZURlZmF1bHRzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNzYsIHNlbGYuUlVMRV92ZnJTdGF0 ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cykNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyMA0K DQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlm IG5vdChfbGE9PVZmclN5bnRheFBhcnNlci5SZXN0b3JlIG9yIF9sYT09VmZyU3ludGF4UGFyc2Vy LlNhdmUpOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGlu ZShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5jb25z dW1lKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIxDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EZWZhdWx0cykNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzIyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIzDQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMyNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI1DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjMyNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyNw0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIzMjgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjMzMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzENCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzMyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzMNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMzQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhl bHApDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzM2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM3DQoNCisgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjMzOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzkNCg0KKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM1MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNl bGYuX2lucHV0LDE4MSxzZWxmLl9jdHgpDQoNCisgICAgICAgICAgICBpZiBsYV8gPT0gMToNCg0K KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0MA0KDQorICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzQxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNDINCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzQzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0Zp ZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0OA0KDQorICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjM0NA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQ1DQoN CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzUwDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz NTcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzUz DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTQNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzNTUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU2DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorDQoNCisNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAg ICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAg IHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRMYWJl bENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dVSURfT1ApDQoNCisNCg0K KyAgICAgICAgZGVmIExhYmVsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxhYmVsLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50TGFiZWwNCg0K Kw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRM YWJlbCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudExhYmVsKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0K DQorICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg Mjc4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50TGFiZWwpDQoNCisgICAgICAgIHRyeToNCg0KKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzYxDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5MYWJlbCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzYyDQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM2Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K DQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYu Tm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCg0KKw0KDQorICAgICAgICBkZWYg QmFubmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJhbm5lciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVGl0bGUoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGl0bGUs IDApDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBMaW5lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkxpbmUsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEFsaWduKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkFsaWduLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBUaW1lb3V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpbWVvdXQsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIExlZnQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTGVmdCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2VudGVyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNlbnRlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgUmlnaHQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmlnaHQsIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXINCg0KKw0KDQorICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIiICk6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRCYW5uZXIo c2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVm IHZmclN0YXRlbWVudEJhbm5lcihzZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCYW5uZXJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4MCwgc2Vs Zi5SVUxFX3ZmclN0YXRlbWVudEJhbm5lcikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2NQ0KDQorICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQmFubmVyKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzNjcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1hOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzY2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz NjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRpdGxlKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3MQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIzNzMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzc0DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzNzUNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODYNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MaW5l XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3Ng0KDQorICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxpbmUpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIzNzcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzgNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkFsaWduKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzgwDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0K KyAgICAgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDEzNikpICYgfjB4M2YpID09IDAgYW5k ICgoMSA8PCAoX2xhIC0gMTM2KSkgJiAoKDEgPDwgKFZmclN5bnRheFBhcnNlci5MZWZ0IC0gMTM2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJpZ2h0IC0gMTM2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkNlbnRlciAtIDEzNikpKSkgIT0gMCkpOg0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1h dGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRpbWVvdXRdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzgyDQoNCisgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZW91dCkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODQNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBm aW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVy biBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRFeHRlbnNpb25D b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KDQorICAgICAg ICAgICAgc2VsZi5EYXRhQnVmZiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuU2l6ZSA9IDAN Cg0KKyAgICAgICAgICAgIHNlbGYuVHlwZU5hbWUgPSAnJw0KDQorICAgICAgICAgICAgc2VsZi5U eXBlU2l6ZSA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBGYWxzZQ0KDQorICAg ICAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCg0KKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUg IyBUb2tlbg0KDQorDQoNCisgICAgICAgIGRlZiBHdWlkT3Aoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3VpZE9wLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGd1aWRE ZWZpbml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBFbmRHdWlkT3Aoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kR3VpZE9wLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBEYXRhVHlwZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EYXRhVHlwZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDY0KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlVpbnQ2NCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgVWludDE2KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgVWludDgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVWludDgsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEJvb2xlYW4oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQm9v bGVhbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgRUZJX1NUUklOR19JRChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5H X0lELCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX0RBVEUoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRF LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1RJTUUoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBFRklfSElJX1JFRihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHRlbnNpb25EYXRhKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJFeHRlbnNpb25E YXRhQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9u RGF0YUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRl bnNpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQsaSkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xv c2VCcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEV4dGVuc2lvbiIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50 RXh0ZW5zaW9uKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0 YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjgyLCBzZWxmLlJVTEVf dmZyU3RhdGVtZW50RXh0ZW5zaW9uKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzg4DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HdWlkT3ApDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM4OQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVXVpZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzkwDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzOTENCg0KKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZl UHJlZGljdChzZWxmLl9pbnB1dCwxOTcsc2VsZi5fY3R4KQ0KDQorICAgICAgICAgICAgaWYgbGFf ID09IDE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTINCg0KKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjM5Mw0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkQgPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhVHlwZSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM5NA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM5NQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5VaW50NjQpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Mzk5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk2DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzk3DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5OA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQwMQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5VaW50MzIpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDA1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDAyDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDAzDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwNA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MTZdOg0KDQorICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQwNw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5VaW50MTYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDExDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA4DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA5DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxMA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50OF06DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDEzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlVpbnQ4KQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQx Nw0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNQ0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MTYNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCg0KKw0KDQorDQoN CisgICAgICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuQm9vbGVhbl06DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDE5DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkJvb2xlYW4pDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDIzDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIwDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIxDQoNCisgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyMg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisN Cg0KKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEXToNCg0KKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0MjUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRUZJX1NUUklOR19JRCkNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0MjkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjYNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MjcNCg0K KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDI4DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNr ZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURV06DQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDMxDQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzUNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0MzINCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0MzMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NDM0DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlf VElNRV06DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM3DQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSkN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDENCg0KKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI0MzgNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI0MzkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDQwDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLkVGSV9ISUlfUkVGXToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 NDMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJ X0hJSV9SRUYpDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ3DQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ0DQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDQ1DQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQ0Ng0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyXToNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0NDkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI0NTMNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTANCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTENCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDUyDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQp DQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRp b24oc2VsZikNCg0KKw0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDYwDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICAgICAgX2FsdCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTk2 LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1B VE4uSU5WQUxJRF9BTFRfTlVNQkVSOg0KDQorICAgICAgICAgICAgICAgICAgICBpZiBfYWx0PT0x Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTcNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRXh0ZW5zaW9uRGF0YShsb2NhbGN0eC5EYXRhQnVm ZikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjINCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAg ICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDE5 NixzZWxmLl9jdHgpDQoNCisNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjQ3Mw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1W ZnJTeW50YXhQYXJzZXIuQ29tbWE6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0 NjUNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2OQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQ YXJzZXIuR3VpZE9wOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2Ng0K DQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVuc2lvbigpDQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDcxDQoNCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI0NzINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F bmRHdWlkT3ApDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzUNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFZmckV4dGVuc2lvbkRhdGFDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIERhdGFCdWZmPU5vbmUpOg0KDQorICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5EYXRhQnVm ZiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuRGF0YUJ1ZmYg PSBEYXRhQnVmZg0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgRGF0YShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EYXRhLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1i ZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQoNCisNCg0KKyAgICAgICAgZGVm IE9wZW5CcmFja2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9z ZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBEb3Qoc2Vs ZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Eb3QsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGFycmF5TmFtZShz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuQXJyYXlOYW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQXJy YXlOYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHRl bnNpb25EYXRhDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyRXh0ZW5zaW9uRGF0YSIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckV4dGVuc2lvbkRhdGEoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4dGVuc2lvbkRhdGEoc2VsZiwgRGF0YUJ1ZmYpOg0K DQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lvbkRh dGFDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRGF0YUJ1ZmYpDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyODQsIHNlbGYuUlVMRV92ZnJFeHRlbnNpb25E YXRhKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc4DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5EYXRhKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI0ODINCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDc5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI0ODANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODENCg0KKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQoNCisN Cg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODgNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkRvdDoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4NA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRvdCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQ4NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuYXJyYXlOYW1lKCkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5MA0KDQorICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDkxDQoNCisgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI0OTINCg0KKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRNb2RhbENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAg ICAgICBzZWxmLk5vZGUgPSBOb25lDQoNCisNCg0KKyAgICAgICAgZGVmIHZmck1vZGFsVGFnKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgU2VtaWNvbG9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudE1vZGFsDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyU3RhdGVtZW50TW9kYWwiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRNb2RhbChzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50TW9kYWwoc2VsZik6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 TW9kYWxDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE1vZGFsKQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5NA0KDQorICAgICAgICAgICAg c2VsZi52ZnJNb2RhbFRhZygpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5NQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KDQorICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAg Y2xhc3MgVmZyTW9kYWxUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9N T0RBTF9UQUdfT1ApDQoNCisNCg0KKyAgICAgICAgZGVmIE1vZGFsKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1vZGFsLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTW9kYWxUYWcNCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJNb2RhbFRhZyIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck1vZGFsVGFnKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB2ZnJNb2RhbFRhZyhzZWxmKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0Nv bnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMjg4LCBzZWxmLlJVTEVfdmZyTW9kYWxUYWcpDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDk3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Nb2RhbCkNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZp bmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclN0YXRlbWVudEV4cHJlc3Npb25D b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gRXhwcmVzc2lvbkluZm8oKQ0KDQorDQoNCisgICAgICAgIGRl ZiBhbmRUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuQW5kVGVybUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBPUihzZWxm LCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9SKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT1IsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmclN0YXRlbWVudEV4cHJl c3Npb24oc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjkwLCBzZWxmLlJVTEVfdmZy U3RhdGVtZW50RXhwcmVzc2lvbikNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5OQ0KDQorICAgICAgICAg ICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjUwNA0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hp bGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT1I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI1MDANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P UikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUwMQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuYW5kVGVybShsb2NhbGN0eC5FeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHByZXNzaW9uSW5mbygpDQoNCisNCg0KKyAgICAgICAgZGVmIGFuZFRlcm0oc2VsZiwgaTpp bnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkFuZFRl cm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BbmRUZXJtQ29udGV4 dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIE9SKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT1IpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PUiwg aSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihz ZWxmKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTIsIHNlbGYuUlVMRV92ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA3DQoNCisgICAgICAgICAg ICBzZWxmLmFuZFRlcm0obG9jYWxjdHguRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNTEyDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGls ZSBfbGE9PVZmclN5bnRheFBhcnNlci5PUjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjUwOA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9S KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTA5DQoNCisgICAgICAgICAgICAg ICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI1MTQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBBbmRUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyQW5kTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGJpdHdpc2VvclRlcm0o c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkJpdHdpc2VvclRlcm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5CaXR3aXNlb3JUZXJtQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIEFORChz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkFORCkNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkFORCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2Fu ZFRlcm0NCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBbmRU ZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QW5kVGVybShz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg YW5kVGVybShzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5BbmRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4 cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTQsIHNlbGYuUlVM RV9hbmRUZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAg ICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTE1DQoNCisgICAgICAgICAgICBzZWxmLmJp dHdpc2VvclRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTIwDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5 bnRheFBhcnNlci5BTkQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTYNCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BTkQpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmJp dHdpc2VvclRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUy Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEJp dHdpc2VvclRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLkNJZnJCaXRXaXNlT3JMaXN0ID0gW10NCg0KKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgYml0d2lzZWFuZFRlcm0o c2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkJpdHdpc2VhbmRUZXJtQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQml0 V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfYml0d2lzZW9yVGVybQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdEJpdHdpc2VvclRlcm0iICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlb3JUZXJtKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBiaXR3aXNlb3JUZXJtKHNlbGYs IEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkJp dHdpc2VvclRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykN Cg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI5Niwgc2VsZi5SVUxFX2JpdHdp c2VvclRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjMNCg0KKyAgICAgICAgICAgIHNlbGYuYml0 d2lzZWFuZFRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTI4DQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 MjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MjUNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmJpdHdpc2VhbmRUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI1MzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorDQoN CisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0K KyAgICBjbGFzcyBCaXR3aXNlYW5kVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckJpdFdpc2VBbmRMaXN0ID0gW10NCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYg ZXF1YWxUZXJtKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5FcXVhbFRlcm1Db250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQml0 V2lzZUFuZChzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VBbmQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kLCBpKQ0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfYml0d2lzZWFuZFRlcm0NCg0KKw0KDQorICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNlYW5kVGVybSIgKToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJpdHdpc2VhbmRUZXJtKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBiaXR3aXNlYW5kVGVy bShzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5CaXR3aXNlYW5kVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjk4LCBzZWxmLlJV TEVfYml0d2lzZWFuZFRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzENCg0KKyAgICAgICAgICAg IHNlbGYuZXF1YWxUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUz Ng0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1W ZnJTeW50YXhQYXJzZXIuQml0V2lzZUFuZDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjUzMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VBbmQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzMNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVxdWFsVGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTM4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgRXF1YWxUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gW10NCg0KKyAgICAgICAg ICAgIHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQ29tcGFyZVRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZXF1YWxU ZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0 LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2VxdWFsVGVybQ0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybSIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybShzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZXF1YWxUZXJtKHNl bGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkVxdWFsVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzAwLCBzZWxmLlJVTEVfZXF1YWxU ZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM5DQoNCisgICAgICAgICAgICBzZWxmLmNvbXBhcmVU ZXJtKGxvY2FsY3R4LkV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0Mw0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuRXF1YWwgb3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuTm90RXF1YWw6DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NDANCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVxdWFsVGVybVN1cHBsZW1lbnRhcnkobG9jYWxjdHguQ0lmckVxdWFsTGlzdCwgbG9jYWxjdHgu Q0lmck5vdEVxdWFsTGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU0NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNs YXNzIEVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJFcXVhbExpc3Q9Tm9uZSwg Q0lmck5vdEVxdWFsTGlzdD1Ob25lLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTm90RXF1YWxMaXN0ID0gTm9uZQ0KDQorICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxM aXN0ID0gQ0lmckVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTm90RXF1YWxMaXN0 ID0gQ0lmck5vdEVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5m bw0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5 DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVD b250ZXh0KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAg ICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gY3R4LkNJZnJFcXVhbExpc3QNCg0KKyAgICAgICAg ICAgIHNlbGYuQ0lmck5vdEVxdWFsTGlzdCA9IGN0eC5DSWZyTm90RXF1YWxMaXN0DQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKw0KDQorICAg IGNsYXNzIEVxdWFsVGVybUVxdWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQ YXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJt U3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy c2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAg ZGVmIEVxdWFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KDQorICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5Db21wYXJlVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEVxdWFsVGVybUVxdWFsUnVsZSIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybUVxdWFsUnVsZShzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEVxdWFsVGVybU5vdEVx dWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6 ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRl eHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAg ICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIE5vdEVxdWFsKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5v dEVxdWFsLCAwKQ0KDQorICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Db21w YXJlVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZSIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybU5vdEVxdWFsUnVsZShzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1l bnRhcnkoc2VsZiwgQ0lmckVxdWFsTGlzdCwgQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5mbyk6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtU3VwcGxl bWVudGFyeUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBDSWZyRXF1YWxMaXN0 LCBDSWZyTm90RXF1YWxMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzAyLCBzZWxmLlJVTEVfZXF1YWxUZXJtU3VwcGxlbWVudGFyeSkNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTANCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5FcXVhbF06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu RXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1NDYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0Nw0KDQor ICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAg ICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu Tm90RXF1YWxdOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkVxdWFsVGVybU5vdEVxdWFsUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTQ4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTm90RXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1 NDkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVUZXJtKEV4cEluZm8pDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDb21w YXJlVGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZv a2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJz ZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAg ICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkNJ ZnJMZXNzRXF1YWxMaXN0ID0gW10NCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckdyZWF0ZXJUaGFu TGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVyRXF1YWxMaXN0ID0gW10N Cg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBk ZWYgc2hpZnRUZXJtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1T dXBwbGVtZW50YXJ5Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ29t cGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9jb21wYXJlVGVybQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdENvbXBhcmVUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q29tcGFyZVRlcm0oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisN Cg0KKw0KDQorDQoNCisgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYsIEV4cEluZm8pOg0KDQorDQoN CisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAzMDQsIHNlbGYuUlVMRV9jb21wYXJlVGVybSkNCg0KKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjU1Mg0KDQorICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTU2DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICB3aGlsZSAoKChfbGEpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCBfbGEp ICYgKCgxIDw8IFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpIHwgKDEgPDwgVmZyU3ludGF4UGFy c2VyLkxlc3MpIHwgKDEgPDwgVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkgfCAoMSA8PCBW ZnJTeW50YXhQYXJzZXIuR3JlYXRlcikpKSAhPSAwKToNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU1Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29tcGFyZVRlcm1TdXBwbGVt ZW50YXJ5KGxvY2FsY3R4LkNJZnJMZXNzVGhhbkxpc3QsIGxvY2FsY3R4LkNJZnJMZXNzRXF1YWxM aXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRlclRoYW5MaXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRlckVx dWFsTGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU1OA0K DQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIENvbXBh cmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmckxlc3NUaGFuTGlzdD1Ob25lLCBDSWZy TGVzc0VxdWFsTGlzdD1Ob25lLCBDSWZyR3JlYXRlclRoYW5MaXN0PU5vbmUsIENJZnJHcmVhdGVy RXF1YWxMaXN0PU5vbmUsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzVGhhbkxpc3QgPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzRXF1YWxMaXN0ID0gTm9uZQ0KDQorICAgICAgICAg ICAgc2VsZi5DSWZyR3JlYXRlclRoYW5MaXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5D SWZyR3JlYXRlckVxdWFsTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IENJZnJMZXNzVGhh bkxpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NFcXVhbExpc3QgPSBDSWZyTGVzc0Vx dWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlclRoYW5MaXN0ID0gQ0lmckdy ZWF0ZXJUaGFuTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlckVxdWFsTGlzdCA9 IENJZnJHcmVhdGVyRXF1YWxMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbXBhcmVUZXJtU3VwcGxlbWVu dGFyeQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCg0KKyAg ICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IGN0eC5DSWZyTGVzc1RoYW5MaXN0DQoN CisgICAgICAgICAgICBzZWxmLkNJZnJMZXNzRXF1YWxMaXN0ID0gY3R4LkNJZnJMZXNzRXF1YWxM aXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVyVGhhbkxpc3QgPSBjdHguQ0lmckdy ZWF0ZXJUaGFuTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlckVxdWFsTGlzdCA9 IGN0eC5DSWZyR3JlYXRlckVxdWFsTGlzdA0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Y3R4LkV4cEluZm8NCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDb21wYXJlVGVybUxlc3NS dWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAj IGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRl eHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAg ICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIExlc3Moc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzcywg MCkNCg0KKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dENvbXBhcmVUZXJtTGVzc1J1bGUiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDb21wYXJlVGVybUxlc3NSdWxlKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dChD b21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGEg VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5 RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1 YWwsIDApDQoNCisgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1D b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVhbFJ1bGUoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDb21wYXJlVGVybUdyZWF0 ZXJSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQp OiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAg ICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXIoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu R3JlYXRlciwgMCkNCg0KKyAgICAgICAgZGVmIHNoaWZ0VGVybShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0 VGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUiICk6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgQ29tcGFyZVRlcm1MZXNzRXF1YWxS dWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAj IGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRl eHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAg ICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIExlc3NFcXVhbChzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5M ZXNzRXF1YWwsIDApDQoNCisgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TaGlm dFRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRDb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUiICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUoc2VsZikNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBjb21wYXJlVGVybVN1 cHBsZW1lbnRhcnkoc2VsZiwgQ0lmckxlc3NUaGFuTGlzdCwgQ0lmckxlc3NFcXVhbExpc3QsIENJ ZnJHcmVhdGVyVGhhbkxpc3QsIENJZnJHcmVhdGVyRXF1YWxMaXN0LCBFeHBJbmZvKToNCg0KKw0K DQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybVN1cHBsZW1l bnRhcnlDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmckxlc3NUaGFuTGlz dCwgQ0lmckxlc3NFcXVhbExpc3QsIENJZnJHcmVhdGVyVGhhbkxpc3QsIENJZnJHcmVhdGVyRXF1 YWxMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzA2 LCBzZWxmLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KQ0KDQorICAgICAgICB0cnk6DQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2Nw0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NdOg0K DQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt TGVzc1J1bGVDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU1OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxl c3MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjANCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnNoaWZ0VGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZXNzRXF1YWxdOg0K DQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt TGVzc0VxdWFsUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNTYxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTGVzc0VxdWFsKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAg ICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3Jl YXRlcl06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQ29t cGFyZVRlcm1HcmVhdGVyUnVsZUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTYzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuR3JlYXRlcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2NA0K DQorICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkdyZWF0ZXJFcXVhbF06DQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjUNCg0KKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI1NjYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnNoaWZ0VGVybShFeHBJ bmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgU2hpZnRUZXJtQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRMZWZ0TGlzdCA9IFtdDQoNCisgICAgICAg ICAgICBzZWxmLkNJZnJTaGlmdFJpZ2h0TGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBz aGlmdFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2hpZnRUZXJtDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U2hpZnRUZXJtIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U2hpZnRUZXJtKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBzaGlmdFRl cm0oc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuU2hpZnRUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cElu Zm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDgsIHNlbGYuUlVMRV9z aGlmdFRlcm0pDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAg ICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NjkNCg0KKyAgICAgICAgICAgIHNlbGYuYWRk TWludXNUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3Mw0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50 YXhQYXJzZXIuVF9fOSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5UX18xMDoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjU3MA0KDQorICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRU ZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyU2hpZnRMZWZ0TGlzdCwgbG9jYWxjdHguQ0lm clNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNTc1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoN CisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKw0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmclNoaWZ0TGVmdExpc3Q9Tm9u ZSwgQ0lmclNoaWZ0UmlnaHRMaXN0PU5vbmUsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdExlZnRM aXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU2hpZnRSaWdodExpc3QgPSBOb25l DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm LkNJZnJTaGlmdExlZnRMaXN0ID0gQ0lmclNoaWZ0TGVmdExpc3QNCg0KKyAgICAgICAgICAgIHNl bGYuQ0lmclNoaWZ0UmlnaHRMaXN0ID0gQ0lmclNoaWZ0UmlnaHRMaXN0DQoNCisgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3NoaWZ0VGVybVN1cHBsZW1lbnRhcnkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBjb3B5RnJv bShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5j b3B5RnJvbShjdHgpDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdExlZnRMaXN0ID0gY3R4 LkNJZnJTaGlmdExlZnRMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdFJpZ2h0TGlz dCA9IGN0eC5DSWZyU2hpZnRSaWdodExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgU2hpZnRUZXJtUmlnaHRD b250ZXh0KFNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVh bGx5IGEgVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQoNCisg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCg0KKyAgICAgICAgICAgIHNlbGYu Y29weUZyb20oY3R4KQ0KDQorDQoNCisgICAgICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTaGlmdFRlcm1SaWdodCIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYpDQoNCisgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgU2hpZnRUZXJtTGVmdENvbnRleHQoU2hp ZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJT eW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShj dHgpDQoNCisNCg0KKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkFkZE1p bnVzVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFNoaWZ0VGVybUxlZnQiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRTaGlmdFRlcm1MZWZ0KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgc2hpZnRUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBDSWZy U2hpZnRMZWZ0TGlzdCwgQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvKToNCg0KKw0KDQorICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIENJZnJTaGlmdExlZnRMaXN0LCBDSWZy U2hpZnRSaWdodExpc3QsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzMTAsIHNlbGYuUlVMRV9zaGlmdFRlcm1TdXBwbGVtZW50YXJ5KQ0KDQorICAgICAgICB0 cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4MA0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRf XzldOg0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNoaWZ0 VGVybUxlZnRDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjU3Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzkpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NzcNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLmFkZE1pbnVzVGVybShFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MN Cg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xMF06DQoN CisgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtUmln aHRDb250ZXh0KHNlbGYsIGxvY2FsY3R4KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3 OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzEwKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc5DQoNCisgICAgICAgICAgICAgICAg c2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhj ZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFs bHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEFkZE1pbnVzVGVybUNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhw SW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckFkZExp c3QgPSBbXQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyU3VidHJhY3RMaXN0ID0gW10NCg0KKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgbXVs dGRpdm1vZFRlcm0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5BZGRNaW51 c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfYWRkTWludXNUZXJtDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJtKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZiwgRXhwSW5m byk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNU ZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTIsIHNlbGYuUlVMRV9hZGRNaW51c1Rlcm0p DQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0K DQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1ODINCg0KKyAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRl cm0oRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg2DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5UX18xMSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU4Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuYWRkTWludXNU ZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyQWRkTGlzdCwgbG9jYWxjdHguQ0lmclN1YnRy YWN0TGlzdCwgRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4OA0K DQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEFkZE1p bnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJBZGRMaXN0PU5vbmUsIENJZnJTdWJ0 cmFjdExpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckFkZExpc3QgPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLkNJZnJTdWJ0cmFjdExpc3QgPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJBZGRMaXN0ID0gQ0lmckFk ZExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmclN1YnRyYWN0TGlzdCA9IENJZnJTdWJ0cmFj dExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisgICAgICAgICAgICBzdXBlcigpLmNvcHlGcm9tKGN0eCkNCg0KKyAgICAgICAgICAgIHNlbGYu Q0lmckFkZExpc3QgPSBjdHguQ0lmckFkZExpc3QNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmclN1 YnRyYWN0TGlzdCA9IGN0eC5DSWZyU3VidHJhY3RMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEFkZE1pbnVz VGVybXBBZGRDb250ZXh0KEFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRl eHQpOiAjIGFjdHVhbGx5IGEgVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1cHBsZW1lbnRh cnlDb250ZXh0DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCg0KKyAg ICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KDQorDQoNCisgICAgICAgIGRlZiBtdWx0ZGl2 bW9kVGVybShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtcEFk ZCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFkZE1pbnVzVGVy bXBBZGQoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBB ZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQoQWRkTWludXNUZXJtU3VwcGxlbWVudGFyeUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJz ZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJt U3VwcGxlbWVudGFyeUNvbnRleHQNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy c2VyKQ0KDQorICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAg ZGVmIE5lZ2F0aXZlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCAwKQ0KDQorICAgICAgICBkZWYgbXVsdGRpdm1vZFRl cm0oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFkZE1pbnVzVGVybVN1YnRyYWN0 IiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJt U3VidHJhY3Qoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorICAg IGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIENJZnJBZGRMaXN0LCBDSWZyU3Vi dHJhY3RMaXN0LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLCBzZWxmLl9jdHgs IHNlbGYuc3RhdGUsIENJZnJBZGRMaXN0LCBDSWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvKQ0KDQor ICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzE0LCBzZWxmLlJVTEVfYWRkTWludXNU ZXJtU3VwcGxlbWVudGFyeSkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI1OTMNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UX18xMV06DQoNCisgICAgICAgICAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRleHQoc2VsZiwg bG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTg5DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTEpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1OTANCg0KKyAgICAgICAgICAgICAgICBzZWxmLm11bHRkaXZtb2RU ZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlXToNCg0KKyAgICAgICAgICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQo c2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTkxDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTINCg0KKyAgICAgICAgICAgICAgICBzZWxmLm11 bHRkaXZtb2RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlv bihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0K DQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybUNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5 TGlzdCA9IFtdDQoNCisgICAgICAgICAgICBzZWxmLkNJZnJEaXZpZGVMaXN0ID0gW10NCg0KKyAg ICAgICAgICAgIHNlbGYuQ0lmck1vZHVsb0xpc3QgPSBbXQ0KDQorICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIG11bHRkaXZt b2RUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4 dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVt ZW50YXJ5Q29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9tdWx0ZGl2 bW9kVGVybQ0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11 bHRkaXZtb2RUZXJtIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 TXVsdGRpdm1vZFRlcm0oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAzMTYsIHNlbGYuUlVMRV9tdWx0ZGl2bW9kVGVybSkNCg0KKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjU5NQ0KDQorICAgICAgICAgICAgc2VsZi5jYXN0VGVybShFeHBJbmZvKQ0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgIHdoaWxlICgoKF9sYSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IF9s YSkgJiAoKDEgPDwgVmZyU3ludGF4UGFyc2VyLlRfXzEyKSB8ICgxIDw8IFZmclN5bnRheFBhcnNl ci5UX18xMykgfCAoMSA8PCBWZnJTeW50YXhQYXJzZXIuU2xhc2gpKSkgIT0gMCk6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm11 bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeShsb2NhbGN0eC5DSWZyTXVsdGlwbHlMaXN0LCBsb2Nh bGN0eC5DSWZyRGl2aWRlTGlzdCwgbG9jYWxjdHguQ0lmck1vZHVsb0xpc3QsIEV4cEluZm8pDQoN CisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDENCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5h bGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBs b2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRh cnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdT dGF0ZTppbnQ9LTEsIENJZnJNdWx0aXBseUxpc3Q9Tm9uZSwgQ0lmckRpdmlkZUxpc3Q9Tm9uZSwg Q0lmck1vZHVsb0xpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IE5v bmUNCg0KKyAgICAgICAgICAgIHNlbGYuQ0lmckRpdmlkZUxpc3QgPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DSWZyTXVsdGlwbHlMaXN0ID0gQ0lmck11 bHRpcGx5TGlzdA0KDQorICAgICAgICAgICAgc2VsZi5DSWZyRGl2aWRlTGlzdCA9IENJZnJEaXZp ZGVMaXN0DQoNCisgICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gQ0lmck1vZHVsb0xp c3QNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5DQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAgc2VsZi5D SWZyTXVsdGlwbHlMaXN0ID0gY3R4LkNJZnJNdWx0aXBseUxpc3QNCg0KKyAgICAgICAgICAgIHNl bGYuQ0lmckRpdmlkZUxpc3QgPSBjdHguQ0lmckRpdmlkZUxpc3QNCg0KKyAgICAgICAgICAgIHNl bGYuQ0lmck1vZHVsb0xpc3QgPSBjdHguQ0lmck1vZHVsb0xpc3QNCg0KKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgTXVs dGRpdm1vZFRlcm1EaXZDb250ZXh0KE11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJS dWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1T dXBwbGVtZW50YXJ5Q29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJz ZXIpDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBk ZWYgU2xhc2goc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2xhc2gsIDApDQoNCisgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0TXVsdGRpdm1vZFRlcm1EaXYiICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybURpdihzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQoNCisNCg0KKw0KDQorICAgIGNsYXNzIE11bHRkaXZtb2RUZXJtTXVsQ29udGV4 dChNdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVh bGx5IGEgVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQN Cg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KDQorICAgICAgICAgICAg c2VsZi5jb3B5RnJvbShjdHgpDQoNCisNCg0KKyAgICAgICAgZGVmIGNhc3RUZXJtKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuQ2FzdFRlcm1Db250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybU11bCIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdE11bHRkaXZtb2RUZXJtTXVsKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgTXVsdGRpdm1vZFRlcm1Nb2R1bG9D b250ZXh0KE11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMg YWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoNCisgICAgICAg ICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBkZWYgY2FzdFRlcm0oc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRkaXZtb2RUZXJtTW9kdWxvIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBtdWx0ZGl2 bW9kVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgQ0lmck11bHRpcGx5TGlzdCwgQ0lmckRpdmlkZUxp c3QsIENJZnJNb2R1bG9MaXN0LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmck11bHRpcGx5TGlzdCwgQ0lmckRpdmlkZUxpc3Qs IENJZnJNb2R1bG9MaXN0LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzE4LCBzZWxmLlJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwOA0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlRfXzEyXToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5NdWx0ZGl2bW9kVGVybU11bENvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjAyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fMTIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDMNCg0K KyAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNs YXNoXToNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5NdWx0 ZGl2bW9kVGVybURpdkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU2xhc2gpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDUNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzEzXToN Cg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9k VGVybU1vZHVsb0NvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjA2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fMTMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDcNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBm aW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVy biBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBDYXN0VGVybUNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhw SW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVEJPYmogPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLlRVT2JqID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBhdG9tVGVybShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLkF0b21UZXJtQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAg ICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu LCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBCb29sZWFuKHNlbGYsIGk6aW50PU5vbmUpOg0KDQor ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQm9vbGVhbikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkJvb2xlYW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgVWludDMyKHNlbGYsIGk6aW50 PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVWludDMyLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiBVaW50MTYoc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5VaW50MTYsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFVpbnQ4KHNl bGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWludDgpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5VaW50OCwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X2Nhc3RUZXJtDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 Q2FzdFRlcm0iICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDYXN0 VGVybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAg ICBkZWYgY2FzdFRlcm0oc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuQ2FzdFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMCwg c2VsZi5SVUxFX2Nhc3RUZXJtKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjE1DQoNCisgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9hbHQgPSBzZWxm Ll9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIxNyxzZWxmLl9jdHgpDQoNCisg ICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1BVE4uSU5WQUxJRF9BTFRfTlVNQkVS Og0KDQorICAgICAgICAgICAgICAgIGlmIF9hbHQ9PTE6DQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjEwDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2MTENCg0KKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90KCgoKChfbGEgLSA4MCkpICYgfjB4M2YpID09 IDAgYW5kICgoMSA8PCAoX2xhIC0gODApKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJvb2xl YW4gLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50NjQgLSA4MCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5VaW50MzIgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5V aW50MTYgLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5VaW50OCAtIDgwKSkpKSAhPSAw KSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJ bmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjEyDQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI2MTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgICAgICBfYWx0ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxm Ll9pbnB1dCwyMTcsc2VsZi5fY3R4KQ0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjYxOA0KDQorICAgICAgICAgICAgc2VsZi5hdG9tVGVybShFeHBJbmZvKQ0KDQorICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3Mg QXRvbVRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIHZmckV4 cHJlc3Npb25DYXRlbmF0ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2goc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2hDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25NYXRj aDJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVu KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25D b25zdGFudENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJFeHByZXNzaW9u VW5hcnlPcChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dCwwKQ0KDQor DQoNCisNCg0KKyAgICAgICAgZGVmIHZmckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJFeHByZXNzaW9uVGVybmFyeU9wQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25NYXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFwQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIE5PVChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OT1QsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIGF0b21UZXJtKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2F0b21UZXJtDQoNCisNCg0KKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QXRvbVRlcm0iICk6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBdG9tVGVybShzZWxmKQ0KDQorICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgYXRvbVRlcm0oc2VsZiwgRXhwSW5mbyk6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMiwgc2VsZi5SVUxFX2F0b21UZXJtKQ0KDQorICAgICAg ICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMg0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBsYV8gPSBzZWxmLl9p bnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDIxOCxzZWxmLl9jdHgpDQoNCisgICAg ICAgICAgICBpZiBsYV8gPT0gMToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjANCg0K KyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25DYXRlbmF0ZShFeHBJbmZvKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjENCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmckV4cHJlc3Npb25NYXRjaChFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0K Kw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2MjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4cHJlc3Npb25NYXRjaDIoRXhw SW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYg bGFfID09IDQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjIzDQoNCisgICAgICAgICAg ICAgICAgc2VsZi52ZnJFeHByZXNzaW9uUGFyZW4oRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAg ICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDU6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjI0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9u QnVpbGRJbkZ1bmN0aW9uKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoN CisgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjYyNQ0KDQorICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbkNvbnN0YW50KEV4cElu Zm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAgICAgICAgICBlbGlmIGxh XyA9PSA3Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyNg0KDQorICAgICAgICAgICAg ICAgIHNlbGYudmZyRXhwcmVzc2lvblVuYXJ5T3AoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAg ICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDg6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9u VGVybmFyeU9wKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorDQoNCisgICAg ICAgICAgICBlbGlmIGxhXyA9PSA5Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgOSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyOA0K DQorICAgICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbk1hcChFeHBJbmZvKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTA6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxMCkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYyOQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk5PVCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjYzMA0KDQorICAgICAgICAgICAgICAgIHNlbGYuYXRvbVRlcm0oRXhwSW5mbykNCg0KKyAg ICAgICAgICAgICAgICBwYXNzDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgbGFfID09IDExOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzENCg0KKyAgICAgICAgICAgICAgICBzZWxm LnZmckV4cHJlc3Npb25NYXRjaDIoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K Kw0KDQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5DT2JqID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAg IGRlZiBDYXRlbmF0ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DYXRlbmF0ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0 LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0K KyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZQ0KDQorDQoNCisgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25DYXRlbmF0ZSIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25DYXRlbmF0ZShz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg dmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25DYXRlbmF0ZUNvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMzI0LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNhdGVuYXRlKQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzNA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYzNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzYNCg0KKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYzNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzOA0KDQorICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjM5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9uZQ0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBN YXRjaChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5NYXRjaCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yihz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LGkpDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmckV4cHJlc3Npb25NYXRjaA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXRjaCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25NYXRjaChzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoKHNl bGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LlZmckV4cHJlc3Npb25NYXRjaENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzI2LCBzZWxmLlJV TEVfdmZyRXhwcmVzc2lvbk1hdGNoKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjY0MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF0Y2gp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0Mg0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI2NDMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yigp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0NA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjY0NQ0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAg ICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyRXhwcmVzc2lvbk1h dGNoMkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAg ICAgIHNlbGYuTTJPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQoNCisNCg0KKyAgICAgICAgZGVmIE1hdGNoMihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXRjaDIsIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJD b250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYs IGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ3VpZERlZmlu aXRpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gyDQoNCisNCg0KKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoMiIgKToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25NYXRjaDIoc2VsZikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4 cHJlc3Npb25NYXRjaDIoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoMkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2Nh bGN0eCwgMzI4LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoMikNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NDgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk1hdGNoMikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ5DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1MA0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUxDQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjUyDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTMNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2NTQNCg0KKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24o KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTUNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K DQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJFeHByZXNz aW9uUGFyZW5Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25QYXJlbg0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25QYXJl biIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Np b25QYXJlbihzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0K KyAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVuKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25QYXJlbkNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzMwLCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvblBhcmVuKQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1Nw0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2NTgNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1OQ0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmckV4cHJl c3Npb25CdWlsZEluRnVuY3Rpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBO b25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAg ICAgZGVmIGR1cEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiB2YXJlcXZhbEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZhcmVxdmFsRXhwQ29udGV4 dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGlkZXF2YWxFeHAoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5J ZGVxdmFsRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGlkZXFpZEV4cChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRl ZiBpZGVxdmFsbGlzdEV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLklkZXF2YWxsaXN0RXhwQ29udGV4dCwwKQ0K DQorDQoNCisNCg0KKyAgICAgICAgZGVmIHF1ZXN0aW9ucmVmMUV4cChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1 ZXN0aW9ucmVmMUV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBydWxlcmVm RXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAg ICAgIGRlZiBzdHJpbmdyZWYxRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMUV4cENvbnRleHQs MCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBwdXNodGhpc0V4cChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlB1 c2h0aGlzRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHNlY3VyaXR5RXhw KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0RXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR2V0RXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uDQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkJ1aWxk SW5GdW5jdGlvbiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm ckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQor DQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24o c2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzMyLCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkJ1aWxkSW5GdW5jdGlvbikNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzINCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5E dXBdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2MQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuZHVwRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsXToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2NjINCg0KKyAgICAgICAgICAgICAgICBzZWxmLnZhcmVxdmFs RXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLklkRXFWYWxdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjY2Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuaWRlcXZhbEV4cChFeHBJbmZv KQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5JZEVxSWRdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2 NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuaWRlcWlkRXhwKEV4cEluZm8pDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLklkRXFWYWxMaXN0XToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmlkZXF2YWxsaXN0RXhwKEV4cEluZm8pDQoNCisgICAgICAgICAg ICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlF1ZXN0aW9uUmVmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjYNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnF1ZXN0aW9ucmVmMUV4cChFeHBJbmZvKQ0KDQorICAgICAgICAgICAg ICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5S dWxlUmVmXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDcpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjcNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnJ1bGVyZWZFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjgNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0cmluZ3JlZjFFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXNdOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY2OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYucHVzaHRo aXNFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHldOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTApDQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2NzANCg0KKyAgICAgICAgICAgICAgICBzZWxmLnNlY3VyaXR5RXhwKEV4 cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkdldF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxMSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjY3MQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ2V0RXhwKEV4cEluZm8pDQoNCisgICAgICAg ICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBy YWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoN CisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBEdXBFeHBD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBz ZWxmLkRPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoN CisNCg0KKyAgICAgICAgZGVmIER1cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EdXAsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV9kdXBFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXREdXBFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREdXBF eHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIGR1cEV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwg RXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzNCwgc2VsZi5S VUxFX2R1cEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzQNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkR1cCkNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFZhcmVxdmFsRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQor ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBW YXJFcVZhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5WYXJFcVZhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgVmFyKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhciwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMZXNz RXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBMZXNzKHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3Ms IDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxmKToNCg0KKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3ZhcmVxdmFsRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VmFyZXF2YWxFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWYXJlcXZhbEV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmFyZXF2YWxFeHAoc2VsZiwgRXhwSW5mbyk6 DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmFyZXF2YWxFeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzNiwgc2VsZi5SVUxFX3ZhcmVxdmFsRXhwKQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3Ng0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFyRXFWYWwpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY3Nw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFy KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzgNCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjc5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4MA0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjkxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNjgxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODINCg0K KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisg ICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkxlc3NFcXVhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 ODMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzRXF1 YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODQNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxl c3NdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjg1DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzcykNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjY4Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjY4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQoNCisgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI2ODkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5HcmVhdGVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjkwDQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3Mg SWRlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuSSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5h bWUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgSWRFcVZhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JZEVxVmFsLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBFcXVhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTGVzc0VxdWFsKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgTGVzcyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBHcmVhdGVyRXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsLCAwKQ0KDQorDQoNCisgICAgICAgIGRl ZiBHcmVhdGVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkdyZWF0ZXIsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9pZGVx dmFsRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0SWRl cXZhbEV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2 YWxFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisg ICAgZGVmIGlkZXF2YWxFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuSWRlcXZhbEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBz ZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzM4LCBzZWxmLlJVTEVfaWRlcXZhbEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2OTMNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5JZEVxVmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTQNCg0K KyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzA1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI2OTYNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2OTcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5MZXNzRXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTgNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkxlc3NdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk5DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVzcykNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMA0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMQ0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjcwMg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MDMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5HcmVhdGVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzA0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgSWRlcWlkRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBz ZWxmLkUgPSBOb25lICMgVG9rZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTEUgPSBOb25lICMgVG9r ZW4NCg0KKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAg c2VsZi5CRSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5CID0gTm9uZSAjIFRv a2VuDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAg ICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25E YXRhRmllbGROYW1lQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIElkRXFJZChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5JZEVxSWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBMZXNzRXF1YWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KDQorDQoNCisgICAg ICAgIGRlZiBMZXNzKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXJFcXVh bChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5HcmVhdGVyRXF1YWwsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEdyZWF0ZXIoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3Jl YXRlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2lkZXFpZEV4cA0KDQorDQoNCisg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdElkZXFpZEV4cCIgKToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXFpZEV4cChzZWxmKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgaWRlcWlkRXhwKHNl bGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LklkZXFpZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQwLCBzZWxmLlJVTEVfaWRlcWlk RXhwKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwNw0KDQorICAgICAg ICAgICAgbG9jYWxjdHguSSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFJZCkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA4DQoNCisgICAgICAgICAgICBzZWxmLnZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxOQ0K DQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAg ICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkVxdWFsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjcwOQ0KDQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkUgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMA0KDQor ICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCg0KKyAgICAg ICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuTGVzc0VxdWFsXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMQ0K DQorICAgICAgICAgICAgICAgIGxvY2FsY3R4LkxFID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTGVzc0VxdWFsKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzEyDQoNCisg ICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KDQorICAgICAg ICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5MZXNzXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxMw0KDQorICAg ICAgICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNz KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE0DQoNCisgICAgICAgICAgICAg ICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KDQorICAgICAgICAgICAgICAgIHBh c3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HcmVhdGVy RXF1YWxdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE1DQoNCisgICAgICAg ICAgICAgICAgbG9jYWxjdHguQkUgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmVhdGVy RXF1YWwpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTYNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAgICAgICAg ICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdy ZWF0ZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE3DQoNCisgICAgICAg ICAgICAgICAgbG9jYWxjdHguQiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTgNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpDQoNCisgICAgICAgICAgICAgICAgcGFz cw0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KDQorDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQor ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAg ICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBJZGVxdmFsbGlzdEV4cENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmlu dD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgSWRFcVZhbExpc3Qoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSWRF cVZhbExpc3QsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZShzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQsMCkNCg0KKw0K DQorDQoNCisgICAgICAgIGRlZiBFcXVhbChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KDQorDQoNCisgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfaWRlcXZhbGxpc3RFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRJZGVxdmFsbGlzdEV4cCIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2YWxsaXN0RXhwKHNlbGYpDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBpZGVxdmFsbGlzdEV4cChzZWxm LCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5J ZGVxdmFsbGlzdEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZv KQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQyLCBzZWxmLlJVTEVfaWRl cXZhbGxpc3RFeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjENCg0KKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0KQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3MjINCg0KKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1l KCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzIzDQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5FcXVhbCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNzI1DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBU cnVlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzI0DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzI3DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cg0KKyAgICAgICAgICAgICAgICBpZiBub3QgKF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcik6 DQoNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLCBpbnZva2luZ1N0YXRlOmludD0tMSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLlFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElE DQoNCisgICAgICAgICAgICBzZWxmLk1hc2sgPSAwDQoNCisgICAgICAgICAgICBzZWxmLlZhcklk U3RyID0gJycNCg0KKyAgICAgICAgICAgIHNlbGYuTGluZSA9IE5vbmUNCg0KKw0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgY29weUZyb20oc2VsZiwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCg0KKyAg ICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0KDQorICAgICAgICAgICAgc2VsZi5RSWQg PSBjdHguUUlkDQoNCisgICAgICAgICAgICBzZWxmLk1hc2sgPSBjdHguTWFzaw0KDQorICAgICAg ICAgICAgc2VsZi5WYXJJZFN0ciA9IGN0eC5WYXJJZFN0cg0KDQorICAgICAgICAgICAgc2VsZi5M aW5lID0gY3R4LkxpbmUNCg0KKw0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4dCk6 DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1 bGVDb250ZXh0KTogIyBhY3R1YWxseSBhIFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFG aWVsZE5hbWVDb250ZXh0DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikN Cg0KKyAgICAgICAgICAgIHNlbGYuU04yID0gTm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBz ZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorICAgICAgICBkZWYgRG90KHNlbGYsIGk6aW50PU5v bmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRG90LCBpKQ0KDQorICAgICAgICBkZWYgYXJyYXlOYW1lKHNlbGYsIGk6aW50PU5vbmUp Og0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5BcnJheU5hbWVDb250 ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BcnJheU5hbWVDb250ZXh0LGkp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJR dWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMiIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgVmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lUnVsZTFDb250ZXh0KFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQpOg0KDQorDQoN CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4 dCk6ICMgYWN0dWFsbHkgYSBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1l Q29udGV4dA0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJzZXIpDQoNCisgICAg ICAgICAgICBzZWxmLlNOMSA9IE5vbmUgIyBUb2tlbg0KDQorICAgICAgICAgICAgc2VsZi5JID0g Tm9uZSAjIFRva2VuDQoNCisgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCg0KKw0KDQor ICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQoNCisgICAgICAgIGRl ZiBDbG9zZUJyYWNrZXQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KDQorICAgICAgICBkZWYgU3RyaW5n SWRlbnRpZmllcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMSIgKToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxKHNlbGYp DQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyUXVlc3Rp b25EYXRhRmllbGROYW1lKHNlbGYpOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQ0LCBz ZWxmLlJVTEVfdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKQ0KDQorICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzQxDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0K KyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5w dXQsMjI1LHNlbGYuX2N0eCkNCg0KKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KDQorICAgICAg ICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZVJ1bGUxQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI3MjkNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNzMwDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MzENCg0K KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5JID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzMyDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKw0KDQorICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCg0K KyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWVSdWxlMkNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzMzDQoNCisgICAgICAgICAgICAgICAgbG9jYWxjdHguU04yID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjczOA0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoN CisgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRG90Og0KDQorICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczNA0KDQorICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Eb3QpDQoNCisgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzM1DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXJyYXlOYW1l KCkNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDANCg0KKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBw YXNzDQoNCisNCg0KKw0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToN Cg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxj dHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3MgQXJyYXlOYW1lQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuU3ViU3RyID0g JycNCg0KKyAgICAgICAgICAgIHNlbGYuU3ViU3RyWiA9ICcnDQoNCisgICAgICAgICAgICBzZWxm Lk4gPSBOb25lICMgVG9rZW4NCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuQnJhY2tldChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlQnJhY2tldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2FycmF5TmFtZQ0KDQorDQoNCisgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEFycmF5TmFtZSIgKToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdEFycmF5TmFtZShzZWxmKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgYXJyYXlOYW1lKHNlbGYpOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzQ2LCBzZWxmLlJVTEVfYXJyYXlOYW1lKQ0KDQorICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzQz DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDcNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzQ0DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDUNCg0KKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5O ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KDQorDQoNCisNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFF1ZXN0aW9ucmVm MUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgUXVlc3Rpb25S ZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25SZWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVu dGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcXVlc3Rpb25yZWYxRXhwDQoNCisNCg0KKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UXVlc3Rpb25yZWYxRXhwIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb25yZWYxRXhwKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiBxdWVzdGlv bnJlZjFFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuUXVlc3Rpb25yZWYxRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNDgs IHNlbGYuUlVMRV9xdWVzdGlvbnJlZjFFeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDkNCg0KKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzUx DQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAg aWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlciBvciBfbGE9PVZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXJJbmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuY29uc3VtZSgpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Mg0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAg IGNsYXNzIFJ1bGVyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAg ZGVmIFJ1bGVSZWYoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuUnVsZVJlZiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVu KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9ydWxlcmVmRXhwDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UnVsZXJlZkV4cCIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFJ1bGVyZWZFeHAoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHJ1 bGVyZWZFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUwLCBzZWxm LlJVTEVfcnVsZXJlZkV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NTQNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJ1bGVSZWYpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1NQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Nw0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFN0 cmluZ3JlZjFFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwg aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFN0 cmluZ1JlZihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmdSZWYsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0K DQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNl ci5SVUxFX3N0cmluZ3JlZjFFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRTdHJpbmdyZWYxRXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0U3RyaW5ncmVmMUV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgc3RyaW5ncmVmMUV4cChzZWxmLCBFeHBJbmZvKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYxRXhw Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTIsIHNlbGYuUlVMRV9zdHJpbmdyZWYxRXhwKQ0K DQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1OQ0KDQorICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI3NjANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY2DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuU3RyaW5nVG9rZW5dOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzYx DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjINCg0KKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3NjMNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NjQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzY1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjgNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBQdXNodGhpc0V4cENv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRl OmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgUHVzaFRoaXMoc2VsZik6 DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHVz aFRoaXMsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9wdXNodGhpc0V4cA0KDQorDQoN CisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0K KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFB1c2h0aGlzRXhwIiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UHVzaHRoaXNFeHAoc2VsZikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHB1c2h0 aGlzRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlB1c2h0aGlzRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUs IEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTQsIHNlbGYu UlVMRV9wdXNodGhpc0V4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 NzANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzKQ0K DQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoN CisgICAgY2xhc3MgU2VjdXJpdHlFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAg ICAgICAgZGVmIFNlY3VyaXR5KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlY3VyaXR5LCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBndWlkRGVmaW5p dGlvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KDQorDQoNCisNCg0K KyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3NlY3VyaXR5RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0U2VjdXJpdHlFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRTZWN1cml0eUV4cChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisN Cg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgc2VjdXJpdHlFeHAoc2VsZiwgRXhwSW5mbyk6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1Niwgc2VsZi5SVUxFX3NlY3VyaXR5RXhwKQ0KDQorICAg ICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3Mg0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHkpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjc3Mw0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NzQNCg0KKyAgICAgICAgICAgIHNl bGYuZ3VpZERlZmluaXRpb24oKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NzUNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAg ICBjbGFzcyBOdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuVmFyVHlwZSA9IE5vbmUNCg0K Kw0KDQorICAgICAgICBkZWYgTnVtZXJpY1NpemVPbmUoc2VsZik6DQoNCisgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUsIDApDQoN CisNCg0KKyAgICAgICAgZGVmIE51bWVyaWNTaXplVHdvKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBOdW1lcmljU2l6ZUZvdXIoc2VsZik6DQoNCisgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBOdW1lcmljU2l6ZUVpZ2h0KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWln aHQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9udW1lcmljVmFyU3RvcmVUeXBlDQoN CisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TnVtZXJpY1ZhclN0 b3JlVHlwZSIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE51bWVy aWNWYXJTdG9yZVR5cGUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0K DQorDQoNCisgICAgZGVmIG51bWVyaWNWYXJTdG9yZVR5cGUoc2VsZik6DQoNCisNCg0KKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1ZhclN0b3JlVHlwZUNvbnRleHQo c2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMzU4LCBzZWxmLlJVTEVfbnVtZXJpY1ZhclN0b3JlVHlwZSkNCg0KKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjc3Nw0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAg ICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMjM3KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8 IChfbGEgLSAyMzcpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplT25lIC0g MjM3KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplVHdvIC0gMjM3KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRm91ciAtIDIzNykpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUVpZ2h0IC0gMjM3KSkpKSAhPSAwKSk6DQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KDQorICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xh c3MgR2V0RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGlu dm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAg ICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IEVGSV9WQVJTVE9SRV9JTkZPKCkNCg0KKyAgICAgICAg ICAgIHNlbGYuR09iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCg0KKw0KDQorICAgICAgICBkZWYgR2V0KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdldCwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3Rv cmFnZVZhcklkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQor ICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgRkxBR1Moc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRkxBR1MsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIG51bWVyaWNWYXJTdG9y ZVR5cGUoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9nZXRFeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRHZXRFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRHZXRFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoN CisNCg0KKw0KDQorDQoNCisgICAgZGVmIGdldEV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQor ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5HZXRFeHBDb250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDM2MCwgc2VsZi5SVUxFX2dldEV4cCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAw ICMgVG9rZW4gdHlwZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3OQ0K DQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR2V0KQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3ODANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgxDQoN CisgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0eC5CYXNlSW5mbywgRmFs c2UpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4Ng0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzgyDQoNCisgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzgzDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRkxBR1MpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODQN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzg1DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5udW1lcmljVmFyU3RvcmVUeXBlKCkNCg0KKw0KDQorDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjc4OA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K DQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoN CisNCg0KKw0KDQorICAgIGNsYXNzIFZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhw SW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgVHJ1ZVN5bWJvbChzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sLCAw KQ0KDQorDQoNCisgICAgICAgIGRlZiBGYWxzZVN5bWJvbChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GYWxzZVN5bWJvbCwgMCkNCg0K Kw0KDQorICAgICAgICBkZWYgT25lKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT25l cyhzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PbmVzLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBaZXJvKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlplcm8sIDApDQoNCisN Cg0KKyAgICAgICAgZGVmIFVuZGVmaW5lZChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VbmRlZmluZWQsIDApDQoNCisNCg0KKyAgICAg ICAgZGVmIFZlcnNpb24oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVmVyc2lvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVy KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K DQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25D b25zdGFudA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm ckV4cHJlc3Npb25Db25zdGFudCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoN CisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbkNvbnN0YW50KHNlbGYs IEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZm ckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzYyLCBzZWxmLlJV TEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzkwDQoNCisgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KCgo KChfbGEgLSAyMDkpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDIwOSkpICYgKCgx IDw8IChWZnJTeW50YXhQYXJzZXIuVHJ1ZVN5bWJvbCAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5GYWxzZVN5bWJvbCAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmUg LSAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lcyAtIDIwOSkpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5aZXJvIC0gMjA5KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVuZGVm aW5lZCAtIDIwOSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WZXJzaW9uIC0gMjA5KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWJlciAtIDIwOSkpKSkgIT0gMCkpOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1h dGNoKHNlbGYpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IFZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAg ICAgIGRlZiBsZW5ndGhFeHAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgYml0d2lzZW5vdEV4cChzZWxmKToNCg0KKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkJpdHdpc2Vu b3RFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgcXVlc3Rpb24yM3JlZkV4 cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQor ICAgICAgICBkZWYgc3RyaW5ncmVmMkV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjJFeHBDb250 ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgdG9ib29sRXhwKHNlbGYpOg0KDQorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VG9ib29sRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIHRvc3RyaW5nRXhw KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVG9zdHJpbmdFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAg ICBkZWYgdW5pbnRFeHAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5VbmludEV4cENvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiB0b3VwcGVyRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG91cHBlckV4cENvbnRl eHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiB0b2x3ZXJFeHAoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5U b2x3ZXJFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgc2V0RXhwKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuU2V0RXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV92ZnJFeHByZXNzaW9uVW5hcnlPcA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25VbmFyeU9wIiApOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZikNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHZmckV4cHJlc3Npb25V bmFyeU9wKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLlZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NjQsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcCkNCg0KKyAgICAgICAgdHJ5Og0KDQor ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDINCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KDQorICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MZW5ndGhdOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5Mg0KDQorICAgICAgICAgICAgICAgIHNlbGYu bGVuZ3RoRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VOb3RdOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjc5Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZW5v dEV4cChFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbF06DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzk0DQoNCisgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbjIz cmVmRXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZlZhbF06DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzk1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmdyZWYy RXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkJvb2xWYWxdOg0KDQorICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc5Ng0KDQorICAgICAgICAgICAgICAgIHNlbGYudG9ib29sRXhwKEV4cEluZm8p DQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCA2KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Nzk3DQoNCisgICAgICAgICAgICAgICAgc2VsZi50b3N0cmluZ0V4cChFeHBJbmZvKQ0KDQorICAg ICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5VbkludFZhbF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCA3KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzk4DQoNCisg ICAgICAgICAgICAgICAgc2VsZi51bmludEV4cChFeHBJbmZvKQ0KDQorICAgICAgICAgICAgICAg IHBhc3MNCg0KKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ub1Vw cGVyXToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgp DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTkNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnRvdXBwZXJFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9Mb3dlcl06DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODAwDQoNCisgICAgICAgICAgICAgICAgc2VsZi50b2x3 ZXJFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2V0XToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEwKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODAxDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zZXRFeHAoRXhwSW5mbykNCg0K KyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQoNCisNCg0KKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNz IExlbmd0aEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuTE9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgTGVuZ3RoKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlbmd0aCwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQ YXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbGVuZ3Ro RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TGVuZ3Ro RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TGVuZ3RoRXhw KHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRl ZiBsZW5ndGhFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNjYsIHNl bGYuUlVMRV9sZW5ndGhFeHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODA0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZW5ndGgpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4MDYNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNw0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisg ICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEJpdHdpc2Vub3RFeHBD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18o c2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0 ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBz ZWxmLkJXTk9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cg0KKw0KDQorICAgICAgICBkZWYgQml0V2lzZU5vdChzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90LCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9iaXR3aXNl bm90RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Qml0 d2lzZW5vdEV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJp dHdpc2Vub3RFeHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQor DQoNCisgICAgZGVmIGJpdHdpc2Vub3RFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZW5vdEV4cENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMzY4LCBzZWxmLlJVTEVfYml0d2lzZW5vdEV4cCkNCg0KKyAgICAgICAgdHJ5 Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VOb3QpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgx MA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTENCg0KKyAgICAgICAgICAgIHNlbGYudmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgx Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikN Cg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0K DQorICAgIGNsYXNzIFF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoN CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0K KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisN Cg0KKyAgICAgICAgZGVmIFF1ZXN0aW9uUmVmVmFsKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBlbHNlOg0KDQor ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwwKQ0KDQorDQoN CisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgRGV2aWNlUGF0aChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZXZpY2VQ YXRoLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGd1aWREZWZp bml0aW9uKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQoNCisNCg0KKw0K DQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uMjNyZWZFeHANCg0KKw0KDQorICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRRdWVzdGlvbjIzcmVmRXhwIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UXVlc3Rpb24yM3JlZkV4cChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgcXVlc3Rp b24yM3JlZkV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5RdWVzdGlvbjIzcmVmRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NzAsIHNlbGYuUlVMRV9xdWVzdGlvbjIzcmVmRXhwKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE0DQoN CisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbCkN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE1DQoNCisgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgyMw0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQoNCisg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjgxNg0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkRldmljZVBhdGgpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTcNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4MTkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjANCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjENCg0KKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODIyDQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzANCg0K KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLlV1aWQ6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjUNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VdWlkKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjgyNw0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4MzINCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgzMw0KDQorICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0K KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFN0cmluZ3Jl ZjJFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAg ICAgICBzZWxmLlNSMk9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgU3RyaW5nUmVmVmFsKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZlZhbCwg MCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0KKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfc3RyaW5ncmVmMkV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFN0cmluZ3JlZjJFeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRTdHJpbmdyZWYyRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQor DQoNCisNCg0KKw0KDQorICAgIGRlZiBzdHJpbmdyZWYyRXhwKHNlbGYsIEV4cEluZm8pOg0KDQor DQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjJFeHBDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3Miwgc2VsZi5SVUxFX3N0cmluZ3JlZjJFeHApDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM1DQoNCisgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWwpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjgzNg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzcNCg0KKyAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjgzOA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoN CisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFRvYm9vbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25l KToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNl bGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVEJPYmogPSBOb25lDQoNCisg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIEJv b2xWYWwoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQm9vbFZhbCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0LDApDQoNCisN Cg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdG9ib29sRXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VG9ib29sRXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VG9ib29sRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0K Kw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0b2Jvb2xFeHAoc2VsZiwgRXhwSW5mbyk6DQoN CisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9ib29sRXhwQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzQsIHNlbGYuUlVMRV90b2Jvb2xFeHApDQoNCisgICAgICAg IHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0K KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Cb29sVmFsKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NDENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQyDQoNCisgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NDMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisN Cg0KKyAgICBjbGFzcyBUb3N0cmluZ0V4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVFNPYmogPSBOb25lDQoNCisgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFN0cmluZ1ZhbChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdWYWwsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2Vs Zik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCwwKQ0KDQorDQoNCisN Cg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b3N0cmluZ0V4cA0KDQor DQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvc3RyaW5nRXhwIiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9zdHJpbmdFeHAoc2Vs ZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHRv c3RyaW5nRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzYsIHNl bGYuUlVMRV90b3N0cmluZ0V4cCkNCg0KKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0NQ0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4NTANCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzE0Og0KDQorICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODQ2DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fMTQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDcNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQ4DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODQ5DQoNCisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTINCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODUzDQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTQNCg0KKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFz cyBVbmludEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAg ICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFVuSW50VmFsKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVuSW50VmFsLCAwKQ0K DQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV91 bmludEV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFVu aW50RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VW5pbnRF eHAoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAg ZGVmIHVuaW50RXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlVuaW50RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNzgsIHNl bGYuUlVMRV91bmludEV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NTYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVuSW50VmFsKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODU4DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0K DQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQor ICAgICAgICBmaW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBUb3VwcGVyRXhwQ29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6 aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2Vs Zi5UVU9iaiA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0K Kw0KDQorICAgICAgICBkZWYgVG9VcHBlcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ub1VwcGVyLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YkNvbnRleHQsMCkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b3VwcGVyRXhwDQoNCisN Cg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K DQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG91cHBlckV4cCIgKToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRvdXBwZXJFeHAoc2VsZikN Cg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KDQorDQoNCisNCg0KKw0KDQorDQoNCisgICAgZGVmIHRvdXBw ZXJFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVG91cHBlckV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgwLCBzZWxmLlJV TEVfdG91cHBlckV4cCkNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjEN Cg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NjMNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg2NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoN CisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAg ICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIFRvbHdlckV4cENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCg0KKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50 LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0K KyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuVExP YmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0K KyAgICAgICAgZGVmIFRvTG93ZXIoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVG9Mb3dlciwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg T3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJD b250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9sd2VyRXhwDQoNCisNCg0KKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG9sd2VyRXhwIiApOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9sd2VyRXhwKHNlbGYpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQorICAgIGRlZiB0b2x3ZXJFeHAoc2Vs ZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VG9sd2VyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoN CisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODIsIHNlbGYuUlVMRV90b2x3ZXJF eHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY2DQoNCisgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ub0xvd2VyKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4NjcNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODY4DQoNCisgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4NjkNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5 Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTZXRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9u ZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0gRUZJX1ZB UlNUT1JFX0lORk8oKQ0KDQorICAgICAgICAgICAgc2VsZi5UU09iaiA9IE5vbmUNCg0KKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCg0KKw0KDQorICAgICAgICBkZWYgU2V0KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNldCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkN Cg0KKw0KDQorICAgICAgICBkZWYgdmZyU3RvcmFnZVZhcklkKHNlbGYpOg0KDQorICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rv cmFnZVZhcklkQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVmIENvbW1hKHNlbGYp Og0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNv bW1hLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQoNCisNCg0KKyAg ICAgICAgZGVmIEJpdFdpc2VPcihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIDApDQoNCisNCg0KKyAgICAgICAgZGVm IEZMQUdTKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBudW1lcmljVmFyU3RvcmVU eXBlKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1ZhclN0b3JlVHlwZUNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2V0RXhwDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0U2V0RXhwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0U2V0RXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQor DQoNCisNCg0KKw0KDQorICAgIGRlZiBzZXRFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29udGV4dChzZWxmLCBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAzODQsIHNlbGYuUlVMRV9zZXRFeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzENCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNldCkNCg0KKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODcyDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3Mw0KDQor ICAgICAgICAgICAgc2VsZi52ZnJTdG9yYWdlVmFySWQobG9jYWxjdHguQmFzZUluZm8sIEZhbHNl KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzgNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCg0KKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3NA0KDQorICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjg3NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODc2DQoN CisgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg3Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYu bnVtZXJpY1ZhclN0b3JlVHlwZSgpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4ODANCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODENCg0KKyAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0g Mjg4Mg0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoNCisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0K Kw0KDQorICAgIGNsYXNzIFZmckV4cHJlc3Npb25UZXJuYXJ5T3BDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJ bmZvDQoNCisNCg0KKyAgICAgICAgZGVmIGNvbmRpdGlvbmFsRXhwKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ29u ZGl0aW9uYWxFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZmluZEV4cChz ZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkZpbmRFeHBDb250ZXh0LDApDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYg bWlkRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuTWlkRXhwQ29udGV4dCwwKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgZGVmIHRva2VuRXhwKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVG9rZW5FeHBDb250ZXh0LDApDQoNCisNCg0K Kw0KDQorICAgICAgICBkZWYgc3BhbkV4cChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0LDAp DQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4cHJlc3Npb25UZXJuYXJ5T3AN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNz aW9uVGVybmFyeU9wIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvblRlcm5hcnlPcChzZWxmLCBFeHBJ bmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHBy ZXNzaW9uVGVybmFyeU9wQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cElu Zm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODYsIHNlbGYuUlVMRV92 ZnJFeHByZXNzaW9uVGVybmFyeU9wKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg4OQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQoNCisgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAg ICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkNvbmRdOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg4NA0KDQorICAgICAgICAgICAgICAgIHNlbGYuY29uZGl0aW9uYWxFeHAo RXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRmluZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODg1DQoNCisgICAgICAgICAgICAgICAgc2VsZi5maW5kRXhwKEV4cEluZm8pDQoNCisgICAg ICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk1pZF06DQoNCisgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAzKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg2DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5taWRFeHAoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBwYXNzDQoN CisgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9rXToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODcNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnRva2Vu RXhwKEV4cEluZm8pDQoNCisgICAgICAgICAgICAgICAgcGFzcw0KDQorICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNwYW5dOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjg4OA0KDQorICAgICAgICAgICAgICAgIHNlbGYuc3BhbkV4cChFeHBJbmZvKQ0KDQor ICAgICAgICAgICAgICAgIHBhc3MNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCg0KKw0KDQorICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisgICAgY2xhc3Mg Q29uZGl0aW9uYWxFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoN CisgICAgICAgICAgICBzZWxmLkNPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIENvbmQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29uZCwgMCkNCg0KKw0K DQorICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCg0KKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YkNvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29sb24o c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29sb24sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbmRpdGlvbmFsRXhwDQoNCisNCg0K KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KDQor ICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q29uZGl0aW9uYWxFeHAiICk6 DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDb25kaXRpb25hbEV4cChz ZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYg Y29uZGl0aW9uYWxFeHAoc2VsZiwgRXhwSW5mbyk6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuQ29uZGl0aW9uYWxFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwg c2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDM4OCwgc2VsZi5SVUxFX2NvbmRpdGlvbmFsRXhwKQ0KDQorICAgICAgICB0cnk6DQoNCisgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg5MQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29uZCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODkyDQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg5Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk0DQoNCisgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX18xNSkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODk1DQoNCisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTYNCg0KKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4OTcNCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yigp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5OA0KDQorICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCg0KKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KDQorICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQoNCisgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQoN CisgICAgICAgIGZpbmFsbHk6DQoNCisgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCg0KKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQoNCisNCg0KKw0KDQorICAgIGNsYXNzIEZpbmRFeHBDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2Vy DQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQoNCisgICAgICAgICAgICBzZWxm LkZPYmogPSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisN Cg0KKyAgICAgICAgZGVmIEZpbmQoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRmluZCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgT3Bl blBhcmVuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZmluZEZvcm1hdChz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuRmluZEZvcm1hdENvbnRleHQpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZp bmRGb3JtYXRDb250ZXh0LGkpDQoNCisNCg0KKw0KDQorICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCkNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToN Cg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCg0KKyAgICAgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkJpdFdpc2VPciwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRFeHAN Cg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRXhwIiAp Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmluZEV4cChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZmluZEV4 cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5GaW5kRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8p DQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTAsIHNlbGYuUlVMRV9maW5k RXhwKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5GaW5kKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDENCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAyDQoNCisgICAgICAgICAgICBzZWxmLmZpbmRGb3Jt YXQoRXhwSW5mbykNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA3DQoNCisgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCg0KKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDMNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MDQNCg0KKyAgICAgICAgICAgICAgICBzZWxm LmZpbmRGb3JtYXQoRXhwSW5mbykNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkw OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTEwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTExDQoNCisgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI5MTINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTMNCg0KKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjkxNA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkxNQ0KDQorICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTE2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBh cmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0K DQorDQoNCisgICAgY2xhc3MgRmluZEZvcm1hdENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K DQorDQoNCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLCBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCg0K KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQor ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuRm9ybWF0ID0gMA0KDQorICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBTZW5zaXRpdmUo c2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2Vuc2l0aXZlLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBJbnNlbnNpdGl2ZShzZWxmKToN Cg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnNl bnNpdGl2ZSwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRGb3JtYXQNCg0KKw0K DQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQoN CisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRm9ybWF0IiApOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmluZEZvcm1hdChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgZmluZEZv cm1hdChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5GaW5kRm9ybWF0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4 cEluZm8pDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTIsIHNlbGYuUlVM RV9maW5kRm9ybWF0KQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisg ICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE4DQoNCisgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAgICAgICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4 UGFyc2VyLkluc2Vuc2l0aXZlIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlNlbnNpdGl2ZSk6DQoN CisgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQoN CisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0TWF0Y2goc2VsZikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KDQor ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQorDQoNCisg ICAgY2xhc3MgTWlkRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KDQorICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQoNCisgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0K DQorICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRlZiBNaWQoc2VsZik6DQoNCisgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWlkLCAwKQ0KDQorDQoN CisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9u U3ViQ29udGV4dCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YkNvbnRleHQsaSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShz ZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX21pZEV4 cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE1pZEV4cCIg KToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE1pZEV4cChzZWxmKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0KKw0KDQorDQoNCisNCg0KKyAgICBkZWYgbWlkRXhw KHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLk1pZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0K DQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzk0LCBzZWxmLlJVTEVfbWlkRXhw KQ0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyMA0KDQorICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWlkKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MjENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIyDQoNCisgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MjMNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjQNCg0KKyAgICAgICAgICAgIHNl bGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjkyNQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkyNg0KDQorICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy OTI3DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoNCisgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0KKw0KDQor DQoNCisgICAgY2xhc3MgVG9rZW5FeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwgaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQoNCisgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCg0KKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQoNCisgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQoNCisgICAgICAgICAgICBzZWxmLlRPYmogPSBOb25lDQoNCisgICAgICAgICAgICBz ZWxmLkV4cEluZm8gPSBFeHBJbmZvDQoNCisNCg0KKyAgICAgICAgZGVmIFRvayhzZWxmKToNCg0K KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ub2ssIDAp DQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQoNCisNCg0K KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6 DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWJDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgZGVm IENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCg0KKw0KDQorICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBnZXRS dWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdG9rZW5FeHANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRUb2tlbkV4cCIgKToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFRv a2VuRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0KKw0KDQor ICAgIGRlZiB0b2tlbkV4cChzZWxmLCBFeHBJbmZvKToNCg0KKw0KDQorICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlLCBFeHBJbmZvKQ0KDQorICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzk2 LCBzZWxmLlJVTEVfdG9rZW5FeHApDQoNCisgICAgICAgIHRyeToNCg0KKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTI5DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ub2spDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMA0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5MzENCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoN CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzMg0KDQorICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkz Mw0KDQorICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM1DQoN CisgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI5MzYNCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBm aW5hbGx5Og0KDQorICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVy biBsb2NhbGN0eA0KDQorDQoNCisNCg0KKyAgICBjbGFzcyBTcGFuRXhwQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJ bmZvPU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5TT2JqID0gTm9u ZQ0KDQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAg IGRlZiBTcGFuKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNwYW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQoNCisNCg0KKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KDQorICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KDQor DQoNCisgICAgICAgIGRlZiBzcGFuRmxhZ3Moc2VsZiwgaTppbnQ9Tm9uZSk6DQoNCisgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlNwYW5GbGFnc0NvbnRleHQpDQoNCisgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNwYW5GbGFnc0NvbnRleHQsaSkNCg0KKw0KDQorDQoN CisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0KKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQoNCisN Cg0KKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9u ZSk6DQoNCisgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWJDb250ZXh0KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udGV4dCxpKQ0KDQorDQoNCisNCg0KKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYgQml0 V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K DQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KDQorDQoNCisg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfc3BhbkV4cA0KDQorDQoNCisgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCg0KKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFNwYW5FeHAiICk6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRTcGFuRXhwKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoN CisNCg0KKw0KDQorICAgIGRlZiBzcGFuRXhwKHNlbGYsIEV4cEluZm8pOg0KDQorDQoNCisgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCg0KKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM5OCwgc2VsZi5SVUxFX3NwYW5FeHApDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCg0KKyAgICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzgNCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNwYW4pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjkzOQ0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDANCg0K KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KDQorICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI5NDENCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0Mg0KDQorICAg ICAgICAgICAgc2VsZi5zcGFuRmxhZ3MoKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NDcNCg0KKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCg0KKyAgICAgICAgICAgIHdoaWxlIF9sYT09 VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjk0Mw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0NA0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3BhbkZsYWdzKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjk0OQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K DQorICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTUwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCg0KKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUxDQoNCisg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KDQorICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5NTINCg0KKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTMNCg0KKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjk1NA0KDQorICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk1NQ0KDQorICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCg0KKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTU2DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6 DQoNCisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0K KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cg0KKw0KDQorDQoNCisgICAgY2xhc3MgU3BhbkZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xKToNCg0KKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KDQorICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCg0KKyAgICAgICAgICAgIHNlbGYuRmxhZyA9IDANCg0K Kw0KDQorICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCg0KKw0KDQorICAgICAgICBk ZWYgTGFzdE5vbk1hdGNoKHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkxhc3ROb25NYXRjaCwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Rmlyc3ROb25NYXRjaChzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5GaXJzdE5vbk1hdGNoLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfc3BhbkZsYWdzDQoNCisNCg0KKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KDQorICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0U3BhbkZsYWdzIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0U3BhbkZsYWdzKHNlbGYpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCg0KKw0KDQorDQoNCisNCg0K Kw0KDQorICAgIGRlZiBzcGFuRmxhZ3Moc2VsZik6DQoNCisNCg0KKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQoNCisgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDAsIHNlbGYuUlVM RV9zcGFuRmxhZ3MpDQoNCisgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCg0KKyAg ICAgICAgdHJ5Og0KDQorICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KDQorICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTgNCg0KKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQoNCisgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDI0Nikp ICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMjQ2KSkgJiAoKDEgPDwgKFZmclN5bnRh eFBhcnNlci5MYXN0Tm9uTWF0Y2ggLSAyNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRmly c3ROb25NYXRjaCAtIDI0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLSAyNDYp KSkpICE9IDApKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJ bmxpbmUoc2VsZikNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYu Y29uc3VtZSgpDQoNCisgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cg0KKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQoNCisgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KDQorICAgICAgICBmaW5hbGx5Og0KDQor ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQoNCisgICAgICAgIHJldHVybiBsb2NhbGN0eA0K DQorDQoNCisNCg0KKyAgICBjbGFzcyBWZnJFeHByZXNzaW9uTWFwQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsIGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZv PU5vbmUpOg0KDQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQoNCisgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KDQorICAgICAgICAg ICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KDQorICAgICAgICAgICAgc2VsZi5NT2JqID0gTm9uZQ0K DQorICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KDQorDQoNCisgICAgICAgIGRl ZiBNYXAoc2VsZik6DQoNCisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTWFwLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQoN CisgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNl bGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQsMCkNCg0KKw0KDQor DQoNCisgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwgMCkNCg0KKw0KDQorICAgICAgICBkZWYg Q2xvc2VQYXJlbihzZWxmKToNCg0KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KDQorDQoNCisgICAgICAgIGRlZiB2ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KDQorICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCkNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQs aSkNCg0KKw0KDQorDQoNCisgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCg0K KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KDQorICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIGkpDQoNCisNCg0KKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25l KToNCg0KKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCg0KKw0KDQorICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4 cHJlc3Npb25NYXANCg0KKw0KDQorICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQoNCisgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJFeHByZXNzaW9uTWFwIiApOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyRXhwcmVzc2lvbk1hcChzZWxmKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQoNCisNCg0K Kw0KDQorDQoNCisNCg0KKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hcChzZWxmLCBFeHBJbmZvKToN Cg0KKw0KDQorICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9u TWFwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIEV4cEluZm8pDQoNCisgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDIsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9u TWFwKQ0KDQorICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQoNCisgICAgICAgIHRy eToNCg0KKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCg0KKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYwDQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5NYXApDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2MQ0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KDQorICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjINCg0KKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YigpDQoNCisgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2Mw0KDQor ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQoNCisgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjk3MQ0KDQorICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQoNCisgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KDQorICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuIG9yICgoKChfbGEg LSAxOTIpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE5MikpICYgKCgxIDw8IChW ZnJTeW50YXhQYXJzZXIuQ29uZCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5GaW5k IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1pZCAtIDE5MikpIHwgKDEgPDwgKFZm clN5bnRheFBhcnNlci5Ub2sgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3BhbiAt IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EdXAgLSAxOTIpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVmFyRXFWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSWRF cVZhbCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5JZEVxSWQgLSAxOTIpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3QgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb25SZWYgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUnVs ZVJlZiAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWYgLSAxOTIpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXMgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuU2VjdXJpdHkgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuR2V0IC0g MTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wgLSAxOTIpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuRmFsc2VTeW1ib2wgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuT25lIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLSAxOTIpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuWmVybyAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5VbmRlZmluZWQgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmVyc2lvbiAt IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MZW5ndGggLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuTk9UIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNldCAt IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90IC0gMTkyKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkJvb2xWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlVuSW50VmFsIC0g MTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIgLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuVG9Mb3dlciAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5N YXRjaCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5NYXRjaDIgLSAxOTIpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuUXVlc3Rpb25SZWZWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nUmVmVmFsIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1hcCAtIDE5MikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLSAxOTIpKSkpICE9IDApOg0KDQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY0DQoNCisgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk2 NQ0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K DQorICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQoNCisgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjk2Nw0KDQorICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbikNCg0KKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk3Mw0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KDQorICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTc0DQoNCisgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KDQorICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQoN CisgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KDQorICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCg0KKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCg0KKyAgICAgICAgZmluYWxseToNCg0KKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KDQorICAgICAgICByZXR1cm4gbG9jYWxjdHgNCg0K ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRh eFZpc2l0b3IucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50 YXhWaXNpdG9yLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uNDMw NzhmOTE0YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZy Q29tcGlsZXIvVmZyU3ludGF4VmlzaXRvci5weQ0KQEAgLTAsMCArMSw1MTA2IEBADQorZnJvbSBj Z2kgaW1wb3J0IHByaW50X2Vudmlyb25fdXNhZ2UNCg0KK2Zyb20gZW1haWwuZXJyb3JzIGltcG9y dCBOb25BU0NJSUxvY2FsUGFydERlZmVjdCwgTm9uUHJpbnRhYmxlRGVmZWN0DQoNCitmcm9tIGVu dW0gaW1wb3J0IEZsYWcNCg0KK2Zyb20gZmlsZWlucHV0IGltcG9ydCBsaW5lbm8NCg0KK2Zyb20g aHR0cC5jbGllbnQgaW1wb3J0IFJlc3BvbnNlTm90UmVhZHkNCg0KK2Zyb20gaXRlcnRvb2xzIGlt cG9ydCBjb3VudA0KDQorZnJvbSBtb2R1bGVmaW5kZXIgaW1wb3J0IFNUT1JFX05BTUUNCg0KK2Zy b20gbXNpbGliLnNjaGVtYSBpbXBvcnQgQ3JlYXRlRm9sZGVyDQoNCitmcm9tIHJlIGltcG9ydCBU DQoNCitmcm9tIHNyZV9wYXJzZSBpbXBvcnQgRkxBR1MNCg0KK2Zyb20gdG9rZW5pemUgaW1wb3J0 IE51bWJlcg0KDQorZnJvbSBhbnRscjQgaW1wb3J0ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuQ29t bW9uQ3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cgaW1wb3J0 ICoNCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyVXRpbGl0eSBpbXBvcnQgKg0KDQorZnJvbSBWZnJD b21waWxlci5WZnJUcmVlIGltcG9ydCAqDQoNCitpbXBvcnQgY3R5cGVzDQoNCitpbXBvcnQgc3Ry dWN0DQoNCisNCg0KK2lmIF9fbmFtZV9fIGlzIG5vdCBOb25lIGFuZCAiLiIgaW4gX19uYW1lX186 DQoNCisgICAgZnJvbSAuVmZyU3ludGF4UGFyc2VyIGltcG9ydCBWZnJTeW50YXhQYXJzZXINCg0K K2Vsc2U6DQoNCisgICAgZnJvbSBWZnJTeW50YXhQYXJzZXIgaW1wb3J0IFZmclN5bnRheFBhcnNl cg0KDQorDQoNCitnQ1ZmclZhckRhdGFUeXBlREIgPSBDVmZyVmFyRGF0YVR5cGVEQigpDQoNCitn Q1ZmckRlZmF1bHRTdG9yZSA9ICBDVmZyRGVmYXVsdFN0b3JlKCkNCg0KK2dDVmZyRGF0YVN0b3Jh Z2UgPSBDVmZyRGF0YVN0b3JhZ2UoKQ0KDQorDQoNCisjIFRoaXMgY2xhc3MgZGVmaW5lcyBhIGNv bXBsZXRlIGdlbmVyaWMgdmlzaXRvciBmb3IgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlci4NCg0KK2NsYXNzIFZmclN5bnRheFZpc2l0b3IoUGFyc2VUcmVlVmlzaXRvcik6 DQoNCisgICAgZ1plcm9FZmlJZnJUeXBlVmFsdWUgPSBFRklfSUZSX1RZUEVfVkFMVUUoKQ0KDQor DQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fT3ZlcnJpZGVD bGFzc0d1aWQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19QYXJzZXJTdGF0dXMgPSAwDQoNCisg ICAgICAgIHNlbGYuX19DSWZyT3BIZHJJbmRleCA9IC0xDQoNCisgICAgICAgIHNlbGYuX19Db25z dGFudE9ubHlJbkV4cHJlc3Npb24gPSBGYWxzZQ0KDQorICAgICAgICBzZWxmLl9fVXNlZERlZmF1 bHRBcnJheSA9IFtdDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX0NWZnJSdWxlc0RCID0gQ1ZmclJ1 bGVzREIoKQ0KDQorICAgICAgICBzZWxmLl9fQ0lmck9wSGRyID0gW10gICMNCg0KKyAgICAgICAg c2VsZi5fX0NJZnJPcEhkckxpbmVObyA9IFtdDQoNCisgICAgICAgIHNlbGYuX19DdXJyUWVzdFZh ckluZm8gPSBFRklfVkFSU1RPUkVfSU5GTygpDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX0NWZnJR dWVzdGlvbkRCID0gQ1ZmclF1ZXN0aW9uREIoKQ0KDQorICAgICAgICBzZWxmLl9fQ3VycmVudFF1 ZXN0aW9uID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEgPSBOb25l ICMNCg0KKw0KDQorICAgICAgICBzZWxmLl9fSXNTdHJpbmdPcCA9IEZhbHNlDQoNCisgICAgICAg IHNlbGYuX19Jc09yZGVyZWRMaXN0ID0gRmFsc2UNCg0KKyAgICAgICAgc2VsZi5fX0lzQ2hlY2tC b3hPcCA9IEZhbHNlDQoNCisgICAgICAgIHNlbGYuX19Sb290ID0gVmZyVHJlZU5vZGUoKQ0KDQor DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyUHJvZ3JhbS4NCg0KKyAgICBkZWYgdmlzaXRWZnJQcm9ncmFtKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyUHJvZ3JhbUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgICNzZWxm Ll9fQ1ZmclF1ZXN0aW9uREIuUHJpbnRBbGxRdWVzdGlvbigndGVzdFxcUXVlc3Rpb25zLnR4dCcp DQoNCisgICAgICAgICNnQ1ZmclZhckRhdGFUeXBlREIuRHVtcCgidGVzdFxcRGF0YVR5cGVJbmZv LnR4dCIpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjcHJhZ21hUGFja1Nob3dEZWYuDQoNCisgICAgZGVmIHZpc2l0UHJhZ21hUGFja1Nob3dEZWYo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQpOg0KDQor DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBnQ1ZmclZhckRh dGFUeXBlREIuUGFjayhMaW5lLCBWRlJfUEFDS19TSE9XKQ0KDQorICAgICAgICByZXR1cm4gc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tTdGFja0RlZi4NCg0KKyAg ICBkZWYgdmlzaXRQcmFnbWFQYWNrU3RhY2tEZWYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Q cmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBJZGVudGlmaWVyID0g c2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCg0KKw0KDQorICAgICAgICBp ZiBzdHIoY3R4LmdldENoaWxkKDApKSA9PSAncHVzaCc6DQoNCisgICAgICAgICAgICBBY3Rpb24g PSBWRlJfUEFDS19QVVNIDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBBY3Rpb24g PSBWRlJfUEFDS19QT1ANCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIEFjdGlvbiB8PSBWRlJfUEFDS19BU1NJR04NCg0KKw0KDQorICAgICAg ICBQYWNrTnVtYmVyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSwgREVGQVVMVF9QQUNL X0FMSUdOKQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgZ0NW ZnJWYXJEYXRhVHlwZURCLlBhY2soTGluZSwgQWN0aW9uLCBJZGVudGlmaWVyLCBQYWNrTnVtYmVy KQ0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3By YWdtYVBhY2tOdW1iZXIuDQoNCisgICAgZGVmIHZpc2l0UHJhZ21hUGFja051bWJlcihzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tOdW1iZXJDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgUGFja051bWJlciA9IHNlbGYu X19UcmFuc051bShjdHguTnVtYmVyKCksIERFRkFVTFRfUEFDS19BTElHTikNCg0KKw0KDQorICAg ICAgICBnQ1ZmclZhckRhdGFUeXBlREIuUGFjayhMaW5lLCBWRlJfUEFDS19BU1NJR04sIE5vbmUs IFBhY2tOdW1iZXIpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyUHJhZ21hUGFja0RlZmluaXRpb24uDQoNCisgICAgZGVmIHZpc2l0VmZyUHJh Z21hUGFja0RlZmluaXRpb24oDQoNCisgICAgICAgICAgICBzZWxmLCBjdHg6IFZmclN5bnRheFBh cnNlci5WZnJQcmFnbWFQYWNrRGVmaW5pdGlvbkNvbnRleHQpOg0KDQorICAgICAgICByZXR1cm4g c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckRhdGFTdHJ1Y3REZWZpbml0aW9u Lg0KDQorICAgIGRlZiB2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYsIGN0eDogVmZy U3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlwZUJlZ2luKCkNCg0KKw0KDQor ICAgICAgICBpZiBjdHguTjEgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBn Q1ZmclZhckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4Lk4xLnRleHQpDQoNCisgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OMS5saW5lLCBjdHguTjEu dGV4dCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4Lk4yLnRl eHQpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5O Mi5saW5lLCBjdHguTjIudGV4dCkNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisgICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0YVR5cGVF bmQoKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhVW5pb25E ZWZpbml0aW9uLg0KDQorICAgIGRlZiB2aXNpdFZmckRhdGFVbmlvbkRlZmluaXRpb24oc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJEYXRhVW5pb25EZWZpbml0aW9uQ29udGV4dCk6DQoNCisg ICAgICAgIGdDVmZyVmFyRGF0YVR5cGVEQi5EZWNsYXJlRGF0YVR5cGVCZWdpbigpDQoNCisgICAg ICAgIGlmIGN0eC5OMSAhPSBOb25lOg0KDQorICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZy VmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjEudGV4dCkNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4xLmxpbmUsIGN0eC5OMS50ZXh0 KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5OMiAhPSBOb25lOg0KDQorICAgICAgICAgICAgUmV0 dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIudGV4dCkN Cg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4yLmxp bmUsIGN0eC5OMi50ZXh0KQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisNCg0KKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRhVHlwZUVuZCgp DQoNCisgICAgICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0RmllbGRzLg0K DQorICAgIGRlZiB2aXNpdFZmckRhdGFTdHJ1Y3RGaWVsZHMoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5WZnJEYXRhU3RydWN0RmllbGRzQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgcmV0dXJu IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ2NC4NCg0K KyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGQ2NChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LkRhdGFTdHJ1Y3RGaWVsZDY0Q29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFy RGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsICdVSU5UNjQnLCBBcnJheU51 bSwgY3R4LkZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1 cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAgICByZXR1cm4gc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZDMyLg0KDQorICAgIGRl ZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEZpZWxkMzJDb250ZXh0KToNCg0KKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlw ZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwgJ1VJTlQzMicsIEFycmF5TnVtLCBjdHgu RmllbGRJblVuaW9uKQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMTYuDQoNCisgICAgZGVmIHZpc2l0 RGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGQxNkNvbnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0 YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnVUlOVDE2JywgQXJyYXlOdW0sIGN0eC5GaWVsZElu VW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4u bGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ4Lg0KDQorICAgIGRlZiB2aXNpdERhdGFTdHJ1 Y3RGaWVsZDgoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4 dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkN Cg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZp ZWxkKGN0eC5OLnRleHQsICdVSU5UOCcsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KDQor ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5O LnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZGF0YVN0cnVjdEZpZWxkQm9vbC4NCg0KKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRC b29sKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQp Og0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoN CisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVs ZChjdHguTi50ZXh0LCAnQk9PTEVBTicsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KDQor ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5O LnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZGF0YVN0cnVjdEZpZWxkU3RyaW5nLg0KDQorICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVs ZFN0cmluZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFN0cmluZ0Nv bnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVB ZGRGaWVsZChjdHguTi50ZXh0LCAnRUZJX1NUUklOR19JRCcsIEFycmF5TnVtLCBjdHguRmllbGRJ blVuaW9uKQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5O LmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkRGF0ZS4NCg0KKyAgICBkZWYgdmlzaXREYXRh U3RydWN0RmllbGREYXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxk RGF0ZUNvbnRleHQpOg0KDQorICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKCkpDQoNCisgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0 YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnRUZJX0hJSV9EQVRFJywgQXJyYXlOdW0sIGN0eC5G aWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwg Y3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRUaW1lLg0KDQorICAgIGRlZiB2aXNp dERhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0 RmllbGRUaW1lQ29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1RyYW5zTnVt KGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVE Qi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsICdFRklfSElJX1RJTUUnLCBBcnJheU51bSwg Y3R4LkZpZWxkSW5VbmlvbikNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5D b2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFJlZi4NCg0KKyAgICBkZWYg dmlzaXREYXRhU3RydWN0RmllbGRSZWYoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3Ry dWN0RmllbGRSZWZDb250ZXh0KToNCg0KKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlw ZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwgJ0VGSV9ISUlfUkVGJywgQXJyYXlOdW0s IGN0eC5GaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJu Q29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRVc2VyLg0KDQorICAgIGRl ZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5EYXRh U3RydWN0RmllbGRVc2VyQ29udGV4dCk6DQoNCisgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYgY3R4LlQudGV4dCAhPSAnQ0hBUjE2 JzoNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5 cGVBZGRGaWVsZChjdHguTi50ZXh0LCBjdHguVC50ZXh0LCBBcnJheU51bSwgY3R4LkZpZWxkSW5V bmlvbikNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1Zm clZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LCAnVUlOVDE2JywgQXJy YXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo UmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEJpdEZpZWxkNjQuDQoNCisgICAg ZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkNjQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5E YXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQpOg0KDQorICAgICAgICBXaWR0aCA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlw ZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsICdVSU5UNjQnLCBXaWR0aCwgY3R4LkZpZWxkSW5Vbmlv biksIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJp dEZpZWxkKE5vbmUsICdVSU5UNjQnLCBXaWR0aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0eC5ELmxp bmUsIGN0eC5ELnRleHQpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQzMi4NCg0KKyAgICBkZWYgdmlzaXRE YXRhU3RydWN0Qml0RmllbGQzMihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RC aXRGaWVsZDMyQ29udGV4dCk6DQoNCisgICAgICAgIFdpZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCg0KKyAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0Rmll bGQoY3R4Lk4udGV4dCwgJ1VJTlQzMicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4Lk4u bGluZSwgY3R4Lk4udGV4dCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoTm9u ZSwgJ1VJTlQzMicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQu dGV4dCkNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNkYXRhU3RydWN0Qml0RmllbGQxNi4NCg0KKyAgICBkZWYgdmlzaXREYXRhU3RydWN0Qml0Rmll bGQxNihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4 dCk6DQoNCisgICAgICAgIFdpZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0K KyAgICAgICAgaWYgY3R4Lk4gIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoY3R4Lk4udGV4dCwg J1VJTlQxNicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4 dCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo Z0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoTm9uZSwgJ1VJTlQxNicsIFdp ZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCg0KKyAgICAg ICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0 RmllbGQ4Lg0KDQorICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDgoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29udGV4dCk6DQoNCisgICAgICAgIFdp ZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgaWYgY3R4Lk4g IT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRh VHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoY3R4Lk4udGV4dCwgJ1VJTlQ4JywgV2lkdGgsIGN0 eC5GaWVsZEluVW5pb24pLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFUeXBlREIu RGF0YVR5cGVBZGRCaXRGaWVsZChOb25lLCAnVUlOVDgnLCBXaWR0aCwgY3R4LkZpZWxkSW5Vbmlv biksIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgZGVmIF9fRGVjbGFyZVN0YW5kYXJkRGVmYXVsdFN0 b3JhZ2Uoc2VsZiwgTGluZU5vKToNCg0KKw0KDQorICAgICAgICBEU09iaiA9IENJZnJEZWZhdWx0 U3RvcmUoKQ0KDQorICAgICAgICBnQ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1bHRTdG9y ZShEU09iai5HZXREZWZhdWx0U3RvcmUoKSwgIlN0YW5kYXJkIERlZmF1bHRzIiwgRUZJX1NUUklO R19JRF9JTlZBTElELCBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQpDQoNCisgICAgICAg IERTT2JqLlNldExpbmVObyAoTGluZU5vKQ0KDQorICAgICAgICBEU09iai5TZXREZWZhdWx0TmFt ZSAoRUZJX1NUUklOR19JRF9JTlZBTElEKQ0KDQorICAgICAgICBEU09iai5TZXREZWZhdWx0SWQg KEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCkNCg0KKw0KDQorICAgICAgICBEU09iak1G ID0gQ0lmckRlZmF1bHRTdG9yZSgpDQoNCisgICAgICAgIGdDVmZyRGVmYXVsdFN0b3JlLlJlZ2lz dGVyRGVmYXVsdFN0b3JlKERTT2JqTUYuR2V0RGVmYXVsdFN0b3JlKCksICJTdGFuZGFyZCBNYW51 RmFjdHVyaW5nIiwgRUZJX1NUUklOR19JRF9JTlZBTElELCBFRklfSElJX0RFRkFVTFRfQ0xBU1Nf TUFOVUZBQ1RVUklORykNCg0KKyAgICAgICAgRFNPYmpNRi5TZXRMaW5lTm8gKExpbmVObykNCg0K KyAgICAgICAgRFNPYmpNRi5TZXREZWZhdWx0TmFtZSAoRUZJX1NUUklOR19JRF9JTlZBTElEKQ0K DQorICAgICAgICBEU09iak1GLlNldERlZmF1bHRJZCAoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01B TlVGQUNUVVJJTkcpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0RGVmaW5pdGlvbi4NCg0KKyAgICBkZWYg dmlzaXRWZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckZv cm1TZXREZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChz ZWxmLl9fUm9vdCwgY3R4KQ0KDQorICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUs IGN0eC5jbGFzc0RlZmluaXRpb24oKSkNCg0KKyAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0 eC5Ob2RlLCBjdHguc3ViY2xhc3NEZWZpbml0aW9uKCkpDQoNCisgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLl9fRGVjbGFyZVN0YW5kYXJkRGVmYXVsdFN0b3Jh Z2UoTGluZSkNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAg ICAgICBDbGFzc0d1aWROdW0gPSAwDQoNCisgICAgICAgIEd1aWRMaXN0ID0gW10NCg0KKyAgICAg ICAgaWYgY3R4LmNsYXNzZ3VpZERlZmluaXRpb24oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg R3VpZExpc3QgPSBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpLkd1aWRMaXN0DQoNCisgICAgICAg ICAgICBDbGFzc0d1aWROdW0gPSBsZW4oR3VpZExpc3QpDQoNCisNCg0KKyAgICAgICAgRGVmYXVs dENsYXNzR3VpZCA9IEVGSV9ISUlfUExBVEZPUk1fU0VUVVBfRk9STVNFVF9HVUlEDQoNCisNCg0K KyAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lIGFuZCBDbGFzc0d1 aWROdW0gPj00KToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCBOb25lLCAnQWxyZWFkeSBo YXMgNCBjbGFzcyBndWlkcywgY2FuIG5vdCBhZGQgZXh0cmEgY2xhc3MgZ3VpZCEnKQ0KDQorDQoN CisgICAgICAgIGlmIENsYXNzR3VpZE51bSA9PSAwOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5f X092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgQ2xhc3NHdWlk TnVtICA9IDINCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgQ2xhc3NH dWlkTnVtICA9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9mKEVG SV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlEKSkNCg0KKyAg ICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChEZWZhdWx0Q2xhc3NHdWlkKQ0KDQorICAgICAg ICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lKToNCg0KKyAgICAgICAg ICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlkKQ0KDQor DQoNCisgICAgICAgIGVsaWYgQ2xhc3NHdWlkTnVtID09IDE6DQoNCisgICAgICAgICAgICBpZiBz ZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBDbGFz c0d1aWROdW0gICs9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9m KEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlEKSkNCg0K KyAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCg0KKyAgICAgICAg ICAgIGlmIChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQoNCisgICAgICAgICAg ICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCkNCg0KKw0K DQorICAgICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAyOg0KDQorICAgICAgICAgICAgaWYgc2Vs Zi5fX092ZXJyaWRlQ2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgQ2xhc3NH dWlkTnVtICs9IDENCg0KKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9mKEVG SV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICogc2l6ZW9mKEVGSV9HVUlEKSkNCg0KKyAg ICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFswXSkNCg0KKyAgICAgICAgICAg IEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsxXSkNCg0KKyAgICAgICAgICAgIGlmIChzZWxm Ll9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQoNCisgICAgICAgICAgICAgICAgRlNPYmou U2V0Q2xhc3NHdWlkKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCkNCg0KKw0KDQorICAgICAgICBl bGlmIENsYXNzR3VpZE51bSA9PSAzOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX092ZXJyaWRl Q2xhc3NHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgQ2xhc3NHdWlkTnVtICArPSAx DQoNCisgICAgICAgICAgICBGU09iaiA9IENJZnJGb3JtU2V0KHNpemVvZihFRklfSUZSX0ZPUk1f U0VUKSArIENsYXNzR3VpZE51bSAqIHNpemVvZihFRklfR1VJRCkpDQoNCisgICAgICAgICAgICBG U09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQoNCisgICAgICAgICAgICBGU09iai5TZXRD bGFzc0d1aWQoR3VpZExpc3RbMV0pDQoNCisgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQo R3VpZExpc3RbMl0pDQoNCisgICAgICAgICAgICBpZiAoc2VsZi5fX092ZXJyaWRlQ2xhc3NHdWlk ICE9IE5vbmUpOg0KDQorICAgICAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChzZWxmLl9f T3ZlcnJpZGVDbGFzc0d1aWQpDQoNCisNCg0KKyAgICAgICAgZWxpZiBDbGFzc0d1aWROdW0gPT0g NDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgIENsYXNzR3VpZE51bSAgKz0gMQ0KDQorICAgICAgICAgICAgRlNP YmogPSBDSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9GT1JNX1NFVCkgKyBDbGFzc0d1aWROdW0g KiBzaXplb2YoRUZJX0dVSUQpKQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1 aWRMaXN0WzBdKQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzFd KQ0KDQorICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzJdKQ0KDQorICAg ICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzNdKQ0KDQorDQoNCisgICAgICAg IEZTT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICBGU09iai5TZXRHdWlkKGN0eC5ndWlk RGVmaW5pdGlvbigpLkd1aWQpDQoNCisgICAgICAgIEZTT2JqLlNldEZvcm1TZXRUaXRsZShzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQoNCisgICAgICAgIEZTT2JqLlNldEhlbHAoc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRh dGEgPSBGU09iag0KDQorICAgICAgICAjIERlY2xhcmUgdW5kZWZpbmVkIFF1ZXN0aW9uIHNvIHRo YXQgdGhleSBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9uLg0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2NsYXNzZ3VpZERlZmluaXRpb24uDQoNCisgICAgZGVmIHZpc2l0Q2xh c3NndWlkRGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNsYXNzZ3VpZERlZmlu aXRpb25Db250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K DQorDQoNCisgICAgICAgIGZvciBHdWlkQ3R4IGluIGN0eC5ndWlkRGVmaW5pdGlvbigpOg0KDQor ICAgICAgICAgICAgY3R4Lkd1aWRMaXN0LmFwcGVuZChHdWlkQ3R4Lkd1aWQpDQoNCisNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjbGFzc0RlZmluaXRpb24uDQoNCisgICAg ZGVmIHZpc2l0Q2xhc3NEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQ2xhc3NE ZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIENPYmogPSBDSWZyQ2xhc3MoKQ0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBDbGFzcyA9IDANCg0KKyAg ICAgICAgZm9yIENsYXNzTmFtZUN0eCBpbiBjdHgudmFsaWRDbGFzc05hbWVzKCk6DQoNCisgICAg ICAgICAgICBDbGFzcyB8PSBDbGFzc05hbWVDdHguQ2xhc3NOYW1lDQoNCisgICAgICAgIExpbmUg PSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBDT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAg ICAgICBDT2JqLlNldENsYXNzKENsYXNzKQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gQ09i ag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmFsaWRDbGFzc05h bWVzLg0KDQorICAgIGRlZiB2aXNpdFZhbGlkQ2xhc3NOYW1lcyhzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkNsYXNzTm9uRGV2aWNlKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfTk9OX0RFVklDRV9D TEFTUw0KDQorICAgICAgICBlbGlmIGN0eC5DbGFzc0Rpc2tEZXZpY2UoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ESVNLX0RFVklDRV9DTEFTUw0KDQorICAg ICAgICBlbGlmIGN0eC5DbGFzc1ZpZGVvRGV2aWNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5DbGFzc05hbWUgPSBFRklfVklERU9fREVWSUNFX0NMQVNTDQoNCisgICAgICAgIGVsaWYg Y3R4LkNsYXNzTmV0d29ya0RldmljZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguQ2xh c3NOYW1lID0gRUZJX05FVFdPUktfREVWSUNFX0NMQVNTDQoNCisgICAgICAgIGVsaWYgY3R4LkNs YXNzSW5wdXREZXZpY2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9 IEVGSV9JTlBVVF9ERVZJQ0VfQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguQ2xhc3NPbkJvYXJk RGV2aWNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfT05f Qk9BUkRfREVWSUNFX0NMQVNTDQoNCisgICAgICAgIGVsaWYgY3R4LkNsYXNzT3RoZXJEZXZpY2Uo KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9PVEhFUl9ERVZJ Q0VfQ0xBU1MNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUg PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBj dHguQ2xhc3NOYW1lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdWJjbGFzc0RlZmluaXRpb24uDQoNCisgICAgZGVmIHZp c2l0U3ViY2xhc3NEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NE ZWZpbml0aW9uQ29udGV4dCk6DQoNCisgICAgICAgIFN1Yk9iaiA9IENJZnJTdWJDbGFzcygpDQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgU3ViT2JqLlNldExpbmVObyhMaW5lKQ0K DQorICAgICAgICBTdWJDbGFzcyA9IDANCg0KKyAgICAgICAgaWYgY3R4LlN1YmNsYXNzU2V0dXBB cHBsaWNhdGlvbigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBTdWJDbGFzcyB8PSBFRklfU0VU VVBfQVBQTElDQVRJT05fU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguU3ViY2xhc3NHZW5l cmFsQXBwbGljYXRpb24oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJ X0dFTkVSQUxfQVBQTElDQVRJT05fU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguU3ViY2xh c3NGcm9udFBhZ2UoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJX0ZS T05UX1BBR0VfU1VCQ0xBU1MNCg0KKyAgICAgICAgZWxpZiBjdHguU3ViY2xhc3NTaW5nbGVVc2Uo KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3ViQ2xhc3MgfD0gRUZJX1NJTkdMRV9VU0VfU1VC Q0xBU1MNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFN1YkNsYXNzID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBTdWJPYmouU2V0U3ViQ2xh c3MoU3ViQ2xhc3MpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTdWJPYmoNCg0KKw0KDQor ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckZvcm1TZXRMaXN0Lg0KDQorICAg IGRlZiB2aXNpdFZmckZvcm1TZXRMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9y bVNldExpc3RDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyRm9ybVNldCgpOg0KDQorICAgICAgICAgICAgc2Vs Zi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0 eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyRm9ybVNldC4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtU2V0KHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQpOg0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC52ZnJGb3JtRGVmaW5p dGlvbigpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJGb3JtRGVm aW5pdGlvbigpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmckZvcm1NYXBEZWZpbml0aW9uKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckZvcm1NYXBEZWZpbml0 aW9uKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW1hZ2UoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW1hZ2UoKS5Ob2Rl DQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcigpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVh cigpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhclN0b3JlRWZpKCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFZhclN0b3Jl RWZpKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFs dWUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 VmFyU3RvcmVOYW1lVmFsdWUoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRE ZWZhdWx0U3RvcmUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50RGVmYXVsdFN0b3JlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50RGlzYWJsZUlmRm9ybVNldCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KCkuTm9kZQ0KDQorICAgICAgICBpZiBj dHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQoKS5Ob2RlDQoN CisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9kZQ0KDQor DQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERlZmF1bHRTdG9y ZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmVDb250ZXh0KToNCg0KKyAgICAg ICAgRFNPYmogPSBDSWZyRGVmYXVsdFN0b3JlKCkNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAg ICAgUmVmTmFtZSA9IGN0eC5OLnRleHQNCg0KKyAgICAgICAgRGVmYXVsdFN0b3JlTmFtZUlkID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5TLnRleHQpDQoNCisNCg0KKyAgICAgICAgRGVmYXVsdElkID0g RUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJEIGlmIGN0eC5BdHRyaWJ1dGUoKT09IE5vbmUg ZWxzZSBzZWxmLl9fVHJhbnNOdW0oY3R4LkEudGV4dCkNCg0KKw0KDQorICAgICAgICBpZiBnQ1Zm ckRlZmF1bHRTdG9yZS5EZWZhdWx0SWRSZWdpc3RlcmVkKERlZmF1bHRJZCkgPT0gRmFsc2U6DQoN CisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLlJlZ2lz dGVyRGVmYXVsdFN0b3JlKERTT2JqLkdldERlZmF1bHRTdG9yZSgpLCBSZWZOYW1lLCBEZWZhdWx0 U3RvcmVOYW1lSWQsIERlZmF1bHRJZCkgLCBMaW5lKQ0KDQorICAgICAgICAgICAgRFNPYmouU2V0 RGVmYXVsdE5hbWUoRGVmYXVsdFN0b3JlTmFtZUlkKQ0KDQorICAgICAgICAgICAgRFNPYmouU2V0 RGVmYXVsdElkIChEZWZhdWx0SWQpDQoNCisgICAgICAgICAgICBEU09iai5TZXRMaW5lTm8oTGlu ZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHBOb2RlLCBSZXR1cm5Db2RlID0g Z0NWZnJEZWZhdWx0U3RvcmUuUmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoRGVmYXVsdElkLCBS ZWZOYW1lLCBEZWZhdWx0U3RvcmVOYW1lSWQpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQoNCisgICAgICAgICAgICBEU09iai5TZXREZWZhdWx0 U3RvcmUgPSBwTm9kZS5PYmpBZGRyDQoNCisgICAgICAgICAgICBEU09iai5TZXRMaW5lTm8oTGlu ZSkNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gRFNPYmoNCg0KKw0KDQorICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyLg0K DQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYsIGN0eDpWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0KToNCg0KKyAgICAg ICAgVlNPYmogPSBDSWZyVmFyU3RvcmUoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgVlNPYmou U2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAgICAgICAgVHlwZU5hbWUgPSBzdHIoY3R4LmdldENo aWxkKDEpKQ0KDQorICAgICAgICBpZiBUeXBlTmFtZSA9PSAnQ0hBUjE2JzoNCg0KKyAgICAgICAg ICAgIFR5cGVOYW1lID0gJ1VJTlQxNicNCg0KKw0KDQorICAgICAgICBJc0JpdFZhclN0b3JlID0g RmFsc2UNCg0KKyAgICAgICAgaWYgY3R4LlROICE9IE5vbmU6DQoNCisgICAgICAgICAgICBJc0Jp dFZhclN0b3JlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlSGFzQml0RmllbGQoY3R4LlRO LnRleHQpDQoNCisNCg0KKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJTVE9SRV9JRF9JTlZB TElEDQoNCisgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBW YXJTdG9yZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KDQorICAgICAgICAgICAg c2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoVmFyU3RvcmVJZCE9MCwgVHJ1ZSwgY3R4LklELmxp bmUsIGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZC4nKQ0KDQorICAgICAgICBT dG9yZU5hbWUgPSBjdHguU04udGV4dA0KDQorICAgICAgICBHdWlkID0gY3R4Lmd1aWREZWZpbml0 aW9uKCkuR3VpZA0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGF0YVN0b3Jh Z2UuRGVjbGFyZUJ1ZmZlclZhclN0b3JlKFN0b3JlTmFtZSwgR3VpZCwgZ0NWZnJWYXJEYXRhVHlw ZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNCaXRWYXJTdG9yZSksIExpbmUpDQoNCisgICAg ICAgIFZTT2JqLlNldEd1aWQoR3VpZCkNCg0KKyAgICAgICAgVmFyU3RvcmVJZCwgUmV0dXJuQ29k ZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQoNCisg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5T Ti50ZXh0KQ0KDQorICAgICAgICBWU09iai5TZXRWYXJTdG9yZUlkKFZhclN0b3JlSWQpDQoNCisg ICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVT aXplQnlUeXBlTmFtZShUeXBlTmFtZSkNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBMaW5lKQ0KDQorICAgICAgICBWU09iai5TZXRTaXplKFNpemUpDQoNCisgICAg ICAgIFZTT2JqLlNldE5hbWUoU3RvcmVOYW1lKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRh dGEgPSBWU09iag0KDQorDQoNCisgICAgICAgIHJldHVybiBWU09iag0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3Rh dGVtZW50VmFyU3RvcmVFZmkuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVF Zmkoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIFZTRU9iaiA9IENJZnJWYXJTdG9yZUVmaSgpDQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KDQorICAgICAgICBWU0VPYmouU2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAgICAgICAg R3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCg0KKw0KDQorICAgICAgICBDdXN0b21p emVkTmFtZSA9IEZhbHNlDQoNCisgICAgICAgIElzQml0VmFyU3RvcmUgPSBGYWxzZQ0KDQorICAg ICAgICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKyAgICAgICAgSXNV RUZJMjNFZmlWYXJzdG9yZSA9IFRydWUNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IE5vbmUNCg0K Kw0KDQorICAgICAgICBUeXBlTmFtZSA9IHN0cihjdHguZ2V0Q2hpbGQoMSkpDQoNCisNCg0KKyAg ICAgICAgaWYgVHlwZU5hbWUgPT0gJ0NIQVIxNic6DQoNCisgICAgICAgICAgICBUeXBlTmFtZSA9 ICdVSU5UMTYnDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguVE4gIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIEN1c3RvbWl6ZWROYW1lID0gVHJ1ZQ0KDQorICAgICAgICAgICAgSXNCaXRWYXJTdG9y ZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZpZWxkKFR5cGVOYW1lKQ0KDQor DQoNCisgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBWYXJT dG9yZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JRC50ZXh0KQ0KDQorICAgICAgICAgICAgc2Vs Zi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoVmFyU3RvcmVJZCE9MCwgVHJ1ZSwgY3R4LklELmxpbmUs IGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZC4nKQ0KDQorDQoNCisgICAgICAg IEF0dHJpYnV0ZXMgPSAwDQoNCisgICAgICAgIGZvciBBdHJDdHggaW4gY3R4LnZmclZhclN0b3Jl RWZpQXR0cigpOg0KDQorICAgICAgICAgICAgQXR0cmlidXRlcyB8PSBBdHJDdHguQXR0cg0KDQor ICAgICAgICBWU0VPYmouU2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVzKQ0KDQorDQoNCisgICAgICAg IGlmIGN0eC5TTiAhPSBOb25lOg0KDQorICAgICAgICAgICAgU3RvcmVOYW1lID0gY3R4LlNOLnRl eHQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIElzVUVGSTIzRWZpVmFyc3RvcmUg PSBGYWxzZQ0KDQorICAgICAgICAgICAgTmFtZVN0cmluZ0lkID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5WTi50ZXh0KQ0KDQorICAgICAgICAgICAgU3RvcmVOYW1lID0gZ0NWZnJTdHJpbmdEQi5HZXRW YXJTdG9yZU5hbWVGcm9tU3RyaW5nSWQoTmFtZVN0cmluZ0lkKSAjDQoNCisgICAgICAgICAgICBp ZiBTdG9yZU5hbWUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxl LkhhbmRsZVdhcm5pbmcoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBjdHgu Vk4ubGluZSwgJ0NhblwndCBnZXQgdmFyc3RvcmUgbmFtZSBmb3IgdGhpcyBTdHJpbmdJZCEnKQ0K DQorICAgICAgICAgICAgaWYgbm90KEN1c3RvbWl6ZWROYW1lKToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRF RCwgTGluZSwgJ09sZCBzdHlsZSBlZml2YXJzdG9yZSBtdXN0IGhhdmUgU3RyaW5nIElkZW50aWZp ZXIhJykNCg0KKyAgICAgICAgICAgIFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4udGV4dCkN Cg0KKyAgICAgICAgICAgIGlmIFNpemUgPT0gMTogVHlwZU5hbWUgPSAnVUlOVDgnDQoNCisgICAg ICAgICAgICBlbGlmIFNpemUgPT0gMjogVHlwZU5hbWUgPSAnVUlOVDE2Jw0KDQorICAgICAgICAg ICAgZWxpZiBTaXplID09IDQ6IFR5cGVOYW1lID0gJ1VJTlQzMicNCg0KKyAgICAgICAgICAgIGVs aWYgU2l6ZSA9PSA4OiBUeXBlTmFtZSA9ICdVSU5UNjQnDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOU1VQUE9SVEVELCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KDQorDQoNCisgICAg ICAgIGlmIElzVUVGSTIzRWZpVmFyc3RvcmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKGdDVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZUJ1ZmZlclZhclN0b3JlKFN0b3JlTmFtZSwg R3VpZCwgZ0NWZnJWYXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNCaXRWYXJT dG9yZSwgQXR0cmlidXRlcyksIExpbmUpDQoNCisgICAgICAgICAgICBWYXJTdG9yZUlkLCBSZXR1 cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKFN0b3JlTmFtZSwgR3VpZCkN Cg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxp bmUsIGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICAgICAgU2l6ZSwgUmV0dXJuQ29kZSA9IGdDVmZy VmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeVR5cGVOYW1lKFR5cGVOYW1lKQ0KDQorICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KDQorICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9y YWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZShzZWxmLl9fR2V0VGV4dChjdHguVE4pLCBHdWlkLCBn Q1ZmclZhckRhdGFUeXBlREIsIFR5cGVOYW1lLCBWYXJTdG9yZUlkLCBJc0JpdFZhclN0b3JlLCBB dHRyaWJ1dGVzKSwgTGluZSkgIw0KDQorICAgICAgICAgICAgVmFyU3RvcmVJZCwgUmV0dXJuQ29k ZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChzZWxmLl9fR2V0VGV4dChjdHguVE4p LCBHdWlkKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguVk4ubGluZSwgY3R4LlZOLnRleHQpDQoNCisgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2Rl ID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoVHlwZU5hbWUp DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxp bmUpDQoNCisNCg0KKyAgICAgICAgVlNFT2JqLlNldEd1aWQoR3VpZCkNCg0KKyAgICAgICAgVlNF T2JqLlNldFZhclN0b3JlSWQgKFZhclN0b3JlSWQpDQoNCisgICAgICAgIFZTRU9iai5TZXRTaXpl KFNpemUpDQoNCisgICAgICAgIFZTRU9iai5TZXROYW1lKFN0b3JlTmFtZSkNCg0KKw0KDQorICAg ICAgICBjdHguTm9kZS5EYXRhID0gVlNFT2JqDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5O b2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyVmFyU3RvcmVFZmlBdHRyLg0KDQorICAgIGRlZiB2aXNpdFZmclZhclN0b3Jl RWZpQXR0cihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclZhclN0b3JlRWZpQXR0ckNvbnRl eHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAg IGN0eC5BdHRyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAgICAgcmV0 dXJuIGN0eC5BdHRyDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUuDQoNCisgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZiwgY3R4OlZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZUNvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIFZTTlZPYmogPSBDSWZyVmFyU3RvcmVOYW1lVmFsdWUoKQ0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIEd1aWQgPSBjdHguZ3VpZERlZmlu aXRpb24oKS5HdWlkDQoNCisgICAgICAgIEhhc1ZhclN0b3JlSWQgPSBGYWxzZQ0KDQorICAgICAg ICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgICAgICBp ZiBjdHguVmFySWQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgSGFzVmFyU3RvcmVJZCA9IFRy dWUNCg0KKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4LklELnRl eHQpDQoNCisgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJTdG9yZUlk ICE9MCwgVHJ1ZSwgY3R4LklELmxpbmUsIGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxs b3dlZCcpDQoNCisNCg0KKyAgICAgICAgU3RvcmVOYW1lID0gY3R4LlNOLnRleHQNCg0KKyAgICAg ICAgQ3JlYXRlZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgc0luZGV4ID0gMCBpZiAgSGFzVmFy U3RvcmVJZCA9PSBGYWxzZSBlbHNlIDENCg0KKyAgICAgICAgZUluZGV4ID0gbGVuKGN0eC5OYW1l KCkpDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKHNJbmRleCwgZUluZGV4KToNCg0KKyAgICAg ICAgICAgIGlmIENyZWF0ZWQgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVOYW1lVmFyU3RvcmVCZWdpbihTdG9y ZU5hbWUsIFZhclN0b3JlSWQpLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQpDQoNCisgICAgICAg ICAgICAgICAgQ3JlYXRlZCA9IFRydWUNCg0KKyAgICAgICAgICAgIEl0ZW0gPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgIGdDVmZyRGF0YVN0b3JhZ2UuTmFt ZVRhYmxlQWRkSXRlbShJdGVtKQ0KDQorDQoNCisgICAgICAgIGdDVmZyRGF0YVN0b3JhZ2UuRGVj bGFyZU5hbWVWYXJTdG9yZUVuZChHdWlkKQ0KDQorDQoNCisgICAgICAgIFZTTlZPYmouU2V0TGlu ZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBWU05WT2JqLlNldEd1aWQoR3VpZCkNCg0K KyAgICAgICAgVmFyc3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFy U3RvcmVJZChTdG9yZU5hbWUsIEd1aWQpDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo UmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICBWU05WT2Jq LlNldFZhclN0b3JlSWQoVmFyc3RvcmVJZCkNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRh ID0gVlNOVk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRl bWVudERpc2FibGVJZkZvcm1TZXQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGlzYWJs ZUlmRm9ybVNldChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJ ZkZvcm1TZXRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBESU9iaiA9IENJZnJEaXNhYmxlSWYo KQ0KDQorICAgICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAg IHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb24gPSBUcnVlDQoNCisgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBESU9iag0KDQorICAgICAgICBDb25kaXRpb24gPSAnZGlzYWJsZWlmJyArICcg JyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u KCkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9IENvbmRpdGlvbg0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Lg0KDQorICAgIGRlZiB2aXNpdFZm clN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBTSU9i aiA9IENJZnJTdXBwcmVzc0lmKCkNCg0KKyAgICAgICAgU0lPYmouU2V0TGluZU5vKGN0eC5zdGFy dC5saW5lKQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCg0KKyAgICAgICAgQ29u ZGl0aW9uID0gJ3N1cHByZXNzaWYnICsgJyAnICsgIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0 KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRp dGlvbiA9IENvbmRpdGlvbg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor ICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2d1aWRTdWJEZWZpbml0aW9uLg0KDQor ICAgIGRlZiB2aXNpdEd1aWRTdWJEZWZpbml0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu R3VpZFN1YkRlZmluaXRpb25Db250ZXh0KToNCg0KKw0KDQorICAgICAgICBjdHguR3VpZC5EYXRh NFswXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICBjdHguR3Vp ZC5EYXRhNFsxXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICBj dHguR3VpZC5EYXRhNFsyXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KDQorICAg ICAgICBjdHguR3VpZC5EYXRhNFszXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDMpKQ0K DQorICAgICAgICBjdHguR3VpZC5EYXRhNFs0XSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDQpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs1XSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDUpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs2XSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDYpKQ0KDQorICAgICAgICBjdHguR3VpZC5EYXRhNFs3XSA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDcpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ3VpZERlZmluaXRpb24uDQoNCisgICAgZGVmIHZpc2l0 R3VpZERlZmluaXRpb24oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAgICAgY3R4Lkd1aWQuRGF0YTEgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cg0KKyAgICAgICAgY3R4Lkd1aWQuRGF0YTIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCg0KKyAgICAgICAgY3R4Lkd1aWQuRGF0YTMgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigyKSkNCg0KKw0KDQorICAgICAgICByZXR1cm4gTm9uZQ0KDQorDQoNCisNCg0KKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ2V0U3RyaW5nSWQu DQoNCisgICAgZGVmIHZpc2l0R2V0U3RyaW5nSWQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5H ZXRTdHJpbmdJZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5TdHJpbmdJZCA9IHNlbGYu X19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRIZWFkZXIuDQoNCisgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50SGVhZGVyKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50SGVhZGVyQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgY3R4Lk9wT2JqID0gY3R4LnBh cmVudEN0eC5PcE9iag0KDQorICAgICAgICBpZiBjdHguT3BPYmogIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIFByb21wdCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAg ICAgICAgY3R4Lk9wT2JqLlNldFByb21wdChQcm9tcHQpDQoNCisgICAgICAgICAgICBIZWxwID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBjdHguT3BPYmou U2V0SGVscChIZWxwKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25IZWFkZXIuDQoNCisgICAgZGVmIHZpc2l0VmZyUXVl c3Rpb25IZWFkZXIoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkhlYWRlckNv bnRleHQpOg0KDQorDQoNCisgICAgICAgIGN0eC5PcE9iaiA9IGN0eC5wYXJlbnRDdHguT3BPYmoN Cg0KKw0KDQorICAgICAgICByZXR1cm4gIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy UXVlc3Rpb25CYXNlSW5mby4NCg0KKyAgICBkZWYgdmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZvKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQpOg0KDQor DQoNCisgICAgICAgIGN0eC5PcE9iaiA9IGN0eC5wYXJlbnRDdHguT3BPYmoNCg0KKw0KDQorICAg ICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9PVEhFUg0KDQorICAgICAg ICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gMA0KDQorICAgICAgICBjdHguQmFzZUluZm8u SW5mby5WYXJPZmZzZXQgPSBFRklfVkFST0ZGU0VUX0lOVkFMSUQNCg0KKyAgICAgICAgY3R4LkJh c2VJbmZvLlZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KDQorICAgICAgICBj dHguQmFzZUluZm8uSXNCaXRWYXIgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgIFFOYW1lID0gTm9u ZQ0KDQorICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBS ZXR1cm5Db2RlID0gTm9uZQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisgICAgICAgIGlmIGN0eC5OYW1lKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFFOYW1l ID0gY3R4LlFOLnRleHQNCg0KKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1 ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlOYW1lKFFOYW1lKQ0KDQorICAgICAgICAgICAgc2VsZi5f X0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1VOREVGSU5FRCwgY3R4LlFOLmxpbmUsIGN0eC5RTi50ZXh0LCAnaGFzIGFscmVhZHkgYmVlbiB1 c2VkIHBsZWFzZSB1c2VkIGFudGhlciBuYW1lJykNCg0KKw0KDQorICAgICAgICBWYXJJZFN0ciA9 ICcnIGlmIGN0eC5WYXJJZCgpID09IE5vbmUgZWxzZSAgY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZh cklkU3RyDQoNCisgICAgICAgIGlmIGN0eC5RdWVzdGlvbklkKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4dCkNCg0KKyAgICAgICAgICAg IFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuRmluZFF1ZXN0aW9uQnlJZChRSWQp DQoNCisgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVELCBjdHguSUQubGluZSwgY3R4LklELnRl eHQsICdoYXMgYWxyZWFkeSBiZWVuIHVzZWQgcGxlYXNlIHVzZWQgYW50aGVyIG51bWJlcicpDQoN CisNCg0KKyAgICAgICAgaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f Tk9STUFMOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0lzQ2hlY2tCb3hPcDoNCg0KKyAgICAg ICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9CT09MRUFODQoN CisgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVn aXN0ZXJRdWVzdGlvbihRTmFtZSwgVmFySWRTdHIsIFFJZCkNCg0KKyAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LnN0YXJ0LmxpbmUpDQoNCisNCg0KKyAgICAg ICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFOg0KDQor ICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfREFURQ0KDQor ICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lz dGVyTmV3RGF0ZVF1ZXN0aW9uKFFOYW1lLCBWYXJJZFN0ciwgUUlkKQ0KDQorICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCg0KKw0KDQor ICAgICAgICBlbGlmIGN0eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUU6 DQoNCisgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1F DQoNCisgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIu UmVnaXN0ZXJOZXdUaW1lUXVlc3Rpb24oUU5hbWUsIFZhcklkU3RyLCBRSWQpDQoNCisgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KDQor DQoNCisgICAgICAgIGVsaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f UkVGOg0KDQorICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVf UkVGDQoNCisgICAgICAgICAgICBpZiBWYXJJZFN0ciAhPSAnJzogI3N0YW5kIGZvciBxdWVzdGlv biB3aXRoIHN0b3JhZ2UuDQoNCisgICAgICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2Vs Zi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUmVmUXVlc3Rpb24oUU5hbWUsIFZhcklkU3RyLCBR SWQpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAg UUlkLCBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyUXVlc3Rpb24o UU5hbWUsIE5vbmUsIFFJZCkNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxf RVJST1IsIGN0eC5zdGFydC5saW5lKQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19DdXJyUWVzdFZh ckluZm8gPSBjdHguQmFzZUluZm8NCg0KKw0KDQorICAgICAgICBpZiBjdHguT3BPYmogIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5PcE9iai5TZXRRdWVzdGlvbklkKFFJZCkNCg0KKyAgICAg ICAgICAgIGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZB TElEOg0KDQorICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRWYXJTdG9yZUluZm8oY3R4LkJh c2VJbmZvKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguT3BPYmoNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3F1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRRdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAg ICAgICBpZiBjdHguUmVhZE9ubHlGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5R SEZsYWcgPSAweDAxDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguSW50ZXJhY3RpdmVGbGFnKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDA0DQoNCisNCg0KKyAgICAg ICAgZWxpZiBjdHguUmVzZXRSZXF1aXJlZEZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg Y3R4LlFIRmxhZyA9IDB4MTANCg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5SZXN0U3R5bGVGbGFn KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDIwDQoNCisNCg0KKyAg ICAgICAgZWxpZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5RSEZsYWcgPSAweDQwDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguT3B0aW9u T25seUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5IYW5k bGVXYXJuaW5nKEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFN RVdPUktfT1BDT0RFLCBjdHguTy5saW5lLCBjdHguTy50ZXh0KQ0KDQorDQoNCisgICAgICAgIGVs aWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBnQ1ZmckVycm9y SGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfT0JT T0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQoNCisNCg0K KyAgICAgICAgZWxpZiBjdHguTGF0ZUNoZWNrRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZS X1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5MLmxpbmUsIGN0eC5MLnRl eHQpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5RSEZsYWcNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdG9yYWdlVmFy SWRSdWxlMS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMShzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUxQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBTTmFtZSA9IGN0 eC5TTjEudGV4dA0KDQorICAgICAgICBjdHguVmFySWRTdHIgKz0gU05hbWUNCg0KKw0KDQorICAg ICAgICBJZHggPSBzZWxmLl9fVHJhbnNOdW0oY3R4LkkudGV4dCkNCg0KKyAgICAgICAgY3R4LlZh cklkU3RyICs9ICdbJw0KDQorICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LkkudGV4dA0KDQor ICAgICAgICBjdHguVmFySWRTdHIgKz0gJ10nDQoNCisNCg0KKyAgICAgICAgY3R4LkJhc2VJbmZv LlZhclN0b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQo U05hbWUpDQoNCisgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMS5saW5lLCBjdHguU04xLnRleHQpDQoNCisgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGF0YVN0b3JhZ2UuR2V0TmFtZVZhclN0 b3JlSW5mbyhjdHguQmFzZUluZm8sIElkeCksIGN0eC5TTjEubGluZSwgY3R4LlNOMS50ZXh0KQ0K DQorDQoNCisgICAgICAgIHJldHVybiBjdHguVmFySWRTdHINCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0b3JhZ2VW YXJJZFJ1bGUyLg0KDQorICAgIGRlZiB2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUyKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkUnVsZTJDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIFZhclN0ciA9 ICcnICMgdHlwZS5maWVsZA0KDQorICAgICAgICBTTmFtZSA9IGN0eC5TTjIudGV4dA0KDQorICAg ICAgICBjdHguVmFySWRTdHIgKz0gU05hbWUNCg0KKyAgICAgICAgY3R4LkJhc2VJbmZvLlZhclN0 b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoU05hbWUp DQoNCisgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PSBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQoNCisgICAgICAgICAg ICBWYXJTdG9yZVR5cGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShjdHguQmFz ZUluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAgIGlmIFZhclN0b3JlVHlwZSA9PSBFRklf VkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFyU3RvcmVUeXBl ID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTOg0K DQorICAgICAgICAgICAgICAgIFROYW1lLCBSZXR1cm5Db2RlMiA9IGdDVmZyRGF0YVN0b3JhZ2Uu R2V0QnVmZmVyVmFyU3RvcmVEYXRhVHlwZU5hbWUoY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQpDQoN CisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlMiwgY3R4LlNO Mi5saW5lLCBjdHguU04yLnRleHQpDQoNCisgICAgICAgICAgICAgICAgVmFyU3RyICs9IFROYW1l DQoNCisNCg0KKyAgICAgICAgQ291bnQgPSBsZW4oY3R4LkRvdCgpKQ0KDQorICAgICAgICBmb3Ig aSBpbiByYW5nZSgwLCBDb3VudCk6DQoNCisgICAgICAgICAgICBpZiBjdHguQ2hlY2tGbGFnIG9y IFJldHVybkNvZGUgPT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAg ICAgICAgICAgICAgY29uZCA9IChWYXJTdG9yZVR5cGUgIT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBF LkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKSBhbmQgKFZhclN0b3JlVHlwZSAhPSBFRklfVkZSX1ZB UlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUykNCg0KKyAgICAgICAgICAg ICAgICBSZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JFX1VT RV9FUlJPUiBpZiBjb25kIGVsc2UgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0K KyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIu bGluZSwgY3R4LlNOMi50ZXh0KQ0KDQorDQoNCisgICAgICAgICAgICBjdHguVmFySWRTdHIgKz0g Jy4nDQoNCisgICAgICAgICAgICBWYXJTdHIgKz0gJy4nDQoNCisgICAgICAgICAgICBjdHguVmFy SWRTdHIgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHINCg0KKyAgICAgICAgICAgIFZhclN0ciAr PSBjdHguYXJyYXlOYW1lKGkpLlN1YlN0cloNCg0KKw0KDQorICAgICAgICBpZiBWYXJTdG9yZVR5 cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KDQorICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkdldEVmaVZhclN0 b3JlSW5mbyhjdHguQmFzZUluZm8pLCBjdHguU04yLmxpbmUsIGN0eC5TTjIudGV4dCkNCg0KKw0K DQorICAgICAgICBlbGlmIFZhclN0b3JlVHlwZSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJ X1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFyU3RvcmVUeXBlID09IEVGSV9WRlJfVkFSU1RPUkVf VFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUl9CSVRTOg0KDQorICAgICAgICAgICAgY3R4LkJh c2VJbmZvLkluZm8uVmFyT2Zmc2V0LCBjdHguQmFzZUluZm8uVmFyVHlwZSwgY3R4LkJhc2VJbmZv LlZhclRvdGFsU2l6ZSwgY3R4LkJhc2VJbmZvLklzQml0VmFyLCBSZXR1cm5Db2RlID0gZ0NWZnJW YXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVmFyU3RyKQ0KDQorICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04yLmxpbmUsIFZhclN0cikNCg0KKyAg ICAgICAgICAgIFZhckd1aWQgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlR3VpZChjdHgu QmFzZUluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo Z0NWZnJCdWZmZXJDb25maWcuUmVnaXN0ZXIoU05hbWUsIFZhckd1aWQpLCBjdHguU04yLmxpbmUp DQoNCisgICAgICAgICAgICBEdW1teSA9IHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUNCg0KKyAg ICAgICAgICAgIFJldHVybkNvZGUgPSBWZnJSZXR1cm5Db2RlKGdDVmZyQnVmZmVyQ29uZmlnLldy aXRlKA0KDQorICAgICAgICAgICAgICAgICdhJywNCg0KKyAgICAgICAgICAgICAgICBTTmFtZSwN Cg0KKyAgICAgICAgICAgICAgICBWYXJHdWlkLA0KDQorICAgICAgICAgICAgICAgIE5vbmUsDQoN CisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUsDQoNCisgICAgICAgICAgICAg ICAgY3R4LkJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0LA0KDQorICAgICAgICAgICAgICAgIGN0eC5C YXNlSW5mby5WYXJUb3RhbFNpemUsDQoNCisgICAgICAgICAgICAgICAgRHVtbXkpKSAj44CAdGhl IGRlZmluaXRpb24gb2YgZHVtbXkgaXMgbmVlZGVkIHRvIGNoZWNrDQoNCisgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSkNCg0KKyAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5BZGRCdWZmZXJWYXJTdG9y ZUZpZWxkSW5mbyhjdHguQmFzZUluZm8pLCBjdHguU04yLmxpbmUpDQoNCisNCg0KKyAgICAgICAg cmV0dXJuIGN0eC5WYXJJZFN0cg0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckNvbnN0YW50VmFsdWVGaWVsZC4NCg0KKyAgICBk ZWYgdmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5W ZnJDb25zdGFudFZhbHVlRmllbGRDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQoNCisgICAgICAg IGlmIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lIGFuZCBzZWxmLl9fQ3VycmVudE1p bk1heERhdGEuSXNOdW1lcmljT3Bjb2RlKCk6DQoNCisgICAgICAgICAgICBOdW1lcmljUXN0ID0g Q0lmck51bWVyaWMoc2VsZi5fX0N1cnJlbnRRdWVzdGlvbikgIw0KDQorICAgICAgICAgICAgSW50 RGVjU3R5bGUgPSBUcnVlIGlmIChOdW1lcmljUXN0LkdldE51bWVyaWNGbGFncygpICYgRUZJX0lG Ul9ESVNQTEFZKSA9PSAwIGVsc2UgRmFsc2UgIw0KDQorDQoNCisgICAgICAgIGlmIGN0eC5UcnVl U3ltYm9sKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS5iID0gMQ0KDQorDQoN CisgICAgICAgIGVsaWYgY3R4LkZhbHNlU3ltYm9sKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5WYWx1ZS5iID0gMA0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4Lk9uZSgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguVmFsdWUudTggPSBpbnQoY3R4LmdldFRleHQoKSkNCg0KKw0K DQorICAgICAgICBlbGlmIGN0eC5PbmVzKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5W YWx1ZS51NjQgPSBpbnQoY3R4LmdldFRleHQoKSkNCg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5a ZXJvKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS51OCA9IGludChjdHguZ2V0 VGV4dCgpKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkNvbG9uKCkgIT0gW106DQoNCisgICAg ICAgICAgICBjdHguVmFsdWUudGltZS5Ib3VyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MCkpDQoNCisgICAgICAgICAgICBjdHguVmFsdWUudGltZS5NaW51dGUgPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigxKSkNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS50aW1lLlNlY29uZCA9 IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4 LlNsYXNoKCkgIT0gW106DQoNCisgICAgICAgICAgICBjdHguVmFsdWUuZGF0ZS5ZZWFyID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBjdHguVmFsdWUuZGF0 ZS5Nb250aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICAgICAg Y3R4LlZhbHVlLmRhdGUuRGF5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMikpDQoNCisN Cg0KKyAgICAgICAgZWxpZiBjdHguU2VtaWNvbG9uKCkgIT0gW106DQoNCisgICAgICAgICAgICBj dHguVmFsdWUucmVmLlF1ZXN0aW9uSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS5yZWYuRm9ybUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBjdHguVmFsdWUucmVmLkRldmljZVBhdGggPSBz ZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkNCg0KKyAgICAgICAgICAgIGN0eC5WYWx1ZS5y ZWYuRm9ybVNldEd1aWQgPSBjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkDQoNCisNCg0KKyAgICAg ICAgZWxpZiBjdHguU3RyaW5nVG9rZW4oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LlZh bHVlLnN0cmluZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorDQoNCisgICAg ICAgIGVsaWYgY3R4Lk9wZW5CcmFjZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTGlz dFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUeXBlDQoNCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4Lk51bWJl cigpKSk6DQoNCisgICAgICAgICAgICAgICAgVGVtcFZhbHVlID0gRUZJX0lGUl9UWVBFX1ZBTFVF KCkNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84 Og0KDQorICAgICAgICAgICAgICAgICAgICBUZW1wVmFsdWUudTggPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBl bmQoVGVtcFZhbHVlKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1ZS51MTYg PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAg Y3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0KDQorDQoNCisgICAgICAgICAgICAgICAg aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAg ICAgIFRlbXBWYWx1ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0KDQorDQoN CisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoN CisgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1ZS51NjQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcihpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQo VGVtcFZhbHVlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgTmVnYXRpdmUgPSBU cnVlIGlmIGN0eC5OZWdhdGl2ZSgpICE9IE5vbmUgZWxzZSBGYWxzZQ0KDQorICAgICAgICAgICAg IyBUaGUgdmFsdWUgc3RvcmVkIGluIGJpdCBmaWVsZHMgaXMgYWx3YXlzIHNldCB0byBVSU5UMzIg dHlwZS4NCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6 DQoNCisgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnUzMiA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBUeXBl ID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAgICAgaWYg VHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICAgICAg Y3R4LlZhbHVlLnU4ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAg ICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg aWYgTmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0eC5WYWx1 ZS51OCA+IDB4ODA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBj dHguc3RhcnQubGluZSwgIklOVDggdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGLCBzbWFsbCB0aGFu IC0weDgwIikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnU4ID4gMHg3RjoNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5zdGFydC5saW5lLCAiSU5UOCB0eXBlIGNh bid0IGJpZyB0aGFuIDB4N0YsIHNtYWxsIHRoYW4gLTB4ODAiKQ0KDQorICAgICAgICAgICAgICAg ICAgICBpZiBOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51 OCA9IH5jdHguVmFsdWUudTggKyAxDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZh bHVlLnUxNiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAg ICAgICAgICBpZiBJbnREZWNTdHlsZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE5l Z2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICBjdHguVmFsdWUudTE2 ID4gMHg4MDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 LnN0YXJ0LmxpbmUsICJJTlQxNiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRiwgc21hbGwgdGhh biAtMHg4MDAwIikNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnUxNiA+IDB4N0ZGRjoNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5zdGFydC5saW5lLCAiSU5UMTYg dHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkYsIHNtYWxsIHRoYW4gLTB4ODAwMCIpDQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg Y3R4LlZhbHVlLnUxNiA9IH5jdHguVmFsdWUudTE2ICsgMQ0KDQorDQoNCisgICAgICAgICAgICAg ICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAg ICAgICAgIGN0eC5WYWx1ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAg Y3R4LlZhbHVlLnUzMiA+IDB4ODAwMDAwMDA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLCBjdHguc3RhcnQubGluZSwgIklOVDMyIHR5cGUgY2FuJ3QgYmlnIHRoYW4g MHg3RkZGRkZGRiwgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCIpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN0eC5WYWx1 ZS51MzIgPiAwWDdGRkZGRkZGOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwgY3R4LnN0YXJ0LmxpbmUsICJJTlQzMiB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRkZG RkYsIHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAiKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBO ZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS51MzIgPSB+Y3R4 LlZhbHVlLnUzMiArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWUudTY0 ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICAgICAgICAg IGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6 DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0eC5WYWx1ZS51NjQgPiAweDgw MDAwMDAwMDAwMDAwMDA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LCBjdHguc3RhcnQubGluZSwgIklOVDY0IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRkZG RkZGRkZGLCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAiKQ0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdHgu VmFsdWUudTY0ID4gMHg3RkZGRkZGRkZGRkZGRkZGOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiwgY3R4LnN0YXJ0LmxpbmUsICJJTlQ2NCB0eXBlIGNhbid0IGJpZyB0 aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiwgc21hbGwgdGhhbiAtMHg4MDAwMDAwMDAwMDAwMDAwIikN Cg0KKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBjdHguVmFsdWUudTY0ID0gfmN0eC5WYWx1ZS51NjQgKyAxDQoNCisNCg0KKyAgICAg ICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KDQorICAgICAgICAg ICAgICAgICAgICBjdHguVmFsdWUuYiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0K DQorDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoN Cg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnN0cmluZyA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDApKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguVmFsdWUsIGN0eC5W YWx1ZUxpc3QNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3ZmckltYWdlVGFnLg0KDQorICAgIGRlZiB2aXNpdFZmckltYWdl VGFnKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBJT2JqID0gQ0lmckltYWdlKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKyAgICAgICAgSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisg ICAgICAgIElPYmouU2V0SW1hZ2VJZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0K KyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IElPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmckxvY2tlZFRhZy4NCg0KKyAgICBkZWYgdmlzaXRWZnJMb2NrZWRU YWcoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJMb2NrZWRUYWdDb250ZXh0KToNCg0KKw0K DQorICAgICAgICBMT2JqPUNJZnJMb2NrZWQoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorICAgICAgICBMT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAg ICAgICAgY3R4Lk5vZGUuRGF0YSA9IExPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWcuDQoNCisgICAgZGVmIHZpc2l0VmZyU3Rh dGVtZW50U3RhdFRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRU YWdDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor ICAgICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZySW1hZ2VUYWcoKS5Ob2RlDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJMb2NrZWRUYWcoKS5Ob2RlDQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdC4NCg0K KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3Rh dGVtZW50U3RhdFRhZygpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5O b2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJG b3JtRGVmaW5pdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtRGVmaW5pdGlvbihzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlZmckZvcm1EZWZpbml0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgRk9iaiA9IENJZnJGb3JtKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKw0KDQorICAgICAgICBGT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAg ICAgICAgRm9ybUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAg IEZPYmouU2V0Rm9ybUlkKEZvcm1JZCkNCg0KKyAgICAgICAgRm9ybVRpdGxlICA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICBGT2JqLlNldEZvcm1UaXRsZShGb3Jt VGl0bGUpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEZPYmoNCg0KKyAgICAgICAg Zm9yIEN0eCBpbiBjdHgudmZyRm9ybSgpOg0KDQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENo aWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyRm9ybS4NCg0KKyAgICBkZWYgdmlzaXRWZnJGb3JtKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyRm9ybUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbWFnZSgpLk5vZGUNCg0KKyAg ICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExvY2tlZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRMb2NrZWQoKS5Ob2RlDQoNCisgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRSdWxlcygpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudERlZmF1bHQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50RGVmYXVsdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dFN0YXQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50U3RhdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVz dGlvbnMoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRDb25k aXRpb25hbCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExhYmVsKCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExhYmVsKCku Tm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50QmFubmVyKCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEJhbm5lcigpLk5vZGUNCg0K KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEludmFsaWQoKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCg0KKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKS5Ob2RlDQoNCisgICAgICAg IGlmIGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZm clN0YXRlbWVudFJlZnJlc2hFdmVudCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKS5Ob2RlDQoNCisNCg0KKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtTWFwRGVmaW5pdGlvbi4NCg0KKyAgICBk ZWYgdmlzaXRWZnJGb3JtTWFwRGVmaW5pdGlvbihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm ckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgRk1hcE9iaiA9IENJ ZnJGb3JtTWFwKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAg ICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIEZNYXBPYmouU2V0TGluZU5vKExp bmUpDQoNCisgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoRk1hcE9iai5TZXRGb3JtSWQoc2Vs Zi5fX1RyYW5zTnVtKGN0eC5TMS50ZXh0KSksIGN0eC5TMS5saW5lLCBjdHguUzEubGluZSkNCg0K KyAgICAgICAgRm9ybU1hcE1ldGhvZE51bWJlciA9IGxlbihjdHguTWFwVGl0bGUoKSkNCg0KKyAg ICAgICAgaWYgRm9ybU1hcE1ldGhvZE51bWJlciA9PSAwOg0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs IExpbmUsICdObyBNYXBNZXRob2QgaXMgc2V0IGZvciBGb3JtTWFwIScpDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBGb3JtTWFwTWV0aG9kTnVtYmVy KToNCg0KKyAgICAgICAgICAgICAgICBGTWFwT2JqLlNldEZvcm1NYXBNZXRob2Qoc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoaSsxKSksIGN0eC5ndWlkRGVmaW5pdGlvbihpKS5HdWlkKQ0KDQor ICAgICAgICBjdHguTm9kZS5EYXRhID0gRk1hcE9iag0KDQorICAgICAgICBmb3IgQ3R4IGluIGN0 eC52ZnJGb3JtKCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUs IEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRl bWVudEltYWdlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEltYWdlKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJJ bWFnZVRhZygpLk5vZGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRMb2NrZWQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50TG9ja2VkKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TG9ja2VkQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyTG9ja2VkVGFnKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0K DQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRSdWxlcy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSdWxlcyhzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJ1bGVzQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgUk9iaiA9IENJZnJSdWxlKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKw0KDQorICAgICAgICBST2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0K KyAgICAgICAgUnVsZU5hbWUgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigp KQ0KDQorICAgICAgICBzZWxmLl9fQ1ZmclJ1bGVzREIuUmVnaXN0ZXJSdWxlKFJ1bGVOYW1lKQ0K DQorICAgICAgICBST2JqLlNldFJ1bGVJZChzZWxmLl9fQ1ZmclJ1bGVzREIuR2V0UnVsZUlkKFJ1 bGVOYW1lKSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJPYmoNCg0KKyAgICAgICAgY3R4 Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgIyBleHByZXNzaW9uDQoNCisgICAg ICAgICMgZW5kIHJ1bGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50U3RhdC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0KHNlbGYsIGN0eDpWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdWJU aXRsZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRTdWJUaXRsZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXRpY1Rl eHQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 U3RhdGljVGV4dCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENyb3NzUmVm ZXJlbmNlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudENyb3NzUmVmZXJlbmNlKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0K Kw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3ViVGl0bGUuDQoNCisgICAgZGVmIHZpc2l0VmZyU3Rh dGVtZW50U3ViVGl0bGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJU aXRsZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFNPYmogPSBjdHguT3BPYmoNCg0KKw0KDQor ICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgU09iai5TZXRMaW5lTm8o TGluZSkNCg0KKw0KDQorICAgICAgICBQcm9tcHQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigpKQ0KDQorICAgICAgICBTT2JqLlNldFByb21wdChQcm9tcHQpDQoNCisNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHgudmZyU3VidGl0 bGVGbGFncygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBTT2JqLlNldEZsYWdzKGN0eC52ZnJT dWJ0aXRsZUZsYWdzKCkuU3ViRmxhZ3MpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IFNPYmoNCg0KKyAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBjdHgudmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3QoKSkNCg0KKyAgICAgICAgIyBzZXF1ZW5jZSBxdWVzdGlvbg0KDQor ICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCgpOg0K DQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisNCg0K KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25l bnQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudENvbnRleHQp Og0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkuTm9kZQ0KDQorICAgICAgICBlbGlm IGN0eC52ZnJTdGF0ZW1lbnRTdGF0KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2Rl ID0gY3R4LnZmclN0YXRlbWVudFN0YXQoKS5Ob2RlDQoNCisgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyU3VidGl0bGVGbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdWJ0aXRs ZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQp Og0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAg ICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN1YnRpdGxlRmxhZ3NGaWVsZCgpOg0KDQorICAg ICAgICAgICAgY3R4LlN1YkZsYWdzIHw9IEZsYWdzRmllbGRDdHguRmxhZw0KDQorDQoNCisgICAg ICAgIHJldHVybiBOb25lDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzdWJ0aXRsZUZsYWdzRmllbGQuDQoNCisgICAgZGVm IHZpc2l0U3VidGl0bGVGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU3VidGl0 bGVGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKCkpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IDB4MDEN Cg0KKw0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQor DQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmclN0YXRlbWVudFN0YXRpY1RleHQuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3Rh dGljVGV4dChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRpY1RleHRD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQoNCisgICAgICAgIEhlbHAg PSBzZWxmLl9fVHJhbnNOdW0oY3R4LlMxLnRleHQpDQoNCisgICAgICAgIFByb21wdCA9IHNlbGYu X19UcmFuc051bShjdHguUzIudGV4dCkNCg0KKyAgICAgICAgVHh0VHdvID0gRUZJX1NUUklOR19J RF9JTlZBTElEDQoNCisgICAgICAgIGlmIGN0eC5TMyAhPSBOb25lOg0KDQorICAgICAgICAgICAg VHh0VHdvID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5TMy50ZXh0KQ0KDQorDQoNCisgICAgICAgIFRl eHRGbGFncyA9IDANCg0KKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN0YXRpY1Rl eHRGbGFnc0ZpZWxkKCk6DQoNCisgICAgICAgICAgICBUZXh0RmxhZ3MgfD0gRmxhZ3NGaWVsZEN0 eC5GbGFnDQoNCisNCg0KKyAgICAgICAgaWYgVGV4dEZsYWdzICYgRUZJX0lGUl9GTEFHX0NBTExC QUNLOg0KDQorICAgICAgICAgICAgaWYgVHh0VHdvICE9IEVGSV9TVFJJTkdfSURfSU5WQUxJRDoN Cg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZG Ul9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfQUNUSU9OX1dJVEhfVEVYVF9UV08sIGN0eC5TMy5s aW5lLCBjdHguUzMudGV4dCkNCg0KKw0KDQorICAgICAgICAgICAgQU9iaiA9IENJZnJBY3Rpb24o KQ0KDQorICAgICAgICAgICAgUUlkLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVy UXVlc3Rpb24oTm9uZSwgTm9uZSwgUUlkKQ0KDQorICAgICAgICAgICAgQU9iai5TZXRMaW5lTm8o Y3R4LkYubGluZSkNCg0KKyAgICAgICAgICAgIEFPYmouU2V0UXVlc3Rpb25JZChRSWQpDQoNCisg ICAgICAgICAgICBBT2JqLlNldEhlbHAoSGVscCkNCg0KKyAgICAgICAgICAgIEFPYmouU2V0UHJv bXB0KFByb21wdCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoQU9iai5TZXRG bGFncyhUZXh0RmxhZ3MpLCBjdHguRi5saW5lKQ0KDQorICAgICAgICAgICAgaWYgY3R4LktleSgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5T NC50ZXh0KQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShBT2Jq LCBLZXkpDQoNCisgICAgICAgICAgICBjdHguTm9kZS5EYXRhID0gQU9iag0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUuT3BDb2RlID0gRUZJX0lGUl9BQ1RJT05fT1AgIw0KDQorDQoNCisgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICBUT2JqID0gQ0lmclRleHQoKQ0KDQorICAgICAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgICAgICBUT2JqLlNldExpbmVObyhMaW5l KQ0KDQorICAgICAgICAgICAgVE9iai5TZXRIZWxwKEhlbHApDQoNCisgICAgICAgICAgICBUT2Jq LlNldFByb21wdChQcm9tcHQpDQoNCisgICAgICAgICAgICBUT2JqLlNldFRleHRUd28oVHh0VHdv KQ0KDQorICAgICAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFRPYmoNCg0KKw0KDQorICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc3RhdGljVGV4dEZsYWdzRmllbGQuDQoNCisg ICAgZGVmIHZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNl ci5TdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0K DQorICAgICAgICAgICAgaWYgY3R4LkZsYWcgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4 Lk4ubGluZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKw0KDQorICAgICAgICAgICAgY3R4LkZsYWcg PSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQoNCisNCg0KKyAgICAgICAg cmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZS4NCg0K KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZShzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlQ29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudEdvdG8oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50R290bygpLk5vZGUNCg0KKyAgICAgICAgZWxpZiBjdHgudmZyU3RhdGVtZW50UmVzZXRC dXR0b24oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50UmVzZXRCdXR0b24oKS5Ob2RlDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoN CisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRHb3RvLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdv dG8oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgUmVmVHlwZSA9IDUNCg0KKyAgICAgICAgRGV2UGF0aCA9IEVGSV9TVFJJ TkdfSURfSU5WQUxJRA0KDQorICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0K DQorICAgICAgICBCaXRNYXNrID0gMA0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cg0KKyAgICAgICAgUjVPYmogPSBDSWZyUmVmNSgpDQoNCisgICAgICAgIFI1T2JqLlNldExpbmVO byhMaW5lKQ0KDQorICAgICAgICBjdHguT3BPYmogPSBSNU9iag0KDQorICAgICAgICAjY3R4Lk9I T2JqID0gUjVPYmoNCg0KKw0KDQorICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBSZWZUeXBlID0gNA0KDQorICAgICAgICAgICAgRGV2UGF0aCA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgRklkID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBRSWQgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigyKSkNCg0KKyAgICAgICAgICAgIFI0T2JqID0gQ0lmclJlZjQoKQ0K DQorICAgICAgICAgICAgUjRPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgICAgICBSNE9i ai5TZXREZXZpY2VQYXRoKERldlBhdGgpDQoNCisgICAgICAgICAgICBSNE9iai5TZXRGb3JtSWQo RklkKQ0KDQorICAgICAgICAgICAgUjRPYmouU2V0UXVlc3Rpb25JZChRSWQpDQoNCisgICAgICAg ICAgICBjdHguT3BPYmogPSBSNE9iag0KDQorICAgICAgICAgICAgI2N0eC5PSE9iaiA9IFI0T2Jq DQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguRm9ybVNldEd1aWQoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgUmVmVHlwZSA9IDMNCg0KKyAgICAgICAgICAgIEZJZCA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMSkpDQoNCisgICAgICAgICAgICBSM09iaiA9IENJZnJSZWYzKCkNCg0KKyAgICAg ICAgICAgIFIzT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgUjNPYmouU2V0Rm9y bUlkKEZJZCkNCg0KKyAgICAgICAgICAgIFIzT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KDQorICAg ICAgICAgICAgY3R4Lk9wT2JqID0gUjNPYmoNCg0KKyAgICAgICAgICAgICNjdHguT0hPYmogPSBS M09iag0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkZvcm1JZCgpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBGSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAgICAgICAg ICAgIFJlZlR5cGUgPSAyDQoNCisgICAgICAgICAgICBpZiBjdHguUU4gIT0gTm9uZToNCg0KKyAg ICAgICAgICAgICAgICBOYW1lID0gY3R4LlFOLnRleHQNCg0KKyAgICAgICAgICAgICAgICBRSWQs IEJpdE1hc2ssIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChOYW1lKQ0K DQorICAgICAgICAgICAgICAgIGlmIFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCg0K KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fVU5ERUZJTkVELCBjdHguUU4ubGluZSkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoN CisgICAgICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQoN CisgICAgICAgICAgICBSMk9iaiA9IENJZnJSZWYyKCkNCg0KKyAgICAgICAgICAgIFIyT2JqLlNl dExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgUjJPYmouU2V0Rm9ybUlkKEZJZCkNCg0KKyAg ICAgICAgICAgIFIyT2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KDQorICAgICAgICAgICAgY3R4Lk9w T2JqID0gUjJPYmoNCg0KKyAgICAgICAgIyBjdHguT0hPYmogPSBSMk9iag0KDQorDQoNCisNCg0K KyAgICAgICAgZWxpZiBzdHIoY3R4LmdldENoaWxkKDEpKSA9PSBzdHIoY3R4Lk51bWJlcigwKSk6 DQoNCisgICAgICAgICAgICBSZWZUeXBlID0gMQ0KDQorICAgICAgICAgICAgRklkID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBST2JqID0gQ0lmclJlZigp DQoNCisgICAgICAgICAgICBST2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgUk9i ai5TZXRGb3JtSWQoRklkKQ0KDQorICAgICAgICAgICAgY3R4Lk9wT2JqID0gUk9iag0KDQorICAg ICAgICAjIGN0eC5PSE9iaiA9IFJPYmoNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQoNCisgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1JFRg0KDQorDQoNCisgICAgICAgIGlmIFJl ZlR5cGUgPT0gNCBvciBSZWZUeXBlID09IDM6DQoNCisgICAgICAgICAgICBjdHguT3BPYmouU2V0 Rm9ybVNldElkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQoNCisgICAgICAgICMgY3R4Lk9I T2JqLlNldEZvcm1TZXRJZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KDQorDQoNCisgICAg ICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguT3BPYmouU2V0 RmxhZ3MoY3R4LnZmckdvdG9GbGFncygpLkdvdG9GbGFncykNCg0KKyAgICAgICAgIyBjdHguT0hP YmouU2V0RmxhZ3MoY3R4LnZmckdvdG9GbGFncygpLkdvdG9GbGFncykNCg0KKw0KDQorICAgICAg ICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGluZGV4ID0gaW50KGxlbihj dHguTnVtYmVyKCkpKSAtIDENCg0KKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKGluZGV4KSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktl eShjdHguT3BPYmosIEtleSkNCg0KKw0KDQorICAgICAgICAjIGN0eC5PSE9iai5TZXRTY29wZSgx KQ0KDQorICAgICAgICBjdHguT3BPYmouU2V0U2NvcGUoMSkNCg0KKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IGN0eC5PcE9iag0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm ckdvdG9GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJHb3RvRmxhZ3Moc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJHb3RvRmxhZ3NDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguZ290 b0ZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5Hb3RvRmxhZ3MgfD0gRmxhZ3NGaWVs ZEN0eC5GbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Hb3RvRmxhZ3MNCg0KKw0KDQor DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjZ290b0ZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0R290b0ZsYWdzRmllbGQoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk4g IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KSAh PSAwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBjdHguTi5saW5lKQ0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgY3R4LkZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCku UUhGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRSZXNldEJ1dHRvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1dHRv bihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlc2V0QnV0dG9uQ29udGV4 dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAg ICAgICBSQk9iaiA9IGN0eC5PcE9iag0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUN Cg0KKyAgICAgICAgUkJPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIGRlZmF1bHRzdG9y ZSA9IGN0eC5OLnRleHQNCg0KKyAgICAgICAgRGVmYXVsdElkLCBSZXR1cm5Db2RlID0gZ0NWZnJE ZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKGRlZmF1bHRzdG9yZSkNCg0KKyAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lKQ0KDQorICAgICAgICBSQk9iai5T ZXREZWZhdWx0SWQoRGVmYXVsdElkKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBS Qk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50UXVlc3Rpb25zLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uc0NvbnRleHQpOg0KDQor DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudERhdGUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50RGF0ZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dE51bWVyaWNUeXBlKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudE51bWVyaWNUeXBlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50U3RyaW5nVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50T3JkZXJlZExpc3QoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50T3JkZXJlZExpc3QoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnRUaW1lKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudFRpbWUoKS5Ob2RlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisN Cg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRRdWVzdGlvblRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0 aW9uVGFnQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXRUYWcoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdFRhZygpLk5vZGUNCg0KKyAg ICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkuTm9k ZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Tm9TdWJtaXRJZigpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkuTm9k ZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmUXVl c3QoKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFJlZnJlc2goKS5O b2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJzdG9yZURl dmljZSgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNp b24oKS5Ob2RlDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UmVmcmVz aEV2ZW50KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50V2FybmluZ0lmKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFdhcm5p bmdJZigpLk5vZGUNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudEluY29uc2lzdGVudElmLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudElu Y29uc2lzdGVudElmKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25z aXN0ZW50SWZDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBJSU9iaiA9IENJZnJJbmNvbnNpc3Rl bnRJZigpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAg ICAgSUlPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBJSU9iai5TZXRF cnJvcihzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKw0KDQorICAgICAgICBjdHgu Tm9kZS5EYXRhID0gSUlPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYu X19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Tm9TdWJtaXRJZi4N Cg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnROb1N1Ym1pdElmKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50Tm9TdWJtaXRJZkNvbnRleHQpOg0KDQorICAgICAgICBOU0lP YmogPSBDSWZyTm9TdWJtaXRJZigpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisNCg0KKyAgICAgICAgTlNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAg ICAgICAgTlNJT2JqLlNldEVycm9yKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KDQor ICAgICAgICBjdHguTm9kZS5EYXRhID0gTlNJT2JqDQoNCisgICAgICAgIGN0eC5Ob2RlLkV4cHJl c3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3Rh dGVtZW50RGlzYWJsZUlmUXVlc3QuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGlzYWJs ZUlmUXVlc3Qoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZR dWVzdENvbnRleHQpOg0KDQorICAgICAgICBESU9iaiA9IENJZnJEaXNhYmxlSWYoKQ0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIERJT2JqLlNldExp bmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERJT2JqDQoN CisgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4 dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBj dHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVmcmVzaC4NCg0KKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UmVmcmVzaENvbnRleHQpOg0KDQorICAgICAgICBST2JqID0gQ0lmclJlZnJlc2goKQ0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIFJPYmouU2V0TGlu ZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBST2JqLlNldFJlZnJlc2hJbnRlcnZhbChz ZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IFJPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRW YXJzdG9yZURldmljZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmlj ZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlQ29u dGV4dCk6DQoNCisgICAgICAgIFZET2JqID0gQ0lmclZhclN0b3JlRGV2aWNlKCkNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBWRE9iai5TZXRMaW5l Tm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIFZET2JqLlNldERldmljZVBhdGgoc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBWRE9i ag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFJlZnJl c2hFdmVudC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250ZXh0KToNCg0K KyAgICAgICAgUmlPYmogPSBDSWZyUmVmcmVzaElkKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBSaU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQoNCisgICAgICAgIFJpT2JqLlNldFJlZnJlc2hFdmVudEdyb3V0SWQoY3R4Lmd1aWREZWZp bml0aW9uKCkuR3VpZCkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJpT2JqDQoNCisNCg0K KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50V2FybmluZ0lmLg0KDQor ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdhcm5pbmdJZihzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFdhcm5pbmdJZkNvbnRleHQpOg0KDQorICAgICAgICBXSU9iaiA9IENJ ZnJXYXJuaW5nSWYoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisgICAgICAgIFdJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgV0lP YmouU2V0V2FybmluZyhzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQoNCisgICAgICAg IFdJT2JqLlNldFRpbWVPdXQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0KDQorICAg ICAgICBjdHguTm9kZS5EYXRhID0gV0lPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lv biA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9u KCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZ0xpc3QuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25U YWdMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdM aXN0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoKToNCg0KKyAg ICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KDQorICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZy4NCg0KKyAg ICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFN1cHByZXNzSWZRdWVzdCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QoKS5Ob2RlDQoNCisNCg0KKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KCkuTm9kZQ0K DQorDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgpLk5vZGUNCg0KKw0K DQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVmYXVsdCgpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkuTm9kZQ0KDQorDQoN CisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRPcHRpb25zKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9wdGlvbnMoKS5Ob2RlDQoNCisNCg0K KyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFJlYWQoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UmVhZCgpLk5vZGUNCg0KKw0KDQorICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50V3JpdGUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50V3JpdGUoKS5Ob2RlDQoNCisNCg0KKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QuDQoNCisg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0KHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0Q29udGV4dCk6DQoNCisNCg0KKyAg ICAgICAgU0lPYmogPSBDSWZyU3VwcHJlc3NJZigpDQoNCisgICAgICAgIFNJT2JqLlNldExpbmVO byhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNJT2JqDQoNCisg ICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdzdXBwcmVzc2lmJyArICcgJyArIHNlbGYuX19F eHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0K DQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QuDQoNCisgICAgZGVmIHZpc2l0VmZy U3RhdGVtZW50R3JheU91dElmUXVlc3Qoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRHcmF5T3V0SWZRdWVzdENvbnRleHQpOg0KDQorICAgICAgICBHT0lPYmogPSBDSWZyR3Jh eU91dElmKCkNCg0KKyAgICAgICAgR09JT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0K KyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEdPSU9iag0KDQorICAgICAgICBjdHguTm9kZS5Db25k aXRpb24gPSAnZ3JheW91dGlmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0 eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2ZsYWdzRmllbGQuDQoNCisg ICAgZGVmIHZpc2l0RmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkZsYWdzRmll bGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KDQorICAgICAg ICAgICAgQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUu VkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5OLmxpbmUsIGN0eC5O LnRleHQpDQoNCisgICAgICAgIGlmIGN0eC5MICE9IE5vbmU6DQoNCisgICAgICAgICAgICBDVmZy RXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklO R19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgY3R4LkwubGluZSwgY3R4LkwudGV4dCkNCg0K Kw0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnREZWZhdWx0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHQoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgSXNFeHAgPSBGYWxz ZQ0KDQorICAgICAgICBEZWZhdWx0SWQgPSBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQN Cg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisNCg0KKyAgICAgICAgaWYgY3R4 LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBWYWx1ZSA9 IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5WYWx1ZQ0KDQorICAgICAgICAgICAgVmFsdWVM aXN0ID0gY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KDQorICAgICAgICAg ICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KDQorICAgICAgICAgICAg U2l6ZSA9IDANCg0KKw0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRh ICE9IE5vbmUgYW5kIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5Jc051bWVyaWNPcGNvZGUoKToN Cg0KKyAgICAgICAgICAgICAgICAjIGNoZWNrIGRlZmF1bHQgdmFsdWUgaXMgdmFsaWQgZm9yIE51 bWVyaWMgT3Bjb2RlDQoNCisgICAgICAgICAgICAgICAgaWYgVmFsdWVMaXN0ID09IFtdOg0KDQor ICAgICAgICAgICAgICAgICAgICBWYWx1ZUxpc3QuYXBwZW5kKFZhbHVlKQ0KDQorICAgICAgICAg ICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCg0KKyAgICAgICAgICAg ICAgICAgICAgVmFsdWUgPSBWYWx1ZUxpc3RbaV0NCg0KKyAgICAgICAgICAgICAgICAgICAgTnVt ZXJpY1FzdCA9IENJZnJOdW1lcmljIChzZWxmLl9fQ3VycmVudFF1ZXN0aW9uKSAjDQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIChOdW1lcmljUXN0LkdldE51bWVyaWNGbGFncygpICYgRUZJX0lG Ul9ESVNQTEFZKSA9PSAwIGFuZCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZh bHNlOiAjDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlLnU4 IDwgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwgRmFsc2UpIG9yIFZh bHVlLnU4ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwgRmFsc2Up Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwgIk51bWVy aWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5kIE1heFZhbHVlLiIp DQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlLnUx NiA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNaW5EYXRhKFR5cGUsIEZhbHNlKSBvciBW YWx1ZS51MTYgPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWF4RGF0YShUeXBlLCBGYWxz ZSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAiTnVt ZXJpYyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQgTWF4VmFsdWUu IikNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWUu dTMyIDwgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwgRmFsc2UpIG9y IFZhbHVlLnUzMiA+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhEYXRhKFR5cGUsIEZh bHNlKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExpbmUsICJO dW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1 ZS4iKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1 ZS51NjQgPCBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0YShUeXBlLCBGYWxzZSkg b3IgVmFsdWUudTY0ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwg RmFsc2UpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwg Ik51bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5kIE1heFZh bHVlLiIpDQoNCisNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICMgVmFsdWUgZm9yIHF1ZXN0aW9uIHN0b3JlZCBpbiBiaXQgZmllbGRzIGlz IGFsd2F5cyBzZXQgdG8gVUlOVDMyIHR5cGUuDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBp ZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIFZhbHVlLnUzMiA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNaW5E YXRhKFR5cGUsIFRydWUpIG9yICBWYWx1ZS51MzIgPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEu R2V0TWF4RGF0YShUeXBlLCBUcnVlKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsIExpbmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1p blZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZS51NjQgPCBzZWxmLl9fQ3Vy cmVudE1pbk1heERhdGEuR2V0TWluRGF0YShUeXBlLCBGYWxzZSkgb3IgIFZhbHVlLnU2NCA+IHNl bGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhEYXRhKFR5cGUsIEZhbHNlKToNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExpbmUsICJOdW1lcmljIGRlZmF1bHQg dmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KDQorDQoNCisg ICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9F UlJPUiwgTGluZSwgIkRlZmF1bHQgZGF0YSB0eXBlIGVycm9yLiIpDQoNCisgICAgICAgICAgICAg ICAgU2l6ZSA9IHNpemVvZihFRklfSUZSX1RZUEVfVkFMVUUpDQoNCisNCg0KKyAgICAgICAgICAg IGVsaWYgY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLkxpc3RUeXBlOg0KDQorICAgICAgICAg ICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAg ICAgICAgICAgIFNpemUgPSBzaXplb2YoY191Ynl0ZSkgKiBsZW4oVmFsdWVMaXN0KQ0KDQorICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KDQorICAg ICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdXNob3J0KSAqIGxlbihWYWx1ZUxpc3Qp DQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6 DQoNCisgICAgICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY191bG9uZykgKiBsZW4oVmFs dWVMaXN0KQ0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdWxvbmdsb25n KSAqIGxlbihWYWx1ZUxpc3QpDQoNCisNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAg ICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAg ICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3Vsb25nKQ0KDQorICAgICAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRh dGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShUeXBlKQ0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQoNCisNCg0KKyAg ICAgICAgICAgIFNpemUgKz0gRUZJX0lGUl9ERUZBVUxULlZhbHVlLm9mZnNldA0KDQorICAgICAg ICAgICAgaWYgbm90IGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCg0KKyAg ICAgICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQoU2l6ZSkNCg0KKyAgICAgICAgICAgICAg ICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgICAgIERPYmouU2V0VmFsdWUo VmFsdWUpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fSXNTdHJpbmdPcDoNCg0K KyAgICAgICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9TVFJJTkcpDQoN CisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIERP YmouU2V0VHlwZShFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQzKFNpemUsIGxlbihWYWx1ZUxpc3QpLCBUeXBl KQ0KDQorICAgICAgICAgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgICAg ICAgICAgRE9iai5TZXRWYWx1ZShWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICAgICAgRE9iai5T ZXRUeXBlKEVGSV9JRlJfVFlQRV9CVUZGRVIpDQoNCisNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIElzRXhwID0gVHJ1ZQ0KDQorICAgICAgICAgICAgRE9iaiA9IENJZnJEZWZhdWx0 MigpDQoNCisgICAgICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAg RE9iai5TZXRTY29wZSgxKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5EZWZhdWx0U3RvcmUoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgRGVmYXVsdElkLCBSZXR1cm5Db2RlID0gZ0NWZnJEZWZh dWx0U3RvcmUuR2V0RGVmYXVsdElkKGN0eC5TTi50ZXh0KQ0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQpDQoNCisg ICAgICAgICAgICBET2JqLlNldERlZmF1bHRJZChEZWZhdWx0SWQpDQoNCisNCg0KKyAgICAgICAg c2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVlKERlZmF1bHRJZCwgY3R4LkQubGluZSwg Y3R4LkQudGV4dCkNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9y ZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgVmFyU3RvcmVO YW1lLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUoc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KDQorICAgICAgICAgICAgVmFyR3VpZCA9IGdDVmZy RGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCkNCg0KKyAgICAgICAgICAgIFZhclN0b3JlVHlwZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAg ICAgICAgIGlmIChJc0V4cCA9PSBGYWxzZSkgYW5kIChWYXJTdG9yZVR5cGUgPT0gRUZJX1ZGUl9W QVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0 Q29uZmlnQWRkKERlZmF1bHRJZCwgc2VsZi5fX0N1cnJRZXN0VmFySW5mbywgVmFyU3RvcmVOYW1l LCBWYXJHdWlkLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUsIFZhbHVlKSwgTGluZSkN Cg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IERPYmoNCg0KKyAgICAgICAgc2VsZi5fX0luc2Vy dENoaWxkKGN0eC5Ob2RlLCBjdHgudmZyU3RhdGVtZW50VmFsdWUoKSkNCg0KKw0KDQorICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhbHVlLg0KDQorICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudFZhbHVlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50VmFsdWVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBWT2JqID0gQ0lmclZhbHVlKCkN Cg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBWT2Jq LlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFZP YmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50T3B0aW9ucy4NCg0KKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRPcHRpb25zKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 T3B0aW9uc0NvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mT3B0aW9uKCkuTm9k ZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE9uZU9m T3B0aW9uLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZPcHRpb25Db250ZXh0KToNCg0KKw0K DQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SLCBMaW5lLCAiR2V0IGRhdGEgdHlwZSBlcnJvci4iKQ0KDQorDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgVmFsdWUgPSBjdHgudmZyQ29uc3Rh bnRWYWx1ZUZpZWxkKCkuVmFsdWUNCg0KKyAgICAgICAgVmFsdWVMaXN0ID0gY3R4LnZmckNvbnN0 YW50VmFsdWVGaWVsZCgpLlZhbHVlTGlzdA0KDQorICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAgICAgIGlmIHNl bGYuX19DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lOg0KDQorICAgICAgICAgICAgI3NldCBtaW4v bWF4IHZhbHVlIGZvciBvbmVvZiBvcGNvZGUNCg0KKyAgICAgICAgICAgIFN0ZXAgPSBzZWxmLl9f Q3VycmVudE1pbk1heERhdGEuR2V0U3RlcERhdGEoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJU eXBlLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyKQ0KDQorICAgICAgICAgICAgaWYg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fQ3VycmVudE1pbk1heERhdGEuU2V0TWluTWF4U3RlcERhdGEoVmFsdWUudTMyLCBWYWx1ZS51 MzIsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCg0KKyAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6 DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5TZXRNaW5N YXhTdGVwRGF0YShWYWx1ZS51NjQsIFZhbHVlLnU2NCwgU3RlcCwgRUZJX0lGUl9UWVBFX05VTV9T SVpFXzY0KQ0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEu U2V0TWluTWF4U3RlcERhdGEoVmFsdWUudTMyLCBWYWx1ZS51MzIsIFN0ZXAsIEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8zMikNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJlbnRNaW5N YXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnUxNiwgVmFsdWUudTE2LCBTdGVwLCBFRklf SUZSX1RZUEVfTlVNX1NJWkVfMTYpDQoNCisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfODoNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJl bnRNaW5NYXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnU4LCBWYWx1ZS51OCwgU3RlcCwg RUZJX0lGUl9UWVBFX05VTV9TSVpFXzgpDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAgICAgICAg IFNpemUgPSBzaXplb2YoRUZJX0lGUl9UWVBFX1ZBTFVFKQ0KDQorICAgICAgICBlbGlmIGN0eC52 ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCg0KKyAgICAgICAgICAgIGlmIFR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgU2l6ZSA9IHNp emVvZihjX3VieXRlKSAqIGxlbihWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICBTaXplID0gc2l6 ZW9mKGNfdXNob3J0KSAqIGxlbihWYWx1ZUxpc3QpDQoNCisgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICBTaXplID0gc2l6 ZW9mKGNfdWxvbmcpICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBzaXpl b2YoY191bG9uZ2xvbmcpICogbGVuKFZhbHVlTGlzdCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICMgRm9yIHRoZSBvbmVvZiBzdG9yZWQgaW4gYml0IGZpZWxkcywgc2V0IHRoZSBv cHRpb24gdHlwZSBhcyBVSU5UMzIuDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY19sb25n KQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBTaXplLCBSZXR1cm5D b2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoVHlwZSkN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUp DQoNCisNCg0KKyAgICAgICAgU2l6ZSArPSBFRklfSUZSX09ORV9PRl9PUFRJT04uVmFsdWUub2Zm c2V0DQoNCisgICAgICAgIE9PT09iaiA9IE5vbmUNCg0KKyAgICAgICAgaWYgbm90IGN0eC52ZnJD b25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCg0KKyAgICAgICAgICAgIE9PT09iaiA9IENJ ZnJPbmVPZk9wdGlvbihTaXplKQ0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBPT09PYmouU2V0VHlwZShFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgIE9PT09iai5TZXRUeXBlKFR5cGUpDQoNCisgICAgICAgICAgICBPT09PYmouU2V0VmFsdWUo VmFsdWUpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBPT09PYmogPSBDSWZyT25l T2ZPcHRpb24yKFNpemUsIGxlbihWYWx1ZUxpc3QpLCBUeXBlKQ0KDQorICAgICAgICAgICAgT09P T2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX0JVRkZFUikNCg0KKyAgICAgICAgICAgIE9PT09iai5T ZXRWYWx1ZShWYWx1ZUxpc3QpDQoNCisNCg0KKw0KDQorICAgICAgICBPT09PYmouU2V0TGluZU5v KExpbmUpDQoNCisgICAgICAgIE9PT09iai5TZXRPcHRpb24oc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMCkpKQ0KDQorDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihPT09P YmouU2V0RmxhZ3MoY3R4LnZmck9uZU9mT3B0aW9uRmxhZ3MoKS5MRmxhZ3MpLCBjdHguRi5saW5l KQ0KDQorICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKHNlbGYuX19DdXJyZW50UXVlc3Rpb24u U2V0UUhlYWRlckZsYWdzKGN0eC52ZnJPbmVPZk9wdGlvbkZsYWdzKCkuSEZsYWdzKSwgY3R4LkYu bGluZSkNCg0KKw0KDQorICAgICAgICAjIEFycmF5IHR5cGUgb25seSBmb3IgZGVmYXVsdCB0eXBl IE9uZU9mT3B0aW9uLg0KDQorICAgICAgICBpZiAoT09PT2JqLkdldEZsYWdzKCkgJiAoRUZJX0lG Ul9PUFRJT05fREVGQVVMVCB8IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHKSkgPT0gMCBhbmQg KGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZSk6DQoNCisgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwg TGluZSwgIkRlZmF1bHQga2V5d29yZCBzaG91bGQgd2l0aCBhcnJheSB2YWx1ZSB0eXBlISIpDQoN CisNCg0KKyAgICAgICAgIyBDbGVhciB0aGUgZGVmYXVsdCBmbGFnIGlmIHRoZSBvcHRpb24gbm90 IHVzZSBhcnJheSB2YWx1ZSBidXQgaGFzIGRlZmF1bHQgZmxhZy4NCg0KKyAgICAgICAgaWYgKE9P T09iai5HZXRGbGFncygpICYgKEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQgfCBFRklfSUZSX09QVElP Tl9ERUZBVUxUX01GRykpICE9IDAgYW5kIChjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlz dFR5cGUgPT0gRmFsc2UpIGFuZCAoc2VsZi5fX0lzT3JkZXJlZExpc3QpOg0KDQorICAgICAgICAg ICAgT09PT2JqLlNldEZsYWdzKE9PT09iai5HZXRGbGFncygpICYgfihFRklfSUZSX09QVElPTl9E RUZBVUxUIHwgRUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKQ0KDQorDQoNCisgICAgICAgIGlm IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5W QUxJRDoNCg0KKyAgICAgICAgICAgIFZhclN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9IGdDVmZyRGF0 YVN0b3JhZ2UuR2V0VmFyU3RvcmVOYW1lKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJ ZCkNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkN Cg0KKyAgICAgICAgICAgIFZhclN0b3JlR3VpZCA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3Rv cmVHdWlkKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgICAg IGlmIE9PT09iai5HZXRGbGFncygpICYgRUZJX0lGUl9PUFRJT05fREVGQVVMVDoNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9fQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoRUZJX0hJSV9ERUZB VUxUX0NMQVNTX1NUQU5EQVJELCBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KDQorICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3Rv cmVBbHRDb25maWdBZGQoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELCBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlLCBWYWx1ZSksIExpbmUpDQoNCisgICAgICAgICAgICBpZiBPT09PYmou R2V0RmxhZ3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShFRklfSElJX0RFRkFVTFRfQ0xB U1NfTUFOVUZBQ1RVUklORywgY3R4LkYubGluZSwgY3R4LkYudGV4dCkNCg0KKyAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3Jl QWx0Q29uZmlnQWRkKEVGSV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HLCBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5WYXJUeXBlLCBWYWx1ZSksIExpbmUpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4 LktleSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4LktOLmxpbmUsIGN0eC5LTi50ZXh0 KQ0KDQorICAgICAgICAgICAgI+OAgEd1aWQgT3B0aW9uIEtleQ0KDQorICAgICAgICAgICAgSWZy T3B0aW9uS2V5ID0gQ0lmck9wdGlvbktleShzZWxmLl9fQ3VycmVudFF1ZXN0aW9uLkdldFF1ZXN0 aW9uSWQoKSwgVmFsdWUsIHNlbGYuX19UcmFuc051bShjdHguS04udGV4dCkpDQoNCisgICAgICAg ICAgICBJZnJPcHRpb25LZXkuU2V0TGluZU5vKCkNCg0KKyAgICAgICAgaWYgY3R4LnZmckltYWdl VGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIE9PT09iai5TZXRTY29wZSgxKSAjDQoNCisg ICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPT09PYmoNCg0KKyAgICAgICAgZm9yIEN0eCBpbiBjdHgu dmZySW1hZ2VUYWcoKToNCg0KKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9k ZSwgQ3R4KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyT25l T2ZPcHRpb25GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRWZnJPbmVPZk9wdGlvbkZsYWdzKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRleHQpOg0KDQorDQoN CisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgY3R4LkxG bGFncyA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KDQorICAgICAgICBmb3IgRmxh Z3NGaWVsZEN0eCBpbiBjdHgub25lb2ZvcHRpb25GbGFnc0ZpZWxkKCk6DQoNCisgICAgICAgICAg ICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCg0KKyAgICAgICAgICAgIGN0eC5M RmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHgu SEZsYWdzLCBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNvbmVvZm9wdGlvbkZsYWdzRmllbGQuDQoNCisg ICAgZGVmIHZpc2l0T25lb2ZvcHRpb25GbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuT25lb2ZvcHRpb25GbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KCkpDQoNCisgICAgICAgIGlmIGN0eC5PcHRpb25EZWZhdWx0KCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYgY3R4Lk9wdGlvbkRlZmF1bHRN ZmcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KDQorICAgICAg ICBpZiBjdHguSW50ZXJhY3RpdmVGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5I RmxhZyA9IDB4MDQNCg0KKyAgICAgICAgaWYgY3R4LlJlc2V0UmVxdWlyZWRGbGFnKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYgY3R4LlJl c3RTdHlsZUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkhGbGFnID0gMHgyMA0K DQorICAgICAgICBpZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5IRmxhZyA9IDB4NDANCg0KKyAgICAgICAgaWYgY3R4Lk1hbnVmYWN0dXJp bmdGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MjANCg0KKyAg ICAgICAgaWYgY3R4LkRlZmF1bHRGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5M RmxhZyA9IDB4MTANCg0KKyAgICAgICAgaWYgY3R4Lk5WQWNjZXNzRmxhZygpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcgKEVGSV9WRlJfV0FS TklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDT0RFLCBjdHguQS5s aW5lLCBjdHguQS50ZXh0KQ0KDQorICAgICAgICBpZiBjdHguTGF0ZUNoZWNrRmxhZygpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcgKEVGSV9W RlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1BDT0RFLCBj dHguTC5saW5lLCBjdHguTC50ZXh0KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWcs IGN0eC5MRmxhZw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UmVhZC4NCg0KKyAgICBkZWYgdmlzaXRW ZnJTdGF0ZW1lbnRSZWFkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVh ZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFJPYmogPSBDSWZyUmVhZCgpDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgUk9iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBST2JqDQoNCisgICAg ICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPSBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgu dmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9k ZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudFdyaXRlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFdy aXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBXT2JqID0gQ0lmcldyaXRlKCkNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBXT2JqLlNldExpbmVObyhjdHguc3RhcnQu bGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdPYmoNCg0KKyAgICAgICAgY3R4Lk5v ZGUuRXhwcmVzc2lvbiA9IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uKCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUs IEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlv bihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKCkuTm9kZQ0KDQorDQoN CisgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0 aW9uVGFnKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudEJvb2xlYW5UeXBlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEJvb2xlYW5U eXBlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Qm9vbGVhblR5cGVDb250 ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKSAhPSBOb25lOg0KDQorICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50Q2hlY2tCb3goKS5Ob2RlDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRBY3Rpb24oKS5O b2RlDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1l bnRDaGVja0JveC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDaGVja0JveChzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENoZWNrQm94Q29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgQ0JPYmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9ICBjdHguc3RhcnQu bGluZQ0KDQorICAgICAgICBDQk9iai5TZXRMaW5lTm8oTGluZSkNCg0KKyAgICAgICAgc2VsZi5f X0N1cnJlbnRRdWVzdGlvbiA9IENCT2JqLkdldFF1ZXN0aW9uKCkNCg0KKyAgICAgICAgc2VsZi5f X0lzQ2hlY2tCb3hPcCA9IFRydWUNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisgICAgICAgICMgQ3JlYXRlIGEgR1VJRCBvcGNvZGUgdG8gd3JhcCB0aGUg Y2hlY2tib3ggb3Bjb2RlLCBpZiBpdCByZWZlciB0byBiaXQgdmFyc3RvcmUuDQoNCisgICAgICAg IGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICBHdWlk T2JqID0gQ0lmckd1aWQoMCkNCg0KKyAgICAgICAgICAgIEd1aWRPYmouU2V0R3VpZChFREtJSV9J RlJfQklUX1ZBUlNUT1JFX0dVSUQpDQoNCisgICAgICAgICAgICBHdWlkT2JqLlNldExpbmVObyhM aW5lKQ0KDQorICAgICAgICAgICAgR3VpZE9iai5TZXRTY29wZSgxKSAjDQoNCisNCg0KKyAgICAg ICAgIyBjaGVjayBkYXRhVHlwZQ0KDQorICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAgICAgICAgICAgc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX0JPT0xFQU4NCg0KKw0KDQorICAg ICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIHF1ZXN0aW9u IHJlZmVycyB0byBhIGJpdCBmaWVsZCwgaWYgeWVzLiBjcmVhdGUgYSBHdWlkIHRvIGluZGljYXRl IHRoZSBxdWVzdGlvbiByZWZlcnMgdG8gYSBiaXQgZmllbGQuDQoNCisgICAgICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgICAgIF8sIFJl dHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgaXMgbm90IHRo ZSB2YWxpZCBkYXRhIHR5cGUiKQ0KDQorICAgICAgICAgICAgICAgIGlmIGdDVmZyRGF0YVN0b3Jh Z2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkgPT0g RUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMgYW5kIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplICE9IDE6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQgb25seSBvY2N1cHkgMSBiaXQgaW4g Qml0IFZhcnN0b3JlIikNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBl U2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQorICAgICAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJDaGVj a0JveCB2YXJpZCBpcyBub3QgdGhlIHZhbGlkIGRhdGEgdHlwZSIpDQoNCisgICAgICAgICAgICAg ICAgICAgIGlmIFNpemUgIT0gMCBhbmQgU2l6ZSAhPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZh clRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAiQ2hl Y2tCb3ggdmFyaWQgZG9lc24ndCBzdXBwb3J0IGFycmF5IikNCg0KKyAgICAgICAgICAgICAgICAg ICAgZWxpZiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclN0b3JlSWQpID09IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNU T1JFX0JVRkZFUiBhbmQgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUgIT0gc2l6 ZW9mKGN0eXBlcy5jX2Jvb2wpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExp bmUsICJDaGVja0JveCB2YXJpZCBvbmx5IHN1cHBvcnQgQk9PTEVBTiBkYXRhIHR5cGUiKQ0KDQor DQoNCisgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBDQk9i ai5TZXRGbGFncyhjdHgudmZyQ2hlY2tCb3hGbGFncygpLkhGbGFncywgY3R4LnZmckNoZWNrQm94 RmxhZ3MoKS5MRmxhZ3MpDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAg ICAgVmFyU3RvcmVOYW1lLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9y ZU5hbWUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX19Db21wYXJlRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTLCBMaW5lLCBjdHguTC50ZXh0LCAiRmFpbGVkIHRvIHJldHJpZXZl IHZhcnN0b3JlIG5hbWUiKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgVmFyU3RvcmVHdWlkID0g Z0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJTdG9yZUlkKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUu YiA9IFRydWUNCg0KKyAgICAgICAgICAgICAgICBpZiBDQk9iai5HZXRGbGFncygpICYgMHgwMToN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0NoZWNrRHVwbGljYXRlRGVmYXVsdFZhbHVl KEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwgY3R4LkYubGluZSwgY3R4LkYudGV4dCkN Cg0KKyAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyRGVmYXVsdFN0b3JlLkJ1 ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCxz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLCBWYXJTdG9yZU5hbWUsIFZhclN0b3JlR3VpZCwgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUeXBlLCBzZWxmLmdaZXJvRWZpSWZyVHlwZVZhbHVlKQ0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1cm5Db2Rl LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUywgTGluZSwgY3R4LkwudGV4dCwgIk5v IHN0YW5kYXJkIGRlZmF1bHQgc3RvcmFnZSBmb3VuZCIpDQoNCisgICAgICAgICAgICAgICAgaWYg Q0JPYmouR2V0RmxhZ3MoKSAmIDB4MDI6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19D aGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RV UklORywgY3R4LkYubGluZSwgY3R4LkYudGV4dCkNCg0KKyAgICAgICAgICAgICAgICAgICAgUmV0 dXJuQ29kZSA9ICBnQ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZpZ0FkZChF RklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgc2VsZi5fX0N1cnJRZXN0VmFySW5m bywgVmFyU3RvcmVOYW1lLCBWYXJTdG9yZUd1aWQsIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFy VHlwZSwgc2VsZi5nWmVyb0VmaUlmclR5cGVWYWx1ZSkNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MsIExpbmUsIGN0eC5MLnRleHQsICJObyBtYW51ZmFjdHVyaW5nIGRlZmF1 bHQgc3RvcmFnZSBmb3VuZCIpDQoNCisgICAgICAgIGlmIGN0eC5LZXkoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAg ICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShDQk9iaiwgS2V5KQ0KDQorDQoNCisgICAg ICAgIGN0eC5Ob2RlLkRhdGEgPSBDQk9iag0KDQorICAgICAgICBzZWxmLl9fSXNDaGVja0JveE9w ID0gRmFsc2UNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckNo ZWNrQm94RmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyQ2hlY2tCb3hGbGFncyhzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmckNoZWNrQm94RmxhZ3NDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBp biBjdHguY2hlY2tib3hGbGFnc0ZpZWxkKCk6DQoNCisgICAgICAgICAgICBjdHguTEZsYWdzIHw9 IEZsYWdzRmllbGRDdHguTEZsYWcNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NG aWVsZEN0eC5IRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZs YWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNjaGVja2JveEZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0Q2hlY2ti b3hGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxk Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpICE9IDA6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0 eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBlbGlmIGN0eC5EZWZhdWx0RmxhZygpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTlNVUFBPUlRFRCwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCg0KKyAgICAgICAgZWxp ZiBjdHguTWFudWZhY3R1cmluZ0ZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0eC5N LmxpbmUsIGN0eC5NLnRleHQpDQoNCisgICAgICAgIGVsaWYgY3R4LkNoZWNrQm94RGVmYXVsdEZs YWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQorICAgICAg ICBlbGlmIGN0eC5DaGVja0JveERlZmF1bHRNZmdGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGN0eC5MRmxhZyA9IDB4MDINCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0 eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCg0KKw0KDQor ICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRBY3Rp b24uDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QWN0aW9uKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgQU9iaiA9IGN0eC5PcE9iag0KDQorICAg ICAgICBBT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgQU9iai5TZXRR dWVzdGlvbkNvbmZpZyhzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCg0KKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IEFPYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0K Kw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmckFjdGlvbkZsYWdzLg0KDQorICAgIGRlZiB2aXNpdFZmckFjdGlvbkZsYWdzKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0KToNCg0KKw0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVs ZEN0eCBpbiBjdHguYWN0aW9uRmxhZ3NGaWVsZCgpOg0KDQorICAgICAgICAgICAgY3R4LkhGbGFn cyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxh Z3MNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI2FjdGlvbkZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0QWN0aW9uRmxh Z3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0 KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAg ICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4Lk4ubGlu ZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVz dGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxh Zw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUuDQoNCisgICAgZGVmIHZpc2l0VmZy U3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnROdW1lcmljVHlwZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQoNCisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnROdW1lcmljKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE51bWVyaWMoKS5Ob2Rl DQoNCisgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudE9uZU9mKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudE9uZU9mKCkuTm9kZQ0KDQorDQoN CisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQLWFyc2VyI3ZmclN0YXRlbWVudE51bWVyaWMu DQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBOT2JqID0gY3R4Lk9wT2JqDQoNCisgICAg ICAgIE5PYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBzZWxmLl9fQ3Vy cmVudFF1ZXN0aW9uID0gTk9iai5HZXRRdWVzdGlvbigpDQoNCisgICAgICAgIExpbmUgPSBjdHgu c3RhcnQubGluZQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNC aXRWYXI6DQoNCisgICAgICAgICAgICBHdWlkT2JqID0gQ0lmckd1aWQoMCkNCg0KKyAgICAgICAg ICAgIEd1aWRPYmouU2V0R3VpZChFREtJSV9JRlJfQklUX1ZBUlNUT1JFX0dVSUQpDQoNCisgICAg ICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAgICAgICAgR3VpZE9iai5T ZXRTY29wZSgxKSAjIHBvcw0KDQorDQoNCisgICAgICAgICMgY2hlY2sgZGF0YSB0eXBlDQoNCisg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RP UkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXI6DQoNCisgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05VTUVSSUNf U0laRV9CSVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoTk9iai5TZXRGbGFnc0ZvckJpdEZpZWxkKE5P YmouR2V0RmxhZ3MoKSxMRmxhZ3MpLCBMaW5lKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBl REIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBM aW5lLCAnTnVtZXJpYyB2YXJpZCBpcyBub3QgdGhlIHZhbGlkIGRhdGEgdHlwZScpDQoNCisgICAg ICAgICAgICAgICAgaWYgRGF0YVR5cGVTaXplICE9IDAgYW5kIERhdGFUeXBlU2l6ZSAhPSBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsIExpbmUsICdOdW1lcmljIHZhcmlkIGRvZXNuXCd0IHN1cHBvcnQgYXJyYXknKQ0KDQor ICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoTk9iai5TZXRGbGFncyhOT2JqLkdl dEZsYWdzKCksIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSksIExpbmUpDQoNCisNCg0K Kw0KDQorICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKE5PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChjdHgudmZyTnVtZXJpY0Zs YWdzKCkuSEZsYWdzLGN0eC52ZnJOdW1lcmljRmxhZ3MoKS5MRmxhZ3MsIGN0eC52ZnJOdW1lcmlj RmxhZ3MoKS5Jc0Rpc3BsYXlTcGVjaWZpZWQpLCBjdHguRi5saW5lKQ0KDQorICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKE5PYmouU2V0Rmxh Z3MoY3R4LnZmck51bWVyaWNGbGFncygpLkhGbGFncyxjdHgudmZyTnVtZXJpY0ZsYWdzKCkuTEZs YWdzLCBjdHgudmZyTnVtZXJpY0ZsYWdzKCkuSXNEaXNwbGF5U3BlY2lmaWVkKSwgY3R4LkYubGlu ZSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgICAgICBzZWxm Ll9fQXNzaWduUXVlc3Rpb25LZXkoTk9iaixLZXkpDQoNCisNCg0KKyAgICAgICAgU2hyaW5rU2l6 ZSA9IDANCg0KKyAgICAgICAgSXNTdXBwb3J0ZWQgPSBUcnVlDQoNCisgICAgICAgIGlmIHNlbGYu X19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICBUeXBl ID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAjIEJhc2Ug b24gdGhlIHR5cGUgdG8ga25vdyB0aGUgYWN0dWFsIHVzZWQgc2l6ZSwgc2hyaW5rIHRoZSBidWZm ZXIgc2l6ZSBhbGxvY2F0ZSBiZWZvcmUuDQoNCisgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAyMQ0K DQorICAgICAgICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0K KyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMTgNCg0KKyAgICAgICAgICAgIGVsaWYgVHlw ZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgU2hyaW5r U2l6ZSA9IDEyDQoNCisgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAwDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIElzU3VwcG9ydGVkID0gRmFsc2UNCg0KKyAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICPjgIBRdWVzdGlvbiBzdG9yZWQgaW4gYml0IGZpZWxk cyBzYXZlZCBhcyBVSU5UMzIgdHlwZSwgc28gdGhlIFNocmlua1NpemUgc2FtZSBhcyBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzIuDQoNCisgICAgICAgICAgICBTaHJpbmtTaXplID0gMTINCg0KKw0K DQorICAgICAgICAjIyMjIyMj44CATk9iai0+U2hyaW5rQmluU2l6ZSAoU2hyaW5rU2l6ZSk7DQoN CisgICAgICAgIGlmIElzU3VwcG9ydGVkID09IEZhbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs IExpbmUsICdOdW1lcmljIHF1ZXN0aW9uIG9ubHkgc3VwcG9ydCBVSU5UOCwgVUlOVDE2LCBVSU5U MzIgYW5kIFVJTlQ2NCBkYXRhIHR5cGUuJykNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRh ID0gTk9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU2V0 TWluTWF4U3RlcC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTZXRNaW5NYXhTdGVwKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQpOg0KDQorICAgICAgICBJbnRE ZWNTdHlsZSA9IEZhbHNlDQoNCisgICAgICAgIGlmICgoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5J c0JpdFZhcikgYW5kIChjdHguT3BPYmouR2V0T3BDb2RlKCkgPT0gRUZJX0lGUl9OVU1FUklDX09Q KSBhbmQgKChjdHguT3BPYmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBFREtJSV9JRlJfRElTUExBWV9C SVQpID09IDApKSBvciBcDQoNCisgICAgICAgICAgICAoKHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXIgPT0gRmFsc2UpIGFuZCAoY3R4Lk9wT2JqLkdldE9wQ29kZSgpID09IEVGSV9JRlJf TlVNRVJJQ19PUCkgYW5kICgoY3R4Lk9wT2JqLkdldE51bWVyaWNGbGFncygpICYgRUZJX0lGUl9E SVNQTEFZKSA9PSAwKSk6DQoNCisgICAgICAgICAgICBJbnREZWNTdHlsZSA9IFRydWUNCg0KKyAg ICAgICAgTWluTmVnYXRpdmUgPSBGYWxzZQ0KDQorICAgICAgICBNYXhOZWdhdGl2ZSA9IEZhbHNl DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAg ICBNaW4gPSBzZWxmLl9fVHJhbnNOdW0oY3R4LkkudGV4dCkNCg0KKyAgICAgICAgTWF4ID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5BLnRleHQpDQoNCisgICAgICAgIFN0ZXAgPSBzZWxmLl9fVHJhbnNO dW0oY3R4LlMudGV4dCkgaWYgY3R4LlN0ZXAoKSAhPSBOb25lIGVsc2UgMA0KDQorDQoNCisgICAg ICAgIGlmIGN0eC5OMSAhPU5vbmU6DQoNCisgICAgICAgICAgICBNaW5OZWdhdGl2ZSA9IFRydWUN Cg0KKw0KDQorICAgICAgICBpZiBJbnREZWNTdHlsZSA9PSBGYWxzZSBhbmQgTWluTmVnYXRpdmUg PT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnXCctXCcgY2FuXCd0 IGJlIHVzZWQgd2hlbiBub3QgaW4gaW50IGRlY2ltYWwgdHlwZS4nKQ0KDQorICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KDQorICAgICAgICAgICAgaWYgKEludERl Y1N0eWxlID09IEZhbHNlKSBhbmQgKE1pbiA+ICgxIDw8IHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVG90YWxTaXplKSAtIDEpOiAjDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5JLmxp bmUsICdCSVQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIDAsIGJpZ2dlciB0aGFuIDJe Qml0V2lkdGggLTEnKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBU eXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAgICAg aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAgICAgICAg ICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVn YXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg4MDAwMDAw MDAwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 LkkubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAw MDAwMDAwMDAwLCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4g PiAweDdGRkZGRkZGRkZGRkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLCBjdHguSS5saW5lLCAnSU5UNjQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFu IC0weDgwMDAwMDAwMDAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRicpDQoNCisg ICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgTWluID0gfk1pbiArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbnRE ZWNTdHlsZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+IDB4ODAwMDAwMDA6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnSU5UMzIgdHlw ZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwLCBiaWcgdGhhbiAweDdGRkZG RkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RkZGRkZGRjoNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5JLmxpbmUsICdJTlQzMiB0eXBlIG1pbmltdW0gY2Fu XCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkYnKQ0KDQorICAg ICAgICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIE1pbiA9IH5NaW4gKyAxDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVj U3R5bGU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwMDA6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguSS5saW5lLCAnSU5UMTYgdHlwZSBtaW5p bXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAsIGJpZyB0aGFuIDB4N0ZGRicpDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmIE1pbiA+IDB4N0ZGRjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVU RVIsIGN0eC5JLmxpbmUsICdJTlQxNiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4 ODAwMCwgYmlnIHRoYW4gMHg3RkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVn YXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBNaW4gPSB+TWluICsgMQ0KDQorDQoN CisgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNaW4gPiAweDgwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwg Y3R4LkkubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwLCBi aWcgdGhhbiAweDdGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWluID4gMHg3RjoNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5JLmxpbmUsICdJTlQ4IHR5cGUgbWluaW11bSBj YW5cJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQoNCisgICAgICAgICAgICAg ICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgTWluID0g fk1pbiArIDENCg0KKw0KDQorICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIE1heE5lZ2F0aXZlID0gVHJ1ZQ0KDQorICAgICAgICBpZiBJbnREZWNTdHlsZSA9PSBGYWxz ZSBhbmQgTWF4TmVnYXRpdmUgPT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5s aW5lLCAnIFwnLVwnIGNhblwndCBiZSB1c2VkIHdoZW4gbm90IGluIGludCBkZWNpbWFsIHR5cGUu JykNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAg ICAgICAgICAgIGlmIChJbnREZWNTdHlsZSA9PSBGYWxzZSkgYW5kIChNYXggPiAoMSA8PCBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSkgLSAxKToNCg0KKyAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwgY3R4LkEubGluZSwgJ0JJVCB0eXBlIG1heGltdW0gY2FuXCd0IGJlIGJpZ2dlciB0 aGFuIDJeQml0V2lkdGggLTEnKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAg ICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg TWF4TmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg4 MDAwMDAwMDAwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwgY3R4LkEubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4 MDAwMDAwMDAwMDAwMDAwLCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNYXggPiAweDdGRkZGRkZGRkZGRkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLCBjdHguQS5saW5lLCAnSU5UNjQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFs bCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAsIGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRicp DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgTWF4ID0gfk1heCArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBp ZiBNYXggPCBNaW46ICMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5s aW5lLCAnTWF4aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KDQorDQoNCisNCg0K KyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNYXggPiAweDgwMDAwMDAwOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFN RVRFUiwgY3R4LkEubGluZSwgJ0lOVDMyIHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAt MHg4MDAwMDAwMCwgYmlnIHRoYW4gMHg3RkZGRkZGRicpDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4N0ZG RkZGRkY6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5s aW5lLCAnSU5UMzIgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwLCBi aWcgdGhhbiAweDdGRkZGRkZGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRp dmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsgMQ0KDQorDQoNCisg ICAgICAgICAgICAgICAgICAgIGlmIE1heCA8IE1pbjogIw0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdNYXhpbXVtIGNhblwndCBiZSBsZXNzIHRoYW4gTWlu aW11bScpDQoNCisNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDoNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdJTlQxNiB0eXBlIG1pbmltdW0gY2Fu XCd0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmlnIHRoYW4gMHg3RkZGJykNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4 ID4gMHg3RkZGOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 LkEubGluZSwgJ0lOVDE2IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBi aWcgdGhhbiAweDdGRkYnKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQoNCisNCg0KKyAgICAg ICAgICAgICAgICAgICAgaWYgTWF4IDwgTWluOiAjDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwgY3R4LkEubGluZSwgJ01heGltdW0gY2FuXCd0IGJlIGxlc3MgdGhhbiBNaW5pbXVt JykNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzg6DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgTWF4ID4gMHg4MDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwgY3R4LkEubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFu IC0weDgwLCBiaWcgdGhhbiAweDdGJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg3RjoNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5BLmxpbmUsICdJTlQ4IHR5cGUg bWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgTWF4ID0gfk1heCArIDENCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBN aW46ICMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguQS5saW5lLCAnTWF4 aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KDQorDQoNCisgICAgICAgIGlmIHNl bGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQoNCisgICAgICAgICAgICBjdHguT3BPYmou U2V0TWluTWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z MikNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFl c3RWYXJJbmZvLlZhclR5cGUNCg0KKyAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRNaW5NYXhTdGVw RGF0YShNaW4sIE1heCwgU3RlcCwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0KQ0KDQorICAgICAg ICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAg ICAgICAgY3R4Lk9wT2JqLlNldE1pbk1heFN0ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLCBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzIpDQoNCisgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICBjdHguT3BPYmouU2V0TWluTWF4U3Rl cERhdGEoTWluLCBNYXgsIFN0ZXAsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNikNCg0KKyAgICAg ICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAg ICAgICAgY3R4Lk9wT2JqLlNldE1pbk1heFN0ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLCBFRklfSUZS X1RZUEVfTlVNX1NJWkVfOCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk9wT2JqDQoNCisN Cg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJOdW1lcmljRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyTnVtZXJpY0ZsYWdzKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyTnVtZXJpY0ZsYWdzQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgY3R4LkxGbGFncyA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAmIEVG SV9JRlJfTlVNRVJJQ19TSVpFDQoNCisgICAgICAgIFZhclN0b3JlVHlwZSA9IGdDVmZyRGF0YVN0 b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkN Cg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIElzU2V0VHlwZSA9 IEZhbHNlDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAg ICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFnc0ZpZWxkKCk6DQoNCisgICAg ICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZsYWcNCg0KKyAgICAgICAgICAg IGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGbGFnc0ZpZWxkQ3R4LklzRGlzcGxheVNwZWNpZmll ZA0KDQorICAgICAgICAgICAgSXNTZXRUeXBlIHw9ICBGbGFnc0ZpZWxkQ3R4LklzU2V0VHlwZQ0K DQorICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZU9uZSgpICE9IE5vbmU6 DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9 PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFn cyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNfU0laRV8xDQoNCisN Cg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxh Z3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfMg0KDQor DQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91cigpICE9IE5v bmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZh ciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxG bGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNfU0laRV80DQoN CisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVFaWdodCgpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0Jp dFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4 LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfCBFRklfSUZSX05VTUVSSUNfU0laRV84 DQoNCisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheUludERlYygpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0Jp dFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4 LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwgRUZJX0lGUl9ESVNQTEFZX0lOVF9ERUMNCg0K KyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdz ID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVCkgfCBFREtJSV9JRlJfRElT UExBWV9JTlRfREVDX0JJVA0KDQorDQoNCisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRp c1BsYXlVSW50SGV4KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgICAgICBj dHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElTUExBWSkgfCBFRklfSUZSX0RJ U1BMQVlfVUlOVF9ERUMNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg ICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJ VCkgfCBFREtJSV9JRlJfRElTUExBWV9VSU5UX0RFQ19CSVQNCg0KKw0KDQorICAgICAgICAgICAg aWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAg ICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJ U1BMQVkpIHwgRUZJX0lGUl9ESVNQTEFZX1VJTlRfSEVYDQoNCisgICAgICAgICAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5F REtJSV9JRlJfRElTUExBWV9CSVQpIHwgRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9IRVhfQklUDQoN CisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxz ZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAh PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgICAgICBpZiBWYXJTdG9y ZVR5cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSIG9y IFZhclN0b3JlVHlwZSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9F Rkk6DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFy VHlwZSAhPSAoY3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnTnVtZXJpYyBGbGFnIGlzIG5vdCBzYW1lIHRv IE51bWVyaWMgVmFyRGF0YSB0eXBlJykNCg0KKyAgICAgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBkYXRhIHR5cGUgZm9yIG5hbWUvdmFsdWUgc3RvcmUN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID0g Y3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQoNCisgICAgICAgICAgICAgICAgICAg IFNpemUsIF8gPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUpDQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplID0gU2l6ZQ0KDQorICAgICAgICAgICAg ZWxpZiBJc1NldFR5cGU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUeXBlID0gY3R4LkxGbGFncyAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQoNCisNCg0KKyAg ICAgICAgZWxpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNU T1JFX0lEX0lOVkFMSUQgYW5kIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQoNCisg ICAgICAgICAgICBjdHguTEZsYWdzICY9IEVES0lJX0lGUl9ESVNQTEFZX0JJVA0KDQorICAgICAg ICAgICAgY3R4LkxGbGFncyB8PSBFREtJSV9JRlJfTlVNRVJJQ19TSVpFX0JJVCAmIHNlbGYuX19D dXJyUWVzdFZhckluZm8uVmFyVG90YWxTaXplDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5I RmxhZ3MsIGN0eC5MRmxhZ3MNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI251bWVyaWNGbGFnc0ZpZWxkLg0KDQorICAgIGRl ZiB2aXNpdE51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuTnVtZXJp Y0ZsYWdzRmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4o Y3R4KQ0KDQorDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBp ZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051 bShjdHguTi50ZXh0KSAhPSAwOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELCBMaW5lKQ0KDQorDQoNCisg ICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZU9uZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBp ZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAgICAgICAg ICAgICAgIGN0eC5Jc1NldFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRo ZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5O dW1lcmljU2l6ZVR3bygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFl c3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIGN0eC5Jc1Nl dFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLCBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVl IGZvciBCSVQgZmllbGQnKQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUZvdXIo KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0Jp dFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICBjdHguSXNTZXRUeXBlID0gVHJ1ZQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgTGluZSwgJ0Nh biBub3Qgc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IgQklUIGZpZWxk JykNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVFaWdodCgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KDQorICAgICAgICAgICAgICAgIGN0eC5Jc1NldFR5cGUgPSBUcnVlDQoNCisgICAgICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5 IHRoZSBzaXplIG9mIHRoZSBudW1lcmljIHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KDQorDQoNCisg ICAgICAgIGlmIGN0eC5EaXNQbGF5SW50RGVjKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0 eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkRpc1Bs YXlVSW50SGV4KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZp ZWQgPSBUcnVlDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkRpc1BsYXlVSW50SGV4KCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBUcnVlDQoNCisNCg0K KyAgICAgICAgaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhG bGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZw0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50T25lT2YuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50T25lT2Yoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQpOg0KDQorDQoNCisgICAgICAg IE9PYmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisg ICAgICAgIE9PYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIHNlbGYuX19DdXJyZW50UXVl c3Rpb24gPSBPT2JqLkdldFF1ZXN0aW9uKCkNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0K KyAgICAgICAgICAgIEd1aWRPYmogPSBDSWZyR3VpZCgwKQ0KDQorICAgICAgICAgICAgR3VpZE9i ai5TZXRHdWlkKEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCkNCg0KKyAgICAgICAgICAgIEd1 aWRPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICAgICAgR3VpZE9iai5T ZXRTY29wZSgxKSAjIHBvcw0KDQorDQoNCisgICAgICAgICMgY2hlY2sgZGF0YSB0eXBlDQoNCisg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RP UkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXI6DQoNCisgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05VTUVSSUNf U0laRV9CSVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQorICAgICAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT09iai5TZXRGbGFnc0ZvckJpdEZpZWxkKE9P YmouR2V0RmxhZ3MoKSxMRmxhZ3MpLCBMaW5lKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBl REIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBM aW5lLCAnT25lT2YgdmFyaWQgaXMgbm90IHRoZSB2YWxpZCBkYXRhIHR5cGUnKQ0KDQorICAgICAg ICAgICAgICAgIGlmIERhdGFUeXBlU2l6ZSAhPSAwIGFuZCBEYXRhVHlwZVNpemUgIT0gc2VsZi5f X0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemU6DQoNCisgICAgICAgICAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLCBMaW5lLCAnT25lT2YgdmFyaWQgZG9lc25cJ3Qgc3VwcG9ydCBhcnJheScpDQoNCisgICAg ICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihPT2JqLlNldEZsYWdzKE9PYmouR2V0Rmxh Z3MoKSwgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlKSwgTGluZSkNCg0KKw0KDQorICAg ICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKE9PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChjdHgudmZyT25lb2ZGbGFnc0ZpZWxkKCku SEZsYWdzLGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5MRmxhZ3MpLCBjdHguRi5saW5lKQ0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KE9PYmouU2V0RmxhZ3MoY3R4LnZmck9uZW9mRmxhZ3NGaWVsZCgpLkhGbGFncywgY3R4LnZmck9u ZW9mRmxhZ3NGaWVsZCgpLkxGbGFncyksIGN0eC5GLmxpbmUpDQoNCisNCg0KKyAgICAgICAgU2hy aW5rU2l6ZSA9IDANCg0KKyAgICAgICAgSXNTdXBwb3J0ZWQgPSBUcnVlDQoNCisgICAgICAgIGlm IHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAg ICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlDQoNCisgICAgICAgICAgICAj IEJhc2Ugb24gdGhlIHR5cGUgdG8ga25vdyB0aGUgYWN0dWFsIHVzZWQgc2l6ZSwgc2hyaW5rIHRo ZSBidWZmZXIgc2l6ZSBhbGxvY2F0ZSBiZWZvcmUuDQoNCisgICAgICAgICAgICBpZiBUeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUg PSAyMQ0KDQorICAgICAgICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8x NjoNCg0KKyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMTgNCg0KKyAgICAgICAgICAgIGVs aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAg U2hyaW5rU2l6ZSA9IDEyDQoNCisgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgIFNocmlua1NpemUgPSAwICMNCg0KKyAg ICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgSXNTdXBwb3J0ZWQgPSBGYWxzZQ0K DQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgI+OAgFF1ZXN0aW9uIHN0b3JlZCBpbiBi aXQgZmllbGRzIHNhdmVkIGFzIFVJTlQzMiB0eXBlLCBzbyB0aGUgU2hyaW5rU2l6ZSBzYW1lIGFz IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMi4NCg0KKyAgICAgICAgICAgIFNocmlua1NpemUgPSAx Mg0KDQorDQoNCisgICAgICAgICMgT09iai5TaHJpbmtCaW5TaXplKFNocmlua1NpemUpDQoNCisg ICAgICAgIGlmIElzU3VwcG9ydGVkID09IEZhbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIExp bmUsICdPbmVPZiBxdWVzdGlvbiBvbmx5IHN1cHBvcnQgVUlOVDgsIFVJTlQxNiwgVUlOVDMyIGFu ZCBVSU5UNjQgZGF0YSB0eXBlLicpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IE9P YmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zmck9uZW9mRmxh Z3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRWZnJPbmVvZkZsYWdzRmllbGQoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJPbmVvZkZsYWdzRmllbGRDb250ZXh0KToNCg0KKw0KDQorICAgICAg ICBjdHguTEZsYWdzID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlICYgRUZJX0lGUl9O VU1FUklDX1NJWkUNCg0KKyAgICAgICAgVmFyU3RvcmVUeXBlID0gZ0NWZnJEYXRhU3RvcmFnZS5H ZXRWYXJTdG9yZVR5cGUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KDQorICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgSXNTZXRUeXBlID0gRmFsc2UN Cg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBmb3Ig RmxhZ3NGaWVsZEN0eCBpbiBjdHgubnVtZXJpY0ZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAg IGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAgY3R4Lklz RGlzcGxheVNwZWNpZmllZCA9IEZsYWdzRmllbGRDdHguSXNEaXNwbGF5U3BlY2lmaWVkDQoNCisg ICAgICAgICAgICBJc1NldFR5cGUgfD0gRmxhZ3NGaWVsZEN0eC5Jc1NldFR5cGUNCg0KKyAgICAg ICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RUZJ X0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KDQorDQoNCisgICAg ICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNl Og0KDQorICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVG SV9JRlJfTlVNRVJJQ19TSVpFKSB8IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCg0KKw0KDQorICAg ICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFs c2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+ RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KDQorDQoNCisg ICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3Mg JiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwgRUZJX0lGUl9OVU1FUklDX1NJWkVfOA0KDQorDQoN CisgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRpc1BsYXlJbnREZWMoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0g RmFsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3Mg JiB+RUZJX0lGUl9ESVNQTEFZKSB8IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQoNCisgICAgICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4 LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwgRURLSUlfSUZSX0RJU1BMQVlfSU5U X0RFQ19CSVQNCg0KKw0KDQorICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUlu dEhleCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFn cyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX0RJU1BMQVkpIHwgRUZJX0lGUl9ESVNQTEFZX1VJ TlRfREVDDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAg Y3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwgRURL SUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUDQoNCisNCg0KKyAgICAgICAgICAgIGlmIEZsYWdz RmllbGRDdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIGlm IHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisgICAgICAgICAg ICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZKSB8 IEVGSV9JRlJfRElTUExBWV9VSU5UX0hFWA0KDQorICAgICAgICAgICAgICAgIGVsc2U6DQoNCisg ICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZS X0RJU1BMQVlfQklUKSB8IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVA0KDQorDQoNCisg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQoNCisg ICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZB UlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAgICAgaWYgVmFyU3RvcmVUeXBlID09 IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUiBvciBWYXJTdG9y ZVR5cGUgPT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KDQor ICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgIT0g KGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRSk6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwgTGluZSwgJ051bWVyaWMgRmxhZyBpcyBub3Qgc2FtZSB0byBOdW1lcmlj IFZhckRhdGEgdHlwZScpDQoNCisgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICAgICAgIyB1cGRhdGUgZGF0YSB0eXBlIGZvciBuYW1lL3ZhbHVlIHN0b3JlDQoNCisgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0eC5MRmxh Z3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KDQorICAgICAgICAgICAgICAgICAgICBTaXplLCBf ID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCg0KKyAgICAgICAgICAgIGVsaWYgSXNT ZXRUeXBlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSA9IGN0eC5MRmxhZ3MgJiBFRklfSUZSX05VTUVSSUNfU0laRQ0KDQorDQoNCisgICAgICAgIGVs aWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9J TlZBTElEOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyAmPSBFREtJSV9JRlJfRElTUExBWV9C SVQNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRURLSUlfSUZSX05VTUVSSUNfU0laRV9C SVQgJiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KDQorDQoNCisgICAgICAg IHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdHJp bmdUeXBlLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN0cmluZ1R5cGUoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdUeXBlQ29udGV4dCk6DQoNCisNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0 YXRlbWVudFBhc3N3b3JkKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmclN0YXRlbWVudFBhc3N3b3JkKCkuTm9kZQ0KDQorICAgICAgICBlbGlmIGN0eC52ZnJTdGF0 ZW1lbnRTdHJpbmcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50U3RyaW5nKCkuTm9kZQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0K DQorICAgIGRlZiBfR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoc2VsZik6DQoNCisNCg0KKyAgICAg ICAgU2l6ZSA9IDENCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAgU2l6ZSA9IDENCg0K KyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgIFNpemUgPSAyDQoNCisgICAgICAgIGlmIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6 DQoNCisgICAgICAgICAgICBTaXplID0gNA0KDQorICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAg ICAgU2l6ZSA9IDgNCg0KKw0KDQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX19DdXJyUWVzdFZh ckluZm8uVmFyVG90YWxTaXplIC8gU2l6ZSkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0cmluZy4N Cg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRTdHJpbmdDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLl9f SXNTdHJpbmdPcCA9IFRydWUNCg0KKyAgICAgICAgU09iaiA9IGN0eC5PcE9iag0KDQorICAgICAg ICBTT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJl bnRRdWVzdGlvbiA9IFNPYmouR2V0UXVlc3Rpb24oKQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIEhGbGFncyA9IGN0eC52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkuSEZsYWdz DQoNCisgICAgICAgICAgICBMRmxhZ3MgPSBjdHgudmZyU3RyaW5nRmxhZ3NGaWVsZCgpLkxGbGFn cw0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihTT2JqLlNldEZsYWdzKEhGbGFn cywgTEZsYWdzKSwgY3R4LkYubGluZSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguS2V5KCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDAp KQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Fzc2lnblF1ZXN0aW9uS2V5KFNPYmosIEtleSkNCg0K KyAgICAgICAgICAgIFN0cmluZ01pblNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCg0KKyAgICAgICAgICAgIFN0cmluZ01heFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigyKSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFN0cmluZ01pblNpemUg PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAgICAgICAgICAgIFN0cmluZ01h eFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKw0KDQorICAgICAgICBW YXJBcnJheVNpemUgPSBzZWxmLl9HRVRfQ1VSUlFFU1RfQVJSQVlfU0laRSgpDQoNCisgICAgICAg IGlmIFN0cmluZ01pblNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NaW4u bGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJl IGxhcmdlciB0aGFuIDB4RkYuIikNCg0KKyAgICAgICAgaWYgVmFyQXJyYXlTaXplICE9IDAgYW5k IFN0cmluZ01pblNpemUgPiBWYXJBcnJheVNpemU6DQoNCisgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 Lk1pbi5saW5lLCAiU3RyaW5nIE1pblNpemUgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBu dW1iZXIgb2YgZWxlbWVudHMgaW4gc3RyaW5nIGFycmF5LiIpDQoNCisgICAgICAgIFNPYmouU2V0 TWluU2l6ZShTdHJpbmdNaW5TaXplKQ0KDQorDQoNCisgICAgICAgIGlmIFN0cmluZ01heFNpemUg PiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NYXgubGluZSwgIlN0cmluZyBNYXhT aXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxhcmdlciB0aGFuIDB4RkYu IikNCg0KKyAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgU3RyaW5nTWF4U2l6ZSA+ IFZhckFycmF5U2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTWF4LmxpbmUsICJTdHJp bmcgTWF4U2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51bWJlciBvZiBlbGVtZW50 cyBpbiBzdHJpbmcgYXJyYXkuIikNCg0KKyAgICAgICAgZWxpZiBTdHJpbmdNYXhTaXplIDwgU3Ry aW5nTWluU2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTWF4LmxpbmUsICJTdHJpbmcg TWF4U2l6ZSBjYW4ndCBiZSBsZXNzIHRoYW4gU3RyaW5nIE1pblNpemUuIikNCg0KKyAgICAgICAg U09iai5TZXRNYXhTaXplKFN0cmluZ01heFNpemUpDQoNCisNCg0KKyAgICAgICAgY3R4Lk5vZGUu RGF0YSA9IFNPYmoNCg0KKw0KDQorICAgICAgICBzZWxmLl9fSXNTdHJpbmdPcCA9IEZhbHNlDQoN CisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdHJpbmdGbGFnc0Zp ZWxkLg0KDQorICAgIGRlZiB2aXNpdFZmclN0cmluZ0ZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4g Y3R4LnN0cmluZ0ZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxh Z3NGaWVsZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxk Q3R4LkxGbGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MN Cg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI3N0cmluZ0ZsYWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0U3RyaW5nRmxhZ3NG aWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlN0cmluZ0ZsYWdzRmllbGRDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgICAg IGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4LnN0YXJ0Lmxp bmUpDQoNCisgICAgICAgIGVsaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpICE9IE5v bmU6DQoNCisNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoKS5RSEZsYWcNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGN0eC5M RmxhZyA9IDB4MDENCg0KKw0KDQorICAgICAgICByZXR1cm4gIGN0eC5IRmxhZywgY3R4LkxGbGFn DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRQYXNzd29yZC4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRQYXNzd29yZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFBhc3N3 b3JkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgUE9iaiA9IGN0eC5PcE9iag0KDQorICAgICAg ICBQT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJl bnRRdWVzdGlvbiA9IFBPYmouR2V0UXVlc3Rpb24oKQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBLZXkgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCg0KKyAg ICAgICAgICAgIHNlbGYuX19Bc3NpZ25RdWVzdGlvbktleShQT2JqLCBLZXkpDQoNCisgICAgICAg ICAgICBQYXNzV29yZE1pblNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0K KyAgICAgICAgICAgIFBhc3N3b3JkTWF4U2l6ZSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KDIpKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgUGFzc1dvcmRNaW5TaXplID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQoNCisgICAgICAgICAgICBQYXNzd29yZE1h eFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCg0KKw0KDQorICAgICAgICBp ZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZmclBh c3N3b3JkRmxhZ3NGaWVsZCgpLkhGbGFncw0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihQT2JqLlNldEZsYWdzKEhGbGFncyksIGN0eC5GLmxpbmUpDQoNCisNCg0KKyAgICAgICAg VmFyQXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKQ0KDQorICAgICAg ICBpZiBQYXNzV29yZE1pblNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5N aW4ubGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0 IGJlIGxhcmdlciB0aGFuIDB4RkYuIikNCg0KKyAgICAgICAgaWYgVmFyQXJyYXlTaXplICE9IDAg YW5kIFBhc3NXb3JkTWluU2l6ZSA+IFZhckFycmF5U2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS LCBjdHguTWluLmxpbmUsICJTdHJpbmcgTWluU2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUg bWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCg0KKyAgICAgICAgUE9i ai5TZXRNaW5TaXplKFBhc3NXb3JkTWluU2l6ZSkNCg0KKw0KDQorICAgICAgICBpZiBQYXNzd29y ZE1heFNpemUgPiAweEZGOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NYXgubGluZSwgIlN0 cmluZyBNYXhTaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0IGJlIGxhcmdlciB0 aGFuIDB4RkYuIikNCg0KKyAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgUGFzc3dv cmRNYXhTaXplID4gVmFyQXJyYXlTaXplOg0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5NYXgu bGluZSwgIlN0cmluZyBNYXhTaXplIGNhbid0IGJlIGxhcmdlciB0aGFuIHRoZSBtYXggbnVtYmVy IG9mIGVsZW1lbnRzIGluIHN0cmluZyBhcnJheS4iKQ0KDQorICAgICAgICBlbGlmIFBhc3N3b3Jk TWF4U2l6ZSA8IFBhc3NXb3JkTWluU2l6ZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTWF4 LmxpbmUsICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsZXNzIHRoYW4gU3RyaW5nIE1pblNpemUu IikNCg0KKyAgICAgICAgUE9iai5TZXRNYXhTaXplKFBhc3N3b3JkTWF4U2l6ZSkNCg0KKw0KDQor ICAgICAgICBjdHguTm9kZS5EYXRhID0gUE9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyUGFzc3dvcmRGbGFnc0ZpZWxkLg0KDQorICAgIGRlZiB2aXNpdFZm clBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclBhc3N3b3Jk RmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5wYXNzd29yZEZsYWdzRmll bGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0K DQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwYXNzd29yZEZsYWdz RmllbGQuDQoNCisgICAgZGVmIHZpc2l0UGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJT eW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkp ICE9IDA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZCgpLlFIRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguSEZsYWcNCg0KKw0KDQor DQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3ZmclN0YXRlbWVudE9yZGVyZWRMaXN0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9y ZGVyZWRMaXN0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJlZExp c3RDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBPTE9iaiA9IGN0eC5PcE9iag0KDQorICAgICAg ICBPTE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIHNlbGYuX19DdXJy ZW50UXVlc3Rpb24gPSBPTE9iai5HZXRRdWVzdGlvbigpDQoNCisgICAgICAgIHNlbGYuX19Jc09y ZGVyZWRMaXN0ID0gVHJ1ZQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisNCg0KKyAgICAgICAgVmFyQXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZ X1NJWkUoKQ0KDQorICAgICAgICBpZiBWYXJBcnJheVNpemUgPiAweEZGOg0KDQorICAgICAgICAg ICAgT0xPYmouU2V0TWF4Q29udGFpbmVycygweEZGKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAg ICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhWYXJBcnJheVNpemUpDQoNCisNCg0KKyAg ICAgICAgaWYgY3R4Lk1heENvbnRhaW5lcnMoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgTWF4 Q29udGFpbmVycyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgICAg ICBpZiBNYXhDb250YWluZXJzID4gMHhGRjoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4 Lk0ubGluZSwgIk9yZGVyZWRMaXN0IE1heENvbnRhaW5lcnMgdGFrZXMgb25seSBvbmUgYnl0ZSwg d2hpY2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gMHhGRi4iKQ0KDQorICAgICAgICAgICAgZWxpZiBW YXJBcnJheVNpemUgIT0gMCBhbmQgTWF4Q29udGFpbmVycyA+IFZhckFycmF5U2l6ZToNCg0KKyAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4Lk0ubGluZSwiT3JkZXJlZExpc3QgTWF4Q29udGFpbmVy cyBjYW4ndCBiZSBsYXJnZXIgdGhhbiB0aGUgbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiBhcnJh eS4iKQ0KDQorICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhNYXhDb250YWluZXJz KQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBIRmxhZ3MgPSBjdHgudmZyT3JkZXJlZExpc3RGbGFncygpLkhGbGFncw0KDQorICAgICAgICAg ICAgTEZsYWdzID0gY3R4LnZmck9yZGVyZWRMaXN0RmxhZ3MoKS5MRmxhZ3MNCg0KKyAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT0xPYmouU2V0RmxhZ3MoSEZsYWdzLCBMRmxhZ3MpLCBj dHguRi5saW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPTE9iag0KDQorDQoN CisgICAgICAgIHNlbGYuX19Jc09yZGVyZWRMaXN0ID0gRmFsc2UNCg0KKw0KDQorICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zmck9yZGVyZWRMaXN0RmxhZ3MuDQoNCisgICAgZGVm IHZpc2l0VmZyT3JkZXJlZExpc3RGbGFncyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmck9y ZGVyZWRMaXN0RmxhZ3NDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorDQoNCisgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5vcmRlcmVk bGlzdEZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVs ZEN0eC5IRmxhZw0KDQorICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkxG bGFnDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI29yZGVyZWRsaXN0RmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRPcmRlcmVkbGlzdEZs YWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoN CisgICAgICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgY3R4 LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGVsaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVs ZCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFk ZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQoNCisgICAgICAgIGVsaWYgY3R4LlVuaVF1ZUZsYWcoKSAh PSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQorICAgICAgICBlbGlm IGN0eC5Ob0VtcHR5RmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSAw eDAyDQoNCisNCg0KKyAgICAgICAgcmV0dXJuICBjdHguSEZsYWcsIGN0eC5MRmxhZw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudERhdGUuDQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGF0ZShzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERhdGVDb250ZXh0KToNCg0KKw0KDQorICAg ICAgICBET2JqID0gY3R4Lk9wT2JqDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0K DQorICAgICAgICBET2JqLlNldExpbmVObyhMaW5lKQ0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LnZmclF1ZXN0aW9uSGVhZGVy KCkgIT0gTm9uZToNCg0KKw0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEUNCg0KKw0KDQor ICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKERPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RF RkFVTFQsIGN0eC52ZnJEYXRlRmxhZ3MoKS5MRmxhZ3MpLCBjdHguRjEubGluZSkNCg0KKw0KDQor ICAgICAgICBlbHNlOg0KDQorDQoNCisgICAgICAgICAgICBZZWFyID0gc2VsZi5fX1RyYW5zSWQo Y3R4LlN0cmluZ0lkZW50aWZpZXIoMCkpDQoNCisgICAgICAgICAgICBZZWFyICs9ICcuJw0KDQor ICAgICAgICAgICAgWWVhciArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigx KSkNCg0KKw0KDQorICAgICAgICAgICAgTW9udGggPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5n SWRlbnRpZmllcigyKSkNCg0KKyAgICAgICAgICAgIE1vbnRoICs9ICcuJw0KDQorICAgICAgICAg ICAgTW9udGggKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQoNCisN Cg0KKyAgICAgICAgICAgIERheSA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVy KDQpKQ0KDQorICAgICAgICAgICAgRGF5ICs9ICcuJw0KDQorICAgICAgICAgICAgRGF5ICs9IHNl bGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDUpKQ0KDQorDQoNCisgICAgICAgICAg ICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoRE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwgY3R4 LnZmckRhdGVGbGFncygpLkxGbGFncyksIGN0eC5GMi5saW5lKQ0KDQorDQoNCisgICAgICAgICAg ICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0ZXJPbGREYXRlUXVlc3Rpb24o WWVhciwgTW9udGgsIERheSwgRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpDQoNCisgICAgICAgICAg ICBET2JqLlNldFF1ZXN0aW9uSWQoUUlkKQ0KDQorICAgICAgICAgICAgRE9iai5TZXRGbGFncyhF RklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwgUUZfREFURV9TVE9SQUdFX1RJTUUpDQoNCisg ICAgICAgICAgICBET2JqLlNldFByb21wdChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkp DQoNCisgICAgICAgICAgICBET2JqLlNldEhlbHAoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MSkpKQ0KDQorDQoNCisgICAgICAgICAgICBTaXplID0gRUZJX0lGUl9ERUZBVUxULlZhbHVlLm9m ZnNldCArIHNpemVvZiAoRUZJX0hJSV9EQVRFKQ0KDQorICAgICAgICAgICAgRGVmYXVsdE9iaiA9 IENJZnJEZWZhdWx0KFNpemUsIEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwgRUZJX0lG Ul9UWVBFX0RBVEUsIGN0eC5WYWwpDQoNCisgICAgICAgICAgICBEZWZhdWx0T2JqLlNldExpbmVO byhMaW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBET2JqDQoNCisgICAgICAg IGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCk6DQoNCisgICAgICAg ICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAgICBy ZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNtaW5NYXhEYXRlU3RlcERlZmF1bHQuDQoNCisgICAgZGVmIHZp c2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuTWluTWF4 RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkRlZmF1bHQo KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgTWluaW11bSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDApKQ0KDQorICAgICAgICAgICAgTWF4aW11bSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDEpKQ0KDQorICAgICAgICAgICAgaWYgY3R4LktleVZhbHVlID09IDA6DQoNCisgICAg ICAgICAgICAgICAgY3R4LkRhdGUuWWVhciA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0K DQorICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLlllYXIgPCBNaW5pbXVtIG9yIGN0eC5EYXRl LlllYXIgPiBNYXhpbXVtOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4Lk4ubGlu ZSwgIlllYXIgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluIHllYXIgYW5kIE1heCB5 ZWFyLiIpDQoNCisgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMToNCg0KKyAgICAgICAg ICAgICAgICBjdHguRGF0ZS5Nb250aCA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KDQor ICAgICAgICAgICAgICAgIGlmIGN0eC5EYXRlLk1vbnRoIDwgMSBvciBjdHguRGF0ZS5Nb250aCA+ IDEyOg0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwgY3R4LkQubGluZSwgIk1vbnRoIGRl ZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pbiAxIGFuZCBNYXggMTIuIikNCg0KKyAgICAg ICAgICAgIGlmIGN0eC5LZXlWYWx1ZSA9PSAyOg0KDQorICAgICAgICAgICAgICAgIGN0eC5EYXRl LkRheSA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KDQorICAgICAgICAgICAgICAgIGlm IGN0eC5EYXRlLkRheSA8IDEgb3IgY3R4LkRhdGUuRGF5ID4gMzE6DQoNCisgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLCBjdHguRC5saW5lLCAiRGF5IGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3 ZWVuIE1pbiAxIGFuZCBNYXggMzEuIikNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJEYXRlRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyRGF0 ZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBm b3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguZGF0ZUZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAg IGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguTEZsYWdzDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRlRmxhZ3NGaWVsZC4NCg0KKyAgICBkZWYgdmlzaXRE YXRlRmxhZ3NGaWVsZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGVGbGFnc0ZpZWxkQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQor ICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxh ZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5ZZWFy U3VwcHByZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAx DQoNCisgICAgICAgIGlmIGN0eC5Nb250aFN1cHByZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBjdHguTEZsYWcgPSAweDAyDQoNCisgICAgICAgIGlmIGN0eC5EYXlTdXBwcmVzc0Zs YWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwNA0KDQorICAgICAg ICBpZiBjdHguU3RvcmFnZU5vcm1hbEZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 LkxGbGFnID0gMHgwMA0KDQorICAgICAgICBpZiBjdHguU3RvcmFnZVRpbWVGbGFnKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDEwDQoNCisgICAgICAgIGlmIGN0eC5T dG9yYWdlV2FrZVVwRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSAw eDIwDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50VGltZS4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRUaW1lKHNlbGYsIGN0eDpWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIFRP YmogPSBjdHguT3BPYmoNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAg ICAgIFRPYmouU2V0TGluZU5vKExpbmUpDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBpZiBjdHgudmZyUXVlc3Rpb25IZWFkZXIoKSAhPSBO b25lOg0KDQorDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19DdXJy UWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisgICAgICAg ICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwg Y3R4LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMS5saW5lKQ0KDQorICAgICAgICBlbHNl Og0KDQorDQoNCisgICAgICAgICAgICBIb3VyID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lk ZW50aWZpZXIoMCkpDQoNCisgICAgICAgICAgICBIb3VyICs9ICcuJw0KDQorICAgICAgICAgICAg SG91ciArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigxKSkNCg0KKw0KDQor ICAgICAgICAgICAgTWludXRlID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIo MikpDQoNCisgICAgICAgICAgICBNaW51dGUgKz0gJy4nDQoNCisgICAgICAgICAgICBNaW51dGUg Kz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQoNCisNCg0KKyAgICAg ICAgICAgIFNlY29uZCA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDQpKQ0K DQorICAgICAgICAgICAgU2Vjb25kICs9ICcuJw0KDQorICAgICAgICAgICAgU2Vjb25kICs9IHNl bGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDUpKQ0KDQorDQoNCisgICAgICAgICAg ICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJv ckhhbmRsZXIoVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwgY3R4 LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMi5saW5lKQ0KDQorDQoNCisgICAgICAgICAg ICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0ZXJPbGRUaW1lUXVlc3Rpb24o SG91ciwgTWludXRlLCBTZWNvbmQsIEVGSV9RVUVTVElPTl9JRF9JTlZBTElEKQ0KDQorICAgICAg ICAgICAgVE9iai5TZXRRdWVzdGlvbklkKFFJZCkNCg0KKyAgICAgICAgICAgIFRPYmouU2V0Rmxh Z3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFVTFQsIFFGX1RJTUVfU1RPUkFHRV9USU1FKQ0K DQorICAgICAgICAgICAgVE9iai5TZXRQcm9tcHQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo MCkpKQ0KDQorICAgICAgICAgICAgVE9iai5TZXRIZWxwKHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKDEpKSkNCg0KKw0KDQorICAgICAgICAgICAgU2l6ZSA9IEVGSV9JRlJfREVGQVVMVC5WYWx1 ZS5vZmZzZXQgKyBzaXplb2YgKEVGSV9ISUlfVElNRSkNCg0KKyAgICAgICAgICAgIERlZmF1bHRP YmogPSBDSWZyRGVmYXVsdChTaXplLCBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsIEVG SV9JRlJfVFlQRV9USU1FLCBjdHguVmFsKQ0KDQorICAgICAgICAgICAgRGVmYXVsdE9iai5TZXRM aW5lTm8oTGluZSkNCg0KKw0KDQorICAgICAgICBjdHguTm9kZS5EYXRhID0gVE9iag0KDQorICAg ICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZigpOg0KDQorICAg ICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisgICAgICAgIHJl dHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbWluTWF4VGltZVN0ZXBEZWZhdWx0Lg0KDQorICAgIGRl ZiB2aXNpdE1pbk1heFRpbWVTdGVwRGVmYXVsdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLk1p bk1heFRpbWVTdGVwRGVmYXVsdENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIGlmIGN0eC5EZWZh dWx0KCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIE1pbmltdW0gPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcigwKSkNCg0KKyAgICAgICAgICAgIE1heGltdW0gPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcigxKSkNCg0KKyAgICAgICAgICAgIGlmIGN0eC5LZXlWYWx1ZSA9PSAwOg0KDQor ICAgICAgICAgICAgICAgIGN0eC5UaW1lLkhvdXIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cihsZW4oY3R4Lk51bWJlcigpKS0xKSkNCg0KKyAgICAgICAgICAgICAgICBpZiBjdHguVGltZS5I b3VyID4gMjM6DQoNCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLCBjdHguTi5saW5lLCAiSG91 ciBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMy4iKQ0KDQorICAgICAgICAg ICAgaWYgY3R4LktleVZhbHVlID09IDE6DQoNCisgICAgICAgICAgICAgICAgY3R4LlRpbWUuTWlu dXRlID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIobGVuKGN0eC5OdW1iZXIoKSktMSkpDQoN CisgICAgICAgICAgICAgICAgaWYgY3R4LlRpbWUuTWludXRlID4gNTk6DQoNCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lO VkFMSURfUEFSQU1FVEVSLCBjdHguTi5saW5lLCAiTWludXRlIGRlZmF1bHQgdmFsdWUgbXVzdCBi ZSBiZXR3ZWVuIDAgYW5kIDU5LiIpDQoNCisgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0g MjoNCg0KKyAgICAgICAgICAgICAgICBjdHguVGltZS5TZWNvbmQgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKS0xKSkNCg0KKyAgICAgICAgICAgICAgICBpZiBj dHguVGltZS5TZWNvbmQgPiA1OToNCg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5O LmxpbmUsICJTZWNvbmQgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNTkuIikN Cg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJU aW1lRmxhZ3MuDQoNCisgICAgZGVmIHZpc2l0VmZyVGltZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHgu dGltZUZsYWdzRmllbGQoKToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVs ZEN0eC5MRmxhZw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTEZsYWdzDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdGltZUZs YWdzRmllbGQuDQoNCisgICAgZGVmIHZpc2l0VGltZUZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5 bnRheFBhcnNlci5UaW1lRmxhZ3NGaWVsZENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigpKQ0KDQorICAgICAgICBpZiBjdHguSG91clN1cHBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KDQorICAgICAgICBpZiBjdHguTWludXRlU3Vw cHJlc3NGbGFnKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDINCg0K KyAgICAgICAgaWYgY3R4LlNlY29uZFN1cHByZXNzRmxhZygpICE9IE5vbmU6DQoNCisgICAgICAg ICAgICBjdHguTEZsYWcgPSAweDA0DQoNCisgICAgICAgIGlmIGN0eC5TdG9yYWdlTm9ybWFsRmxh ZygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAwDQoNCisgICAgICAg IGlmIGN0eC5TdG9yYWdlVGltZUZsYWcoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkxG bGFnID0gMHgxMA0KDQorICAgICAgICBpZiBjdHguU3RvcmFnZVdha2VVcEZsYWcoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguTEZsYWcNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbC4NCg0KKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudENvbmRpdGlvbmFsQ29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERpc2FibGVJZlN0YXQo KSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNh YmxlSWZTdGF0KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJ ZlN0YXQoKSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRTdXBwcmVzc0lmU3RhdCgpLk5vZGUNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEdy YXlPdXRJZlN0YXQoKSE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCkuTm9kZQ0KDQorICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWZTdGF0KCkhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4Lk5vZGUg PSBjdHgudmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KCkuTm9kZQ0KDQorDQoNCisgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcu DQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXcoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0NvbnRleHQpOg0KDQorICAg ICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVu dFN1cHByZXNzSWZTdGF0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZT dGF0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRD b250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAg ICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldygpLk5vZGUN Cg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHcmF5T3V0 SWZTdGF0Lg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dCk6DQoN CisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4Lk5v ZGUgPSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldygpLk5vZGUNCg0KKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0TGlzdC4NCg0KKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXQoKSAhPSBOb25l Og0KDQorICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3RhdCgpLk5vZGUN Cg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFF1ZXN0aW9ucygpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKS5Ob2RlDQoN CisgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpLk5vZGUN Cg0KKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExhYmVsKCkgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudExhYmVsKCkuTm9kZQ0KDQorICAgICAg ICBpZiBjdHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCg0KKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudEludmFsaWQoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4 Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50SW52YWxpZCgpLk5vZGUNCg0KKyAgICAgICAgcmV0dXJu IGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZC4NCg0KKyAgICBkZWYg dmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFN0YXRMaXN0T2xkQ29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZlN0YXQuDQoNCisgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdChzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBE SU9iaiA9IENJZnJEaXNhYmxlSWYoKQ0KDQorICAgICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0 YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KDQorICAgICAgICBj dHguTm9kZS5Db25kaXRpb24gPSAnZGlzYWJsZWlmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3Jp Z2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVu dFN0YXRMaXN0KCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUs IEN0eCkNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRT dXBwcmVzc0lmU3RhdE5ldy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lm U3RhdE5ldyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZT dGF0TmV3Q29udGV4dCk6DQoNCisNCg0KKyAgICAgICAgU0lPYmogPSBDSWZyU3VwcHJlc3NJZigp DQoNCisgICAgICAgIFNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IFNJT2JqDQoNCisgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdz dXBwcmVzc2lmJyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0 ZW1lbnRFeHByZXNzaW9uKCkpDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRMaXN0KCk6DQoNCisgICAg ICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAg ICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcu DQoNCisgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXdDb250ZXh0KToNCg0K Kw0KDQorICAgICAgICBHT0lPYmogPSBDSWZyR3JheU91dElmKCkNCg0KKyAgICAgICAgR09JT2Jq LlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEdP SU9iag0KDQorICAgICAgICBjdHguTm9kZS5Db25kaXRpb24gPSAnZ3JheW91dGlmJyArICcgJyAr IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkp DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBDdHgg aW4gY3R4LnZmclN0YXRlbWVudFN0YXRMaXN0KCk6DQoNCisgICAgICAgICAgICBzZWxmLl9fSW5z ZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0eCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cg0KKw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Lg0KDQorICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdENvbnRleHQpOg0KDQorDQoNCisg ICAgICAgIElJT2JqID0gQ0lmckluY29uc2lzdGVudElmKCkNCg0KKyAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIGN0eC5zdGFy dC5saW5lKQ0KDQorICAgICAgICBJSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIElJT2JqLlNldEVycm9y KHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KDQorICAgICAgICBjdHguTm9kZS5EYXRh ID0gSUlPYmoNCg0KKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gJ2luY29uc2lzdGVudGlm JyArICcgJyArIHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKCkpDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQoNCisNCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnRJbnZhbGlkLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEludmFsaWQoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dCk6DQoNCisg ICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkSGlk ZGVuKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbkNv bnRleHQpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0K DQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkuDQoNCisgICAgZGVmIHZpc2l0VmZyU3Rh dGVtZW50SW52YWxpZEludmVudG9yeShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudEludmFsaWRJbnZlbnRvcnlDb250ZXh0KToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVE ZWZhdWx0cy4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVE ZWZhdWx0cyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRTYXZl UmVzdG9yZURlZmF1bHRzQ29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50TGFiZWwuDQoNCisgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50TGFiZWwoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRM YWJlbENvbnRleHQpOg0KDQorDQoNCisgICAgICAgIExPYmogPSBDSWZyTGFiZWwoKQ0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMT2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgTE9iai5TZXROdW1iZXIoc2VsZi5fX1RyYW5zTnVt KGN0eC5OdW1iZXIoKSkpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBMT2JqDQoNCisgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZXguQk9iam50QmFubmVyLg0K DQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEJhbm5lcihzZWxmLCBjdHg6VmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEJhbm5lckNvbnRleHQpOg0KDQorDQoNCisgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgaWYgY3R4LkxpbmUoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgQk9iaiA9IENJZnJCYW5uZXIoKQ0KDQorICAgICAgICAgICAgQk9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgICAgICBCT2JqLlNldFRpdGxlKHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCg0KKyAgICAgICAgICAgIEJPYmouU2V0TGlu ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQoNCisgICAgICAgICAgICBpZiBjdHgu TGVmdCgpICE9IE5vbmU6IEJPYmouU2V0QWxpZ24oMCkNCg0KKyAgICAgICAgICAgIGlmIGN0eC5D ZW50ZXIoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDEpDQoNCisgICAgICAgICAgICBpZiBjdHgu UmlnaHQoKSAhPSBOb25lOiBCT2JqLlNldEFsaWduKDIpDQoNCisgICAgICAgICAgICBjdHguTm9k ZS5EYXRhID0gQk9iag0KDQorICAgICAgICBlbGlmIGN0eC5UaW1lb3V0KCkgIT0gTm9uZToNCg0K KyAgICAgICAgICAgIFRPYmogPSBDSWZyVGltZW91dCgpDQoNCisgICAgICAgICAgICBUT2JqLlNl dExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgICAgIFRPYmouU2V0VGltZW91dChz ZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkpDQoNCisgICAgICAgICAgICBjdHguTm9kZS5E YXRhID0gVE9iag0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50RXh0ZW5zaW9uLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEV4dGVuc2lv bihzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGN0eC5Jc1N0cnVjdCA9IEZhbHNlDQoNCisgICAgICAgIGlmIGN0 eC5EYXRhVHlwZSgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBjdHguVWludDY0KCkgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDY0Jw0KDQorICAg ICAgICAgICAgZWxpZiBjdHguVWludDMyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBj dHguVHlwZU5hbWUgPSAnVUlOVDMyJw0KDQorICAgICAgICAgICAgZWxpZiBjdHguVWludDE2KCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDE2Jw0KDQor ICAgICAgICAgICAgZWxpZiBjdHguVWludDgoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAg IGN0eC5UeXBlTmFtZSA9ICdVSU5UOCcNCg0KKyAgICAgICAgICAgIGVsaWYgY3R4LkJvb2xlYW4o KSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICdCT09MRUFOJw0K DQorICAgICAgICAgICAgZWxpZiBjdHguRUZJX1NUUklOR19JRCgpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgY3R4LlR5cGVOYW1lID0gJ0VGSV9TVFJJTkdfSUQnDQoNCisgICAgICAgICAg ICBlbGlmIGN0eC5FRklfSElJX0RBVEUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgIGN0 eC5UeXBlTmFtZSA9ICdFRklfSElJX0RBVEUnDQoNCisgICAgICAgICAgICAgICAgY3R4LklzU3Ry dWN0ID0gVHJ1ZQ0KDQorICAgICAgICAgICAgZWxpZiBjdHguRUZJX0hJSV9USU1FKCkgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnRUZJX0hJSV9USU1FJw0KDQor ICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCg0KKyAgICAgICAgICAgIGVsaWYg Y3R4LkVGSV9ISUlfUkVGKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5h bWUgPSAnRUZJX0hJSV9SRUYnDQoNCisgICAgICAgICAgICAgICAgY3R4LklzU3RydWN0ID0gVHJ1 ZQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUg PSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigpKQ0KDQorICAgICAgICAgICAg ICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCg0KKyAgICAgICAgICAgIGN0eC5BcnJheU51bSA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQoNCisgICAgICAgICAgICBjdHguVHlwZVNpemUs IFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFt ZShjdHguVHlwZU5hbWUpDQoNCisgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVy bkNvZGUsIGN0eC5ELmxpbmUpDQoNCisgICAgICAgICAgICBjdHguU2l6ZSA9IGN0eC5UeXBlU2l6 ZSAqIGN0eC5BcnJheU51bSBpZiBjdHguQXJyYXlOdW0gPiAwIGVsc2UgY3R4LlR5cGVTaXplDQoN CisgICAgICAgICAgICBBcnJheVR5cGUgPSBjdHlwZXMuY191Ynl0ZSAqIGN0eC5TaXplDQoNCisg ICAgICAgICAgICBjdHguRGF0YUJ1ZmYgPSBBcnJheVR5cGUoKQ0KDQorICAgICAgICAgICAgZm9y IGkgaW4gcmFuZ2UoMCwgY3R4LlNpemUpOg0KDQorICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVm ZltpXSA9IDANCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgR3VpZE9iaiA9IENJZnJHdWlk KGN0eC5TaXplKQ0KDQorICAgICAgICBHdWlkT2JqLlNldExpbmVObyhMaW5lKQ0KDQorICAgICAg ICBHdWlkT2JqLlNldEd1aWQoY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCg0KKyAgICAgICAg aWYgY3R4LlR5cGVOYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICBHdWlkT2JqLlNldERhdGEo Y3R4LkRhdGFCdWZmKQ0KDQorICAgICAgICAjIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KDQorICAg ICAgICBHdWlkT2JqLlNldFNjb3BlKDEpDQoNCisgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBHdWlk T2JqDQoNCisgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpOg0K DQorICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQoNCisgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4dGVuc2lvbkRhdGEuDQoNCisgICAgZGVmIHZp c2l0VmZyRXh0ZW5zaW9uRGF0YShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lv bkRhdGFDb250ZXh0KToNCg0KKyAgICAgICAgJycnDQoNCisgICAgICAgIFRGTmFtZSA9ICcnDQoN CisgICAgICAgIElzQXJyYXkgPSBGYWxzZSBpZiBjdHguT3BlbkJyYWNrZXQoKSA9PSBOb25lIGVs c2UgVHJ1ZQ0KDQorICAgICAgICBBcnJheUlkeCA9IDANCg0KKyAgICAgICAgY3R4LklzU3RydWN0 ID0gY3R4LnBhcmVudEN0eC5Jc1N0cnVjdA0KDQorICAgICAgICBjdHguRGF0YUJ1ZmYgPSBjdHgu cGFyZW50Q3R4LkRhdGFCdWZmDQoNCisNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKw0KDQorICAgICAgICBEYXRhID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OLnRleHQpDQoN CisgICAgICAgIGlmIElzQXJyYXkgPT0gVHJ1ZToNCg0KKyAgICAgICAgICAgIEFycmF5SWR4ID0g c2VsZi5fX1RyYW5zTnVtKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCg0KKyAgICAg ICAgQnl0ZU9mZnNldCAgPSBBcnJheUlkeCAqIGN0eC5wYXJlbnRDdHguVHlwZVNpemUNCg0KKyAg ICAgICAgaWYgY3R4LklzU3RydWN0ID09IFRydWU6DQoNCisgICAgICAgICAgICBURk5hbWUgKz0g Y3R4LnBhcmVudEN0eC5UeXBlTmFtZQ0KDQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwg bGVuKGN0eC5hcnJheU5hbWUoKSkpOg0KDQorICAgICAgICAgICAgICAgIFRGTmFtZSArPSAnLicN Cg0KKyAgICAgICAgICAgICAgICBURk5hbWUgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHJaDQoN CisgICAgICAgICAgICBGaWVsZE9mZnNldCwgRmllbGRUeXBlLCBGaWVsZFNpemUsIEJpdEZpZWxk LCBfID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVEZOYW1lKQ0KDQorICAg ICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAgICAgTWFzayA9ICgxIDw8IEZp ZWxkU2l6ZSkgLSAxDQoNCisgICAgICAgICAgICAgICAgT2Zmc2V0ID0gaW50KEZpZWxkT2Zmc2V0 IC8gOCkNCg0KKyAgICAgICAgICAgICAgICBQcmVCaXRzID0gRmllbGRPZmZzZXQgJSA4DQoNCisg ICAgICAgICAgICAgICAgTWFzayA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAgICAgIEJlZ2lu ID0gMA0KDQorICAgICAgICAgICAgICAgIEVuZCA9IDANCg0KKyAgICAgICAgICAgICAgICBpZiBG aWVsZFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAg ICAgIERhdGEgPSBjdHlwZXMuY191Ynl0ZShEYXRhKQ0KDQorICAgICAgICAgICAgICAgICAgICBp ZiBCaXRGaWVsZDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRoZSB2YWx1ZSB0 byB0aGUgYml0IGZpbGVkcy4NCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgIDw8PSBQ cmVCaXRzDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IChWYWx1ZSAmICh+TWFz aykpIHwgRGF0YQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4gPSBCeXRlT2Zmc2V0 ICsgT2Zmc2V0DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsg T2Zmc2V0ICsgc2l6ZW9mIChjdHlwZXMuY191Ynl0ZSkNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IFZhbHVlDQoNCisgICAgICAgICAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQg KyBGaWVsZE9mZnNldA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0ZU9mZnNl dCArIEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBj dHguRGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBEYXRhDQoNCisNCg0KKw0KDQorICAgICAgICAgICAg ICAgIGlmIEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAg ICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191c2hvcnQoRGF0YSkNCg0KKyAgICAgICAgICAg ICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNldCB0 aGUgdmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBE YXRhICA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSAoVmFs dWUgJiAofk1hc2spKSB8IERhdGENCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlZ2luID0g Qnl0ZU9mZnNldCArIE9mZnNldA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0 ZU9mZnNldCArIE9mZnNldCArIHNpemVvZiAoY3R5cGVzLmNfdXNob3J0KQ0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0gVmFsdWUNCg0KKyAgICAg ICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIEJlZ2luID0g Qnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBFbmQg PSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNpemUNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERhdGENCg0KKw0KDQorDQoNCisg ICAgICAgICAgICAgICAgaWYgRmllbGRUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoN Cg0KKyAgICAgICAgICAgICAgICAgICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nKERhdGEpDQoNCisg ICAgICAgICAgICAgICAgICAgIGlmIEJpdEZpZWxkOg0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgIyBTZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgRGF0YSAgPDw9IFByZUJpdHMNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIFZh bHVlID0gKFZhbHVlICYgKH5NYXNrKSkgfCBEYXRhDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IEVuZCA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQgKyBzaXplb2YgKGN0eXBlcy5jX3Vsb25nKQ0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0gVmFsdWUN Cg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNpemUNCg0KKyAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERhdGENCg0KKw0K DQorICAgICAgICAgICAgICAgIGlmIEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf NjQ6DQoNCisgICAgICAgICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191bG9uZ2xvbmcoRGF0 YSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAg ICAgICAgICAgICAjIFNldCB0aGUgdmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBEYXRhICA8PD0gUHJlQml0cw0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgVmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIE9mZnNldA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIE9mZnNldCArIHNpemVvZiAoY3R5cGVzLmNfdWxv bmdsb25nKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBF bmRdID0gVmFsdWUNCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZzZXQgKyBGaWVsZFNp emUNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9 IERhdGENCg0KKw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgY3R4LkRhdGFCdWZm W0J5dGVPZmZzZXQsIEJ5dGVPZmZzZXQgKyBjdHgucGFyZW50Q3R4LlR5cGVTaXplXSA9IERhdGEN Cg0KKyAgICAgICAgJycnDQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmclN0YXRlbWVudE1vZGFsLg0KDQorICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE1v ZGFsKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TW9kYWxDb250ZXh0KToN Cg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJNb2RhbFRhZygpLk5vZGUNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyTW9kYWxUYWcuDQoNCisgICAgZGVmIHZpc2l0VmZyTW9kYWxUYWcoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5WZnJNb2RhbFRhZ0NvbnRleHQpOg0KDQorDQoNCisgICAgICAgIE1P YmogPSBDSWZyTW9kYWwoKQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor ICAgICAgICBNT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IE1PYmoNCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCg0KKw0KDQor ICAgIGRlZiBfX1NhdmVPcEhkckNvbmQoc2VsZiwgT3BIZHIsIENvbmQsIExpbmVObz0wKToNCg0K KyAgICAgICAgaWYgQ29uZCA9PSBUcnVlOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5fX0NJZnJP cEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAg cmV0dXJuDQoNCisgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJ bmRleF0gPSBDSWZyT3BIZWFkZXIoT3BIZHIpICMNCg0KKyAgICAgICAgICAgIHNlbGYuX19DSWZy T3BIZHJMaW5lTm9bc2VsZi5fX0NJZnJPcEhkckluZGV4XSA9IExpbmVObw0KDQorDQoNCisNCg0K KyAgICBkZWYgX19Jbml0T3BIZHJDb25kKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fQ0lmck9w SGRyLmFwcGVuZChOb25lKQ0KDQorICAgICAgICBzZWxmLl9fQ0lmck9wSGRyTGluZU5vLmFwcGVu ZCgwKQ0KDQorDQoNCisgICAgZGVmIF9fU2V0U2F2ZWRPcEhkclNjb3BlKHNlbGYpOg0KDQorICAg ICAgICBpZiAgc2VsZi5fX0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IE5vbmU6 DQoNCisgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJbmRleF0u U2V0U2NvcGUoMSkNCg0KKyAgICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAgIHJldHVy biBGYWxzZQ0KDQorDQoNCisgICAgZGVmIF9fQ2xlYXJTYXZlZE9QSGRyKHNlbGYpOg0KDQorICAg ICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJbmRleF0gPSBOb25lDQoNCisN Cg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50RXhwcmVzc2lvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNv bnRleHQpOg0KDQorDQoNCisgICAgICAgICMgUm9vdCBleHByZXNzaW9uIGV4dGVuc2lvbiBmdW5j dGlvbiBjYWxsZWQgYnkgb3RoZXIgZnVuY3Rpb24uICMjDQoNCisgICAgICAgIGlmIGN0eC5FeHBJ bmZvLlJvb3RMZXZlbCA9PSAwOg0KDQorICAgICAgICAgICAgc2VsZi5fX0NJZnJPcEhkckluZGV4 ICs9IDENCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DSWZyT3BIZHJJbmRleCA+PSBNQVhfSUZS X0VYUFJFU1NJT05fREVQVEg6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsIGN0eC5zdGFydC5s aW5lLCAnVGhlIGRlcHRoIG9mIGV4cHJlc3Npb24gZXhjZWVkcyB0aGUgbWF4IHN1cHBvcnRlZCBs ZXZlbCA4IScpDQoNCisgICAgICAgICAgICBzZWxmLl9fSW5pdE9wSGRyQ29uZCgpDQoNCisNCg0K KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguT1IoKSkpOg0K DQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgICAg ICBPT2JqID0gQ0lmck9yKExpbmUpDQoNCisNCg0KKyAgICAgICAgIyBFeHRlbmQgT3BDb2RlIFNj b3BlIG9ubHkgZm9yIHRoZSByb290IGV4cHJlc3Npb24uDQoNCisgICAgICAgIGlmIGN0eC5FeHBJ bmZvLkV4cE9wQ291bnQgPiAxIGFuZCBjdHguRXhwSW5mby5Sb290TGV2ZWwgPT0gMDoNCg0KKyAg ICAgICAgICAgIGlmIHNlbGYuX19TZXRTYXZlZE9wSGRyU2NvcGUoKToNCg0KKyAgICAgICAgICAg ICAgICBFT2JqID0gQ0lmckVuZCgpDQoNCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0NJZnJP cEhkckxpbmVOb1tzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IDA6DQoNCisgICAgICAgICAgICAg ICAgICAgIEVPYmouU2V0TGluZU5vKHNlbGYuX19DSWZyT3BIZHJMaW5lTm9bc2VsZi5fX0NJZnJP cEhkckluZGV4XSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguRXhwSW5mby5Sb290TGV2ZWwgPT0g MDoNCg0KKyAgICAgICAgICAgIHNlbGYuX19DbGVhclNhdmVkT1BIZHIoKQ0KDQorICAgICAgICAg ICAgc2VsZi5fX0NJZnJPcEhkckluZGV4ID0gc2VsZi5fX0NJZnJPcEhkckluZGV4IC0gMQ0KDQor DQoNCisgICAgICAgIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb24gPSBGYWxzZQ0KDQor DQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RXhw cmVzc2lvblN1Yi4NCg0KKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQp Og0KDQorDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9IGN0eC5wYXJlbnRDdHgu RXhwSW5mby5Sb290TGV2ZWwgKyAxDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg PSBjdHgucGFyZW50Q3R4LkV4cEluZm8uRXhwT3BDb3VudA0KDQorDQoNCisgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgY3R4LnBhcmVudEN0eC5FeHBJbmZv LkV4cE9wQ291bnQgPSBjdHguRXhwSW5mby5FeHBPcENvdW50DQoNCisNCg0KKyAgICAgICAgcmV0 dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjYW5kVGVybS4NCg0KKyAgICBkZWYgdmlzaXRBbmRUZXJtKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQW5kVGVybUNvbnRleHQpOg0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0K KyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5BTkQoKSkpOg0KDQorICAgICAgICAg ICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgICAgICBBT2JqID0gQ0lm ckFuZChMaW5lKQ0KDQorICAgICAgICAgICAgY3R4LkNJZnJBbmRMaXN0LmFwcGVuZChBT2JqKQ0K DQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJBbmRMaXN0DQoNCisN Cg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNiaXR3aXNlb3JUZXJtLg0KDQorICAgIGRlZiB2aXNpdEJpdHdpc2VvclRlcm0oc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4dCk6DQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0K DQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LkJpdFdpc2VPcigpKSk6DQoNCisg ICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKyAgICAgICAgICAgIEJX T09iaiA9IENJZnJCaXRXaXNlT3IoTGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5DSWZyQml0V2lz ZU9yTGlzdC5hcHBlbmQoQldPT2JqKQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5m bywgY3R4LkNJZnJCaXRXaXNlT3JMaXN0DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlYW5kVGVybS4NCg0KKyAg ICBkZWYgdmlzaXRCaXR3aXNlYW5kVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkJpdHdp c2VhbmRUZXJtQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5n ZSgwLCBsZW4oY3R4LkJpdFdpc2VBbmQoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8u RXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgICAgICBCV0FPYmogPSBDSWZyQml0V2lzZUFuZChM aW5lKQ0KDQorICAgICAgICAgICAgY3R4LkNJZnJCaXRXaXNlQW5kTGlzdC5hcHBlbmQoQldBT2Jq KQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJCaXRXaXNlQW5k TGlzdA0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtLg0KDQorICAgIGRlZiB2aXNpdEVxdWFsVGVybShzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNvbnRleHQpOg0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4 LmVxdWFsVGVybVN1cHBsZW1lbnRhcnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8u RXhwT3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvLCBjdHgu Q0lmckVxdWFsTGlzdCwgY3R4LkNJZnJOb3RFcXVhbExpc3QNCg0KKw0KDQorDQoNCisgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybUVx dWFsUnVsZS4NCg0KKyAgICBkZWYgdmlzaXRFcXVhbFRlcm1FcXVhbFJ1bGUoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5FcXVhbFRlcm1FcXVhbFJ1bGVDb250ZXh0KToNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgRU9iaiA9IENJZnJFcXVhbChjdHguc3Rh cnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJFcXVhbExpc3QuYXBwZW5kKEVPYmopDQoNCisN Cg0KKyAgICAgICAgcmV0dXJuIEVPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybU5vdEVxdWFsUnVsZS4N Cg0KKyAgICBkZWYgdmlzaXRFcXVhbFRlcm1Ob3RFcXVhbFJ1bGUoc2VsZiwgY3R4OlZmclN5bnRh eFBhcnNlci5FcXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTkVPYmogPSBDSWZyTm90RXF1YWwoY3R4LnN0 YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZyTm90RXF1YWxMaXN0LmFwcGVuZChORU9iaikN Cg0KKyAgICAgICAgcmV0dXJuIE5FT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybS4NCg0KKyAgICBk ZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJt Q29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAg IGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KCkpKToN Cg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICBy ZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyTGVzc1RoYW5MaXN0LCBjdHguQ0lmckxlc3NFcXVh bExpc3QsIGN0eC5DSWZyR3JlYXRlclRoYW5MaXN0LCBjdHguQ0lmckdyZWF0ZXJFcXVhbExpc3QN Cg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2NvbXBhcmVUZXJtTGVzc1J1bGUuDQoNCisgICAgZGVmIHZpc2l0Q29tcGFyZVRl cm1MZXNzUnVsZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVzc1J1bGVD b250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAg TFRPYmogPSBDSWZyTGVzc1RoYW4oY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZy TGVzc1RoYW5MaXN0LmFwcGVuZChMVE9iaikNCg0KKyAgICAgICAgcmV0dXJuIExUT2JqDQoNCisN Cg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNjb21wYXJlVGVybUxlc3NFcXVhbFJ1bGUuDQoNCisgICAgZGVmIHZpc2l0Q29tcGFyZVRl cm1MZXNzRXF1YWxSdWxlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1MZXNz RXF1YWxSdWxlQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoN CisgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChjdHguc3RhcnQubGluZSkNCg0KKyAgICAg ICAgY3R4LkNJZnJMZXNzRXF1YWxMaXN0LmFwcGVuZChMRU9iaikNCg0KKyAgICAgICAgcmV0dXJu IExFT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybUdyZWF0ZXJSdWxlLg0KDQorICAgIGRlZiB2aXNp dENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Db21wYXJl VGVybUdyZWF0ZXJSdWxlQ29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQoNCisgICAgICAgIEdUT2JqID0gQ0lmckdyZWF0ZXJUaGFuKGN0eC5zdGFydC5saW5lKQ0K DQorICAgICAgICBjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdC5hcHBlbmQoR1RPYmopDQoNCisgICAg ICAgIHJldHVybiBHVE9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjY29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlLg0K DQorICAgIGRlZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZShzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZUNvbnRleHQpOg0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBHRU9iaiA9IENJZnJHcmVh dGVyRXF1YWwoY3R4LnN0YXJ0LmxpbmUpDQoNCisgICAgICAgIGN0eC5DSWZyR3JlYXRlckVxdWFs TGlzdC5hcHBlbmQoR0VPYmopDQoNCisgICAgICAgIHJldHVybiBHRU9iag0KDQorDQoNCisgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVy bS4NCg0KKyAgICBkZWYgdmlzaXRTaGlmdFRlcm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5T aGlmdFRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5 KCkpKToNCg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAg ICAgICByZXR1cm4gY3R4LkV4cEluZm8sIGN0eC5DSWZyU2hpZnRMZWZ0TGlzdCwgY3R4LkNJZnJT aGlmdFJpZ2h0TGlzdA0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkgVmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybUxlZnQuDQoNCisgICAgZGVmIHZpc2l0U2hpZnRU ZXJtTGVmdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUxlZnRDb250ZXh0KToN Cg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgU0xPYmogPSBD SWZyU2hpZnRMZWZ0KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmclNoaWZ0TGVm dExpc3QuYXBwZW5kKFNMT2JqKQ0KDQorICAgICAgICByZXR1cm4gU0xPYmoNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3No aWZ0VGVybVJpZ2h0Lg0KDQorICAgIGRlZiB2aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtUmlnaHRDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgU1JPYmogPSBDSWZyU2hpZnRSaWdodChjdHgu c3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJTaGlmdFJpZ2h0TGlzdC5hcHBlbmQoU1JP YmopDQoNCisgICAgICAgIHJldHVybiBTUk9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtLg0KDQor ICAgIGRlZiB2aXNpdEFkZE1pbnVzVGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkFkZE1p bnVzVGVybUNvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor ICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFkZE1pbnVzVGVybVN1cHBsZW1lbnRh cnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisg ICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJBZGRMaXN0LCBjdHguQ0lmclN1YnRy YWN0TGlzdA0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNUZXJtcEFkZC4NCg0KKyAgICBkZWYgdmlzaXRBZGRN aW51c1Rlcm1wQWRkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENv bnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBB T2JqID0gQ0lmckFkZChjdHguc3RhcnQubGluZSkNCg0KKyAgICAgICAgY3R4LkNJZnJBZGRMaXN0 LmFwcGVuZChBT2JqKQ0KDQorICAgICAgICByZXR1cm4gQU9iag0KDQorDQoNCisNCg0KKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjYWRkTWludXNU ZXJtU3VidHJhY3QuDQoNCisgICAgZGVmIHZpc2l0QWRkTWludXNUZXJtU3VidHJhY3Qoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdWJ0cmFjdENvbnRleHQpOg0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBTT2JqID0gQ0lmclN1YnRy YWN0KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmclN1YnRyYWN0TGlzdC5hcHBl bmQoU09iaikNCg0KKyAgICAgICAgcmV0dXJuIFNPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJt Lg0KDQorICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5tdWx0ZGl2bW9kVGVy bVN1cHBsZW1lbnRhcnkoKSkpOg0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJNdWx0aXBseUxp c3QsIGN0eC5DSWZyRGl2aWRlTGlzdCwgIGN0eC5DSWZyTW9kdWxvTGlzdA0KDQorDQoNCisNCg0K KyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbXVs dGRpdm1vZFRlcm1NdWwuDQoNCisgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1NdWwoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybU11bENvbnRleHQpOg0KDQorICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBNT2JqID0gQ0lmck11bHRpcGx5 KGN0eC5zdGFydC5saW5lKQ0KDQorICAgICAgICBjdHguQ0lmck11bHRpcGx5TGlzdC5hcHBlbmQo TU9iaikNCg0KKyAgICAgICAgcmV0dXJuIE1PYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtRGl2 Lg0KDQorICAgIGRlZiB2aXNpdE11bHRkaXZtb2RUZXJtRGl2KHNlbGYsIGN0eDpWZnJTeW50YXhQ YXJzZXIuTXVsdGRpdm1vZFRlcm1EaXZDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgRE9iaiA9IENJZnJEaXZpZGUoY3R4LnN0YXJ0LmxpbmUp DQoNCisgICAgICAgIGN0eC5DSWZyRGl2aWRlTGlzdC5hcHBlbmQoRE9iaikNCg0KKyAgICAgICAg cmV0dXJuIERPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI211bHRkaXZtb2RUZXJtUm91bmQuDQoNCisgICAgZGVmIHZp c2l0TXVsdGRpdm1vZFRlcm1Nb2R1bG8oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5NdWx0ZGl2 bW9kVGVybU1vZHVsb0NvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIE1PYmog PSBDSWZyTW9kdWxvKGN0eC5MaW5lKQ0KDQorICAgICAgICBjdHguQ0lmck1vZHVsb0xpc3QuYXBw ZW5kKE1PYmopDQoNCisgICAgICAgIHJldHVybiBNT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjYXN0VGVybS4NCg0K KyAgICBkZWYgdmlzaXRDYXN0VGVybShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkNhc3RUZXJt Q29udGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpICMjDQoNCisgICAg ICAgIENhc3RUeXBlID0gMHhGRg0KDQorICAgICAgICBpZiBjdHguQm9vbGVhbigpICE9IFtdOg0K DQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAwDQoNCisgICAgICAgIGVsaWYgY3R4LlVpbnQ2NCgp ICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQoNCisgICAgICAgIGVsaWYgY3R4 LlVpbnQzMigpICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQoNCisgICAgICAg IGVsaWYgY3R4LlVpbnQxNigpICE9IFtdOg0KDQorICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQoN CisgICAgICAgIGVsaWYgY3R4LlVpbnQ4KCkgIT0gW106DQoNCisgICAgICAgICAgICBDYXN0VHlw ZSA9IDENCg0KKw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAg aWYgQ2FzdFR5cGUgPT0gMDoNCg0KKyAgICAgICAgICAgIGN0eC5UQk9iaiA9IENJZnJUb0Jvb2xl YW4oTGluZSkNCg0KKyAgICAgICAgZWxpZiBDYXN0VHlwZSA9PSAxOg0KDQorICAgICAgICAgICAg Y3R4LlRVT2JqID0gQ0lmclRvVWludChMaW5lKQ0KDQorDQoNCisgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4LlRCT2JqLCBjdHguVFVPYmoN Cg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2F0b21UZXJtLg0KDQorICAgIGRlZiB2aXNpdEF0b21UZXJtKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4Lk5PVCgpICE9IE5vbmU6DQoNCisgICAgICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgICAgIE5PYmogPSBDSWZyTm90 KExpbmUpDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUuDQoNCisgICAgZGVmIHZpc2l0 VmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVz c2lvbkNhdGVuYXRlQ29udGV4dCk6DQoNCisgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCAr PSAxDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIGN0eC5DT2JqID0gQ0lmckNhdGVuYXRl KExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisg ICAgICAgIHJldHVybiBjdHguQ09iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbk1hdGNoLg0KDQor ICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25NYXRjaChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmckV4cHJlc3Npb25NYXRjaENvbnRleHQpOg0KDQorICAgICAgICBjdHguRXhwSW5mby5Sb290 TGV2ZWwgKz0gMQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisg ICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBjdHguTU9iaiA9IENJZnJN YXRjaChMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0K DQorICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRjaDIu DQoNCisgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbk1hdGNoMihzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmckV4cHJlc3Npb25NYXRjaDJDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKw0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0K KyAgICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCg0KKyAgICAgICAgY3R4 Lk0yT2JqID0gQ0lmck1hdGNoMihMaW5lLCBHdWlkKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4Lk0yT2JqDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJFeHByZXNzaW9uUGFyZW4uDQoNCisgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvblBhcmVu KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBhcmVuQ29udGV4dCk6DQoN CisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorDQoNCisNCg0KKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhw cmVzc2lvbkJ1aWxkSW5GdW5jdGlvbi4NCg0KKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQnVp bGRJbkZ1bmN0aW9uKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkJ1aWxk SW5GdW5jdGlvbkNvbnRleHQpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI2R1cEV4cC4NCg0KKyAgICBkZWYgdmlzaXREdXBFeHAoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5EdXBFeHBDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAg ICAgICAgRE9iaiA9IENJZnJEdXAoTGluZSkNCg0KKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNv bmQoRE9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUp ICMNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2YXJlcXZhbEV4cC4NCg0KKyAgICBkZWYg dmlzaXRWYXJlcXZhbEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZhcmVxdmFsRXhwQ29u dGV4dCk6DQoNCisNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisNCg0KKyAgICAgICAgUmV0dXJuQ29kZSA9IFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRA0KDQorICAgICAgICBWYXJJZFN0ciA9 ICd2YXInDQoNCisgICAgICAgIFZhcklkU3RyICs9IHN0cihjdHguTnVtYmVyKDApKQ0KDQorICAg ICAgICBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9y ZUlkKFZhcklkU3RyKQ0KDQorICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9VTkRFRklORUQ6DQoNCisgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBwYXNzDQoNCisgICAgICAgIFFJZCwgTWFzaywgXyA9IHNlbGYu X19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZhcklkU3RyKQ0KDQorICAgICAg ICBDb25zdFZhbCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KDQorICAgICAgICBp ZiBjdHguRXF1YWwoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgTWFzayA9PSAwOg0KDQor ICAgICAgICAgICAgICAgIEVJVk9iaiA9IENJZnJFcUlkVmFsKExpbmUpDQoNCisgICAgICAgICAg ICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cElu Zm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0 UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lKQ0KDQorICAgICAgICAgICAgICAgIEVJVk9i ai5TZXRWYWx1ZShDb25zdFZhbCkNCg0KKyAgICAgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2Vs Zi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNr LCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5FUVVBTCkNCg0KKyAgICAgICAgZWxpZiBjdHgu TGVzc0VxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lh bChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsIEVGSV9D T01QQVJFX1RZUEUuTEVTU19FUVVBTCkNCg0KKw0KDQorICAgICAgICBlbGlmIGN0eC5MZXNzKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5m bywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsIEVGSV9DT01QQVJFX1RZUEUu TEVTU19USEFOKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXJFcXVhbCgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExp bmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFU RVJfRVFVQUwpDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJ ZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhB TikNCg0KKw0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0K KyAgICBkZWYgQ29udmVydElkRXhwcihzZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRT dHIsIEJpdE1hc2spOg0KDQorDQoNCisgICAgICAgIFFSMU9iaiA9IENJZnJRdWVzdGlvblJlZjEo TGluZU5vKQ0KDQorICAgICAgICBRUjFPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBM aW5lTm8pDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFSMU9iai5HZXRIZWFkZXIo KSwgKEV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSkNCg0KKyAgICAgICAgaWYgQml0TWFzayAhPSAw Og0KDQorICAgICAgICAgICAgVTMyT2JqID0gQ0lmclVpbnQzMihMaW5lTm8pDQoNCisgICAgICAg ICAgICBVMzJPYmouU2V0VmFsdWUoQml0TWFzaykNCg0KKw0KDQorICAgICAgICAgICAgQldBT2Jq ID0gQ0lmckJpdFdpc2VBbmQoTGluZU5vKQ0KDQorDQoNCisgICAgICAgICAgICBVOE9iaiA9IENJ ZnJVaW50OChMaW5lTm8pDQoNCisgICAgICAgICAgICBpZiBCaXRNYXNrID09IERBVEVfWUVBUl9C SVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlICgwKQ0KDQorICAgICAg ICAgICAgZWxpZiBCaXRNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6DQoNCisgICAgICAgICAg ICAgICAgVThPYmouU2V0VmFsdWUgKDB4MTApDQoNCisgICAgICAgICAgICBlbGlmIEJpdE1hc2sg PT0gREFURV9EQVlfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1ZSAo MHgxOCkNCg0KKyAgICAgICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX0hPVVJfQklUTUFTSzoN Cg0KKyAgICAgICAgICAgICAgICBVOE9iai5TZXRWYWx1ZSAoMCkNCg0KKyAgICAgICAgICAgIGVs aWYgQml0TWFzayA9PSBUSU1FX01JTlVURV9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIFU4 T2JqLlNldFZhbHVlICgweDgpDQoNCisNCg0KKyAgICAgICAgICAgIFNST2JqID0gQ0lmclNoaWZ0 UmlnaHQoTGluZU5vKQ0KDQorDQoNCisgICAgICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSA0DQoN CisNCg0KKw0KDQorICAgIGRlZiBJZEVxVmFsRG9TcGVjaWFsKHNlbGYsIEV4cEluZm8sIExpbmVO bywgUUlkLCBWYXJJZFN0ciwgQml0TWFzaywgQ29uc3RWYWwsIENvbXBhcmVUeXBlKToNCg0KKw0K DQorICAgICAgICBzZWxmLkNvbnZlcnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklk U3RyLCBCaXRNYXNrKQ0KDQorICAgICAgICBpZiBDb25zdFZhbCA+IDB4RkY6DQoNCisgICAgICAg ICAgICBVMTZPYmogPSBDSWZyVWludDE2KExpbmVObykNCg0KKyAgICAgICAgICAgIFUxNk9iai5T ZXRWYWx1ZShDb25zdFZhbCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIFU4T2Jq ID0gQ0lmclVpbnQ4KExpbmVObykNCg0KKyAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlKENvbnN0 VmFsKQ0KDQorDQoNCisNCg0KKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVf VFlQRS5FUVVBTDoNCg0KKyAgICAgICAgICAgIEVPYmogPSBDSWZyRXF1YWwoTGluZU5vKQ0KDQor DQoNCisgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVB TDoNCg0KKyAgICAgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChMaW5lTm8pDQoNCisNCg0K KyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RIQU46DQoN CisgICAgICAgICAgICBMVE9iaiA9IENJZnJMZXNzVGhhbihMaW5lTm8pDQoNCisNCg0KKyAgICAg ICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMOg0KDQor ICAgICAgICAgICAgR0VPYmogPSBDSWZyR3JlYXRlckVxdWFsKExpbmVObykNCg0KKw0KDQorICAg ICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhBTjoNCg0K KyAgICAgICAgICAgIEdUT2JqID0gQ0lmckdyZWF0ZXJUaGFuKExpbmVObykNCg0KKw0KDQorICAg ICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMg0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbEV4cC4NCg0KKyAg ICBkZWYgdmlzaXRJZGVxdmFsRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuSWRlcXZhbEV4 cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgTWFzayA9IGN0eC52ZnJRdWVzdGlv bkRhdGFGaWVsZE5hbWUoKS5NYXNrDQoNCisgICAgICAgIFFJZCA9IGN0eC52ZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWUoKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIgPSBjdHgudmZyUXVlc3Rpb25E YXRhRmllbGROYW1lKCkuVmFySWRTdHINCg0KKyAgICAgICAgTGluZU5vID0gY3R4LnZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUNCg0KKyAgICAgICAgQ29uc3RWYWwgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigpKQ0KDQorICAgICAgICBpZiBjdHguRXF1YWwoKSAhPSBOb25lOg0K DQorICAgICAgICAgICAgaWYgTWFzayA9PSAwOg0KDQorICAgICAgICAgICAgICAgIEVJVk9iaiA9 IENJZnJFcUlkVmFsKExpbmUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNv bmQoRUlWT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGlu ZSkNCg0KKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3Ry LCBMaW5lTm8pDQoNCisgICAgICAgICAgICAgICAgRUlWT2JqLlNldFZhbHVlKENvbnN0VmFsKQ0K DQorICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAg ICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4 LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFS RV9UWVBFLkVRVUFMKQ0KDQorDQoNCisgICAgICAgIGVsaWYgY3R4Lkxlc3NFcXVhbCgpICE9IE5v bmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExp bmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkxFU1Nf RVFVQUwpDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguTGVzcygpICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFy SWRTdHIsIE1hc2ssIENvbnN0VmFsLCBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTikNCg0KKw0K DQorICAgICAgICBlbGlmIGN0eC5HcmVhdGVyRXF1YWwoKSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3Ry LCBNYXNrLCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMKQ0KDQorDQoN CisgICAgICAgIGVsaWYgY3R4LkdyZWF0ZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgc2Vs Zi5JZEVxVmFsRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQsIFZhcklkU3RyLCBNYXNr LCBDb25zdFZhbCwgRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX1RIQU4pDQoNCisNCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5FeHBJbmZvDQoNCisNCg0KKw0KDQorICAgIGRlZiBJZEVxSWREb1NwZWNp YWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLCBW YXJJZFN0cjIsIE1hc2syLCBDb21wYXJlVHlwZSk6DQoNCisNCg0KKyAgICAgICAgc2VsZi5Db252 ZXJ0SWRFeHByKEV4cEluZm8sIExpbmVObywgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSkNCg0KKyAg ICAgICAgc2VsZi5Db252ZXJ0SWRFeHByKEV4cEluZm8sIExpbmVObywgUUlkMiwgVmFySWRTdHIy LCBNYXNrMikNCg0KKw0KDQorICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9U WVBFLkVRVUFMOg0KDQorICAgICAgICAgICAgRU9iaiA9IENJZnJFcXVhbChMaW5lTm8pDQoNCisN Cg0KKyAgICAgICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFM Og0KDQorICAgICAgICAgICAgTEVPYmogPSBDSWZyTGVzc0VxdWFsKExpbmVObykNCg0KKw0KDQor ICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTjoNCg0K KyAgICAgICAgICAgIExUT2JqID0gQ0lmckxlc3NUaGFuKExpbmVObykNCg0KKw0KDQorICAgICAg ICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUw6DQoNCisg ICAgICAgICAgICBHRU9iaiA9IENJZnJHcmVhdGVyRXF1YWwoTGluZU5vKQ0KDQorDQoNCisgICAg ICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFOOg0KDQor ICAgICAgICAgICAgR1RPYmogPSBDSWZyR3JlYXRlclRoYW4oTGluZU5vKQ0KDQorDQoNCisgICAg ICAgIEV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNpZGVxaWRFeHAuDQoNCisgICAg ZGVmIHZpc2l0SWRlcWlkRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuSWRlcWlkRXhwQ29u dGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIExp bmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBNYXNrMSA9IGN0eC52ZnJRdWVzdGlvbkRh dGFGaWVsZE5hbWUoMCkuTWFzaw0KDQorICAgICAgICBRSWQxID0gY3R4LnZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZSgwKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIxID0gY3R4LnZmclF1ZXN0aW9u RGF0YUZpZWxkTmFtZSgwKS5WYXJJZFN0cg0KDQorICAgICAgICBMaW5lTm8xID0gY3R4LnZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5MaW5lDQoNCisNCg0KKyAgICAgICAgTWFzazIgPSBjdHgu dmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDEpLk1hc2sNCg0KKyAgICAgICAgUUlkMiA9IGN0eC52 ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuUUlkDQoNCisgICAgICAgIFZhcklkU3RyMiA9IGN0 eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuVmFySWRTdHINCg0KKyAgICAgICAgTGluZU5v MiA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMSkuTGluZQ0KDQorDQoNCisgICAgICAg IGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBNYXNrMSAmIE1hc2sy Og0KDQorICAgICAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBM aW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLCBWYXJJZFN0cjIsIE1hc2syLCBFRklf Q09NUEFSRV9UWVBFLkVRVUFMKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAg ICAgICBFSUlPYmogPSBDSWZyRXFJZElkKExpbmUpDQoNCisgICAgICAgICAgICAgICAgc2VsZi5f X1NhdmVPcEhkckNvbmQoRUlJT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgICAgICBFSUlPYmouU2V0UXVlc3Rpb25JZDEo UUlkMSwgVmFySWRTdHIxLCBMaW5lTm8xKQ0KDQorICAgICAgICAgICAgICAgIEVJSU9iai5TZXRR dWVzdGlvbklkMShRSWQyLCBWYXJJZFN0cjIsIExpbmVObzIpDQoNCisgICAgICAgICAgICAgICAg Y3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKyAgICAgICAgZWxpZiBjdHguTGVz c0VxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRFcUlkRG9TcGVjaWFsKGN0 eC5FeHBJbmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBRSWQyLCBWYXJJZFN0cjIs IE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkxFU1NfRVFVQUwpDQoNCisNCg0KKyAgICAgICAgZWxp ZiBjdHguTGVzcygpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lh bChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwgVmFySWRT dHIyLCBNYXNrMiwgRUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RIQU4pDQoNCisNCg0KKyAgICAgICAg ZWxpZiBjdHguR3JlYXRlckVxdWFsKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuSWRF cUlkRG9TcGVjaWFsKGN0eC5FeHBJbmZvLCBMaW5lLCBRSWQxLCBWYXJJZFN0cjEsIE1hc2sxLCBR SWQyLCBWYXJJZFN0cjIsIE1hc2syLCBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwpDQoN CisNCg0KKyAgICAgICAgZWxpZiBjdHguR3JlYXRlcigpICE9IE5vbmU6DQoNCisgICAgICAgICAg ICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFySWRTdHIx LCBNYXNrMSwgUUlkMiwgVmFySWRTdHIyLCBNYXNrMiwgRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVS X1RIQU4pDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICBk ZWYgSWRFcUxpc3REb1NwZWNpYWwoc2VsZiwgRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3Ry LCBNYXNrLCBMaXN0TGVuLCBWYWx1ZUxpc3QpOg0KDQorICAgICAgICBpZiBMaXN0TGVuID09IDA6 DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBzZWxmLklkRXFWYWxEb1Nw ZWNpYWwoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBWYWx1ZUxpc3RbMF0s IEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIExp c3RMZW4pOg0KDQorICAgICAgICAgICAgc2VsZi5JZEVxVmFsRG9TcGVjaWFsKEV4cEluZm8sIExp bmVObywgUUlkLCBWYXJJZFN0ciwgTWFzaywgVmFsdWVMaXN0W2ldLCBFRklfQ09NUEFSRV9UWVBF LkVRVUFMKQ0KDQorICAgICAgICAgICAgT09iaiA9IENJZnJPcihMaW5lTm8pDQoNCisgICAgICAg ICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEg cGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjaWRlcXZhbGxpc3RFeHAuDQoN CisgICAgZGVmIHZpc2l0SWRlcXZhbGxpc3RFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5J ZGVxdmFsbGlzdEV4cENvbnRleHQpOg0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgTWFzayA9IGN0 eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5NYXNrDQoNCisgICAgICAgIFFJZCA9IGN0eC52 ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5RSWQNCg0KKyAgICAgICAgVmFySWRTdHIgPSBjdHgu dmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuVmFySWRTdHINCg0KKyAgICAgICAgTGluZU5vID0g Y3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLkxpbmUNCg0KKyAgICAgICAgVmFsdWVMaXN0 ID0gW10NCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5OdW1iZXIoKSkpOg0K DQorICAgICAgICAgICAgVmFsdWVMaXN0LmFwcGVuZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cihpKSkpDQoNCisNCg0KKyAgICAgICAgTGlzdExlbiA9IGxlbihWYWx1ZUxpc3QpDQoNCisNCg0K KyAgICAgICAgaWYgTWFzayAhPSAwOg0KDQorICAgICAgICAgICAgc2VsZi5JZEVxTGlzdERvU3Bl Y2lhbChjdHguRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBMaXN0TGVuLCBW YWx1ZUxpc3QpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBFSUxPYmogPSBDSWZy RXFJZExpc3QoTGluZSwgTGlzdExlbikNCg0KKyAgICAgICAgICAgIGlmIFFJZCAhPSBFRklfUVVF U1RJT05fSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgICAgICBFSUxPYmouU2V0UXVlc3Rpb25J ZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQoNCisgICAgICAgICAgICBFSUxPYmouU2V0TGlzdExl bmd0aChMaXN0TGVuKQ0KDQorICAgICAgICAgICAgRUlMT2JqLlNldFZhbHVlTGlzdChWYWx1ZUxp c3QpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChFSUxPYmouR2V0SGVhZGVy KCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICAgICAg aWYgUUlkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgICAgIEVJ TE9iai5TZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCg0KKyAgICAgICAgICAg IGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4LkV4cElu Zm8NCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMS4NCg0KKyAgICBkZWYgdmlzaXRW ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxQ29udGV4dCk6DQoNCisgICAgICAgIGN0eC5MaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0K KyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4dA0KDQorICAgICAgICBjdHguVmFy SWRTdHIgKz0gJ1snDQoNCisgICAgICAgIGN0eC5WYXJJZFN0ciArPSBjdHguSS50ZXh0DQoNCisg ICAgICAgIGN0eC5WYXJJZFN0ciArPSAnXScNCg0KKyAgICAgICAgY3R4LlFJZCwgY3R4Lk1hc2ss IF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChOb25lLCBjdHguVmFySWRT dHIpDQoNCisgICAgICAgIGlmIHNlbGYuX19Db25zdGFudE9ubHlJbkV4cHJlc3Npb246DQoNCisg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9D T05TVEFOVF9PTkxZLCBjdHguU04xLmxpbmUpDQoNCisgICAgICAgIHJldHVybiBjdHguUUlkLCBj dHguTWFzaywgY3R4LlZhcklkU3RyDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVS dWxlMi4NCg0KKyAgICBkZWYgdmlzaXRWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMihzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUyQ29udGV4 dCk6DQoNCisgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjIu dGV4dA0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmFycmF5TmFtZSgpKSk6 DQoNCisgICAgICAgICAgICBjdHguVmFySWRTdHIgKz0gJy4nDQoNCisgICAgICAgICAgICBpZiBz ZWxmLl9fQ29uc3RhbnRPbmx5SW5FeHByZXNzaW9uOg0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09OTFksIGN0 eC5TTjIubGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5WYXJJZFN0ciArPSBjdHguYXJyYXlOYW1l KGkpLlN1YlN0cloNCg0KKw0KDQorICAgICAgICBjdHguUUlkLCBjdHguTWFzaywgXyA9IHNlbGYu X19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIGN0eC5WYXJJZFN0cikNCg0KKyAg ICAgICAgcmV0dXJuIGN0eC5RSWQsIGN0eC5NYXNrLCBjdHguVmFySWRTdHINCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2Fy cmF5TmFtZS4NCg0KKyAgICBkZWYgdmlzaXRBcnJheU5hbWUoc2VsZiwgY3R4OlZmclN5bnRheFBh cnNlci5BcnJheU5hbWVDb250ZXh0KToNCg0KKw0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KDQorICAgICAgICBjdHguU3ViU3RyICs9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJp bmdJZGVudGlmaWVyKCkpDQoNCisgICAgICAgIGN0eC5TdWJTdHJaICs9IHNlbGYuX19UcmFuc0lk KGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQoNCisgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQoN CisgICAgICAgICAgICBJZHggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4udGV4dCkNCg0KKyAgICAg ICAgICAgIGlmIElkeCA+IDA6DQoNCisgICAgICAgICAgICAgICAgY3R4LlN1YlN0ciArPSAnWycN Cg0KKyAgICAgICAgICAgICAgICBjdHguU3ViU3RyICs9IHN0cihJZHgpDQoNCisgICAgICAgICAg ICAgICAgY3R4LlN1YlN0ciArPSAnXScNCg0KKw0KDQorICAgICAgICAgICAgY3R4LlN1YlN0clog Kz0gJ1snDQoNCisgICAgICAgICAgICBjdHguU3ViU3RyWiArPSBzdHIoSWR4KQ0KDQorICAgICAg ICAgICAgY3R4LlN1YlN0clogKz0gJ10nDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIGN0eC5TdWJT dHIsIGN0eC5TdWJTdHJaDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNxdWVzdGlvbnJlZjFFeHAuDQoNCisgICAgZGVmIHZp c2l0UXVlc3Rpb25yZWYxRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25yZWYx RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZSAjDQoNCisgICAg ICAgIFFOYW1lID0gTm9uZSAjDQoNCisgICAgICAgIFFJZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZB TElEDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlmIGN0 eC5TdHJpbmdJZGVudGlmaWVyKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFFOYW1lID0gc2Vs Zi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCg0KKyAgICAgICAgICAgIFFJZCwg XyAsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuR2V0UXVlc3Rpb25JZChRTmFtZSkNCg0KKw0K DQorICAgICAgICBlbGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgUUlk ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBRUjFPYmog PSBDSWZyUXVlc3Rpb25SZWYxKExpbmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25k KFFSMU9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUp DQoNCisgICAgICAgIFFSMU9iai5TZXRRdWVzdGlvbklkKFFJZCwgUU5hbWUsIExpbmUpDQoNCisg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJldHVy biBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcnVsZXJlZkV4cC4NCg0KKyAgICBkZWYgdmlzaXRSdWxl cmVmRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQpOg0KDQor ICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKyAgICAgICAgUlJPYmogPSBDSWZyUnVsZVJlZihMaW5lKQ0KDQorICAgICAg ICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChSUk9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgIFJ1bGVJZCA9IHNlbGYuX19DVmZyUnVs ZXNEQi5HZXRSdWxlSWQoc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkpDQoN CisgICAgICAgIFJST2JqLlNldFJ1bGVJZChSdWxlSWQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQor DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjc3RyaW5ncmVmMUV4cC4NCg0KKyAgICBkZWYgdmlzaXRTdHJpbmdyZWYxRXhwKHNlbGYs IGN0eDpWZnJTeW50YXhQYXJzZXIuU3RyaW5ncmVmMUV4cENvbnRleHQpOg0KDQorICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cg0KKyAgICAgICAgUmVmU3RyaW5nSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0K DQorICAgICAgICBTUjFPYmogPSBDSWZyU3RyaW5nUmVmMShMaW5lKQ0KDQorICAgICAgICBzZWxm Ll9fU2F2ZU9wSGRyQ29uZChTUjFPYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENv dW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICBTUjFPYmouU2V0U3RyaW5nSWQoUmVmU3RyaW5n SWQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAg ICAgIHJldHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcHVzaHRoaXNFeHAuDQoNCisgICAgZGVm IHZpc2l0UHVzaHRoaXNFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5QdXNodGhpc0V4cENv bnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgVE9iaiA9IENJZnJUaGlzKExpbmUpDQoN CisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFRPYmouR2V0SGVhZGVyKCksIChjdHguRXhw SW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCg0KKw0KDQor ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzZWN1 cml0eUV4cC4NCg0KKyAgICBkZWYgdmlzaXRTZWN1cml0eUV4cChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlNlY3VyaXR5RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBTT2Jq ID0gQ0lmclNlY3VyaXR5KExpbmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFNP YmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQor ICAgICAgICBTT2JqLlNldFBlcm1pc3Npb25zKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQoN CisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJl dHVybiBjdHguRXhwSW5mbw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI251bWVyaWNWYXJTdG9yZVR5cGUuDQoNCisgICAgZGVmIHZp c2l0TnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLk51bWVyaWNW YXJTdG9yZVR5cGVDb250ZXh0KToNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cg0KKyAgICAgICAgaWYgY3R4Lk51bWVyaWNTaXplT25lKCkgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KDQorICAgICAgICBpZiBj dHguTnVtZXJpY1NpemVUd28oKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LlZhclR5cGUg PSBFRklfSUZSX05VTUVSSUNfU0laRV8yDQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUZv dXIoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LlZhclR5cGUgPSBFRklfSUZSX05VTUVS SUNfU0laRV80DQoNCisgICAgICAgIGlmIGN0eC5OdW1lcmljU2l6ZUVpZ2h0KCkgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfOA0KDQor DQoNCisgICAgICAgIHJldHVybiBjdHguVmFyVHlwZQ0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZ2V0RXhwLg0KDQorICAg IGRlZiB2aXNpdEdldEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkdldEV4cENvbnRleHQp Og0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgPT0g MDoNCg0KKyAgICAgICAgICAgICMgc3VwcG9ydCBEYXRlL1RpbWUgcXVlc3Rpb24NCg0KKyAgICAg ICAgICAgIFZhcklkU3RyID0gY3R4LnZmclN0b3JhZ2VWYXJJZCgpLlZhcklkU3RyDQoNCisgICAg ICAgICAgICBRSWQsIE1hc2ssIFFUeXBlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLkdldFF1ZXN0 aW9uSWQoTm9uZSwgVmFySWRTdHIsIEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKQ0K DQorICAgICAgICAgICAgaWYgKFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRCkgb3IgKE1h c2sgPT0gMCkgb3IgKFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMKToN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9VTlNVUFBPUlRFRCwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUg ZW5vdWdoIHZhcnN0b3JlIGluZm9ybWF0aW9uIikNCg0KKyAgICAgICAgICAgIGlmIFFUeXBlID09 IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURToNCg0KKyAgICAgICAgICAgICAgICBjdHgu QmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9EQVRFDQoNCisgICAgICAgICAgICBlbGlm IFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRToNCg0KKyAgICAgICAgICAg ICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQoNCisNCg0KKyAg ICAgICAgICAgIGlmIE1hc2sgPT0gREFURV9ZRUFSX0JJVE1BU0s6DQoNCisgICAgICAgICAgICAg ICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCg0KKyAgICAgICAgICAgIGVsaWYgTWFzayA9 PSBEQVRFX0RBWV9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJP ZmZzZXQgPSAzDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0gVElNRV9IT1VSX0JJVE1BU0s6 DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCg0KKyAgICAg ICAgICAgIGVsaWYgTWFzayA9PSBUSU1FX01JTlVURV9CSVRNQVNLOg0KDQorICAgICAgICAgICAg ICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAxDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sg PT0gVElNRV9TRUNPTkRfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8u VmFyT2Zmc2V0ID0gMg0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwg TGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB0aGUgZW5vdWdoIHZhcnN0b3JlIGluZm9y bWF0aW9uIikNCg0KKw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgVmFyVHlwZSA9 IEVGSV9JRlJfVFlQRV9VTkRFRklORUQNCg0KKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgVmFyVHlwZSA9IGN0eC5udW1lcmljVmFyU3RvcmVU eXBlKCkuVmFyVHlwZQ0KDQorDQoNCisgICAgICAgICAgICBpZiAoZ0NWZnJEYXRhU3RvcmFnZS5H ZXRWYXJTdG9yZVR5cGUoY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQpID09IEVGSV9WRlJfVkFSU1RP UkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX05BTUUpIGFuZCAoVmFyVHlwZSA9PSBFRklfSUZSX1RZ UEVfVU5ERUZJTkVEKToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgTGluZSwgIkdldC9TZXQgb3Bjb2Rl IGRvbid0IHN1cHBvcnQgbmFtZSBzdHJpbmciKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBWYXJU eXBlICE9IEVGSV9JRlJfVFlQRV9VTkRFRklORUQ6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJh c2VJbmZvLlZhclR5cGUgPSBWYXJUeXBlDQoNCisgICAgICAgICAgICAgICAgU2l6ZSwgUmV0dXJu Q29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKGN0eC5C YXNlSW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo UmV0dXJuQ29kZSwgTGluZSwgIkdldC9TZXQgb3Bjb2RlIGNhbid0IGdldCB2YXIgdHlwZSBzaXpl IikNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gU2l6ZQ0K DQorDQoNCisgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURC LkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoY3R4LkJhc2VJbmZvLlZhclR5cGUpDQoNCisgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQvU2V0IG9w Y29kZSBjYW4ndCBnZXQgdmFyIHR5cGUgc2l6ZSIpDQoNCisNCg0KKyAgICAgICAgICAgIGlmIFNp emUgIT0gY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZToNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwgTGlu ZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgZGF0YSBhcnJheSIpDQoNCisNCg0KKyAg ICAgICAgY3R4LkdPYmogPSBDSWZyR2V0KExpbmUpDQoNCisgICAgICAgIHNlbGYuX19TYXZlT3BI ZHJDb25kKGN0eC5HT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAw KSwgTGluZSkNCg0KKyAgICAgICAgY3R4LkdPYmouU2V0VmFySW5mbyhjdHguQmFzZUluZm8pDQoN CisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJl dHVybiBjdHguR09iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbkNvbnN0YW50Lg0KDQorICAgIGRl ZiB2aXNpdFZmckV4cHJlc3Npb25Db25zdGFudChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlZm ckV4cHJlc3Npb25Db25zdGFudENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYg Y3R4LlRydWVTeW1ib2woKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgVE9iaiA9IENJZnJUcnVl KExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChUT2JqLkdldEhlYWRl cigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAg IGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5GYWxz ZVN5bWJvbCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBGT2JqID0gQ0lmckZhbHNlKExpbmUp DQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChGT2JqLkdldEhlYWRlcigpLCAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5F eHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5PbmUoKSAhPSBO b25lOg0KDQorICAgICAgICAgICAgT09iaiA9IENJZnJPbmUoTGluZSkNCg0KKyAgICAgICAgICAg IHNlbGYuX19TYXZlT3BIZHJDb25kKE9PYmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBP cENvdW50ID09IDApLCBMaW5lKQ0KDQorICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQoNCisNCg0KKyAgICAgICAgaWYgY3R4Lk9uZXMoKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgT09iaiA9IENJZnJPbmVzKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9w SGRyQ29uZChPT2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwg TGluZSkNCg0KKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoN CisgICAgICAgIGlmIGN0eC5aZXJvKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFpPYmogPSBD SWZyWmVybyhMaW5lKQ0KDQorICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoWk9iai5H ZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICBpZiBj dHguVW5kZWZpbmVkKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFVPYmogPSBDSWZyVW5kZWZp bmVkKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChVT2JqLkdldEhl YWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAg ICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorDQoNCisgICAgICAgIGlmIGN0eC5W ZXJzaW9uKCkgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIFZPYmogPSBDSWZyVmVyc2lvbihMaW5l KQ0KDQorICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoVk9iai5HZXRIZWFkZXIoKSwg KGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICBpZiBjdHguTnVtYmVyKCkg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIFU2NE9iaiA9IENJZnJVaW50NjQoTGluZSkNCg0KKyAg ICAgICAgICAgIFU2NE9iai5TZXRWYWx1ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkN Cg0KKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFU2NE9iai5HZXRIZWFkZXIoKSwg KGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoNCisgICAgICAgICAgICBjdHgu RXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4LkV4cElu Zm8NCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25VbmFyeU9wLg0KDQorICAgIGRlZiB2aXNpdFZmckV4 cHJlc3Npb25VbmFyeU9wKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblVu YXJ5T3BDb250ZXh0KToNCg0KKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNsZW5ndGhFeHAuDQoNCisgICAgZGVmIHZpc2l0TGVuZ3RoRXhwKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuTGVuZ3RoRXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAg ICAgICBjdHguTE9iaiA9IENJZnJMZW5ndGgoTGluZSkNCg0KKyAgICAgICAgY3R4LkV4cEluZm8u RXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHguTE9iag0KDQorDQoNCisgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2JpdHdpc2Vu b3RFeHAuDQoNCisgICAgZGVmIHZpc2l0Qml0d2lzZW5vdEV4cChzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLkJpdHdpc2Vub3RFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFy dC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0 eC5CV05PYmogPSBDSWZyQml0V2lzZU5vdChMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5CV05PYmoNCg0KKw0KDQorDQoN CisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3F1 ZXN0aW9uMjNyZWZFeHAuDQoNCisgICAgZGVmIHZpc2l0UXVlc3Rpb24yM3JlZkV4cChzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KToNCg0KKyAgICAgICAg TGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIFR5cGUgPSAweDENCg0KKyAgICAgICAg RGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5vbmU6DQoN CisgICAgICAgICAgICBUeXBlID0gMHgyDQoNCisgICAgICAgICAgICBEZXZpY2VQYXRoID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKw0KDQorICAgICAgICBpZiBjdHguVXVpZCgp ICE9IE5vbmU6DQoNCisgICAgICAgICAgICBUeXBlID0gMHgzDQoNCisNCg0KKyAgICAgICAgaWYg VHlwZSA9PSAweDE6DQoNCisgICAgICAgICAgICBRUjJPYmogPSBDSWZyUXVlc3Rpb25SZWYyKExp bmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjJPYmouR2V0SGVhZGVy KCksIChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KDQorDQoNCisgICAgICAg IGlmIFR5cGUgPT0gMHgyOg0KDQorICAgICAgICAgICAgUVIzXzJPYmogPSBDSWZyUXVlc3Rpb25S ZWYzXzIoTGluZSkNCg0KKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFSM18yT2Jq LkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAg ICAgICAgICAgIFFSM18yT2JqLlNldERldmljZVBhdGgoRGV2aWNlUGF0aCkNCg0KKw0KDQorICAg ICAgICBpZiBUeXBlID09IDB4MzoNCg0KKyAgICAgICAgICAgIFFSM18zT2JqID0gQ0lmclF1ZXN0 aW9uUmVmM18zKExpbmUpDQoNCisgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjNf M09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQoN CisgICAgICAgICAgICBRUjNfM09iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQoNCisgICAg ICAgICAgICBRUjNfM09iai5TZXRHdWlkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQoNCisN Cg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisNCg0KKw0KDQorICAg ICAgICByZXR1cm4gY3R4LkV4cEluZm8NCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3N0cmluZ3JlZjJFeHAuDQoNCisgICAg ZGVmIHZpc2l0U3RyaW5ncmVmMkV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlN0cmluZ3Jl ZjJFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAg ICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0eC5TUjJPYmogPSBDSWZy U3RyaW5nUmVmMihMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDEN Cg0KKyAgICAgICAgcmV0dXJuIGN0eC5TUjJPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBh IHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvYm9vbEV4cC4NCg0KKyAg ICBkZWYgdmlzaXRUb2Jvb2xFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub2Jvb2xFeHBD b250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQoNCisgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0eC5UQk9iaiA9IENJZnJUb0Jvb2xl YW4oTGluZSkNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAg ICAgIHJldHVybiBjdHguVEJPYmoNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b3N0cmluZ0V4cC4NCg0KKyAgICBkZWYgdmlzaXRU b3N0cmluZ0V4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dCk6 DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFNPYmogPSBDSWZyVG9TdHJpbmcoTGluZSkN Cg0KKyAgICAgICAgRm10ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCg0KKyAgICAg ICAgY3R4LlRTT2JqLlNldEZvcm1hdChGbXQpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9w Q291bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQoNCisNCg0KKw0KDQorICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN1bmludEV4 cC4NCg0KKyAgICBkZWYgdmlzaXRVbmludEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlVu aW50RXhwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFVPYmogPSBDSWZy VG9VaW50KExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQor ICAgICAgICByZXR1cm4gY3R4LlRVT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN0b3VwcGVyRXhwLg0KDQorICAgIGRl ZiB2aXNpdFRvdXBwZXJFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub3VwcGVyRXhwQ29u dGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQorICAgICAgICBzZWxm LnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguVFVPYmogPSBDSWZyVG9VcHBlcihM aW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCg0KKyAgICAgICAg cmV0dXJuIGN0eC5UVU9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9sd2VyRXhwLg0KDQorICAgIGRlZiB2aXNpdFRv bHdlckV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvbHdlckV4cENvbnRleHQpOg0KDQor ICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlRMT2JqID0gQ0lmclRvTG93ZXIoTGluZSkNCg0KKyAg ICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHgu VExPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3NldEV4cC4NCg0KKyAgICBkZWYgdmlzaXRTZXRFeHAoc2VsZiwgY3R4 OlZmclN5bnRheFBhcnNlci5TZXRFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAg IGlmIGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkID09IDA6DQoNCisgICAgICAgICAgICAjIHN1cHBv cnQgRGF0ZS9UaW1lIHF1ZXN0aW9uDQoNCisgICAgICAgICAgICBWYXJJZFN0ciA9IGN0eC52ZnJT dG9yYWdlVmFySWQoKS5WYXJJZFN0cg0KDQorICAgICAgICAgICAgUUlkLCBNYXNrLCBRVHlwZSA9 IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZhcklkU3RyLCBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTCkNCg0KKyAgICAgICAgICAgIGlmIChRSWQgPT0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9yIChRVHlwZSA9PSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTCk6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIExpbmUs ICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlv biIpDQoNCisgICAgICAgICAgICBpZiBRVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9O X0RBVEU6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZS X1RZUEVfREFURQ0KDQorICAgICAgICAgICAgZWxpZiBRVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBF LlFVRVNUSU9OX1RJTUU6DQoNCisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUg PSBFRklfSUZSX1RZUEVfVElNRQ0KDQorDQoNCisgICAgICAgICAgICBpZiBNYXNrID09IERBVEVf WUVBUl9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQg PSAwDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCg0KKyAg ICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0ID0gMw0KDQorICAgICAgICAgICAg ZWxpZiBNYXNrID09IFRJTUVfSE9VUl9CSVRNQVNLOg0KDQorICAgICAgICAgICAgICAgIGN0eC5C YXNlSW5mby5WYXJPZmZzZXQgPSAwDQoNCisgICAgICAgICAgICBlbGlmIE1hc2sgPT0gVElNRV9N SU5VVEVfQklUTUFTSzoNCg0KKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyT2Zmc2V0 ID0gMQ0KDQorICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6DQoN CisgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDINCg0KKyAgICAgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29kZSBjYW4n dCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIpDQoNCisNCg0KKyAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgIFZhclR5cGUgPSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEDQoN CisgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAg IFZhclR5cGUgPSBjdHgubnVtZXJpY1ZhclN0b3JlVHlwZSgpLlZhclR5cGUNCg0KKw0KDQorICAg ICAgICAgICAgaWYgKGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKGN0eC5CYXNlSW5m by5WYXJTdG9yZUlkKSA9PSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9O QU1FKSBhbmQgKFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX1VOREVGSU5FRCk6DQoNCisgICAgICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5T VVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29kZSBkb24ndCBzdXBwb3J0IG5hbWUgc3RyaW5n IikNCg0KKw0KDQorICAgICAgICAgICAgaWYgVmFyVHlwZSAhPSBFRklfSUZSX1RZUEVfVU5ERUZJ TkVEOg0KDQorICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJUeXBlID0gVmFyVHlwZQ0K DQorICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIu R2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFyVHlwZSkNCg0KKyAgICAg ICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUsICJHZXQvU2V0 IG9wY29kZSBjYW4ndCBnZXQgdmFyIHR5cGUgc2l6ZSIpDQoNCisgICAgICAgICAgICAgICAgY3R4 LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCg0KKw0KDQorICAgICAgICAgICAgU2l6ZSwg UmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBl KGN0eC5CYXNlSW5mby5WYXJUeXBlKQ0KDQorICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihSZXR1cm5Db2RlLCBMaW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0IHZhciB0eXBlIHNp emUiKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBTaXplICE9IGN0eC5CYXNlSW5mby5WYXJUb3Rh bFNpemU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsIExpbmUsICJHZXQvU2V0IG9wY29kZSBkb24ndCBz dXBwb3J0IGRhdGEgYXJyYXkiKQ0KDQorDQoNCisgICAgICAgIGN0eC5UU09iaiA9IENJZnJTZXQo TGluZSkNCg0KKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoY3R4LlRTT2JqLkdldEhlYWRl cigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCg0KKyAgICAgICAgY3R4 LlRTT2JqLlNldFZhckluZm8oY3R4LkJhc2VJbmZvKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCg0KKw0KDQorICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQoNCisNCg0K Kw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciN2ZnJFeHByZXNzaW9uVGVybmFyeU9wLg0KDQorICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25U ZXJuYXJ5T3Aoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uVGVybmFyeU9w Q29udGV4dCk6DQoNCisgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQor DQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjY29uZGl0aW9uYWxFeHAuDQoNCisgICAgZGVmIHZpc2l0Q29uZGl0aW9uYWxFeHAoc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5Db25kaXRpb25hbEV4cENvbnRleHQpOg0KDQorICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0 eCkNCg0KKyAgICAgICAgY3R4LkNPYmogPSBDSWZyQ29uZGl0aW9uYWwoTGluZSkNCg0KKyAgICAg ICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHguQ09i ag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjZmluZEV4cC4NCg0KKyAgICBkZWYgdmlzaXRGaW5kRXhwKHNlbGYsIGN0eDpW ZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4LnN0 YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAg Rk9iaiA9IENJZnJGaW5kKExpbmUpDQoNCisgICAgICAgIEZvcm1hdCA9IDANCg0KKyAgICAgICAg Zm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5maW5kRm9ybWF0KCkpKToNCg0KKyAgICAgICAgICAg IEZvcm1hdCA9IGN0eC5maW5kRm9ybWF0KGkpLkZvcm1hdA0KDQorDQoNCisgICAgICAgIEZPYmou U2V0Rm9ybWF0KEZvcm1hdCkNCg0KKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQoNCisgICAgICAgIHJldHVybiBGT2JqDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNmaW5kRm9ybWF0Lg0KDQorICAgIGRl ZiB2aXNpdEZpbmRGb3JtYXQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5GaW5kRm9ybWF0Q29u dGV4dCk6DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGlm IGN0eC5TZW5zaXRpdmUoKSAhPSBOb25lOg0KDQorICAgICAgICAgICAgY3R4LkZvcm1hdCA9IDB4 MDANCg0KKyAgICAgICAgZWxpZiBjdHguSW5zZW5zaXRpdmUoKSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgY3R4LkZvcm1hdCA9IDB4MDENCg0KKyAgICAgICAgcmV0dXJuIGN0eC5Gb3JtYXQNCg0K Kw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI21pZEV4cC4NCg0KKyAgICBkZWYgdmlzaXRNaWRFeHAoc2VsZiwgY3R4OlZmclN5bnRh eFBhcnNlci5NaWRFeHBDb250ZXh0KToNCg0KKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQoNCisgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQoNCisgICAgICAgIGN0eC5NT2Jq ID0gQ0lmck1pZChMaW5lKQ0KDQorICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDEN Cg0KKyAgICAgICAgcmV0dXJuIGN0eC5NT2JqDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG9rZW5FeHAuDQoNCisgICAgZGVmIHZp c2l0VG9rZW5FeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRleHQpOg0K DQorICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCg0KKyAgICAgICAgY3R4LlRPYmogPSBDSWZyVG9rZW4oTGluZSkNCg0KKyAg ICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQoNCisgICAgICAgIHJldHVybiBjdHgu VE9iag0KDQorDQoNCisNCg0KKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjc3BhbkV4cC4NCg0KKyAgICBkZWYgdmlzaXRTcGFuRXhwKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuU3BhbkV4cENvbnRleHQpOg0KDQorICAgICAgICBMaW5lID0gY3R4 LnN0YXJ0LmxpbmUNCg0KKyAgICAgICAgRmxhZ3MgPSAwDQoNCisgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQoNCisgICAgICAgIGZvciBGbGFnc0N0eCBpbiBjdHguc3BhbkZsYWdzKCk6 DQoNCisgICAgICAgICAgICBGbGFncyB8PSBGbGFnc0N0eC5GbGFnDQoNCisgICAgICAgIGN0eC5T T2JqID0gQ0lmclNwYW4oTGluZSkNCg0KKyAgICAgICAgY3R4LlNPYmouU2V0RmxhZ3MoRmxhZ3Mp DQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KDQorICAgICAgICByZXR1 cm4gY3R4LlNPYmoNCg0KKw0KDQorDQoNCisgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3NwYW5GbGFncy4NCg0KKyAgICBkZWYgdmlzaXRTcGFuRmxh Z3Moc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0KToNCg0KKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCg0KKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKCkpDQoNCisgICAgICAgIGVsaWYgY3R4Lkxhc3ROb25NYXRjaCgpICE9IE5vbmU6DQoNCisg ICAgICAgICAgICBjdHguRmxhZyA9IDB4MDANCg0KKyAgICAgICAgZWxpZiBjdHguRmlyc3ROb25N YXRjaCgpICE9IE5vbmU6DQoNCisgICAgICAgICAgICBjdHguRmxhZyA9IDB4MDENCg0KKyAgICAg ICAgcmV0dXJuIGN0eC5GbGFnDQoNCisNCg0KKw0KDQorICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uTWFwLg0KDQorICAgIGRl ZiB2aXNpdFZmckV4cHJlc3Npb25NYXAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHBy ZXNzaW9uTWFwQ29udGV4dCk6DQoNCisgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KDQor ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KDQorICAgICAgICBjdHguTU9iaiA9IENJ ZnJNYXAoTGluZSkNCg0KKyAgICAgICAgRU9iaiA9IENJZnJFbmQoKQ0KDQorICAgICAgICBMaW5l ID0gKE5vbmUgaWYgY3R4LnN0b3AgaXMgTm9uZSBlbHNlIGN0eC5zdG9wKS5saW5lDQoNCisgICAg ICAgIEVPYmouU2V0TGluZU5vKExpbmUpDQoNCisgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291 bnQgKz0gMQ0KDQorICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCg0KKw0KDQorICAgIGRlZiBfX0dl dFRleHQoc2VsZiwgY3R4KToNCg0KKyAgICAgICAgaWYgY3R4ID09IE5vbmU6DQoNCisgICAgICAg ICAgICByZXR1cm4gTm9uZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJu IGN0eC50ZXh0DQoNCisNCg0KKyAgICBkZWYgX19UcmFuc0lkKHNlbGYsIFN0cmluZ0lkZW50aWZp ZXJUb2tlbiwgRGVmYXVsdFZhbHVlPU5vbmUpOg0KDQorICAgICAgICBpZiBTdHJpbmdJZGVudGlm aWVyVG9rZW4gPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCg0K KyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBzdHIoU3RyaW5nSWRlbnRpZmll clRva2VuKQ0KDQorDQoNCisgICAgZGVmIF9fVHJhbnNOdW0oc2VsZiwgTnVtYmVyVG9rZW4sIERl ZmF1bHRWYWx1ZT0wKToNCg0KKyAgICAgICAgaWYgTnVtYmVyVG9rZW4gPT0gTm9uZToNCg0KKyAg ICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAg ICAgICAgIFN0clRva2VuID0gc3RyKE51bWJlclRva2VuKQ0KDQorICAgICAgICAgICAgaWYgJzB4 JyBpbiBTdHJUb2tlbjoNCg0KKyAgICAgICAgICAgICAgICBOdW1iZXJUb2tlbiA9IGludChTdHJU b2tlbiwgMCkNCg0KKyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgTnVtYmVy VG9rZW4gPSBpbnQoU3RyVG9rZW4pDQoNCisgICAgICAgICMgZXJyb3IgaGFuZGxlICwgdmFsdWUg aXMgdG9vIGxhcmdlIHRvIHN0b3JlDQoNCisgICAgICAgIHJldHVybiBOdW1iZXJUb2tlbg0KDQor DQoNCisgICAgZGVmIF9fQXNzaWduUXVlc3Rpb25LZXkoc2VsZiwgT3BPYmosIEtleSk6DQoNCisN Cg0KKyAgICAgICAgaWYgS2V5ID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKyAg ICAgICAgaWYgT3BPYmouR2V0RmxhZ3MoKSAmIEVGSV9JRlJfRkxBR19DQUxMQkFDSzoNCg0KKyAg ICAgICAgICAgICMgaWYgdGhlIHF1ZXN0aW9uIGlzIG5vdCBDQUxMQkFDSyBpZ25vcmUgdGhlIGtl eS4NCg0KKyAgICAgICAgICAgIHNlbGYuX19DVmZyUXVlc3Rpb25EQi5VcGRhdGVRdWVzdGlvbklk KE9wT2JqLkdldFF1ZXN0aW9uSWQoKSwgS2V5KQ0KDQorICAgICAgICAgICAgT3BPYmouU2V0UXVl c3Rpb25JZChLZXkpDQoNCisgICAgICAgIHJldHVybg0KDQorDQoNCisgICAgZGVmIF9fRXh0cmFj dE9yaWdpbmFsVGV4dChzZWxmLCBjdHgpOg0KDQorICAgICAgICBTb3VyY2UgPSBjdHguc3RhcnQu Z2V0VG9rZW5Tb3VyY2UoKQ0KDQorICAgICAgICBJbnB1dFN0cmVhbSA9IFNvdXJjZS5pbnB1dFN0 cmVhbQ0KDQorICAgICAgICBzdGFydCwgc3RvcCAgPSBjdHguc3RhcnQuc3RhcnQsIGN0eC5zdG9w LnN0b3ANCg0KKyAgICAgICAgVGV4dCA9IElucHV0U3RyZWFtLmdldFRleHQoc3RhcnQsIHN0b3Ap DQoNCisgICAgICAgIHJldHVybiBUZXh0LnJlcGxhY2UoJ1xuJywgJycpDQoNCisNCg0KKyAgICBk ZWYgX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShzZWxmLCBEZWZhdWx0SWQsIExpbmUsIFRv a2VuVmFsdWUpOg0KDQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oc2VsZi5fX1VzZWRE ZWZhdWx0QXJyYXkpKToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19Vc2VkRGVmYXVsdEFycmF5 W2ldID09IERlZmF1bHRJZDoNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhh bmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfREVGQVVMVF9WQUxV RV9SRURFRklORUQsIExpbmUsIFRva2VuVmFsdWUpDQoNCisNCg0KKyAgICAgICAgaWYgbGVuKHNl bGYuX19Vc2VkRGVmYXVsdEFycmF5KSA+PSBFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgLSAxOg0K DQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5IYW5kbGVFcnJvcihWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsIExpbmUsIFRva2VuVmFsdWUpDQoNCisNCg0KKyAgICAg ICAgc2VsZi5fX1VzZWREZWZhdWx0QXJyYXkuYXBwZW5kKERlZmF1bHRJZCkNCg0KKw0KDQorICAg IGRlZiBfX0Vycm9ySGFuZGxlcihzZWxmLCBSZXR1cm5Db2RlLCBMaW5lTnVtLCBUb2tlblZhbHVl PU5vbmUpOg0KDQorICAgICAgICBzZWxmLl9fUGFyc2VyU3RhdHVzICs9IGdDVmZyRXJyb3JIYW5k bGUuSGFuZGxlRXJyb3IoUmV0dXJuQ29kZSwgTGluZU51bSwgVG9rZW5WYWx1ZSkNCg0KKw0KDQor ICAgIGRlZiBfX0NvbXBhcmVFcnJvckhhbmRsZXIoc2VsZiwgUmV0dXJuQ29kZSwgRXhwZWN0ZWRD b2RlLCBMaW5lTnVtLCBUb2tlblZhbHVlPU5vbmUsIEVycm9yTXNnPU5vbmUpOg0KDQorICAgICAg ICBpZiBSZXR1cm5Db2RlICE9IEV4cGVjdGVkQ29kZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19Q YXJzZXJTdGF0dXMgKz0gMQ0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5QcmludE1z ZyhMaW5lTnVtLCAnRXJyb3InLCBFcnJvck1zZywgVG9rZW5WYWx1ZSkNCg0KKw0KDQorICAgIGRl ZiBfX0luc2VydENoaWxkKHNlbGYsIFBhcmVudE5vZGU6IFZmclRyZWVOb2RlLCBDaGlsZEN0eCk6 DQoNCisgICAgICAgIGlmIENoaWxkQ3R4ICE9IE5vbmUgYW5kIENoaWxkQ3R4Lk5vZGUgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgIFBhcmVudE5vZGUuaW5zZXJ0Q2hpbGQoQ2hpbGRDdHguTm9kZSkN Cg0KKw0KDQorICAgIGRlZiBHZXRSb290KHNlbGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5f X1Jvb3QNCg0KKw0KDQorICAgIGRlZiBHZXRRdWVzdGlvbkRCKHNlbGYpOg0KDQorICAgICAgICBy ZXR1cm4gc2VsZi5fX0NWZnJRdWVzdGlvbkRCDQoNCisNCg0KKyAgICBkZWYgRHVtcEpzb24oc2Vs ZiwgRmlsZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICB3aXRoIG9wZW4o RmlsZU5hbWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCd7XG4nKQ0K DQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJEYXRhU3RydWN0XCIgOiB7XG4nKQ0KDQor ICAgICAgICAgICAgICAgIHBOb2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlTGlz dCgpDQoNCisgICAgICAgICAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgIFwie31cIiA6IFtcbicuZm9ybWF0KHN0cihwTm9kZS5U eXBlTmFtZSkpKQ0KDQorICAgICAgICAgICAgICAgICAgICBGTm9kZSA9IHBOb2RlLk1lbWJlcnMN Cg0KKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgRk5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHtcbicpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiTmFtZVwiOiBcInt9XCIsXG4nLmZvcm1hdChzdHIo Rk5vZGUuRmllbGROYW1lKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBGTm9kZS5B cnJheU51bSA+IDA6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICBcIlR5cGVcIjogXCJ7fVt7fV1cIixcbicuZm9ybWF0KHN0cihGTm9kZS5GaWVsZFR5cGUu VHlwZU5hbWUpLHN0cihGTm9kZS5BcnJheU51bSkpKQ0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg IFwiVHlwZVwiOiBcInt9XCIsXG4nLmZvcm1hdChzdHIoRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1l KSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiT2Zmc2V0 XCI6IHt9XG4nLmZvcm1hdChzdHIoRk5vZGUuT2Zmc2V0KSkpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBGTm9kZS5OZXh0ID09IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfSwgXG4n KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQoNCisgICAg ICAgICAgICAgICAgICAgIGlmIHBOb2RlLk5leHQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICBdXG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIF0sXG4nKQ0KDQorICAg ICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJEYXRhU3Ry dWN0QXR0cmlidXRlXCI6IHtcbicpDQoNCisgICAgICAgICAgICAgICAgcE5vZGUgPSBnQ1ZmclZh ckRhdGFUeXBlREIuR2V0RGF0YVR5cGVMaXN0KCkNCg0KKyAgICAgICAgICAgICAgICB3aGlsZSBw Tm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgXCJ7fVwi Jy5mb3JtYXQoc3RyKHBOb2RlLlR5cGVOYW1lKSkgKyAnOiB7XG4nKQ0KDQorICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiQWxpZ25tZW50XCI6IHt9LFxuJy5mb3JtYXQoc3Ry KHBOb2RlLkFsaWduKSkpDQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg XCJUb3RhbFNpemVcIjoge31cbicuZm9ybWF0KHN0cihwTm9kZS5Ub3RhbFNpemUpKSkNCg0KKyAg ICAgICAgICAgICAgICAgICAgaWYgcE5vZGUuTmV4dCA9PSBOb25lOg0KDQorICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCg0KKyAgICAgICAgICAgICAgICAgICAg ZWxzZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0sXG4nKQ0K DQorICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXCJW YXJEZWZpbmVcIiA6IHtcbicpDQoNCisgICAgICAgICAgICAgICAgcFZzTm9kZSA9IGdDVmZyRGF0 YVN0b3JhZ2UuR2V0QnVmZmVyVmFyU3RvcmVMaXN0KCkNCg0KKyAgICAgICAgICAgICAgICB3aGls ZSBwVnNOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBc Int9XCInLmZvcm1hdChzdHIocFZzTm9kZS5WYXJTdG9yZU5hbWUpKSArICc6IHtcbicpDQoNCisg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJUeXBlXCI6IFwie31cIixcbicu Zm9ybWF0KHN0cihwVnNOb2RlLkRhdGFUeXBlLlR5cGVOYW1lKSkpDQoNCisgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJBdHRyaWJ1dGVzXCI6IHt9LFxuJy5mb3JtYXQoc3Ry KHBWc05vZGUuQXR0cmlidXRlcykpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgIFwiVmFyU3RvcmVJZFwiOiB7fSxcbicuZm9ybWF0KHN0cihwVnNOb2RlLlZhclN0b3Jl SWQpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZlbmRvckd1 aWRcIjogJyArICdcInt9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0 YTEpLCcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGEyKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0 YTMpKSBcDQoNCisgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9 LCB7fSwge30sIHt9LCB7fScuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzBdKSwg JzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0pLCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRh NFsyXSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAg ICAgICAgICAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs0XSksICcweCV4JyUocFZzTm9kZS5H dWlkLkRhdGE0WzVdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNl0pLCAnMHgleCclKHBW c05vZGUuR3VpZC5EYXRhNFs3XSkpICsgJyB9fVwiXG4nKQ0KDQorICAgICAgICAgICAgICAgICAg ICBpZiBwVnNOb2RlLk5leHQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgIH1cbicpDQoNCisgICAgICAgICAgICAgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB9LFxuJykNCg0KKw0KDQorICAgICAg ICAgICAgICAgICAgICBwVnNOb2RlID0gcFZzTm9kZS5OZXh0DQoNCisgICAgICAgICAgICAgICAg Zi53cml0ZSgnICB9LFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFwiRGF0YVwi IDogW1xuJykNCg0KKyAgICAgICAgICAgICAgICBwVnNOb2RlID0gZ0NWZnJCdWZmZXJDb25maWcu R2V0VmFySXRlbUxpc3QoKQ0KDQorICAgICAgICAgICAgICAgIHdoaWxlIHBWc05vZGUgIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgcFZzTm9kZS5JZCA9PSBOb25lOg0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgcFZzTm9kZSA9IHBWc05vZGUuTmV4dA0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWUNCg0KKyAgICAgICAgICAgICAgICAgICAgcEluZm9Ob2Rl ID0gcFZzTm9kZS5JbmZvU3RyTGlzdA0KDQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBwSW5m b05vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg IHtcbicpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmVu ZG9yR3VpZFwiOiAnICsgJ1wie30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCclKHBWc05vZGUuR3Vp ZC5EYXRhMSksJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTIpLCAnMHgleCclKHBWc05vZGUuR3Vp ZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7 fSwge30sIHt9LCB7fSwge30sIHt9LCB7fScuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5HdWlkLkRh dGE0WzBdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0pLCAnMHgleCclKHBWc05vZGUu R3VpZC5EYXRhNFsyXSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzNdKSwgXA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNF0pLCAnMHgl eCclKHBWc05vZGUuR3VpZC5EYXRhNFs1XSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzZd KSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbN10pKSArICcgfX1cIixcbicpDQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFyTmFtZVwiOiBcInt9XCIs XG4nLmZvcm1hdChzdHIocFZzTm9kZS5OYW1lKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgIFwiRGVmYXVsdFN0b3JlXCI6IFwie31cIixcbicuZm9ybWF0KHN0 cihwVnNOb2RlLklkKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgIFwiU2l6ZVwiOiBcInt9XCIsXG4nLmZvcm1hdChzdHIocEluZm9Ob2RlLldpZHRoKSkpDQoN CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiT2Zmc2V0XCI6IHt9 LFxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5PZmZzZXQpKSkNCg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICNmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fVwiXG4nLmZvcm1hdChzdHIo cEluZm9Ob2RlLlZhbHVlKSkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwSW5mb05v ZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfREFURToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fS97fS97fVwiXG4nLmZvcm1hdChw SW5mb05vZGUuVmFsdWUuZGF0ZS5ZZWFyLCBwSW5mb05vZGUuVmFsdWUuZGF0ZS5Nb250aCwgcElu Zm9Ob2RlLlZhbHVlLmRhdGUuRGF5KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBJ bmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9USU1FOg0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcInt9Ont9Ont9XCJcbicuZm9y bWF0KHBJbmZvTm9kZS5WYWx1ZS50aW1lLkhvdXIsIHBJbmZvTm9kZS5WYWx1ZS50aW1lLk1pbnV0 ZSwgcEluZm9Ob2RlLlZhbHVlLnRpbWUuU2Vjb25kKSkNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie307e307Jy5m b3JtYXQocEluZm9Ob2RlLlZhbHVlLnJlZi5RdWVzdGlvbklkLCBwSW5mb05vZGUuVmFsdWUucmVm LkZvcm1JZCkgKyAgJ3snICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShwSW5mb05vZGUu VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGExKSwnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYu Rm9ybVNldEd1aWQuRGF0YTIpLCAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9ybVNldEd1 aWQuRGF0YTMpKSBcDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAn e30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShwSW5mb05vZGUu VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShwSW5mb05vZGUuVmFsdWUu cmVmLkZvcm1TZXRHdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZv cm1TZXRHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRH dWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcweCV4JyUo cEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs0XSksICcweCV4JyUocEluZm9O b2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs1XSksICcweCV4JyUocEluZm9Ob2RlLlZh bHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs2XSksICcweCV4JyUocEluZm9Ob2RlLlZhbHVlLnJl Zi5Gb3JtU2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9fScgKyAnO3t9XG4nLmZvcm1hdChwSW5mb05v ZGUuVmFsdWUucmVmLkRldmljZVBhdGgpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg cEluZm9Ob2RlLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fVwiXG4nLmZvcm1h dChwSW5mb05vZGUuVmFsdWUuc3RyaW5nKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcInt9XCJcbicu Zm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS51OCkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBp ZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie31cIlxu Jy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUxNikpDQoNCisgICAgICAgICAgICAgICAgICAgICAg ICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie31c IlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUzMikpDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwi e31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnU2NCkpDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7 fVwiXG4nLmZvcm1hdChwSW5mb05vZGUuVmFsdWUuYikpDQoNCisNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIH0sXG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICAg ICAgcEluZm9Ob2RlID0gcEluZm9Ob2RlLk5leHQNCg0KKyAgICAgICAgICAgICAgICAgICAgcFZz Tm9kZSA9IHBWc05vZGUuTmV4dA0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHtc bicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZlbmRvckd1aWRcIjog XCJOQVwiLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFyTmFt ZVwiOiBcIk5BXCIsXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJE ZWZhdWx0U3RvcmVcIjogXCJOQVwiLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgIFwiU2l6ZVwiOiAwLFxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgIFwiT2Zmc2V0XCI6IDAsXG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgXCJWYWx1ZVwiOiBcIjB4MDBcIlxuJykNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICB9XG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgXVxuJykNCg0KKyAgICAg ICAgICAgICAgICBmLndyaXRlKCd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBmLmNsb3NlKCkN Cg0KKyAgICAgICAgZXhjZXB0Og0KDQorICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCJWZnJD b21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCAiRmlsZSBvcGVuIGZhaWxlZCBmb3IgJXMiICUg RmlsZU5hbWUsIE5vbmUpDQoNCisNCg0KKyAgICBkZWYgRHVtcFlhbWwoc2VsZiwgUm9vdCwgRmls ZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICB3aXRoIG9wZW4oRmlsZU5h bWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcjIyBETyBOT1QgUkVN T1ZFIC0tIFZGUiBNb2RlXG4nKQ0KDQorICAgICAgICAgICAgICAgIHNlbGYuRHVtcFlhbWxEZnMo Um9vdCwgZikNCg0KKyAgICAgICAgICAgIGYuY2xvc2UoKQ0KDQorICAgICAgICBleGNlcHQ6DQoN CisgICAgICAgICAgICBFZGtMb2dnZXIuZXJyb3IoIlZmckNvbXBpbGVyIiwgRklMRV9PUEVOX0ZB SUxVUkUsICJGaWxlIG9wZW4gZmFpbGVkIGZvciAlcyIgJSBGaWxlTmFtZSwgTm9uZSkNCg0KKw0K DQorICAgIGRlZiBEdW1wWWFtbERmcyhzZWxmLCBSb290LCBmKToNCg0KKw0KDQorICAgICAgICBp ZiBSb290Lk9wQ29kZSAhPSBOb25lOg0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29k ZSA9PSBFRklfSUZSX0ZPUk1fU0VUX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290 LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnRm9ybXNldDpcbicp DQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICBHdWlkOiAgeycgKyAne30sIHt9LCB7fSwn LmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1aWQuRGF0YTIp LCAnMHgleCclKEluZm8uR3VpZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgKyAn IHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQoNCisg ICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgVGl0bGU6ICB7fSAgIyBUaXRsZSBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uRm9ybVNl dFRpdGxlKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIEhlbHA6ICB7fSAgIyBIZWxw IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5IZWxwKSkNCg0KKyAgICAgICAgICAgICAgICBmb3Ig R3VpZCBpbiBSb290LkRhdGEuR2V0Q2xhc3NHdWlkKCk6DQoNCisgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgQ2xhc3NHdWlkOiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCcl KEd1aWQuRGF0YTEpLCcweCV4JyUoR3VpZC5EYXRhMiksICcweCV4JyUoR3VpZC5EYXRhMykpIFwN Cg0KKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7 fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShHdWlkLkRhdGE0WzBdKSwgJzB4JXgnJShHdWlkLkRh dGE0WzFdKSwgJzB4JXgnJShHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShHdWlkLkRhdGE0WzNdKSwg XA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgleCclKEd1aWQuRGF0YTRbNF0pLCAnMHgleCcl KEd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEd1aWQuRGF0YTRbNl0pLCAnMHgleCclKEd1aWQuRGF0 YTRbN10pKSArICcgfX1cbicpDQoNCisNCg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfVkFSU1RPUkVfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0 YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIC0gdmFyc3RvcmU6XG4n KQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIHZhcmlkOiAge31cbicuZm9ybWF0 KEluZm8uVmFyU3RvcmVJZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgbmFt ZTogIHt9XG4nLmZvcm1hdChJbmZvLk5hbWUpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIHNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5TaXplKSkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICBndWlkOiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCcl KEluZm8uR3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLkd1aWQuRGF0YTIpLCAnMHgleCclKEluZm8u R3VpZC5EYXRhMykpIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9 LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRb MF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0 WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAgICAgICAg ICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRb NV0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0 WzddKSkgKyAnIH19XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBF RklfSUZSX1ZBUlNUT1JFX0VGSV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5E YXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgLSBlZml2YXJzdG9y ZTpcbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7fVxuJy5m b3JtYXQoSW5mby5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICBuYW1lOiAge31cbicuZm9ybWF0KEluZm8uTmFtZSkpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgc2l6ZTogIHt9XG4nLmZvcm1hdChJbmZvLlNpemUpKQ0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgIGd1aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcw eCV4JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksICcweCV4JyUo SW5mby5HdWlkLkRhdGEzKSkgXA0KDQorICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7 fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5E YXRhNFswXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZvLkd1aWQu RGF0YTRbMl0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFszXSksIFwNCg0KKyAgICAgICAgICAg ICAgICAgICAgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uR3VpZC5E YXRhNFs1XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZvLkd1aWQu RGF0YTRbN10pKSArICcgfX1cbicpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg YXR0cmlidXRlOiAge31cbicuZm9ybWF0KEluZm8uQXR0cmlidXRlcykpDQoNCisNCg0KKyAgICAg ICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRV9PUDoN Cg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgLSBuYW1ldmFsdWV2YXJzdG9yZTpcbicpDQoNCisgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5WYXJTdG9y ZUlkKSkNCg0KKyAgICAgICAgICAgICAgICAjIGYud3JpdGUoJyAgICAgIG5hbWU6ICB7fVxuJy5m b3JtYXQoSW5mby5OYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICBndWlk OiAgeycgKyAne30sIHt9LCB7fSwnLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhMSksJzB4 JXgnJShJbmZvLkd1aWQuRGF0YTIpLCAnMHgleCclKEluZm8uR3VpZC5EYXRhMykpIFwNCg0KKyAg ICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30s IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3Vp ZC5EYXRhNFsxXSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1 aWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5HdWlk LkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEluZm8uR3Vp ZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQor DQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1fT1A6DQoNCisg ICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgIC0gZm9ybTpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5D b25kaXRpb24gIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICBGb3JtSWQ6ICB7fSAgIyBGb3JtSWQgU1RSSU5HX0lEXG4nLmZv cm1hdChJbmZvLkZvcm1JZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgRm9y bVRpdGxlOiAge30gICMgRm9ybVRpdGxlIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5Gb3JtVGl0 bGUpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0ZPUk1f TUFQX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8sIE1ldGhvZE1hcExpc3QgPSBSb290LkRh dGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIGZvcm1tYXA6XG4n KQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChS b290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgRm9ybUlk OiAge30gICMgRm9ybUlkIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KDQorICAg ICAgICAgICAgICAgIGZvciBNZXRob2RNYXAgaW4gIE1ldGhvZE1hcExpc3Q6DQoNCisgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIG1hcHRpdGxlOiAge31cbicuZm9ybWF0KE1ldGhv ZE1hcC5NZXRob2RUaXRsZSkpDQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg IG1hcGd1aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoTWV0aG9kTWFwLk1l dGhvZElkZW50aWZpZXIuRGF0YTEpLCcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIu RGF0YTIpLCAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGEzKSkgXA0KDQor ICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7 fSwge30nLmZvcm1hdCgnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzBd KSwgJzB4JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFsxXSksICcweCV4JyUo TWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTRbMl0pLCAnMHgleCclKE1ldGhvZE1hcC5N ZXRob2RJZGVudGlmaWVyLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgl eCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzRdKSwgJzB4JXgnJShNZXRob2RN YXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFs1XSksICcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElk ZW50aWZpZXIuRGF0YTRbNl0pLCAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRh dGE0WzddKSkgKyAnIH19XG4nKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9 PSBFRklfSUZSX0lNQUdFX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEu R2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBpbWFnZTpcbicp DQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1h dChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAg IElkOiAge30gIyBJbWFnZUlkXG4nLmZvcm1hdChJbmZvLklkKSkNCg0KKw0KDQorICAgICAgICAg ICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SVUxFX09QOg0KDQorICAgICAgICAgICAgICAg IEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgLSBydWxlOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAh PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgUnVsZUlkOiAge30gIyBSdWxlSWRcbicuZm9ybWF0KEluZm8uUnVs ZUlkKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9TVUJU SVRMRV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0K DQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gc3VidGl0bGU6XG4nKQ0KDQorICAg ICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5D b25kaXRpb24pKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6 ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1l bnQuUHJvbXB0KSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lG Ul9URVhUX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygp DQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSB0ZXh0OlxuJykNCg0KKyAgICAg ICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29u ZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAg e30gICMgU3RhdGVtZW50IFByb21wdCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uU3RhdGVtZW50 LlByb21wdCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7 fSAgIyBTdGF0ZW1lbnQgSGVscCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uU3RhdGVtZW50Lkhl bHApKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB0ZXh0OiAge30gICMg U3RhdGVtZW50IEhlbHAgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlRleHRUd28pKQ0KDQorDQoN CisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX0FDVElPTl9PUDoNCg0KKyAg ICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgIC0gYWN0aW9uOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBS b290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMgU3RhdGVtZW50 IFByb21wdCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21wdCkp DQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0 ZW1lbnQgSGVscCBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHAp KQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge30g ICMgUXVlc3Rpb24gUXVlc3Rpb25JZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklk KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9 ICAjIFF1ZXN0aW9uIFZhclN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJ ZCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZsYWdzOiAge30gICMg UXVlc3Rpb24gRmxhZ3NcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3MpKQ0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmNvbmZpZzogIHt9ICAjIFF1ZXN0 aW9uQ29uZmlnXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uQ29uZmlnKSkNCg0KKw0KDQorICAgICAg ICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PTkVfT0ZfT1A6DQoNCisgICAgICAgICAg ICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAtIG9uZW9mOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRp dGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg Y29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJv bXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0K KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVu dCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoN CisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBR dWVzdGlvbiBRdWVzdGlvbklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0K DQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMg UXVlc3Rpb24gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1 ZXN0aW9uIFZhck5hbWUgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3Jl SW5mby5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFy b2Zmc2V0OiAge30gICMgUXVlc3Rpb24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u LlZhclN0b3JlSW5mby5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uIEZsYWdzXG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lG Ul9PTkVfT0ZfT1BUSU9OX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEu R2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gb3B0aW9u OiAge31cbicuZm9ybWF0KEluZm8uT3B0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290 LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiBmbGFnOiAg e31cbicuZm9ybWF0KEluZm8uRmxhZ3MpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICAgICAgb3B0aW9uIHR5cGU6ICB7fVxuJy5mb3JtYXQoSW5mby5UeXBlKSkNCg0KKw0K DQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZPcHRpb246 DQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfREFU RToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0 aW9uIHZhbHVlOiAge30ve30ve31cbicuZm9ybWF0KEluZm8uVmFsdWUuZGF0ZS5ZZWFyLCBJbmZv LlZhbHVlLmRhdGUuTW9udGgsIEluZm8uVmFsdWUuZGF0ZS5EYXkpKQ0KDQorICAgICAgICAgICAg ICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTogIHt9Ont9 Ont9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnRpbWUuSG91ciwgSW5mby5WYWx1ZS50aW1lLk1pbnV0 ZSwgSW5mby5WYWx1ZS50aW1lLlNlY29uZCkpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIElu Zm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfUkVGOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24gdmFsdWU6ICB7fTt7fTsnLmZvcm1hdChJbmZv LlZhbHVlLnJlZi5RdWVzdGlvbklkLCBJbmZvLlZhbHVlLnJlZi5Gb3JtSWQpICsgICd7JyArICd7 fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0 YTEpLCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTIpLCAnMHgleCclKElu Zm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGEzKSkgXA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9Jy5mb3JtYXQo JzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFswXSksICcweCV4JyUoSW5m by5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMV0pLCAnMHgleCclKEluZm8uVmFsdWUucmVm LkZvcm1TZXRHdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3Vp ZC5EYXRhNFszXSksIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5mby5W YWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uVmFsdWUucmVmLkZv cm1TZXRHdWlkLkRhdGE0WzVdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5E YXRhNFs2XSksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbN10pKSAr ICcgfX0nICsgJzt7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5yZWYuRGV2aWNlUGF0aCkpDQoNCisg ICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfU1RSSU5HOg0K DQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24g dmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5zdHJpbmcpKQ0KDQorICAgICAgICAgICAg ICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTog IHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnU4KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYg SW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9y bWF0KEluZm8uVmFsdWUudTE2KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8u VmFsdWUudTMyKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTY0 KSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9C T09MRUFOOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAg ICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5iKSkNCg0KKw0KDQorICAg ICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZPcHRpb24yOg0KDQor ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAgeycpDQoN CisgICAgICAgICAgICAgICAgICAgIFZhbHVlVHlwZSA9IFJvb3QuRGF0YS5HZXRWYWx1ZVR5cGUo KQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX1NU UklORzoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJ bmZvLlZhbHVlKS0xKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7 fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnN0cmluZykpDQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnN0 cmluZykgKyAnfVxuJykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBm b3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS51OCkpDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVu KEluZm8uVmFsdWUpLTFdLnU4KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAg IGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1 ZVtpXS51MTYpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1h dChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51MTYpICsgJ31cbicpDQoNCisNCg0KKyAg ICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z MjoNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZv LlZhbHVlKS0xKToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwn LmZvcm1hdChJbmZvLlZhbHVlW2ldLnUzMikpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnUzMikgKyAn fVxuJykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzY0Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTY0KSkNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5W YWx1ZSktMV0udTY0KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIFZh bHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0xKToNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLmIpKQ0K DQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVl W2xlbihJbmZvLlZhbHVlKS0xXS5iKSArICd9XG4nKQ0KDQorDQoNCisNCg0KKyAgICAgICAgICAg IGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfREVGQVVMVF9PUDoNCg0KKyAgICAgICAgICAgICAg ICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAtIGRlZmF1bHQ6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29u ZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHR5cGU6ICB7fVxuJy5mb3JtYXQoSW5m by5UeXBlKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGRlZmF1 bHRJZDogIHt9XG4nLmZvcm1hdChJbmZvLkRlZmF1bHRJZCkpDQoNCisgICAgICAgICAgICAgICAg aWYgdHlwZShSb290LkRhdGEpID09IENJZnJEZWZhdWx0Og0KDQorICAgICAgICAgICAgICAgICAg ICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge30ve30ve31cbicuZm9ybWF0 KEluZm8uVmFsdWUuZGF0ZS5ZZWFyLCBJbmZvLlZhbHVlLmRhdGUuTW9udGgsIEluZm8uVmFsdWUu ZGF0ZS5EYXkpKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lG Ul9UWVBFX1RJTUU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgICAgIHZhbHVlOiAge306e306e31cbicuZm9ybWF0KEluZm8uVmFsdWUudGltZS5Ib3VyLCBJ bmZvLlZhbHVlLnRpbWUuTWludXRlLCBJbmZvLlZhbHVlLnRpbWUuU2Vjb25kKSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQoNCisgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTog IHt9O3t9OycuZm9ybWF0KEluZm8uVmFsdWUucmVmLlF1ZXN0aW9uSWQsIEluZm8uVmFsdWUucmVm LkZvcm1JZCkgKyAgJ3snICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLlZhbHVl LnJlZi5Gb3JtU2V0R3VpZC5EYXRhMSksJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3Vp ZC5EYXRhMiksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTMpKSBcDQoN CisgICAgICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30s IHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRh dGE0WzBdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFsxXSksICcw eCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMl0pLCAnMHgleCclKEluZm8u VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAg ICAgICAgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs0XSksICcweCV4 JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNV0pLCAnMHgleCclKEluZm8uVmFs dWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3Jt U2V0R3VpZC5EYXRhNFs3XSkpICsgJyB9fScgKyAnO3t9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnJl Zi5EZXZpY2VQYXRoKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVG SV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUuc3RyaW5nKSkNCg0K KyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0la RV84Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2 YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnU4KSkNCg0KKyAgICAgICAgICAgICAgICAg ICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7fVxuJy5mb3Jt YXQoSW5mby5WYWx1ZS51MTYpKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnUz MikpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfNjQ6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTY0KSkNCg0KKyAgICAgICAg ICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9XG4n LmZvcm1hdChJbmZvLlZhbHVlLmIpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgdHlwZShS b290LkRhdGEpID09IENJZnJEZWZhdWx0MzoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHsnKQ0KDQorICAgICAgICAgICAgICAgICAgICBWYWx1 ZVR5cGUgPSBSb290LkRhdGEuR2V0VmFsdWVUeXBlKCkNCg0KKyAgICAgICAgICAgICAgICAgICAg aWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9TVFJJTkc6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS5z dHJpbmcpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJ bmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS5zdHJpbmcpICsgJ31cbicpDQoNCisNCg0KKyAg ICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84 Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8u VmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcu Zm9ybWF0KEluZm8uVmFsdWVbaV0udTgpKQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZvLlZhbHVlKS0xXS51OCkgKyAnfVxu JykNCg0KKw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzE2Og0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTE2KSkNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1 ZSktMV0udTE2KSArICd9XG4nKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVl VHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQoNCisgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS51MzIp KQ0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZh bHVlW2xlbihJbmZvLlZhbHVlKS0xXS51MzIpICsgJ31cbicpDQoNCisNCg0KKyAgICAgICAgICAg ICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAg ICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0x KToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJ bmZvLlZhbHVlW2ldLnU2NCkpDQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7 fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnU2NCkgKyAnfVxuJykNCg0K Kw0KDQorICAgICAgICAgICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX0JP T0xFQU46DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4o SW5mby5WYWx1ZSktMSk6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn e30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS5iKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0uYikgKyAn fVxuJykNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PUkRF UkVEX0xJU1RfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZv KCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIG9yZGVyZWRsaXN0OlxuJykN Cg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0 KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3Jt YXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbiBRdWVzdGlvbklkXG4nLmZv cm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3RvcmVJZFxuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgbWF4Q29udGFpbmVyczogIHt9XG4nLmZvcm1hdChJbmZvLk1heENvbnRh aW5lcnMpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9 XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYg Um9vdC5PcENvZGUgPT0gRUZJX0lGUl9OVU1FUklDX09QOg0KDQorICAgICAgICAgICAgICAgIElu Zm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgLSBudW1lcmljOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAh PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMgU3RhdGVtZW50IFByb21wdCBTVFJJTkdf SURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21wdCkpDQoNCisgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscCBTVFJJ TkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge30gICMgUXVlc3Rpb24gUXVl c3Rpb25JZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCg0KKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9ICAjIFF1ZXN0aW9uIFZh clN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQoNCisgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fSAgIyBRdWVzdGlvbiBWYXJO YW1lIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyTmFt ZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm9mZnNldDogIHt9 ICAjIFF1ZXN0aW9uIFZhck9mZnNldFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlu Zm8uVmFyT2Zmc2V0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZmxh Z3M6ICB7fSAgIyBRdWVzdGlvbiBGbGFnc1xuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5GbGFncykp DQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFyVHlwZSgpID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWF4VmFsdWUp KQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWludmFsdWU6ICB7 fVxuJy5mb3JtYXQoSW5mby5EYXRhLnU2NC5NaW5WYWx1ZSkpDQoNCisgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQu U3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFyVHlwZSgp ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51MzIuTWF4 VmFsdWUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWludmFs dWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnUzMi5NaW5WYWx1ZSkpDQoNCisgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KEluZm8uRGF0 YS51MzIuU3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFy VHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCg0KKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51 MTYuTWF4VmFsdWUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg bWludmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnUxNi5NaW5WYWx1ZSkpDQoNCisgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KElu Zm8uRGF0YS51MTYuU3RlcCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEu R2V0VmFyVHlwZSgpID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KDQorICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWF4dmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5E YXRhLnU4Lk1heFZhbHVlKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIG1pbnZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51OC5NaW5WYWx1ZSkpDQoNCisg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0 KEluZm8uRGF0YS51OC5TdGVwKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUg PT0gRUZJX0lGUl9DSEVDS0JPWF9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5E YXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gY2hlY2ti b3g6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoN CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxu Jy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3Jt YXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVzdGlvbiBRdWVzdGlvbklkXG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3RvcmVJZFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0aW9uIFZhck5hbWUgU1RSSU5H X0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJOYW1lKSkNCg0KKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0OiAge30gICMgUXVlc3Rp b24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJPZmZz ZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAj IEZsYWdzXG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCg0KKw0KDQorICAgICAgICAgICAgaWYgUm9v dC5PcENvZGUgPT0gRUZJX0lGUl9USU1FX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBS b290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSB0 aW1lOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31c bicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5HX0lEXG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24gVmFyU3RvcmVJZFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0KKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZh clN0b3JlSW5mby5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgdmFyb2Zmc2V0OiAge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZh ck9mZnNldCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDog IHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u LkhlYWRlci5Qcm9tcHQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBo ZWxwOiAge30gICMgU3RhdGVtZW50IEhlbHAgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLkhlYWRlci5IZWxwKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAg ZmxhZ3M6ICB7fVxuJy5mb3JtYXQoSW5mby5GbGFncykpDQoNCisNCg0KKyAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlID09IEVGSV9JRlJfREFURV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJbmZv ID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg IC0gZGF0ZTpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjog IHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19J RFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgdmFyc3RvcmVpZDogIHt9ICAjIFF1ZXN0aW9uIFZhclN0b3Jl SWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJZCkpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fVxuJy5mb3JtYXQoSW5mby5RdWVzdGlv bi5WYXJTdG9yZUluZm8uVmFyTmFtZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgIHZhcm9mZnNldDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5m by5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9t cHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVz dGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGZsYWdzOiAge31cbicuZm9ybWF0KEluZm8uRmxhZ3MpKQ0KDQorDQoNCisNCg0KKyAgICAg ICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfU1RSSU5HX09QOg0KDQorICAgICAgICAg ICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgLSBzdHJpbmc6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29u ZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0 IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCg0KKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBI ZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQoNCisg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBRdWVz dGlvbiBRdWVzdGlvbklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVl c3Rpb24gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCg0K KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0 aW9uIFZhck5hbWUgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5m by5WYXJOYW1lKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zm c2V0OiAge30gICMgUXVlc3Rpb24gVmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZh clN0b3JlSW5mby5WYXJPZmZzZXQpKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uIEZsYWdzXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u LkZsYWdzKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3RyaW5nZmxh Z3M6ICB7fVxuJy5mb3JtYXQoSW5mby5GbGFncykpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHN0cmluZ21pbnNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5NaW5TaXplKSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3RyaW5nbWF4c2l6ZTogIHt9 XG4nLmZvcm1hdChJbmZvLk1heFNpemUpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX1BBU1NXT1JEX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBS b290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBw YXNzd29yZDpcbicpDQoNCisgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9u ZToNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjog IHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQgU1RSSU5HX0lEXG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KDQorICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge30gICMgU3RhdGVtZW50IEhlbHAgU1RSSU5HX0lE XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxwKSkNCg0KKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uIFF1ZXN0aW9u SWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbiBWYXJTdG9y ZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KDQorICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJuYW1lOiAge30gICMgUXVlc3Rpb24gVmFyTmFtZSBT VFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0K DQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJvZmZzZXQ6ICB7fSAgIyBR dWVzdGlvbiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZh ck9mZnNldCkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZsYWdzOiAg e30gICMgUXVlc3Rpb24gRmxhZ3NcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uRmxhZ3MpKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtaW5zaXplOiAge31cbicuZm9ybWF0 KEluZm8uTWluU2l6ZSkpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1h eHNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5NYXhTaXplKSkNCg0KKw0KDQorDQoNCisgICAgICAg ICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUDoNCg0KKyAgICAg ICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgIC0gcmVzZXRidXR0b246XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlm IFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQor ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1l bnQgUHJvbXB0IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuUHJvbXB0KSkNCg0K KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVu dCBIZWxwIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuSGVscCkpDQoNCisgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGRlZmF1bHRpZDogIHt9XG4nLmZvcm1hdChJ bmZvLkRlZmF1bHRJZCkpDQoNCisNCg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVG SV9JRlJfUkVGX09QOg0KDQorICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBnb3RvOlxuJykNCg0KKyAg ICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3Qu Q29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9 PSBDSWZyUmVmNDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZv cm1pZDogIHt9XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQoNCisgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICBmb3Jtc2V0aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0 KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTEpLCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0 YTIpLCAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGEzKSkgXA0KDQorICAgICAgICAgICAgICAg ICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge30nLmZvcm1hdCgn MHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0WzBdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5E YXRhNFsxXSksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMl0pLCAnMHgleCclKEluZm8u Rm9ybVNldElkLkRhdGE0WzNdKSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgleCclKElu Zm8uRm9ybVNldElkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs1XSks ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNl0pLCAnMHgleCclKEluZm8uRm9ybVNldElk LkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uSWQpKQ0KDQor ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZGV2aWNlcGF0aDogIHt9XG4n LmZvcm1hdChJbmZvLkRldmljZVBhdGgpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgdHlw ZShSb290LkRhdGEpID09IENJZnJSZWYzOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgZm9ybWlkOiAge31cbicuZm9ybWF0KEluZm8uRm9ybUlkKSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZvcm1zZXRpZDogIHsnICsgJ3t9LCB7 fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhMSksJzB4JXgnJShJbmZv LkZvcm1TZXRJZC5EYXRhMiksICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTMpKSBcDQoNCisg ICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9 LCB7fScuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMF0pLCAnMHgleCclKElu Zm8uRm9ybVNldElkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFsyXSks ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbM10pLCBcDQoNCisgICAgICAgICAgICAgICAg ICAgICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uRm9ybVNl dElkLkRhdGE0WzVdKSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs2XSksICcweCV4JyUo SW5mby5Gb3JtU2V0SWQuRGF0YTRbN10pKSArICcgfX1cbicpDQoNCisgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge31cbicuZm9ybWF0KEluZm8uUXVl c3Rpb25JZCkpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0g Q0lmclJlZjI6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmb3Jt aWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KDQorICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u SWQpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJS ZWY6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmb3JtaWQ6ICB7 fVxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0 aW9uSWQpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21w dDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KDQorICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge31cbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uSGVhZGVyLkhlbHApKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9 PSBFRklfSUZSX1JFRlJFU0hfT1A6DQoNCisgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0 YS5HZXRJbmZvKCkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgLSByZWZy ZXNoOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0K DQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGNvbmRpdGlvbjog IHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgICAgICBpbnRlcnZhbDogIHt9ICAjIFJlZnJlc2hJbnRlcnZhbFxuJy5mb3Jt YXQoSW5mby5SZWZyZXNoSW50ZXJ2YWwpKQ0KDQorDQoNCisgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUDoNCg0KKyAgICAgICAgICAgICAgICBJ bmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICAtIHZhcnN0b3JlZGV2aWNlOlxuJykNCg0KKyAgICAgICAgICAgICAgICBpZiBSb290 LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBkZXZpY2VwYXRoOiAge30gICMg RGV2aWNlUGF0aFxuJy5mb3JtYXQoSW5mby5EZXZpY2VQYXRoKSkNCg0KKw0KDQorICAgICAgICAg ICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SRUZSRVNIX0lEX09QOg0KDQorICAgICAgICAg ICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIC0gcmVmcmVzaGd1aWQ6XG4nKQ0KDQorICAgICAgICAgICAgICAgIGlm IFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkN Cg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGV2ZW50Z3JvdXBpZDog IHsnICsgJ3t9LCB7fSwge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3Vw SWQuRGF0YTEpLCcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGEyKSwgJzB4JXgn JShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTMpKSBcDQoNCisgICAgICAgICAgICAgICAg ICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fScuZm9ybWF0KCcw eCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzBdKSwgJzB4JXgnJShJbmZvLlJl ZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbMV0pLCAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3Jv dXBJZC5EYXRhNFsyXSksICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzNd KSwgXA0KDQorICAgICAgICAgICAgICAgICAgICAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3Jv dXBJZC5EYXRhNFs0XSksICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzVd KSwgJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbNl0pLCAnMHgleCclKElu Zm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCg0KKw0KDQorICAg ICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9XQVJOSU5HX0lGX09QOg0KDQorICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQoNCisgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIC0gd2FybmluZ2lmOlxuJykNCg0KKyAgICAgICAgICAgICAg ICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlv bikpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB3YXJuaW5nOiAg e31cbicuZm9ybWF0KEluZm8uV2FybmluZykpDQoNCisgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgICAgICB0aW1lT3V0OiAge31cbicuZm9ybWF0KEluZm8uVGltZU91dCkpDQoNCisN Cg0KKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfR1VJRF9PUDoNCg0KKyAg ICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KDQorICAgICAgICAgICAg ICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyTGFiZWw6ICMgdHlwZShJbmZvKSA9PSBFRklf SUZSX0dVSURfTEFCRUwNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBs YWJlbDpcbicpDQoNCisgICAgICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5v bmU6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCg0KKw0KDQorICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbGFiZWxudW1iZXI6ICB7fSAgIyBMYWJlbE51bWJl clxuJy5mb3JtYXQoSW5mby5OdW1iZXIpKQ0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgdHlw ZShSb290LkRhdGEpID09IENJZnJCYW5uZXI6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgIC0gYmFubmVyOlxuJykNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5D b25kaXRpb24gIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KDQorDQoN CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB0aXRsZTogIHt9XG4nLmZv cm1hdChJbmZvLlRpdGxlKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIGxpbmVudW1iZXI6ICB7fVxuJy5mb3JtYXQoSW5mby5MaW5lTnVtYmVyKSkNCg0KKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGFsaWduOiAge31cbicuZm9ybWF0KElu Zm8uQWxpZ25tZW50KSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRh KSA9PSBDSWZyVGltZW91dDoNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg LSBiYW5uZXI6XG4nKQ0KDQorICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAh PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNv bmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQoNCisNCg0KKyAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHRpbWVvdXQ6ICB7fVxuJy5mb3JtYXQoSW5m by5UaW1lT3V0KSkNCg0KKw0KDQorICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9 PSBDSWZyQ2xhc3M6DQoNCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgQ2xhc3M6ICB7 fVxuJy5mb3JtYXQoSW5mby5DbGFzcykpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBpZiB0eXBl KFJvb3QuRGF0YSkgPT0gQ0lmclN1YkNsYXNzOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndy aXRlKCcgIFN1YkNsYXNzOiAge31cbicuZm9ybWF0KEluZm8uU3ViQ2xhc3MpKQ0KDQorDQoNCisg ICAgICAgICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJHdWlkOg0KDQorICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIGd1aWRvcDpcbicpDQoNCisgICAgICAgICAg ICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3Qu Q29uZGl0aW9uKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGd1 aWQ6ICB7JyArICd7fSwge30sIHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5HdWlkLkRhdGExKSwn MHgleCclKEluZm8uR3VpZC5EYXRhMiksICcweCV4JyUoSW5mby5HdWlkLkRhdGEzKSkgXA0KDQor ICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7 fSwge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcweCV4JyUoSW5mby5H dWlkLkRhdGE0WzFdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMl0pLCAnMHgleCclKEluZm8u R3VpZC5EYXRhNFszXSksIFwNCg0KKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLkd1 aWQuRGF0YTRbNF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs1XSksICcweCV4JyUoSW5mby5H dWlkLkRhdGE0WzZdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbN10pKSArICcgfX1cbicpDQoN CisNCg0KKw0KDQorICAgICAgICBpZiBSb290LkNoaWxkICE9IFtdOg0KDQorICAgICAgICAgICAg Zm9yIENoaWxkTm9kZSBpbiBSb290LkNoaWxkOg0KDQorICAgICAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlIGluIENvbmRpdGlvbk9wczoNCg0KKyAgICAgICAgICAgICAgICAgICAgaWYgQ2hpbGRO b2RlLk9wQ29kZSBpbiBDb25kaXRpb25PcHM6DQoNCisgICAgICAgICAgICAgICAgICAgICAgICBD aGlsZE5vZGUuQ29uZGl0aW9uID0gUm9vdC5Db25kaXRpb24gKyAnIHwgJyArIENoaWxkTm9kZS5D b25kaXRpb24NCg0KKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICAgICAgICAgIENoaWxkTm9kZS5Db25kaXRpb24gPSBSb290LkNvbmRpdGlvbg0KDQorDQoNCisg ICAgICAgICAgICAgICAgc2VsZi5EdW1wWWFtbERmcyhDaGlsZE5vZGUsIGYpDQoNCisNCg0KKyAg ICAgICAgcmV0dXJuDQoNCisNCg0KK2RlbCBWZnJTeW50YXhQYXJzZXINClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNv bXBpbGVyL1ZmclRyZWUucHkgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9W ZnJUcmVlLnB5DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uMzRmOWNl NGUzMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvVmZyVHJlZS5weQ0KQEAgLTAsMCArMSw4OCBAQA0KK2Zyb20gVmZyQ29tcGlsZXIuQ29t bW9uQ3R5cGVzIGltcG9ydCAqDQoNCitmcm9tIFZmckNvbXBpbGVyLlZmckZvcm1Qa2cgaW1wb3J0 ICoNCg0KKw0KDQorIyBJZnIgcmVsYXRlZCBJbmZvIC0+IGN0eXBlcyBvYmoNCg0KKyPjgIBjb25k aXRpb25hbCBJbmZvDQoNCisjIFN0cnVjdHVyZSBJbmZvDQoNCisNCg0KKw0KDQorY2xhc3MgVmZy VHJlZU5vZGUoKToNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgT3Bjb2RlOiBpbnQ9Tm9uZSkg LT4gTm9uZToNCg0KKw0KDQorICAgICAgICBzZWxmLk9wQ29kZSA9IE9wY29kZQ0KDQorICAgICAg ICBzZWxmLkRhdGEgPSBOb25lICMgc2F2ZSBjbGFzcyBvciBieXRlcw0KDQorICAgICAgICBzZWxm LkNvbmRpdGlvbiA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5FeHByZXNzaW9uID0gTm9uZQ0KDQor ICAgICAgICBzZWxmLlBhcmVudCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5DaGlsZCA9IFtdDQoN CisNCg0KKw0KDQorICAgIGRlZiBoYXNDb25kaXRpb24oc2VsZikgLT5ib29sOg0KDQorICAgICAg ICBpZiBzZWxmLkNvbmRpdGlvbiA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIEZhbHNl DQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KDQorDQoNCisg ICAgIyBHZXQgZGF0YSBmcm9tIGN0eXBlcyB0byBieXRlcy4NCg0KKyAgICBkZWYgc3RydWN0MnN0 cmVhbShzZWxmLCBzKSAtPiBieXRlczoNCg0KKyAgICAgICAgbGVuZ3RoID0gc2l6ZW9mKHMpDQoN CisgICAgICAgIHAgPSBjYXN0KHBvaW50ZXIocyksIFBPSU5URVIoY19jaGFyICogbGVuZ3RoKSkN Cg0KKyAgICAgICAgcmV0dXJuIHAuY29udGVudHMucmF3DQoNCisNCg0KKyAgICBkZWYgaGFzQ2hp bGQoc2VsZikgLT4gYm9vbDoNCg0KKyAgICAgICAgaWYgc2VsZi5DaGlsZCA9PSBbXToNCg0KKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg cmV0dXJuIFRydWUNCg0KKw0KDQorICAgIGRlZiBpc0ZpbmFsQ2hpbGQoc2VsZikgLT4gYm9vbDoN Cg0KKyAgICAgICAgUGFyVHJlZSA9IHNlbGYuUGFyZW50DQoNCisgICAgICAgIGlmIFBhclRyZWU6 DQoNCisgICAgICAgICAgICBpZiBQYXJUcmVlLkNoaWxkWy0xXSA9PSBzZWxmOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAgIHJldHVybiBGYWxzZQ0KDQorDQoNCisN Cg0KKyAgICBkZWYgaW5zZXJ0Q2hpbGQoc2VsZiwgTmV3Tm9kZSwgcG9zOiBpbnQ9Tm9uZSkgLT4g Tm9uZToNCg0KKyAgICAgICAgaWYgbGVuKHNlbGYuQ2hpbGQpID09IDA6DQoNCisgICAgICAgICAg ICBzZWxmLkNoaWxkLmFwcGVuZChOZXdOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgaWYgbm90IHBvczoNCg0KKyAgICAgICAgICAgICAgICBMYXN0VHJlZSA9IHNlbGYuQ2hp bGRbLTFdDQoNCisgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5hcHBlbmQoTmV3Tm9kZSkNCg0K KyAgICAgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5DaGlsZC5pbnNlcnQo cG9zLCBOZXdOb2RlKQ0KDQorDQoNCisgICAgICAgIE5ld05vZGUuUGFyZW50ID0gc2VsZg0KDQor DQoNCisNCg0KKyAgICAjIGxhc3ROb2RlLmluc2VydFJlbChuZXdOb2RlKQ0KDQorICAgIGRlZiBp bnNlcnRSZWwoc2VsZiwgbmV3Tm9kZSkgLT4gTm9uZToNCg0KKyAgICAgICAgaWYgc2VsZi5QYXJl bnQ6DQoNCisgICAgICAgICAgICBwYXJlbnRUcmVlID0gc2VsZi5QYXJlbnQNCg0KKyAgICAgICAg ICAgIG5ld19pbmRleCA9IHBhcmVudFRyZWUuQ2hpbGQuaW5kZXgoc2VsZikgKyAxDQoNCisgICAg ICAgICAgICBwYXJlbnRUcmVlLkNoaWxkLmluc2VydChuZXdfaW5kZXgsIG5ld05vZGUpDQoNCisg ICAgICAgIHNlbGYuTmV4dFJlbCA9IG5ld05vZGUNCg0KKyAgICAgICAgbmV3Tm9kZS5MYXN0UmVs ID0gc2VsZg0KDQorDQoNCisNCg0KKyAgICBkZWYgZGVsZXRlTm9kZShzZWxmLCBkZWxldGVrZXk6 IHN0cikgLT4gTm9uZToNCg0KKyAgICAgICAgRmluZFN0YXR1cywgRGVsZXRlVHJlZSA9IHNlbGYu RmluZE5vZGUoZGVsZXRla2V5KQ0KDQorICAgICAgICBpZiBGaW5kU3RhdHVzOg0KDQorICAgICAg ICAgICAgcGFyZW50VHJlZSA9IERlbGV0ZVRyZWUuUGFyZW50DQoNCisgICAgICAgICAgICBsYXN0 VHJlZSA9IERlbGV0ZVRyZWUuTGFzdFJlbA0KDQorICAgICAgICAgICAgbmV4dFRyZWUgPSBEZWxl dGVUcmVlLk5leHRSZWwNCg0KKyAgICAgICAgICAgIGlmIHBhcmVudFRyZWU6DQoNCisgICAgICAg ICAgICAgICAgaW5kZXggPSBwYXJlbnRUcmVlLkNoaWxkLmluZGV4KERlbGV0ZVRyZWUpDQoNCisg ICAgICAgICAgICAgICAgZGVsIHBhcmVudFRyZWUuQ2hpbGRbaW5kZXhdDQoNCisgICAgICAgICAg ICBpZiBsYXN0VHJlZSBhbmQgbmV4dFRyZWU6DQoNCisgICAgICAgICAgICAgICAgbGFzdFRyZWUu TmV4dFJlbCA9IG5leHRUcmVlDQoNCisgICAgICAgICAgICAgICAgbmV4dFRyZWUuTGFzdFJlbCA9 IGxhc3RUcmVlDQoNCisgICAgICAgICAgICBlbGlmIGxhc3RUcmVlOg0KDQorICAgICAgICAgICAg ICAgIGxhc3RUcmVlLk5leHRSZWwgPSBOb25lDQoNCisgICAgICAgICAgICBlbGlmIG5leHRUcmVl Og0KDQorICAgICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBOb25lDQoNCisgICAgICAg ICAgICByZXR1cm4gRGVsZXRlVHJlZQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAg cHJpbnQoJ0NvdWxkIG5vdCBmaW5kIHRoZSB0YXJnZXQgdHJlZScpDQoNCisgICAgICAgICAgICBy ZXR1cm4gTm9uZQ0KDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvVmZyVXRpbGl0eS5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L1ZmclV0aWxpdHkucHkNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi4x YTJiZjk5NWRjDQotLS0gL2Rldi9udWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9W ZnJDb21waWxlci9WZnJVdGlsaXR5LnB5DQpAQCAtMCwwICsxLDE5OTEgQEANCitmcm9tIGFzdCBp bXBvcnQgUGFzcywgUmV0dXJuDQoNCitmcm9tIGFzeW5jaW8ud2luZG93c19ldmVudHMgaW1wb3J0 IE5VTEwNCg0KK2Zyb20gY3R5cGVzLndpbnR5cGVzIGltcG9ydCBTSVpFTA0KDQorZnJvbSBtc2ls aWIuc2NoZW1hIGltcG9ydCBFcnJvcg0KDQorZnJvbSB0a2ludGVyIGltcG9ydCBODQoNCitmcm9t IHR1cnRsZSBpbXBvcnQgZ290bw0KDQorZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QNCg0KK2Zyb20g dW5pdHRlc3QubW9jayBpbXBvcnQgTm9uQ2FsbGFibGVNYWdpY01vY2sNCg0KK2Zyb20geG1scnBj LmNsaWVudCBpbXBvcnQgYm9vbGVhbg0KDQorZnJvbSBWZnJDb21waWxlci5WZnJFcnJvciBpbXBv cnQgKg0KDQorZnJvbSBWZnJDb21waWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCg0KK2Zyb20g YWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZA0KDQoraW1wb3J0IGN0eXBlcw0KDQor DQoNCitpbXBvcnQgc3lzDQoNCisNCg0KK1ZGUl9QQUNLX1NIT1cgPSAweDAyDQoNCitWRlJfUEFD S19BU1NJR04gPSAweDAxDQoNCitWRlJfUEFDS19QVVNIID0gMHgwNA0KDQorVkZSX1BBQ0tfUE9Q ID0gMHgwOA0KDQorREVGQVVMVF9QQUNLX0FMSUdOID0gMHg4DQoNCitERUZBVUxUX0FMSUdOID0g MQ0KDQorTUFYX05BTUVfTEVOID0gNjQNCg0KK01BWF9CSVRfV0lEVEggPSAzMg0KDQorRUZJX1ZB UlNUT1JFX0lEX01BWCA9IDB4RkZGRg0KDQorRUZJX0JJVFNfU0hJRlRfUEVSX1VJTlQzMiA9IDB4 NQ0KDQorRUZJX0JJVFNfUEVSX1VJTlQzMiA9ICgxIDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5U MzIpDQoNCitFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRNQVBfU0laRSA9IGludCgNCg0KKyAgICAo RUZJX1ZBUlNUT1JFX0lEX01BWCArIDEpIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0KKw0KDQor DQoNCitjbGFzcyBTVmZyUGFja1N0YWNrTm9kZShvYmplY3QpOg0KDQorDQoNCisgICAgZGVmIF9f aW5pdF9fKHNlbGYsIElkZW50aWZpZXIsIE51bWJlcik6DQoNCisgICAgICAgIHNlbGYuSWRlbnRp ZmllciA9IElkZW50aWZpZXINCg0KKyAgICAgICAgc2VsZi5OdW1iZXIgPSBOdW1iZXINCg0KKyAg ICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KDQorDQoNCisgICAgZGVmIE1hdGNoKHNlbGYsIElkZW50 aWZpZXIpOg0KDQorICAgICAgICBpZiBJZGVudGlmaWVyID09IE5vbmU6DQoNCisgICAgICAgICAg ICByZXR1cm4gVHJ1ZQ0KDQorICAgICAgICBlbGlmIHNlbGYuSWRlbnRpZmllciA9PSBOb25lOg0K DQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQoNCisgICAgICAgIGVsaWYgc2VsZi5JZGVudGlm aWVyID09IElkZW50aWZpZXI6DQoNCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KDQorICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQoNCisNCg0KKw0KDQorY2xhc3Mg U1ZmckRhdGFUeXBlKG9iamVjdCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlw ZU5hbWU9JycpOg0KDQorICAgICAgICBzZWxmLlR5cGVOYW1lID0gVHlwZU5hbWUNCg0KKyAgICAg ICAgc2VsZi5UeXBlID0gMA0KDQorICAgICAgICBzZWxmLkFsaWduID0gMQ0KDQorICAgICAgICBz ZWxmLlRvdGFsU2l6ZSA9IDANCg0KKyAgICAgICAgc2VsZi5IYXNCaXRGaWVsZCA9IEZhbHNlDQoN CisgICAgICAgIHNlbGYuTWVtYmVycyA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5OZXh0ID0gTm9u ZQ0KDQorDQoNCisNCg0KK2NsYXNzIFNWZnJEYXRhRmllbGQob2JqZWN0KToNCg0KKw0KDQorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBGaWVsZE5hbWU9Tm9uZSk6DQoNCisgICAgICAgIHNlbGYuRmll bGROYW1lID0gRmllbGROYW1lDQoNCisgICAgICAgIHNlbGYuRmllbGRUeXBlID0gTm9uZQ0KDQor ICAgICAgICBzZWxmLk9mZnNldCA9IDANCg0KKyAgICAgICAgc2VsZi5BcnJheU51bSA9IDANCg0K KyAgICAgICAgc2VsZi5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKyAgICAgICAgc2VsZi5CaXRXaWR0 aCA9IDANCg0KKyAgICAgICAgc2VsZi5CaXRPZmZzZXQgPSAwDQoNCisgICAgICAgIHNlbGYuTmV4 dCA9IE5vbmUNCg0KKw0KDQorY2xhc3MgSW50ZXJuYWxUeXBlcygpOg0KDQorICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBUeXBlTmFtZSwgVHlwZSwgU2l6ZSwgQWxpZ24pOg0KDQorICAgICAgICBzZWxm LlR5cGVOYW1lID0gVHlwZU5hbWUNCg0KKyAgICAgICAgc2VsZi5UeXBlID0gVHlwZQ0KDQorICAg ICAgICBzZWxmLlNpemUgPSBTaXplDQoNCisgICAgICAgIHNlbGYuQWxpZ24gPSBBbGlnbg0KDQor DQoNCitnSW50ZXJuYWxUeXBlc1RhYmxlID0gWw0KDQorICAgIEludGVybmFsVHlwZXMoIlVJTlQ2 NCIsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NCwNCg0KKyAgICAgICAgICAgICAgICAgIHNpemVv ZihjdHlwZXMuY191bG9uZ2xvbmcpLCBzaXplb2YoY3R5cGVzLmNfdWxvbmdsb25nKSksDQoNCisg ICAgSW50ZXJuYWxUeXBlcygiVUlOVDMyIiwgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyLCBzaXpl b2YoY3R5cGVzLmNfdWxvbmcpLA0KDQorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5j X3Vsb25nKSksDQoNCisgICAgSW50ZXJuYWxUeXBlcygiVUlOVDE2IiwgRUZJX0lGUl9UWVBFX05V TV9TSVpFXzE2LCBzaXplb2YoY3R5cGVzLmNfdXNob3J0KSwNCg0KKyAgICAgICAgICAgICAgICAg IHNpemVvZihjdHlwZXMuY191c2hvcnQpKSwNCg0KKyAgICBJbnRlcm5hbFR5cGVzKCJVSU5UOCIs IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84LCBzaXplb2YoY3R5cGVzLmNfdWJ5dGUpLA0KDQorICAg ICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSksDQoNCisgICAgSW50ZXJuYWxU eXBlcygiQk9PTEVBTiIsIEVGSV9JRlJfVFlQRV9CT09MRUFOLCBzaXplb2YoY3R5cGVzLmNfdWJ5 dGUpLA0KDQorICAgICAgICAgICAgICAgICAgc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSksDQoNCisg ICAgSW50ZXJuYWxUeXBlcygiRUZJX0dVSUQiLCBFRklfSUZSX1RZUEVfT1RIRVIsIHNpemVvZihF RklfR1VJRCksDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY191Ynl0ZSAqIDgpKSwNCg0K KyAgICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX0RBVEUiLCBFRklfSUZSX1RZUEVfREFURSwgc2l6 ZW9mKEVGSV9ISUlfREFURSksDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY3R5cGVzLmNf dXNob3J0KSksDQoNCisgICAgSW50ZXJuYWxUeXBlcygiRUZJX1NUUklOR19JRCIsIEVGSV9JRlJf VFlQRV9TVFJJTkcsDQoNCisgICAgICAgICAgICAgICAgICBzaXplb2YoY3R5cGVzLmNfdXNob3J0 KSwgc2l6ZW9mKGN0eXBlcy5jX3VzaG9ydCkpLA0KDQorICAgIEludGVybmFsVHlwZXMoIkVGSV9I SUlfVElNRSIsIEVGSV9JRlJfVFlQRV9USU1FLCBzaXplb2YoRUZJX0hJSV9USU1FKSwNCg0KKyAg ICAgICAgICAgICAgICAgIHNpemVvZihjdHlwZXMuY191Ynl0ZSkpLA0KDQorICAgIEludGVybmFs VHlwZXMoIkVGSV9ISUlfUkVGIiwgRUZJX0lGUl9UWVBFX1JFRiwgc2l6ZW9mKEVGSV9ISUlfUkVG KSwNCg0KKyAgICAgICAgICAgICAgICAgIHNpemVvZihFRklfR1VJRCkpLA0KDQorXQ0KDQorDQoN CitjbGFzcyBDVmZyVmFyRGF0YVR5cGVEQihvYmplY3QpOg0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fUGFja0FsaWduID0gREVGQVVMVF9QQUNLX0FM SUdODQoNCisgICAgICAgIHNlbGYuX19QYWNrU3RhY2sgPSBOb25lDQoNCisgICAgICAgIHNlbGYu X19EYXRhVHlwZUxpc3QgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZSA9IE5v bmUNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJEYXRhVHlwZSA9IE5vbmUNCg0KKyAgICAgICAgc2Vs Zi5fX0N1cnJEYXRhRmllbGQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuX19GaXJzdE5ld0RhdGFU eXBlTmFtZSA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5JbnRlcm5hbFR5cGVzTGlzdEluaXQoKQ0K DQorDQoNCisNCg0KKyAgICBkZWYgSW50ZXJuYWxUeXBlc0xpc3RJbml0KHNlbGYpOg0KDQorICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZ0ludGVybmFsVHlwZXNUYWJsZSkpOg0KDQorICAg ICAgICAgICAgcE5ld1R5cGUgPSBTVmZyRGF0YVR5cGUoKQ0KDQorICAgICAgICAgICAgcE5ld1R5 cGUuVHlwZU5hbWUgPSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lDQoNCisgICAgICAg ICAgICBwTmV3VHlwZS5UeXBlID0gZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlDQoNCisgICAg ICAgICAgICBwTmV3VHlwZS5BbGlnbiA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0uQWxpZ24NCg0K KyAgICAgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0u U2l6ZQ0KDQorDQoNCisgICAgICAgICAgICBpZiBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVO YW1lID09ICdFRklfSElJX0RBVEUnOg0KDQorICAgICAgICAgICAgICAgIHBZZWFyRmllbGQgID0g U1ZmckRhdGFGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQgID0gU1ZmckRh dGFGaWVsZCgpDQoNCisgICAgICAgICAgICAgICAgcERheUZpZWxkICA9IFNWZnJEYXRhRmllbGQo KQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5GaWVsZE5hbWUgPSAnWWVhcicN Cg0KKyAgICAgICAgICAgICAgICBwWWVhckZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0 YVR5cGUoJ1VJTlQxNicpDQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5PZmZzZXQgPSAw DQoNCisgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5OZXh0ID0gcE1vbnRoRmllbGQNCg0KKyAg ICAgICAgICAgICAgICBwWWVhckZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAg IHBZZWFyRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQoNCisNCg0KKyAgICAgICAgICAgICAgICBw TW9udGhGaWVsZC5GaWVsZE5hbWUgPSAnTW9udGgnDQoNCisgICAgICAgICAgICAgICAgcE1vbnRo RmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KDQorICAgICAg ICAgICAgICAgIHBNb250aEZpZWxkLk9mZnNldCA9IDINCg0KKyAgICAgICAgICAgICAgICBwTW9u dGhGaWVsZC5OZXh0ID0gcERheUZpZWxkDQoNCisgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQu QXJyYXlOdW0gPSAwDQoNCisgICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuSXNCaXRGaWVsZCA9 IEZhbHNlDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuRmllbGROYW1lID0gJ0Rh eScNCg0KKyAgICAgICAgICAgICAgICBwRGF5RmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXRE YXRhVHlwZSgnVUlOVDgnKQ0KDQorICAgICAgICAgICAgICAgIHBEYXlGaWVsZC5PZmZzZXQgPSAz DQoNCisgICAgICAgICAgICAgICAgcERheUZpZWxkLk5leHQgPSBOb25lDQoNCisgICAgICAgICAg ICAgICAgcERheUZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBEYXlGaWVs ZC5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICAgICAgICAgIHBOZXdUeXBlLk1l bWJlcnMgPSBwWWVhckZpZWxkDQoNCisNCg0KKyAgICAgICAgICAgIGVsaWYgZ0ludGVybmFsVHlw ZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJSV9USU1FJzoNCg0KKyAgICAgICAgICAgICAg ICBwSG91cnNGaWVsZCAgPSBTVmZyRGF0YUZpZWxkKCkNCg0KKyAgICAgICAgICAgICAgICBwTWlu dXRlc0ZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0KDQorICAgICAgICAgICAgICAgIHBTZWNvbmRz RmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQoNCisNCg0KKyAgICAgICAgICAgICAgICBwSG91cnNG aWVsZC5GaWVsZE5hbWUgPSAnSG91cnMnDQoNCisgICAgICAgICAgICAgICAgcEhvdXJzRmllbGQu RmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KDQorICAgICAgICAgICAg ICAgIHBIb3Vyc0ZpZWxkLk9mZnNldCA9IDANCg0KKyAgICAgICAgICAgICAgICBwSG91cnNGaWVs ZC5OZXh0ID0gcE1pbnV0ZXNGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLkFy cmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLklzQml0RmllbGQgPSBG YWxzZQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5GaWVsZE5hbWUgPSAn TWludXRlcycNCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLkZpZWxkVHlwZSwgXyA9 IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQ4JykNCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0Zp ZWxkLk9mZnNldCA9IDENCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLk5leHQgPSBw U2Vjb25kc0ZpZWxkDQoNCisgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5BcnJheU51bSA9 IDANCg0KKyAgICAgICAgICAgICAgICBwTWludXRlc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0K DQorDQoNCisgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5GaWVsZE5hbWUgPSAnU2Vjb25k cycNCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoJ1VJTlQ4JykNCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk9m ZnNldCA9IDINCg0KKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk5leHQgPSBOb25lDQoN CisgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5BcnJheU51bSA9IDANCg0KKyAgICAgICAg ICAgICAgICBwU2Vjb25kc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoNCisgICAgICAg ICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBIb3Vyc0ZpZWxkDQoNCisNCg0KKyAgICAgICAg ICAgIGVsaWYgZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJSV9SRUYn Og0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQgID0gU1ZmckRhdGFGaWVsZCgp DQoNCisgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0KDQor ICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0KDQor ICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRoRmllbGQgPSBTVmZyRGF0YUZpZWxkKCkNCg0KKw0K DQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuRmllbGROYW1lID0gJ1F1ZXN0aW9u SWQnDQoNCisgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5GaWVsZFR5cGUsIF8gPSBz ZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklk RmllbGQuT2Zmc2V0ID0gMA0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuTmV4 dCA9IHBGb3JtSWRGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuQXJy YXlOdW0gPSAwDQoNCisgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5Jc0JpdEZpZWxk ID0gRmFsc2UNCg0KKw0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5GaWVsZE5hbWUg PSAnRm9ybUlkJw0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5GaWVsZFR5cGUsIF8g PSBzZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRG aWVsZC5PZmZzZXQgPSAyDQoNCisgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxkLk5leHQgPSBw Rm9ybVNldEd1aWRGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVsZC5BcnJheU51 bSA9IDANCg0KKyAgICAgICAgICAgICAgICBwRm9ybUlkRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNl DQoNCisNCg0KKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5GaWVsZE5hbWUgPSAn Rm9ybVNldEd1aWQnDQoNCisgICAgICAgICAgICAgICAgcEZvcm1TZXRHdWlkRmllbGQuRmllbGRU eXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnRUZJX0dVSUQnKQ0KDQorICAgICAgICAgICAgICAg IHBGb3JtU2V0R3VpZEZpZWxkLk9mZnNldCA9IDQNCg0KKyAgICAgICAgICAgICAgICBwRm9ybVNl dEd1aWRGaWVsZC5OZXh0ID0gcERldmljZVBhdGhGaWVsZA0KDQorICAgICAgICAgICAgICAgIHBG b3JtU2V0R3VpZEZpZWxkLkFycmF5TnVtID0gMA0KDQorICAgICAgICAgICAgICAgIHBGb3JtU2V0 R3VpZEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoNCisgICAgICAgICAgICAgICAgcERl dmljZVBhdGhGaWVsZC5GaWVsZE5hbWUgPSAnRGV2aWNlUGF0aCcNCg0KKyAgICAgICAgICAgICAg ICBwRGV2aWNlUGF0aEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoJ0VGSV9T VFJJTkdfSUQnKQ0KDQorICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRoRmllbGQuT2Zmc2V0ID0g MjANCg0KKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLk5leHQgPSBOb25lDQoNCisg ICAgICAgICAgICAgICAgcERldmljZVBhdGhGaWVsZC5BcnJheU51bSA9IDANCg0KKyAgICAgICAg ICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KDQorDQoNCisgICAg ICAgICAgICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IHBRdWVzdGlvbklkRmllbGQNCg0KKw0KDQor ICAgICAgICAgICAgcE5ld1R5cGUuTmV4dCA9IE5vbmUNCg0KKyAgICAgICAgICAgIHNlbGYuX19S ZWdpc3Rlck5ld1R5cGUocE5ld1R5cGUpDQoNCisgICAgICAgICAgICBwTmV3VHlwZSA9IE5vbmUN Cg0KKw0KDQorICAgIGRlZiBHZXREYXRhVHlwZUxpc3Qoc2VsZik6DQoNCisgICAgICAgIHJldHVy biBzZWxmLl9fRGF0YVR5cGVMaXN0DQoNCisNCg0KKyAgICBkZWYgUGFjayhzZWxmLA0KDQorICAg ICAgICAgICAgIExpbmVOdW0sDQoNCisgICAgICAgICAgICAgQWN0aW9uLA0KDQorICAgICAgICAg ICAgIElkZW50aWZpZXI9Tm9uZSwNCg0KKyAgICAgICAgICAgICBOdW1iZXI9REVGQVVMVF9QQUNL X0FMSUdOKToNCg0KKw0KDQorICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19TSE9XOg0KDQor ICAgICAgICAgICAgTXNnID0gc3RyLmZvcm1hdCgndmFsdWUgb2YgcHJhZ21hIHBhY2soc2hvdykg PT0gJWQnICUNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX19QYWNrQWxp Z24pKQ0KDQorICAgICAgICAgICAgZ0NWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5lTnVtLCAn V2FybmluZycsIE1zZykNCg0KKw0KDQorICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19QVVNI Og0KDQorICAgICAgICAgICAgcE5ldyA9IFNWZnJQYWNrU3RhY2tOb2RlKElkZW50aWZpZXIsIHNl bGYuX19QYWNrQWxpZ24pDQoNCisgICAgICAgICAgICBpZiBwTmV3ID09IE5vbmU6DQoNCisgICAg ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0K DQorICAgICAgICAgICAgcE5ldy5OZXh0ID0gc2VsZi5fX1BhY2tTdGFjaw0KDQorICAgICAgICAg ICAgc2VsZi5fX1BhY2tTdGFjayA9IHBOZXcNCg0KKw0KDQorICAgICAgICBpZiBBY3Rpb24gJiBW RlJfUEFDS19QT1A6DQoNCisgICAgICAgICAgICBwTm9kZSA9IE5vbmUNCg0KKyAgICAgICAgICAg IGlmIHNlbGYuX19QYWNrU3RhY2sgPT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBnQ1ZmckVy cm9ySGFuZGxlLlByaW50TXNnKExpbmVOdW0sICdFcnJvcicsICcjcHJhZ21hIHBhY2socG9wLi4u KSA6IG1vcmUgcG9wcyB0aGFuIHB1c2hlcycpDQoNCisNCg0KKyAgICAgICAgICAgIHBOb2RlID0g c2VsZi5fX1BhY2tTdGFjaw0KDQorICAgICAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0K KyAgICAgICAgICAgICAgICBpZiBwTm9kZS5NYXRjaChJZGVudGlmaWVyKSA9PSBUcnVlOg0KDQor ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fUGFja0FsaWduID0gcE5vZGUuTnVtYmVyDQoNCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuX19QYWNrU3RhY2sgPSBwTm9kZS5OZXh0DQoNCisgICAg ICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgaWYgQWN0aW9u ICYgVkZSX1BBQ0tfQVNTSUdOOg0KDQorICAgICAgICAgICAgUGFja0FsaWduID0gKE51bWJlciAr IE51bWJlciAlIDIpIGlmIChOdW1iZXIgPiAxKSBlbHNlIE51bWJlcg0KDQorICAgICAgICAgICAg aWYgUGFja0FsaWduID09IDAgb3IgUGFja0FsaWduID4gMTY6DQoNCisgICAgICAgICAgICAgICAg Z0NWZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5lTnVtLCAnRXJyb3InLCAiZXhwZWN0ZWQgcHJh Z21hIHBhcmFtZXRlciB0byBiZSAnMScsICcyJywgJzQnLCAnOCcsIG9yICcxNiciKQ0KDQorICAg ICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fUGFja0FsaWduID0gUGFj a0FsaWduDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQoNCisNCg0KKyAgICBkZWYgRGVjbGFyZURhdGFUeXBlQmVnaW4oc2VsZik6DQoNCisg ICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCg0KKw0KDQorICAgICAgICBwTmV3VHlw ZS5UeXBlTmFtZSA9ICcnDQoNCisgICAgICAgIHBOZXdUeXBlLlR5cGUgPSBFRklfSUZSX1RZUEVf T1RIRVINCg0KKyAgICAgICAgcE5ld1R5cGUuQWxpZ24gPSBERUZBVUxUX0FMSUdODQoNCisgICAg ICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IDANCg0KKyAgICAgICAgcE5ld1R5cGUuSGFzQml0Rmll bGQgPSBGYWxzZQ0KDQorICAgICAgICBwTmV3VHlwZS5NZW1iZXJzID0gTm9uZQ0KDQorICAgICAg ICBwTmV3VHlwZS5OZXh0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUgPSBw TmV3VHlwZQ0KDQorDQoNCisgICAgZGVmIFNldE5ld1R5cGVUeXBlKHNlbGYsIFR5cGUpOg0KDQor ICAgICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQoNCisNCg0KKyAgICAg ICAgaWYgVHlwZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAgICAgIHNlbGYuX19OZXdEYXRhVHlw ZS5UeXBlID0gVHlwZSAgIyBuZWVkIHRvIGxpbWl0IHRoZSB2YWx1ZSBvZiB0aGUgdHlwZQ0KDQor DQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQor DQoNCisgICAgZGVmIFNldE5ld1R5cGVUb3RhbFNpemUoc2VsZiwgU2l6ZSk6DQoNCisgICAgICAg IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBTaXplDQoNCisNCg0KKyAgICBkZWYgU2V0 TmV3VHlwZUFsaWduKHNlbGYsIEFsaWduKToNCg0KKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBl LkFsaWduID0gQWxpZ24NCg0KKw0KDQorICAgIGRlZiBTZXROZXdUeXBlTmFtZShzZWxmLCBUeXBl TmFtZSk6DQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZSA9PSBOb25lOg0KDQorICAg ICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQNCg0K Kw0KDQorICAgICAgICBpZiBUeXBlTmFtZSA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJu IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAgICAgIGlm IGxlbihUeXBlTmFtZSkgPj0gTUFYX05BTUVfTEVOOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KDQorDQoNCisgICAgICAg IHBUeXBlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBwVHlwZSAhPSBO b25lOg0KDQorICAgICAgICAgICAgaWYgcFR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6DQoNCisg ICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQN Cg0KKyAgICAgICAgICAgIHBUeXBlID0gcFR5cGUuTmV4dA0KDQorDQoNCisgICAgICAgIHNlbGYu X19OZXdEYXRhVHlwZS5UeXBlTmFtZSA9IFR5cGVOYW1lDQoNCisgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIF9fQWxpZ25TdHVm ZihzZWxmLCBTaXplLCBBbGlnbik6DQoNCisgICAgICAgIHJldHVybiBBbGlnbiAtIChTaXplKSAl IChBbGlnbikNCg0KKw0KDQorICAgIGRlZiBEZWNsYXJlRGF0YVR5cGVFbmQoc2VsZik6DQoNCisg ICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZSA9PSAnJzoNCg0KKyAgICAgICAg ICAgIHJldHVybg0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNp emUgJSBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gIT0gMDoNCg0KKyAgICAgICAgICAgIHNlbGYu X19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgKz0gc2VsZi5fX0FsaWduU3R1ZmYoDQoNCisgICAgICAg ICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSwgc2VsZi5fX05ld0RhdGFUeXBl LkFsaWduKQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19SZWdpc3Rlck5ld1R5cGUoc2VsZi5fX05l d0RhdGFUeXBlKQ0KDQorICAgICAgICBpZiBzZWxmLl9fRmlyc3ROZXdEYXRhVHlwZU5hbWUgPT0g Tm9uZToNCg0KKyAgICAgICAgICAgIHNlbGYuX19GaXJzdE5ld0RhdGFUeXBlTmFtZSA9IHNlbGYu X19OZXdEYXRhVHlwZS5UeXBlTmFtZQ0KDQorDQoNCisgICAgICAgIHNlbGYuX19OZXdEYXRhVHlw ZSA9IE5vbmUNCg0KKw0KDQorICAgICMgdHdvIGRlZmluaXRpb25zDQoNCisgICAgZGVmIEdldERh dGFUeXBlU2l6ZUJ5VHlwZU5hbWUoc2VsZiwgVHlwZU5hbWUpOg0KDQorICAgICAgICBTaXplID0g MA0KDQorICAgICAgICBwRGF0YVR5cGUgPSBzZWxmLl9fRGF0YVR5cGVMaXN0DQoNCisgICAgICAg IHdoaWxlIHBEYXRhVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcERhdGFUeXBlLlR5 cGVOYW1lID09IFR5cGVOYW1lOg0KDQorICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0YVR5cGUu VG90YWxTaXplDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0YVR5cGUu TmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShz ZWxmLCBEYXRhVHlwZSk6DQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAgICAgIERhdGFUeXBl ID0gRGF0YVR5cGUgJiAweDBGDQoNCisgICAgICAgICMgRm9yIHVzZXIgZGVmaW5lZCBkYXRhIHR5 cGUsIHRoZSBzaXplIGNhbid0IGJlIGdvdCBieSB0aGlzIGZ1bmN0aW9uLg0KDQorICAgICAgICBp ZiBEYXRhVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQoNCisgICAgICAgICAgICByZXR1cm4g U2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgcERhdGFU eXBlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBwRGF0YVR5cGUgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIGlmIERhdGFUeXBlID09IHBEYXRhVHlwZS5UeXBlOg0KDQor ICAgICAgICAgICAgICAgIFNpemUgPSBwRGF0YVR5cGUuVG90YWxTaXplDQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisg ICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0YVR5cGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJl dHVybiBTaXplLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAg ICBkZWYgX19FeHRyYWN0U3RydWN0VHlwZU5hbWUoc2VsZiwgVmFyU3RyKToNCg0KKyAgICAgICAg dHJ5Og0KDQorICAgICAgICAgICAgaW5kZXggPSBWYXJTdHIuaW5kZXgoJy4nKQ0KDQorICAgICAg ICBleGNlcHQgVmFsdWVFcnJvcjoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJTdHIsIGxlbihW YXJTdHIpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gVmFyU3RyWzA6 aW5kZXhdLCBpbmRleCArIDENCg0KKw0KDQorICAgIGRlZiBfX0V4dHJhY3RGaWVsZE5hbWVBbmRB cnJhcnkoc2VsZiwgVmFyU3RyLCBzKToNCg0KKw0KDQorICAgICAgICBBcnJheUlkeCA9IElOVkFM SURfQVJSQVlfSU5ERVgNCg0KKyAgICAgICAgc19jb3B5ID0gcw0KDQorICAgICAgICB3aGlsZSAo cyA8IGxlbihWYXJTdHIpIGFuZCBWYXJTdHJbc10gIT0gJy4nIGFuZCBWYXJTdHJbc10gIT0gJ1sn DQoNCisgICAgICAgICAgICAgICBhbmQgVmFyU3RyW3NdICE9ICddJyk6DQoNCisgICAgICAgICAg ICBzICs9IDENCg0KKw0KDQorICAgICAgICBGTmFtZSA9IFZhclN0cltzX2NvcHk6c10NCg0KKw0K DQorICAgICAgICBpZiBzID09IGxlbihWYXJTdHIpOg0KDQorICAgICAgICAgICAgcmV0dXJuIEFy cmF5SWR4LCBzLCBGTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0K DQorICAgICAgICBlbGlmIFZhclN0cltzXSA9PSAnLic6DQoNCisgICAgICAgICAgICBzICs9IDEN Cg0KKyAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywgRk5hbWUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICAgICAgZWxpZiBWYXJTdHJbc10gPT0gJ1sn Og0KDQorICAgICAgICAgICAgcyArPSAxDQoNCisgICAgICAgICAgICB0cnk6DQoNCisgICAgICAg ICAgICAgICAgZSA9IHMgKyBWYXJTdHJbczpdLmluZGV4KCddJykNCg0KKw0KDQorICAgICAgICAg ICAgZXhjZXB0IFZhbHVlRXJyb3I6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5v bmUsIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9EQVRBX1NUUklOR19FUlJPUg0KDQor ICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBBcnJheVN0ciA9IFZhclN0cltz OmVdDQoNCisgICAgICAgICAgICAgICAgQXJyYXlJZHggPSBpbnQoQXJyYXlTdHIpDQoNCisgICAg ICAgICAgICAgICAgaWYgVmFyU3RyW2VdID09ICddJzoNCg0KKyAgICAgICAgICAgICAgICAgICAg ZSArPSAxDQoNCisgICAgICAgICAgICAgICAgaWYgZSA8IGxlbihWYXJTdHIpIGFuZCAoVmFyU3Ry W2VdID09ICcuJyk6DQoNCisgICAgICAgICAgICAgICAgICAgIGUgKz0gMQ0KDQorICAgICAgICAg ICAgICAgIHJldHVybiBBcnJheUlkeCwgZSwgRk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTDQoNCisNCg0KKyAgICAgICAgZWxpZiBWYXJTdHJbc10gPT0gJ10nOg0KDQorICAg ICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9EQVRBX1NUUklOR19FUlJPUg0KDQorDQoNCisgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywg Rk5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYg R2V0VHlwZUZpZWxkKHNlbGYsIEZOYW1lLCBUeXBlKToNCg0KKyAgICAgICAgaWYgRk5hbWUgPT0g Tm9uZSBvciBUeXBlID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgcEZpZWxkID0g VHlwZS5NZW1iZXJzDQoNCisgICAgICAgIHdoaWxlIChwRmllbGQgIT0gTm9uZSk6DQoNCisNCg0K KyAgICAgICAgICAgIGlmIFR5cGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRToNCg0KKyAgICAg ICAgICAgICAgICBpZiBGTmFtZSA9PSAnSG91cic6DQoNCisgICAgICAgICAgICAgICAgICAgIEZO YW1lID0gJ0hvdXJzJw0KDQorICAgICAgICAgICAgICAgIGVsaWYgRk5hbWUgPT0gJ01pbnV0ZSc6 DQoNCisgICAgICAgICAgICAgICAgICAgIEZOYW1lID09ICdNaW51dGVzJw0KDQorICAgICAgICAg ICAgICAgIGVsaWYgRk5hbWUgPT0gJ1NlY29uZCc6DQoNCisgICAgICAgICAgICAgICAgICAgIEZO YW1lID0gJ1NlY29uZHMnDQoNCisgICAgICAgICAgICBpZiBwRmllbGQuRmllbGROYW1lID09IEZO YW1lOg0KDQorICAgICAgICAgICAgICAgIEZpZWxkID0gcEZpZWxkDQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIEZpZWxkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoN CisgICAgICAgICAgICBwRmllbGQgPSBwRmllbGQuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVy biBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBk ZWYgSXNUaGlzQml0RmllbGQoc2VsZiwgVmFyU3RyTmFtZSk6DQoNCisNCg0KKyAgICAgICAgVE5h bWUsIGkgPSBzZWxmLl9fRXh0cmFjdFN0cnVjdFR5cGVOYW1lKFZhclN0ck5hbWUpDQoNCisgICAg ICAgIHBUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCg0KKyAgICAg ICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0K KyAgICAgICAgICAgIHJldHVybiBOb25lLCBSZXR1cm5Db2RlDQoNCisgICAgICAgIHBGaWVsZCA9 IE5vbmUNCg0KKyAgICAgICAgd2hpbGUgKGkgPCBsZW4oVmFyU3RyTmFtZSkpOg0KDQorICAgICAg ICAgICAgIyBpIHN0YXJ0IGZyb20gZmllbGQNCg0KKyAgICAgICAgICAgIF8sIGksIEZOYW1lLCBS ZXR1cm5Db2RlID0gc2VsZi5fX0V4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQoNCisgICAgICAg ICAgICAgICAgVmFyU3RyTmFtZSwgaSkNCg0KKyAgICAgICAgICAgIGlmIFJldHVybkNvZGUgIT0g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIE5vbmUsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBGaWVsZCwgUmV0dXJuQ29kZSA9 IHNlbGYuR2V0VHlwZUZpZWxkKEZOYW1lLCBwVHlwZSkNCg0KKyAgICAgICAgICAgIGlmIFJldHVy bkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIE5vbmUsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBUeXBlID0gcEZp ZWxkLkZpZWxkVHlwZQ0KDQorDQoNCisgICAgICAgIGlmIHBGaWVsZCAhPSBOb25lIGFuZCBwRmll bGQuSXNCaXRGaWVsZDoNCg0KKyAgICAgICAgICAgIHJldHVybiBUcnVlLCBSZXR1cm5Db2RlDQoN CisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIFJldHVybkNvZGUN Cg0KKw0KDQorICAgIGRlZiBHZXRGaWVsZE9mZnNldChzZWxmLCBGaWVsZCwgQXJyYXlJZHgsIElz Qml0RmllbGQpOg0KDQorDQoNCisgICAgICAgIGlmIEZpZWxkID09IE5vbmU6DQoNCisgICAgICAg ICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoN CisNCg0KKyAgICAgICAgaWYgKEFycmF5SWR4ICE9IElOVkFMSURfQVJSQVlfSU5ERVgpIGFuZCAo RmllbGQuQXJyYXlOdW0gPT0gMCBvcg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGaWVsZC5BcnJheU51bSA8PSBBcnJheUlkeCk6DQoNCisgICAg ICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFS WV9OVU0NCg0KKw0KDQorICAgICAgICBJZHggPSAwIGlmIEFycmF5SWR4ID09IElOVkFMSURfQVJS QVlfSU5ERVggZWxzZSBBcnJheUlkeA0KDQorICAgICAgICBpZiBJc0JpdEZpZWxkOg0KDQorICAg ICAgICAgICAgT2Zmc2V0ID0gRmllbGQuQml0T2Zmc2V0ICsgRmllbGQuRmllbGRUeXBlLlRvdGFs U2l6ZSAqIElkeCAqIDgNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIE9mZnNldCA9 IEZpZWxkLk9mZnNldCArIEZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiBJZHgNCg0KKw0KDQor ICAgICAgICByZXR1cm4gT2Zmc2V0LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0K DQorDQoNCisgICAgZGVmIF9fR2V0RmllbGRXaWR0aChzZWxmLCBGaWVsZCk6DQoNCisgICAgICAg IGlmIEZpZWxkID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gMA0KDQorICAgICAgICBy ZXR1cm4gRmllbGQuRmllbGRUeXBlLlR5cGUNCg0KKw0KDQorICAgIGRlZiBfX0dldEZpZWxkU2l6 ZShzZWxmLCBGaWVsZCwgQXJyYXlJZHgsIEJpdEZpZWxkKToNCg0KKyAgICAgICAgaWYgRmllbGQg PT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RkFUQUxfRVJST1INCg0KKw0KDQorICAgICAgICBpZiAoQXJyYXlJZHggPT0gSU5WQUxJRF9BUlJB WV9JTkRFWCkgYW5kIChGaWVsZC5BcnJheU51bSAhPSAwKToNCg0KKyAgICAgICAgICAgIHJldHVy biBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplICogRmllbGQuQXJyYXlOdW0NCg0KKyAgICAgICAg ZWxzZToNCg0KKw0KDQorICAgICAgICAgICAgaWYgQml0RmllbGQ6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIEZpZWxkLkJpdFdpZHRoDQoNCisgICAgICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgICAgIHJldHVybiBGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQoNCisNCg0KKyAgICBk ZWYgR2V0RGF0YUZpZWxkSW5mbyhzZWxmLCBWYXJTdHIpOg0KDQorDQoNCisgICAgICAgICMgVmFy U3RyIC0+IFR5cGUuRmllbGQNCg0KKyAgICAgICAgT2Zmc2V0ID0gMA0KDQorICAgICAgICBUeXBl ID0gRUZJX0lGUl9UWVBFX09USEVSDQoNCisgICAgICAgIFNpemUgPSAwDQoNCisgICAgICAgIEJp dEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICBUTmFtZSwgaSA9IHNlbGYuX19FeHRyYWN0 U3RydWN0VHlwZU5hbWUoVmFyU3RyKQ0KDQorDQoNCisgICAgICAgIHBUeXBlLCBSZXR1cm5Db2Rl ID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBP ZmZzZXQsIFR5cGUsIFNpemUsIEJpdEZpZWxkLCBSZXR1cm5Db2RlDQoNCisNCg0KKyAgICAgICAg Qml0RmllbGQsIFJldHVybkNvZGUgPSBzZWxmLklzVGhpc0JpdEZpZWxkKFZhclN0cikNCg0KKw0K DQorICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQs IFJldHVybkNvZGUNCg0KKw0KDQorICAgICAgICAj44CAaWYgaXQgaXMgbm90IHN0cnVjdCBkYXRh IHR5cGUNCg0KKyAgICAgICAgVHlwZSA9IHBUeXBlLlR5cGUNCg0KKyAgICAgICAgU2l6ZSA9IHBU eXBlLlRvdGFsU2l6ZQ0KDQorDQoNCisgICAgICAgIHdoaWxlIChpIDwgbGVuKFZhclN0cikpOg0K DQorICAgICAgICAgICAgQXJyYXlJZHgsIGksIEZOYW1lLCBSZXR1cm5Db2RlID0gc2VsZi5fX0V4 dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQoNCisgICAgICAgICAgICAgICAgVmFyU3RyLCBpKQ0K DQorICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUzoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBC aXRGaWVsZCwgUmV0dXJuQ29kZQ0KDQorICAgICAgICAgICAgcEZpZWxkLCBSZXR1cm5Db2RlID0g c2VsZi5HZXRUeXBlRmllbGQoRk5hbWUsIHBUeXBlKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJu Q29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAg ICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KDQor ICAgICAgICAgICAgcFR5cGUgPSBwRmllbGQuRmllbGRUeXBlDQoNCisgICAgICAgICAgICBUbXAs IFJldHVybkNvZGUgPSBzZWxmLkdldEZpZWxkT2Zmc2V0KHBGaWVsZCwgQXJyYXlJZHgsDQoNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBGaWVsZC5J c0JpdEZpZWxkKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBU eXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgICAgICBpZiBC aXRGaWVsZCBhbmQgcEZpZWxkLklzQml0RmllbGQgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICAg ICAgT2Zmc2V0ID0gaW50KE9mZnNldCArIFRtcCAqIDgpDQoNCisgICAgICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgICAgIE9mZnNldCA9IGludChPZmZzZXQgKyBUbXApDQoNCisNCg0KKyAg ICAgICAgICAgIFR5cGUgPSBzZWxmLl9fR2V0RmllbGRXaWR0aChwRmllbGQpDQoNCisgICAgICAg ICAgICBTaXplID0gc2VsZi5fX0dldEZpZWxkU2l6ZShwRmllbGQsIEFycmF5SWR4LCBCaXRGaWVs ZCkNCg0KKw0KDQorICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBfX1JlZ2lz dGVyTmV3VHlwZShzZWxmLCBOZXcpOg0KDQorICAgICAgICBOZXcuTmV4dCA9IHNlbGYuX19EYXRh VHlwZUxpc3QNCg0KKyAgICAgICAgc2VsZi5fX0RhdGFUeXBlTGlzdCA9IE5ldw0KDQorICAgICAg ICByZXR1cm4NCg0KKw0KDQorICAgIGRlZiBEYXRhVHlwZUFkZEZpZWxkKHNlbGYsIEZpZWxkTmFt ZSwgVHlwZU5hbWUsIEFycmF5TnVtLCBGaWVsZEluVW5pb24pOg0KDQorDQoNCisgICAgICAgIHBG aWVsZFR5cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFR5cGVOYW1lKQ0KDQorDQoN CisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIE1h eERhdGFUeXBlU2l6ZSA9IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUNCg0KKw0KDQorDQoN CisgICAgICAgIGlmIGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTjoNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCg0K Kw0KDQorICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMNCg0KKyAgICAg ICAgd2hpbGUgcFRtcCAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcFRtcC5GaWVsZE5hbWUg PT0gRmllbGROYW1lOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fUkVERUZJTkVEDQoNCisgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQoNCisN Cg0KKyAgICAgICAgQWxpZ24gPSBtaW4oc2VsZi5fX1BhY2tBbGlnbiwgcEZpZWxkVHlwZS5BbGln bikNCg0KKyAgICAgICAgcE5ld0ZpZWxkID0gU1ZmckRhdGFGaWVsZCgpDQoNCisgICAgICAgIGlm IHBOZXdGaWVsZCA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQorICAgICAgICBwTmV3RmllbGQuRmllbGRO YW1lID0gRmllbGROYW1lDQoNCisgICAgICAgIHBOZXdGaWVsZC5GaWVsZFR5cGUgPSBwRmllbGRU eXBlDQoNCisgICAgICAgIHBOZXdGaWVsZC5BcnJheU51bSA9IEFycmF5TnVtDQoNCisgICAgICAg IHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gRmFsc2UNCg0KKw0KDQorICAgICAgICBpZiBzZWxmLl9f TmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCg0KKyAgICAgICAgICAgIHBOZXdG aWVsZC5PZmZzZXQgPSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBl LlRvdGFsU2l6ZSArIHNlbGYuX19BbGlnblN0dWZmKA0KDQorICAgICAgICAgICAgICAgIHNlbGYu X19OZXdEYXRhVHlwZS5Ub3RhbFNpemUsIEFsaWduKQ0KDQorDQoNCisgICAgICAgIGlmIHNlbGYu X19OZXdEYXRhVHlwZS5NZW1iZXJzID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fTmV3 RGF0YVR5cGUuTWVtYmVycyA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5l eHQgPSBOb25lDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwVG1wID0gc2VsZi5f X05ld0RhdGFUeXBlLk1lbWJlcnMNCg0KKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4dCAhPSBO b25lOg0KDQorICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCg0KKyAgICAgICAgICAg IHBUbXAuTmV4dCA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBO b25lDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLkFsaWduID0gbWluKA0KDQor ICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiwgbWF4KHBGaWVsZFR5cGUuQWxpZ24sIHNlbGYu X19OZXdEYXRhVHlwZS5BbGlnbikpDQoNCisNCg0KKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0K DQorICAgICAgICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwgcE5ld0ZpZWxkLkZpZWxkVHlwZS5U b3RhbFNpemU6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6 ZSA9IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQoNCisgICAgICAgICAgICBwTmV3Rmll bGQuT2Zmc2V0ID0gMA0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgTnVtID0gQXJy YXlOdW0gaWYgQXJyYXlOdW0gIT0gMCBlbHNlIDENCg0KKyAgICAgICAgICAgIHNlbGYuX19OZXdE YXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3RmllbGQuT2Zmc2V0ICsgKA0KDQorICAgICAgICAgICAg ICAgIHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplKSAqIE51bQ0KDQorDQoNCisgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVm IERhdGFUeXBlQWRkQml0RmllbGQoc2VsZiwgRmllbGROYW1lLCBUeXBlTmFtZSwgV2lkdGgsIEZp ZWxkSW5Vbmlvbik6DQoNCisNCg0KKyAgICAgICAgcEZpZWxkVHlwZSwgUmV0dXJuQ29kZSA9IHNl bGYuR2V0RGF0YVR5cGUoVHlwZU5hbWUpDQoNCisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0 dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIGlmIFdpZHRoID4gTUFYX0JJVF9XSURUSDoNCg0KKyAg ICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9S DQoNCisNCg0KKyAgICAgICAgaWYgV2lkdGggPiAocEZpZWxkVHlwZS5Ub3RhbFNpemUpICogODoN Cg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQklUX1dJRFRI X0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgKEZpZWxkTmFtZSAhPSBOb25lKSBhbmQgKGxlbihG aWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTik6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQoNCisNCg0KKyAgICAgICAgaWYg V2lkdGggPT0gMCBhbmQgRmllbGROYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQoNCisNCg0KKyAgICAg ICAgcFRtcCA9IHNlbGYuX19OZXdEYXRhVHlwZS5NZW1iZXJzDQoNCisgICAgICAgIHdoaWxlIHBU bXAgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIEZpZWxkTmFtZSAhPSBOb25lIGFuZCBwVG1w LkZpZWxkTmFtZSA9PSBGaWVsZE5hbWU6DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHBUbXAgPSBwVG1w Lk5leHQNCg0KKw0KDQorICAgICAgICBBbGlnbiA9IG1pbihzZWxmLl9fUGFja0FsaWduLCBwRmll bGRUeXBlLkFsaWduKQ0KDQorICAgICAgICBVcGRhdGVUb3RhbFNpemUgPSBGYWxzZQ0KDQorDQoN CisgICAgICAgIHBOZXdGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KDQorICAgICAgICBpZiBwTmV3 RmllbGQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBNYXhEYXRhVHlwZVNpemUg PSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplDQoNCisNCg0KKyAgICAgICAgcE5ld0ZpZWxk LkZpZWxkTmFtZSA9IEZpZWxkTmFtZQ0KDQorICAgICAgICBwTmV3RmllbGQuRmllbGRUeXBlID0g cEZpZWxkVHlwZQ0KDQorICAgICAgICBwTmV3RmllbGQuSXNCaXRGaWVsZCA9IFRydWUNCg0KKyAg ICAgICAgcE5ld0ZpZWxkLkJpdFdpZHRoID0gV2lkdGgNCg0KKyAgICAgICAgcE5ld0ZpZWxkLkFy cmF5TnVtID0gMA0KDQorICAgICAgICBwTmV3RmllbGQuQml0T2Zmc2V0ID0gMA0KDQorICAgICAg ICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19OZXdEYXRh VHlwZS5NZW1iZXJzID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUu TWVtYmVycyA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25l DQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFU eXBlLk1lbWJlcnMNCg0KKyAgICAgICAgICAgIHdoaWxlIHBUbXAuTmV4dCAhPSBOb25lOg0KDQor ICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCg0KKyAgICAgICAgICAgIHBUbXAuTmV4 dCA9IHBOZXdGaWVsZA0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk5leHQgPSBOb25lDQoNCisN Cg0KKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0KDQorICAgICAgICAgICAgcE5ld0ZpZWxkLk9m ZnNldCA9IDANCg0KKyAgICAgICAgICAgIGlmIE1heERhdGFUeXBlU2l6ZSA8IHBOZXdGaWVsZC5G aWVsZFR5cGUuVG90YWxTaXplOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlw ZS5Ub3RhbFNpemUgPSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZQ0KDQorICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBiaXQgZmllbGRzIGNhbiBi ZSBjb250YWluZWQgd2l0aGluIG9uZSBGaWVsZFR5cGUuDQoNCisgICAgICAgICAgICBjb25kMSA9 IChwVG1wICE9IE5vbmUpIGFuZCAocFRtcC5Jc0JpdEZpZWxkKSBhbmQgKA0KDQorICAgICAgICAg ICAgICAgIHBUbXAuRmllbGRUeXBlLlR5cGVOYW1lID09IHBOZXdGaWVsZC5GaWVsZFR5cGUuVHlw ZU5hbWUpDQoNCisgICAgICAgICAgICBjb25kMiA9IChwVG1wICE9IE5vbmUpIGFuZCAocFRtcC5C aXRPZmZzZXQgLSBwVG1wLk9mZnNldCAqIDggKw0KDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBUbXAuQml0V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGggPD0NCg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTmV3RmllbGQuRmllbGRU eXBlLlRvdGFsU2l6ZSAqIDgpDQoNCisgICAgICAgICAgICBpZiBjb25kMSBhbmQgY29uZDI6DQoN CisgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBUbXAuQml0T2Zmc2V0ICsg cFRtcC5CaXRXaWR0aA0KDQorICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQgPSBwVG1w Lk9mZnNldA0KDQorDQoNCisgICAgICAgICAgICAgICAgaWYgcE5ld0ZpZWxkLkJpdFdpZHRoID09 IDA6DQoNCisgICAgICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5CaXRXaWR0aCA9IHBOZXdGaWVs ZC5GaWVsZFR5cGUuVG90YWxTaXplICogOCAtICgNCg0KKyAgICAgICAgICAgICAgICAgICAgICAg IHBOZXdGaWVsZC5CaXRPZmZzZXQgLSBwVG1wLk9mZnNldCAqIDgpDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5CaXRPZmZzZXQgPSBzZWxmLl9fTmV3 RGF0YVR5cGUuVG90YWxTaXplICogOA0KDQorICAgICAgICAgICAgICAgIFVwZGF0ZVRvdGFsU2l6 ZSA9IFRydWUNCg0KKw0KDQorICAgICAgICBpZiBVcGRhdGVUb3RhbFNpemU6DQoNCisgICAgICAg ICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCg0KKyAg ICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFs U2l6ZQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBwTmV3RmllbGQu T2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSArIHNlbGYuX19BbGlnblN0dWZm KA0KDQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplLCBB bGlnbikNCg0KKyAgICAgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3 RmllbGQuT2Zmc2V0ICsgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUNCg0KKw0KDQorICAg ICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oDQoNCisgICAgICAgICAgICBzZWxm Ll9fUGFja0FsaWduLCBtYXgocEZpZWxkVHlwZS5BbGlnbiwgc2VsZi5fX05ld0RhdGFUeXBlLkFs aWduKSkNCg0KKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLkhhc0JpdEZpZWxkID0gVHJ1ZQ0K DQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0K DQorICAgIGRlZiBHZXREYXRhVHlwZShzZWxmLCBUeXBlTmFtZSk6DQoNCisgICAgICAgIGlmIFR5 cGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KDQorDQoNCisgICAgICAgIERhdGFUeXBlID0gc2Vs Zi5fX0RhdGFUeXBlTGlzdA0KDQorICAgICAgICB3aGlsZSBEYXRhVHlwZSAhPSBOb25lOg0KDQor ICAgICAgICAgICAgaWYgRGF0YVR5cGUuVHlwZU5hbWUgPT0gVHlwZU5hbWU6DQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIERhdGFUeXBlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KDQorICAgICAgICAgICAgRGF0YVR5cGUgPSBEYXRhVHlwZS5OZXh0DQoNCisgICAgICAgIHJl dHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAg ICBkZWYgRGF0YVR5cGVIYXNCaXRGaWVsZChzZWxmLCBUeXBlTmFtZSk6DQoNCisgICAgICAgIGlm IFR5cGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gRmFsc2UNCg0KKw0KDQor ICAgICAgICBwVHlwZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcFR5 cGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBUeXBlLlR5cGVOYW1lID09IFR5cGVOYW1l Og0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAgICAgICAgICBwVHlwZSA9IHBUeXBl Lk5leHQNCg0KKw0KDQorICAgICAgICBpZiBwVHlwZSA9PSBOb25lOg0KDQorICAgICAgICAgICAg cmV0dXJuIEZhbHNlDQoNCisNCg0KKyAgICAgICAgcFRtcCA9IHBUeXBlLk1lbWJlcnMNCg0KKyAg ICAgICAgd2hpbGUgcFRtcCAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcFRtcC5Jc0JpdEZp ZWxkOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlDQoNCisgICAgICAgICAgICBwVG1w ID0gcFRtcC5OZXh0DQoNCisgICAgICAgIHJldHVybiBGYWxzZQ0KDQorDQoNCisgICAgZGVmIER1 bXAoc2VsZiwgRmlsZU5hbWUpOg0KDQorICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICB3aXRo IG9wZW4oRmlsZU5hbWUsICd3JykgYXMgZjoNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCJQ YWNrQWxpZ24gPSAiICsgc3RyKHNlbGYuX19QYWNrQWxpZ24pICsgJ1xuJykNCg0KKyAgICAgICAg ICAgICAgICBwTm9kZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCg0KKyAgICAgICAgICAgICAgICB3 aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdzdHJ1 Y3Qge30gOiBBbGlnbiA6IHt9ICBUb3RhbFNpemUgOiAnLmZvcm1hdChzdHIocE5vZGUuVHlwZU5h bWUpLCBzdHIocE5vZGUuQWxpZ24pKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn JSN4XG4nJShwTm9kZS5Ub3RhbFNpemUpKQ0KDQorICAgICAgICAgICAgICAgICAgICAjIGYud3Jp dGUoIiBzdHJ1Y3QgIiArIHN0cihwTm9kZS5UeXBlTmFtZSkgKyAiIDogIiArICIgQWxpZ24gIiAr IHN0cihwTm9kZS5BbGlnbikpICsgIiBUb3RhbFNpemUgIiArIHN0cignJSN4JyVwTm9kZS5Ub3Rh bFNpemUpKQ0KDQorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdzdHJ1Y3Qge30gXG4nLmZv cm1hdChzdHIocE5vZGUuVHlwZU5hbWUpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgRk5vZGUg PSBwTm9kZS5NZW1iZXJzDQoNCisgICAgICAgICAgICAgICAgICAgIHdoaWxlKEZOb2RlICE9IE5v bmUpOg0KDQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgRk5vZGUuQXJyYXlOdW0gPiAwOg0K DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ0ZpZWxkTmFtZSA6IHt9ICwg T2Zmc2V0IDoge30sIEFycmF5TnVtIDoge30gLCBGaWVsZFR5cGVOYW1lIDoge30gLCBJc0JpdEZp ZWxkIDoge30gXG4gJy5mb3JtYXQoc3RyKEZOb2RlLkZpZWxkTmFtZSksIHN0cihGTm9kZS5PZmZz ZXQpLCBzdHIoRk5vZGUuQXJyYXlOdW0pLCBzdHIoRk5vZGUuRmllbGRUeXBlLlR5cGVOYW1lKSwg c3RyKEZOb2RlLklzQml0RmllbGQpKSkNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnRmllbGROYW1lIDoge30g LCBPZmZzZXQgOiB7fSwgRmllbGRUeXBlTmFtZSA6IHt9ICwgIElzQml0RmllbGQgOiB7fSBcbiAn LmZvcm1hdChzdHIoRk5vZGUuRmllbGROYW1lKSwgc3RyKEZOb2RlLk9mZnNldCksIHN0cihGTm9k ZS5GaWVsZFR5cGUuVHlwZU5hbWUpLCBzdHIoRk5vZGUuSXNCaXRGaWVsZCkpKQ0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQoNCisgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJ1xuJykNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5O ZXh0DQoNCisgICAgICAgICAgICBmLmNsb3NlKCkNCg0KKyAgICAgICAgZXhjZXB0IElPRXJyb3Ig YXMgZToNCg0KKyAgICAgICAgICAgIHByaW50KCJlcnJvciIpDQoNCisgICAgICAgICAgICBwYXNz DQoNCisNCg0KK2NsYXNzIFNWZnJEZWZhdWx0U3RvcmVOb2RlKG9iamVjdCk6DQoNCisNCg0KKyAg ICBkZWYgX19pbml0X18oc2VsZiwNCg0KKyAgICAgICAgICAgICAgICAgT2JqQWRkcj1Ob25lLA0K DQorICAgICAgICAgICAgICAgICBSZWZOYW1lPScnLA0KDQorICAgICAgICAgICAgICAgICBEZWZh dWx0U3RvcmVOYW1lSWQ9MCwNCg0KKyAgICAgICAgICAgICAgICAgRGVmYXVsdElkPTApOg0KDQor ICAgICAgICBzZWxmLk9iakFkZHIgPSBPYmpBZGRyDQoNCisgICAgICAgIHNlbGYuUmVmTmFtZSA9 IFJlZk5hbWUNCg0KKyAgICAgICAgc2VsZi5EZWZhdWx0U3RvcmVOYW1lSWQgPSBEZWZhdWx0U3Rv cmVOYW1lSWQNCg0KKyAgICAgICAgc2VsZi5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCg0KKyAgICAg ICAgc2VsZi5OZXh0ID0gTm9uZQ0KDQorDQoNCisNCg0KK2NsYXNzIENWZnJEZWZhdWx0U3RvcmUo b2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2Vs Zi5fX0RlZmF1bHRTdG9yZUxpc3QgPSBOb25lDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0ZXJEZWZh dWx0U3RvcmUoc2VsZiwgT2JqQWRkcjogRUZJX0lGUl9ERUZBVUxUU1RPUkUsIFJlZk5hbWUsIERl ZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKToNCg0KKyAgICAgICAgaWYgUmVmTmFtZSA9PSAn JyBvciBSZWZOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9f RGVmYXVsdFN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgaWYgcE5vZGUuUmVmTmFtZSA9PSBSZWZOYW1lOg0KDQorICAgICAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisgICAgICAgICAg ICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJEZWZhdWx0 U3RvcmVOb2RlKE9iakFkZHIsIFJlZk5hbWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElk KQ0KDQorDQoNCisgICAgICAgIGlmIHBOb2RlID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQoNCisNCg0KKyAg ICAgICAgcE5vZGUuTmV4dCA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQoNCisgICAgICAgIHNl bGYuX19EZWZhdWx0U3RvcmVMaXN0ID0gcE5vZGUNCg0KKw0KDQorICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBEZWZhdWx0SWRS ZWdpc3RlcmVkKHNlbGYsIERlZmF1bHRJZCk6DQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0Rl ZmF1bHRTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGlmIHBOb2RlLkRlZmF1bHRJZCA9PSBEZWZhdWx0SWQ6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoN CisgICAgICAgIHJldHVybiBGYWxzZQ0KDQorDQoNCisgICAgZGVmIFJlUmVnaXN0ZXJEZWZhdWx0 U3RvcmVCeUlkKHNlbGYsIERlZmF1bHRJZCwgUmVmTmFtZSwgRGVmYXVsdFN0b3JlTmFtZUlkKToN Cg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQoNCisgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5EZWZhdWx0 SWQgPT0gRGVmYXVsdElkOg0KDQorICAgICAgICAgICAgICAgIGJyZWFrDQoNCisgICAgICAgICAg ICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0K DQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLkRlZmF1bHRT dG9yZU5hbWVJZCA9PSBFRklfU1RSSU5HX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICAgICAg cE5vZGUuRGVmYXVsdFN0b3JlTmFtZUlkID09IERlZmF1bHRTdG9yZU5hbWVJZA0KDQorICAgICAg ICAgICAgICAgIHBOb2RlLlJlZk5hbWUgPSBSZWZOYW1lDQoNCisgICAgICAgICAgICAgICAgaWYg cE5vZGUuT2JqQWRkciAhPSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICBwTm9kZS5PYmpB ZGRyLkRlZmF1bHROYW1lID0gRGVmYXVsdFN0b3JlTmFtZUlkDQoNCisgICAgICAgICAgICBlbHNl Og0KDQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fUkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIEdldERlZmF1bHRJZChzZWxmLCBS ZWZOYW1lKToNCg0KKyAgICAgICAgcFRtcCA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQoNCisg ICAgICAgIHdoaWxlKHBUbXAgIT0gTm9uZSk6DQoNCisgICAgICAgICAgICBpZiBwVG1wLlJlZk5h bWUgPT0gUmVmTmFtZToNCg0KKyAgICAgICAgICAgICAgICBEZWZhdWx0SWQgPSBwVG1wLkRlZmF1 bHRJZA0KDQorICAgICAgICAgICAgICAgIHJldHVybiBEZWZhdWx0SWQsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQoNCisg ICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEDQoN CisNCg0KKyAgICBkZWYgQnVmZmVyVmFyU3RvcmVBbHRDb25maWdBZGQoc2VsZiwgRGVmYXVsdElk LCBCYXNlSW5mbywgVmFyU3RvcmVOYW1lLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWYXJTdG9yZUd1aWQsIFR5cGUsIFZhbHVlKToNCg0KKyAgICAgICAgaWYgVmFyU3Rv cmVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0ZBVEFMX0VSUk9SDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1bHRTdG9y ZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlm IHBOb2RlLkRlZmF1bHRJZCA9PSBEZWZhdWx0SWQ6DQoNCisgICAgICAgICAgICAgICAgYnJlYWsN Cg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorICAgICAgICBpZiBwTm9kZSA9 PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9V TkRFRklORUQNCg0KKyAgICAgICAgIyBwTm9kZS5EZWZhdWx0SWQgc3ByaW50ZiAoTmV3QWx0Q2Zn LCAiJTA0eCIsIHBOb2RlLT5tRGVmYXVsdElkKQ0KDQorICAgICAgICBnQ1ZmckJ1ZmZlckNvbmZp Zy5PcGVuKCkNCg0KKyAgICAgICAgaWYgZ0NWZnJCdWZmZXJDb25maWcuU2VsZWN0KFZhclN0b3Jl TmFtZSwgVmFyU3RvcmVHdWlkKSA9PSAwOg0KDQorICAgICAgICAgICAgUmV0dXJudmFsdWUgPSBn Q1ZmckJ1ZmZlckNvbmZpZy5Xcml0ZSgnYScsIFZhclN0b3JlTmFtZSwNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyU3RvcmVHdWlkLA0KDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTm9kZS5E ZWZhdWx0SWQsIFR5cGUsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJhc2VJbmZvLkluZm8uVmFyT2Zmc2V0LA0KDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlSW5mby5WYXJUb3RhbFNpemUs IFZhbHVlKQ0KDQorICAgICAgICAgICAgaWYgUmV0dXJudmFsdWUgIT0gMDoNCg0KKyAgICAgICAg ICAgICAgICBnQ1ZmckJ1ZmZlckNvbmZpZy5DbG9zZSgpDQoNCisgICAgICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUoUmV0dXJudmFsdWUpDQoNCisgICAgICAgIGdDVmZyQnVmZmVyQ29u ZmlnLkNsb3NlKCkNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQoNCisNCg0KKw0KDQorDQoNCitjbGFzcyBFRklfVkZSX1ZBUlNUT1JFX1RZUEUoRW51 bSk6DQoNCisgICAgRUZJX1ZGUl9WQVJTVE9SRV9JTlZBTElEID0gMA0KDQorICAgIEVGSV9WRlJf VkFSU1RPUkVfQlVGRkVSID0gMQ0KDQorICAgIEVGSV9WRlJfVkFSU1RPUkVfRUZJID0gMg0KDQor ICAgIEVGSV9WRlJfVkFSU1RPUkVfTkFNRSA9IDMNCg0KKyAgICBFRklfVkZSX1ZBUlNUT1JFX0JV RkZFUl9CSVRTID0gNA0KDQorDQoNCisNCg0KK2NsYXNzIEVmaVZhcigpOg0KDQorDQoNCisgICAg ZGVmIF9faW5pdF9fKHNlbGYsIFZhck5hbWU9MCwgVmFyU2l6ZT0wKToNCg0KKyAgICAgICAgc2Vs Zi5FZmlWYXJOYW1lID0gVmFyTmFtZQ0KDQorICAgICAgICBzZWxmLkVmaVZhclNpemUgPSBWYXJT aXplDQoNCisNCg0KKw0KDQorREVGQVVMVF9OQU1FX1RBQkxFX0lURU1TID0gMTAyNA0KDQorDQoN CisNCg0KK2NsYXNzIFNWZnJWYXJTdG9yYWdlTm9kZSgpOg0KDQorDQoNCisgICAgZGVmIF9faW5p dF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIFZhclN0b3JlTmFtZT0nJywNCg0KKyAgICAg ICAgICAgICAgICAgVmFyU3RvcmVJZD0wLA0KDQorICAgICAgICAgICAgICAgICBHdWlkPU5vbmUs DQoNCisgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXM9MCwNCg0KKyAgICAgICAgICAgICAgICAg RmxhZz1UcnVlLA0KDQorICAgICAgICAgICAgICAgICBFZmlWYWx1ZT1Ob25lLA0KDQorICAgICAg ICAgICAgICAgICBEYXRhVHlwZT1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBCaXRzVmFyc3Rv cmU9RmFsc2UpOg0KDQorDQoNCisgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQNCg0KKyAgICAgICAg c2VsZi5WYXJTdG9yZU5hbWUgPSBWYXJTdG9yZU5hbWUNCg0KKyAgICAgICAgc2VsZi5WYXJTdG9y ZUlkID0gVmFyU3RvcmVJZA0KDQorICAgICAgICBzZWxmLkFzc2lnbmVkRmxhZyA9IEZsYWcNCg0K KyAgICAgICAgc2VsZi5BdHRyaWJ1dGVzID0gQXR0cmlidXRlcw0KDQorICAgICAgICBzZWxmLk5l eHQgPSBOb25lDQoNCisgICAgICAgIHNlbGYuRWZpVmFyID0gRWZpVmFsdWUNCg0KKyAgICAgICAg c2VsZi5EYXRhVHlwZSA9IERhdGFUeXBlDQoNCisgICAgICAgIHNlbGYuTmFtZVNwYWNlID0gW10N Cg0KKw0KDQorICAgICAgICBpZiBFZmlWYWx1ZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgc2Vs Zi5WYXJzdG9yZVR5cGUgPSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9F RkkNCg0KKyAgICAgICAgZWxpZiBEYXRhVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYg Qml0c1ZhcnN0b3JlOg0KDQorICAgICAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0gRUZJ X1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSX0JJVFMNCg0KKyAgICAg ICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPSBFRklf VkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVINCg0KKyAgICAgICAgZWxz ZToNCg0KKyAgICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0gRUZJX1ZGUl9WQVJTVE9SRV9U WVBFLkVGSV9WRlJfVkFSU1RPUkVfTkFNRQ0KDQorDQoNCitjbGFzcyBTQ29uZmlnSXRlbSgpOg0K DQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYsDQoNCisgICAgICAgICAgICAgICAgIE5hbWU9 Tm9uZSwNCg0KKyAgICAgICAgICAgICAgICAgR3VpZD1Ob25lLA0KDQorICAgICAgICAgICAgICAg ICBJZD1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBUeXBlPU5vbmUsDQoNCisgICAgICAgICAg ICAgICAgIE9mZnNldD1Ob25lLA0KDQorICAgICAgICAgICAgICAgICBXaWR0aD1Ob25lLA0KDQor ICAgICAgICAgICAgICAgICBWYWx1ZT1Ob25lKToNCg0KKyAgICAgICAgc2VsZi5OYW1lID0gTmFt ZSAgIyB2YXJzdG9yZSBuYW1lDQoNCisgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQgICMgdmFyc3Rv cmUgZ3VpZCwgdmFyc3RvcmUgbmFtZSArIGd1aWQgZGVzaWRlIG9uZSB2YXJzdG9yZQ0KDQorICAg ICAgICBzZWxmLklkID0gSWQgICMgZGVmYXVsdCBJRA0KDQorICAgICAgICBpZiBUeXBlICE9IE5v bmU6DQoNCisgICAgICAgICAgICAjIGxpc3Qgb2YgT2Zmc2V0L1ZhbHVlIGluIHRoZSB2YXJzdG9y ZQ0KDQorICAgICAgICAgICAgc2VsZi5JbmZvU3RyTGlzdCA9IFNDb25maWdJbmZvKFR5cGUsIE9m ZnNldCwgV2lkdGgsIFZhbHVlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgc2Vs Zi5JbmZvU3RyTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0KDQorDQoN CisNCg0KK2NsYXNzIFNDb25maWdJbmZvKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWU6IEVGSV9JRlJfVFlQRV9WQUxVRSk6DQoNCisg ICAgICAgIHNlbGYuVHlwZSA9IFR5cGUNCg0KKyAgICAgICAgc2VsZi5PZmZzZXQgPSBPZmZzZXQN Cg0KKyAgICAgICAgc2VsZi5XaWR0aCA9IFdpZHRoDQoNCisgICAgICAgIHNlbGYuTmV4dCA9IE5v bmUNCg0KKyAgICAgICAgc2VsZi5WYWx1ZSA9IFZhbHVlDQoNCisNCg0KK2NsYXNzIENWZnJCdWZm ZXJDb25maWcob2JqZWN0KToNCg0KKyAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQ0KDQorDQoN CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFk ID0gTm9uZSAgIyBTQ29uZmlnSXRlbQ0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWlsID0g Tm9uZQ0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBOb25lDQoNCisNCg0KKyAgICBk ZWYgR2V0VmFySXRlbUxpc3Qoc2VsZik6DQoNCisgICAgICAgIHJldHVybiBzZWxmLl9fSXRlbUxp c3RIZWFkDQoNCisNCg0KKyAgICBAYWJzdHJhY3RtZXRob2QNCg0KKyAgICBkZWYgT3BlbihzZWxm KToNCg0KKyAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gc2VsZi5fX0l0ZW1MaXN0SGVhZA0K DQorDQoNCisgICAgQGFic3RyYWN0bWV0aG9kDQoNCisgICAgZGVmIENsb3NlKHNlbGYpOg0KDQor ICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBOb25lDQoNCisNCg0KKyAgICBAYWJzdHJhY3Rt ZXRob2QNCg0KKyAgICBkZWYgU2VsZWN0KHNlbGYsIE5hbWUsIEd1aWQsIElkPU5vbmUpOg0KDQor ICAgICAgICBpZiBOYW1lID09IE5vbmUgb3IgR3VpZCA9PSBOb25lOg0KDQorICAgICAgICAgICAg c2VsZi5fX0l0ZW1MaXN0UG9zID0gc2VsZi5fX0l0ZW1MaXN0SGVhZA0KDQorICAgICAgICAgICAg cmV0dXJuIDANCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHAgPSBzZWxmLl9fSXRl bUxpc3RIZWFkDQoNCisgICAgICAgICAgICB3aGlsZSBwICE9IE5vbmU6DQoNCisgICAgICAgICAg ICAgICAgaWYgcC5OYW1lICE9IE5hbWUgb3IgcC5HdWlkLl9fY21wX18oR3VpZCkgPT0gRmFsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAgICAgICAg ICAgY29udGludWUNCg0KKyAgICAgICAgICAgICAgICBpZiBJZCAhPSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICBpZiBwLklkID09IE5vbmUgb3IgcC5JZCAhPSBJZDoNCg0KKyAgICAgICAg ICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlDQoNCisgICAgICAgICAgICAgICAgZWxpZiBwLklkICE9IE5vbmU6DQoNCisgICAgICAg ICAgICAgICAgICAgIHAgPSBwLk5leHQNCg0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwDQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIDANCg0KKyAgICAgICAgcmV0dXJuIDENCg0KKw0KDQorICAgIEBhYnN0cmFj dG1ldGhvZA0KDQorICAgIGRlZiBSZWdpc3RlcihzZWxmLCBOYW1lLCBHdWlkLCBJZD1Ob25lKToN Cg0KKyAgICAgICAgaWYgc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCkgPT0gMDoNCg0KKyAgICAgICAg ICAgIHJldHVybiAxDQoNCisgICAgICAgIHBOZXcgPSBTQ29uZmlnSXRlbShOYW1lLCBHdWlkLCBJ ZCkNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOg0KDQorICAgICAgICAgICAgcmV0dXJuIDIN Cg0KKyAgICAgICAgaWYgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9PSBOb25lOg0KDQorICAgICAgICAg ICAgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9IHBOZXcNCg0KKyAgICAgICAgICAgIHNlbGYuX19JdGVt TGlzdFRhaWwgPSBwTmV3DQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBzZWxmLl9f SXRlbUxpc3RUYWlsLk5leHQgPSBwTmV3DQoNCisgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RU YWlsID0gcE5ldw0KDQorICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwTmV3DQoNCisgICAg ICAgIHJldHVybiAwDQoNCisNCg0KKyAgICBAYWJzdHJhY3RtZXRob2QNCg0KKyAgICBkZWYgV3Jp dGUoc2VsZiwgTW9kZSwgTmFtZSwgR3VpZCwgSWQsIFR5cGUsIE9mZnNldCwgV2lkdGgsDQoNCisg ICAgICAgICAgICAgIFZhbHVlOiBFRklfSUZSX1RZUEVfVkFMVUUpOg0KDQorICAgICAgICBSZXQg PSBzZWxmLlNlbGVjdChOYW1lLCBHdWlkKQ0KDQorICAgICAgICBpZiBSZXQgIT0gMDoNCg0KKyAg ICAgICAgICAgIHJldHVybiBSZXQNCg0KKw0KDQorICAgICAgICBpZiBNb2RlID09ICdhJzogICMg YWRkDQoNCisgICAgICAgICAgICBpZiBzZWxmLlNlbGVjdChOYW1lLCBHdWlkLCBJZCkgIT0gMDoN Cg0KKyAgICAgICAgICAgICAgICBwSXRlbSA9IFNDb25maWdJdGVtKE5hbWUsIEd1aWQsIElkLCBU eXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCg0KKyAgICAgICAgICAgICAgICBpZiBwSXRlbSA9 PSBOb25lOg0KDQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KDQorDQoNCisgICAgICAg ICAgICAgICAgaWYgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9PSBOb25lOg0KDQorICAgICAgICAgICAg ICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFkID0gcEl0ZW0NCg0KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fX0l0ZW1MaXN0VGFpbCA9IHBJdGVtDQoNCisgICAgICAgICAgICAgICAgZWxzZToN Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0VGFpbC5OZXh0ID0gcEl0ZW0N Cg0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0VGFpbCA9IHBJdGVtDQoNCisN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwSXRlbQ0KDQorDQoNCisg ICAgICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgICAgICMgdHJhbnZlcnNlIHRoZSBsaXN0 IHRvIGZpbmQgb3V0IGlmIHRoZXJlJ3MgYWxyZWFkeSB0aGUgdmFsdWUgZm9yIHRoZSBzYW1lIG9m ZnNldA0KDQorICAgICAgICAgICAgICAgIHBJbmZvID0gc2VsZi5fX0l0ZW1MaXN0UG9zLkluZm9T dHJMaXN0DQoNCisgICAgICAgICAgICAgICAgd2hpbGUgcEluZm8gIT0gTm9uZToNCg0KKyAgICAg ICAgICAgICAgICAgICAgaWYgcEluZm8uT2Zmc2V0ID09IE9mZnNldDoNCg0KKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAwDQoNCisgICAgICAgICAgICAgICAgICAgIHBJbmZvID0gcElu Zm8uTmV4dA0KDQorDQoNCisgICAgICAgICAgICAgICAgcEluZm8gPSBTQ29uZmlnSW5mbyhUeXBl LCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCg0KKyAgICAgICAgICAgICAgICBpZiBwSW5mbyA9PSBO b25lOg0KDQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KDQorDQoNCisgICAgICAgICAg ICAgICAgcEluZm8uTmV4dCA9IHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdA0KDQorICAg ICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdCA9IHBJbmZvDQoNCisN Cg0KKyAgICAgICAgZWxpZiBNb2RlID09ICdkJzogICMgZGVsZXRlDQoNCisgICAgICAgICAgICBp ZiBzZWxmLl9fSXRlbUxpc3RIZWFkID09IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAgICAgICAg ICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFkID0gc2VsZi5fX0l0ZW1MaXN0UG9zLk5leHQNCg0K Kw0KDQorICAgICAgICAgICAgcEl0ZW0gPSBzZWxmLl9fSXRlbUxpc3RIZWFkDQoNCisgICAgICAg ICAgICB3aGlsZSBwSXRlbS5OZXh0ICE9IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAgICAgICAg ICAgICAgICBwSXRlbSA9IHBJdGVtLk5leHQNCg0KKyAgICAgICAgICAgIHBJdGVtLk5leHQgPSBz ZWxmLl9fSXRlbUxpc3RQb3MuTmV4dA0KDQorDQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fSXRl bUxpc3RUYWlsID09IHNlbGYuX19JdGVtTGlzdFBvczoNCg0KKyAgICAgICAgICAgICAgICBzZWxm Ll9fSXRlbUxpc3RUYWlsID0gcEl0ZW0NCg0KKw0KDQorICAgICAgICAgICAgc2VsZi5fX0l0ZW1M aXN0UG9zID0gcEl0ZW0uTmV4dA0KDQorDQoNCisgICAgICAgIGVsaWYgTW9kZSA9PSAnaSc6ICAj IHNldCBpbmZvDQoNCisgICAgICAgICAgICBpZiBJZCAhPSBOb25lOg0KDQorICAgICAgICAgICAg ICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JZCA9IElkDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAg ICAgICAgICByZXR1cm4gMQ0KDQorICAgICAgICByZXR1cm4gMA0KDQorDQoNCitnQ1ZmckJ1ZmZl ckNvbmZpZyA9IENWZnJCdWZmZXJDb25maWcoKQ0KDQorDQoNCitjbGFzcyBFRklfVkFSU1RPUkVf SU5GTyhTdHJ1Y3R1cmUpOg0KDQorICAgIF9wYWNrXyA9IDENCg0KKyAgICBfZmllbGRzXyA9IFsN Cg0KKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0KDQorICAgICAgICAoJ0luZm8n LCBWYXJTdG9yZUluZm9Ob2RlKSwNCg0KKyAgICAgICAgKCdWYXJUeXBlJywgY191aW50OCksDQoN CisgICAgICAgICgnVmFyVG90YWxTaXplJywgY191aW50MzIpLA0KDQorICAgICAgICAoJ0lzQml0 VmFyJywgY19ib29sKSwNCg0KKyAgICBdDQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwN Cg0KKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZD1FRklfVkFSU1RPUkVfSURfSU5WQUxJRCwN Cg0KKyAgICAgICAgICAgICAgICAgVmFyTmFtZT1FRklfU1RSSU5HX0lEX0lOVkFMSUQsDQoNCisg ICAgICAgICAgICAgICAgIFZhck9mZnNldD1FRklfVkFST0ZGU0VUX0lOVkFMSUQsDQoNCisgICAg ICAgICAgICAgICAgIFZhclR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KDQorICAgICAgICAgICAg ICAgICBWYXJUb3RhbFNpemU9MCwNCg0KKyAgICAgICAgICAgICAgICAgSXNCaXRWYXI9RmFsc2Up Og0KDQorDQoNCisgICAgICAgIHNlbGYuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCg0KKyAgICAg ICAgc2VsZi5JbmZvLlZhck5hbWUgPSBWYXJOYW1lDQoNCisgICAgICAgIHNlbGYuSW5mby5WYXJP ZmZzZXQgPSBWYXJPZmZzZXQNCg0KKyAgICAgICAgc2VsZi5WYXJUb3RhbFNpemUgPSBWYXJUb3Rh bFNpemUNCg0KKyAgICAgICAgc2VsZi5Jc0JpdFZhciA9IElzQml0VmFyDQoNCisgICAgICAgIHNl bGYuVmFyVHlwZSA9IFZhclR5cGUNCg0KKw0KDQorDQoNCitjbGFzcyBCdWZmZXJWYXJTdG9yZUZp ZWxkSW5mb05vZGUoKToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBCYXNlSW5mbzog RUZJX1ZBUlNUT1JFX0lORk8pOg0KDQorDQoNCisgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvID0g RUZJX1ZBUlNUT1JFX0lORk8oKQ0KDQorICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5WYXJUeXBl ID0gQmFzZUluZm8uVmFyVHlwZQ0KDQorICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5WYXJUb3Rh bFNpemUgPSBCYXNlSW5mby5WYXJUb3RhbFNpemUNCg0KKyAgICAgICAgc2VsZi5WYXJTdG9yZUlu Zm8uSW5mby5WYXJPZmZzZXQgPSBCYXNlSW5mby5JbmZvLlZhck9mZnNldA0KDQorICAgICAgICBz ZWxmLlZhclN0b3JlSW5mby5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0KDQorICAg ICAgICBzZWxmLk5leHQgPSBOb25lDQoNCisNCg0KKw0KDQorY2xhc3MgQ1ZmckRhdGFTdG9yYWdl KG9iamVjdCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZik6DQoNCisgICAgICAgIHNl bGYuX19CdWZmZXJWYXJTdG9yZUxpc3QgPSBOb25lICAjIFNWZnJWYXJTdG9yYWdlTm9kZQ0KDQor ICAgICAgICBzZWxmLl9fRWZpVmFyU3RvcmVMaXN0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9f TmFtZVZhclN0b3JlTGlzdCA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdl Tm9kZSA9IE5vbmUNCg0KKyAgICAgICAgc2VsZi5fX05ld1ZhclN0b3JhZ2VOb2RlID0gTm9uZQ0K DQorICAgICAgICBzZWxmLl9fQnVmZmVyRmllbGRJbmZvTGlzdEhlYWQgPSBOb25lDQoNCisgICAg ICAgIHNlbGYuX19tQnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBOb25lDQoNCisgICAgICAgIHNl bGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcCA9IFtdDQoNCisgICAgICAgIGZvciBpIGluIHJhbmdl KDAsIEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFKToNCg0KKyAgICAgICAgICAgIHNl bGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcC5hcHBlbmQoMCkNCg0KKyAgICAgICAgI1F1ZXN0aW9u IElEMCBpcyByZXNlcnZlZA0KDQorICAgICAgICBzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRNYXBb MF0gPSAweDgwMDAwMDAwDQoNCisNCg0KKyAgICBkZWYgR2V0QnVmZmVyVmFyU3RvcmVMaXN0KHNl bGYpOg0KDQorICAgICAgICByZXR1cm4gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KDQorDQoN CisgICAgZGVmIF9fQ2hlY2tHdWlkRmllbGQoc2VsZiwgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91 bmRPbmUsIFJldHVybkNvZGUpOg0KDQorICAgICAgICBpZiBTdG9yZUd1aWQgIT0gTm9uZToNCg0K KyAgICAgICAgICAgICPjgIBJZiBoYXMgZ3VpZCBpbmZvLCBjb21wYXJlIHRoZSBndWlkIGZpbGVk Lg0KDQorICAgICAgICAgICAgaWYgcE5vZGUuR3VpZC5fX2NtcF9fKFN0b3JlR3VpZCk6DQoNCisg ICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoNCisgICAg ICAgICAgICAgICAgUmV0dXJuQ29kZSA9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIFJldHVybkNvZGUsIEhhc0ZvdW5kT25l DQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICAj44CAbm90IGhhcyBHdWlkIGZpZWxk LCBjaGVjayB3aGV0aGVyIHRoaXMgbmFtZSBpcyB0aGUgb25seSBvbmUuDQoNCisgICAgICAgICAg ICBpZiBIYXNGb3VuZE9uZToNCg0KKyAgICAgICAgICAgICAgICAjICBUaGUgbmFtZSBoYXMgY29u ZmxpY3QsIHJldHVybiBuYW1lIHJlZGVmaW5lZC4NCg0KKyAgICAgICAgICAgICAgICBSZXR1cm5D b2RlID0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX05BTUVfUkVERUZJTkVEX0VS Uk9SDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIFJldHVybkNvZGUsIEhhc0ZvdW5k T25lDQoNCisNCg0KKyAgICAgICAgICAgIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPSBwTm9k ZQ0KDQorICAgICAgICAgICAgSGFzRm91bmRPbmUgPSBUcnVlDQoNCisgICAgICAgIHJldHVybiBG YWxzZSwgUmV0dXJuQ29kZSwgSGFzRm91bmRPbmUNCg0KKw0KDQorICAgIGRlZiBfX0dldFZhclN0 b3JlQnlEYXRhVHlwZShzZWxmLCBEYXRhVHlwZU5hbWUsIFZhckd1aWQpOg0KDQorICAgICAgICBN YXRjaE5vZGUgPSBOb25lDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZlclZhclN0b3Jl TGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYg cE5vZGUuRGF0YVR5cGUuVHlwZU5hbWUgIT0gRGF0YVR5cGVOYW1lOg0KDQorICAgICAgICAgICAg ICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorICAgICAgICAgICAgICAgIGNvbnRpbnVlDQoNCisg ICAgICAgICAgICBpZiBWYXJHdWlkICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgcE5v ZGUuR3VpZC5fX2NtcF9fKFZhckd1aWQpOg0KDQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g cE5vZGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisgICAgICAgICAgICBl bHNlOg0KDQorICAgICAgICAgICAgICAgIGlmIE1hdGNoTm9kZSA9PSBOb25lOg0KDQorICAgICAg ICAgICAgICAgICAgICBNYXRjaE5vZGUgPSBwTm9kZQ0KDQorICAgICAgICAgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSB2YXJzdG9yZXMgcmVmZXJy ZWQgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmVzDQoNCisgICAgICAgICAgICAgICAgICAgIHJldHVy biBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVfREFUQVRZUEVfUkVERUZJ TkVEX0VSUk9SDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAg ICAgICBpZiBNYXRjaE5vZGUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBNYXRjaE5v ZGUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCg0KKw0KDQorICAgICAgICBy ZXR1cm4gTWF0Y2hOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoN CisgICAgIiIiDQoNCisgICAgICAgQmFzZSBvbiB0aGUgaW5wdXQgc3RvcmUgbmFtZSBhbmQgZ3Vp ZCB0byBmaW5kIHRoZSB2YXJzdG9yZSBpZC4NCg0KKyAgICAgICBJZiBib3RoIG5hbWUgYW5kIGd1 aWQgYXJlIGlucHV0ZWQsIGJhc2Ugb24gdGhlIG5hbWUgYW5kIGd1aWQgdG8NCg0KKyAgICAgICBm b3VuZCB0aGUgdmFyc3RvcmUuIElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRoZSBuYW1l IHRvDQoNCisgICAgICAgZm91bmQgdGhlIHZhcnN0b3JlIGFuZCBnbyBvbiB0byBjaGVjayB3aGV0 aGVyIG1vcmUgdGhhbiBvbmUgdmFyc3RvcmUNCg0KKyAgICAgICBoYXMgdGhlIHNhbWUgbmFtZS4g SWYgb25seSBoYXMgZm91bmQgb25lIHZhcnN0b3JlLCByZXR1cm4gdGhpcw0KDQorICAgICAgIHZh cnN0b3JlOyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBzYW1lIG5hbWUsIHJldHVybiB2 YXJzdG9yZQ0KDQorICAgICAgIG5hbWUgcmVkZWZpbmVkIGVycm9yLiBJZiBubyB2YXJzdG9yZSBm b3VuZCBieSB2YXJzdG9yZSBuYW1lLCBjYWxsDQoNCisgICAgICAgZnVuY3Rpb24gR2V0VmFyU3Rv cmVCeURhdGFUeXBlIGFuZCB1c2UgaW5wdXRlZCB2YXJzdG9yZSBuYW1lIGFzDQoNCisgICAgICAg ZGF0YSB0eXBlIG5hbWUgdG8gc2VhcmNoLg0KDQorICAgICAgICIiIg0KDQorDQoNCisgICAgZGVm IEdldFZhclN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9yZUd1aWQ9Tm9uZSk6DQoNCisNCg0K KyAgICAgICAgUmV0dXJuQ29kZSA9IE5vbmUNCg0KKyAgICAgICAgSGFzRm91bmRPbmUgPSBGYWxz ZQ0KDQorICAgICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlID0gTm9uZQ0KDQorDQoNCisg ICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KDQorICAgICAgICB3aGls ZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVOYW1lID09 IFN0b3JlTmFtZToNCg0KKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUsIEhhc0Zv dW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KDQorICAgICAgICAgICAgICAgICAgICBw Tm9kZSwgU3RvcmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJuQ29kZSkNCg0KKyAgICAgICAgICAg ICAgICBpZiBSZXN1bHQ6DQoNCisgICAgICAgICAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxm Ll9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0KKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5v ZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0VmaVZhclN0b3JlTGlzdA0K DQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgaWYgcE5vZGUu VmFyU3RvcmVOYW1lID09IFN0b3JlTmFtZToNCg0KKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJl dHVybkNvZGUsIEhhc0ZvdW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KDQorICAgICAg ICAgICAgICAgICAgICBwTm9kZSwgU3RvcmVHdWlkLCBIYXNGb3VuZE9uZSwgUmV0dXJuQ29kZSkN Cg0KKyAgICAgICAgICAgICAgICBpZiBSZXN1bHQ6DQoNCisgICAgICAgICAgICAgICAgICAgIFZh clN0b3JlSWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0KKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCg0KKyAgICAgICAg ICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX05h bWVWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAg ICAgICAgIGlmIHBOb2RlLlZhclN0b3JlTmFtZSA9PSBTdG9yZU5hbWU6DQoNCisgICAgICAgICAg ICAgICAgUmVzdWx0LCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZSA9IHNlbGYuX19DaGVja0d1aWRG aWVsZCgNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91bmRP bmUsIFJldHVybkNvZGUpDQoNCisgICAgICAgICAgICAgICAgaWYgUmVzdWx0Og0KDQorICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5WYXJT dG9yZUlkDQoNCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBSZXR1cm5D b2RlDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBp ZiBIYXNGb3VuZE9uZToNCg0KKyAgICAgICAgICAgIFZhclN0b3JlSWQgPSBzZWxmLl9fQ3VyclZh clN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgICAgIFZhclN0 b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KDQorICAgICAgICBwTm9kZSwgUmV0dXJu Q29kZSA9IHNlbGYuX19HZXRWYXJTdG9yZUJ5RGF0YVR5cGUoU3RvcmVOYW1lLA0KDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmVH dWlkKSAgIw0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgc2Vs Zi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoNCisgICAgICAgICAgICBWYXJTdG9yZUlk ID0gcE5vZGUuVmFyU3RvcmVJZA0KDQorDQoNCisgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBS ZXR1cm5Db2RlDQoNCisNCg0KKyAgICBkZWYgX19HZXRGcmVlVmFyU3RvcmVJZChzZWxmLCBWYXJU eXBlKToNCg0KKw0KDQorICAgICAgICBJbmRleCA9IDANCg0KKyAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkUpOg0KDQorICAgICAgICAgICAg aWYgc2VsZi5fX0ZyZWVWYXJTdG9yZUlkQml0TWFwW2ldICE9IDB4RkZGRkZGRkY6DQoNCisgICAg ICAgICAgICAgICAgSW5kZXggPSBpDQoNCisgICAgICAgICAgICAgICAgYnJlYWsNCg0KKyAgICAg ICAgaWYgSW5kZXggPT0gRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkU6DQoNCisgICAg ICAgICAgICByZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgICAgICBP ZmZzZXQgPSAwDQoNCisgICAgICAgIE1hc2sgPSAweDgwMDAwMDAwDQoNCisgICAgICAgIHdoaWxl IE1hc2sgIT0gMDoNCg0KKyAgICAgICAgICAgIGlmIChzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRN YXBbSW5kZXhdICYgTWFzaykgPT0gMDoNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fRnJlZVZh clN0b3JlSWRCaXRNYXBbSW5kZXhdIHw9IE1hc2sNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4g KEluZGV4IDw8IEVGSV9CSVRTX1NISUZUX1BFUl9VSU5UMzIpICsgT2Zmc2V0DQoNCisgICAgICAg ICAgICBNYXNrID4+PSAxDQoNCisgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KDQorICAgICAgICBy ZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCg0KKw0KDQorICAgIGRlZiBfX0NoZWNrVmFy U3RvcmVJZEZyZWUoc2VsZiwgVmFyU3RvcmVJZCk6DQoNCisNCg0KKyAgICAgICAgSW5kZXggPSBp bnQoVmFyU3RvcmVJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQoNCisgICAgICAgIE9mZnNldCA9 IFZhclN0b3JlSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQoNCisgICAgICAgIHJldHVybiAoc2Vs Zi5fX0ZyZWVWYXJTdG9yZUlkQml0TWFwW0luZGV4XSAmDQoNCisgICAgICAgICAgICAgICAgKDB4 ODAwMDAwMDAgPj4gT2Zmc2V0KSkgPT0gMA0KDQorDQoNCisgICAgZGVmIF9fTWFya1ZhclN0b3Jl SWRVc2VkKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorDQoNCisgICAgICAgIEluZGV4ID0gaW50KFZh clN0b3JlSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0KDQorICAgICAgICBPZmZzZXQgPSBWYXJT dG9yZUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KDQorICAgICAgICBzZWxmLl9fRnJlZVZhclN0 b3JlSWRCaXRNYXBbSW5kZXhdIHw9ICgweDgwMDAwMDAwID4+IE9mZnNldCkNCg0KKw0KDQorICAg IGRlZiBEZWNsYXJlQnVmZmVyVmFyU3RvcmUoc2VsZiwNCg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0b3JlTmFtZSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd1 aWQsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZURCLA0KDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZU5hbWUsDQoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBWYXJTdG9yZUlkLA0KDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSXNCaXRWYXJTdG9yZSwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHI9 MCwNCg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYWc9VHJ1ZSk6DQoNCisNCg0K KyAgICAgICAgaWYgU3RvcmVOYW1lID09IE5vbmUgb3IgR3VpZCA9PSBOb25lIG9yIERhdGFUeXBl REIgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkFUQUxfRVJST1INCg0KKyAgICAgICAgXywgUmV0dXJuQ29kZSA9IHNlbGYuR2V0VmFyU3Rv cmVJZChTdG9yZU5hbWUsIEd1aWQpDQoNCisNCg0KKyAgICAgICAgaWYgUmV0dXJuQ29kZSA9PSBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCg0KKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAgRGF0YVR5 cGUsIFJldHVybkNvZGUgPSBEYXRhVHlwZURCLkdldERhdGFUeXBlKFR5cGVOYW1lKQ0KDQorDQoN CisgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1M6DQoNCisgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KDQorDQoNCisgICAgICAgIGlm IFZhclN0b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQoNCisgICAgICAgICAgICBW YXJTdG9yZUlkID0gc2VsZi5fX0dldEZyZWVWYXJTdG9yZUlkKA0KDQorICAgICAgICAgICAgICAg IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUikNCg0KKyAgICAg ICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVja1ZhclN0b3JlSWRGcmVlKFZh clN0b3JlSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHNlbGYu X19NYXJrVmFyU3RvcmVJZFVzZWQoVmFyU3RvcmVJZCkNCg0KKyAgICAgICAgcE5ldyA9IFNWZnJW YXJTdG9yYWdlTm9kZShTdG9yZU5hbWUsIFZhclN0b3JlSWQsIEd1aWQsIEF0dHIsIEZsYWcsIE5v bmUsDQoNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVR5cGUsIElzQml0 VmFyU3RvcmUpDQoNCisNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQor DQoNCisgICAgICAgIHBOZXcuTmV4dCA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCg0KKyAg ICAgICAgc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdCA9IHBOZXcNCg0KKw0KDQorICAgICAgICBp ZiBnQ1ZmckJ1ZmZlckNvbmZpZy5SZWdpc3RlcihTdG9yZU5hbWUsIEd1aWQpICE9IDA6DQoNCisg ICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9SDQoN CisNCg0KKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoN CisNCg0KKyAgICBkZWYgRGVjbGFyZU5hbWVWYXJTdG9yZUJlZ2luKHNlbGYsIFN0b3JlTmFtZSwg VmFyU3RvcmVJZCk6DQoNCisgICAgICAgIGlmIFN0b3JlTmFtZSA9PSBOb25lOg0KDQorICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoN CisgICAgICAgIF8sIFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3JlSWQoU3RvcmVOYW1lKQ0K DQorICAgICAgICBpZiBSZXR1cm5Db2RlID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUND RVNTOg0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURF RklORUQNCg0KKw0KDQorICAgICAgICBpZiBWYXJTdG9yZUlkID09IEVGSV9WQVJTVE9SRV9JRF9J TlZBTElEOg0KDQorICAgICAgICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuX19HZXRGcmVlVmFyU3Rv cmVJZCgNCg0KKyAgICAgICAgICAgICAgICBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9W QVJTVE9SRV9OQU1FKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgaWYgc2VsZi5f X0NoZWNrVmFyU3RvcmVJZEZyZWUoVmFyU3RvcmVJZCkgPT0gRmFsc2U6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRUlEX1JFREVGSU5F RA0KDQorICAgICAgICAgICAgc2VsZi5fX01hcmtWYXJTdG9yZUlkVXNlZChWYXJTdG9yZUlkKQ0K DQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclZhclN0b3JhZ2VOb2RlKFN0b3JlTmFtZSwgVmFy U3RvcmVJZCkNCg0KKw0KDQorICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQor DQoNCisgICAgICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IHBOb2RlDQoNCisgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVm IERlY2xhcmVOYW1lVmFyU3RvcmVFbmQoc2VsZiwgR3VpZCk6DQoNCisgICAgICAgIHNlbGYuX19O ZXdWYXJTdG9yYWdlTm9kZS5HdWlkID0gR3VpZA0KDQorICAgICAgICBzZWxmLl9fTmV3VmFyU3Rv cmFnZU5vZGUuTmV4dCA9IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0DQoNCisgICAgICAgIHNlbGYu X19OYW1lVmFyU3RvcmVMaXN0ID0gc2VsZi5fX05ld1ZhclN0b3JhZ2VOb2RlDQoNCisgICAgICAg IHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCg0KKw0KDQorICAgIGRlZiBOYW1lVGFi bGVBZGRJdGVtKHNlbGYsIEl0ZW0pOg0KDQorICAgICAgICBzZWxmLl9fTmV3VmFyU3RvcmFnZU5v ZGUuTmFtZVNwYWNlLmFwcGVuZChJdGVtKQ0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXROYW1lVmFyU3RvcmVJbmZv KHNlbGYsIEJhc2VJbmZvLCBJbmRleCk6DQoNCisgICAgICAgIGlmIEJhc2VJbmZvID09IE5vbmU6 DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VS Uk9SDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9PSBOb25l Og0KDQorICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9HRVRfTlZW QVJTVE9SRV9FUlJPUg0KDQorDQoNCisgICAgICAgIEJhc2VJbmZvLkluZm8uVmFyTmFtZSA9IHNl bGYuX19DdXJyVmFyU3RvcmFnZU5vZGUuTmFtZVNwYWNlW0luZGV4XQ0KDQorDQoNCisgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVm IEdldFZhclN0b3JlVHlwZShzZWxmLCBWYXJTdG9yZUlkKToNCg0KKw0KDQorICAgICAgICBWYXJT dG9yZVR5cGUgPSBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9JTlZBTElE DQoNCisNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJ RDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZVR5cGUNCg0KKw0KDQorICAgICAgICBw Tm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUg IT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJ ZDoNCg0KKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPSBwTm9kZS5WYXJzdG9yZVR5cGUN Cg0KKyAgICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVUeXBlDQoNCisgICAgICAgICAgICBw Tm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19FZmlWYXJT dG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAg IGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCg0KKyAgICAgICAgICAgICAgICBW YXJTdG9yZVR5cGUgPSBwTm9kZS5WYXJzdG9yZVR5cGUNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gVmFyU3RvcmVUeXBlDQoNCisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0K DQorICAgICAgICBwTm9kZSA9IHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0DQoNCisgICAgICAgIHdo aWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09 IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0gcE5vZGUuVmFy c3RvcmVUeXBlDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlVHlwZQ0KDQorICAg ICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFZhclN0 b3JlVHlwZQ0KDQorDQoNCisgICAgZGVmIEdldFZhclN0b3JlTmFtZShzZWxmLCBWYXJTdG9yZUlk KToNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCg0K KyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLlZh clN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE5vZGUu VmFyU3RvcmVOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9f RWZpVmFyU3RvcmVMaXN0DQoNCisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAg ICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAg ICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAg ICAgIHBOb2RlID0gc2VsZi5fX05hbWVWYXJTdG9yZUxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5v ZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3Rv cmVJZDoNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gcE5vZGUuVmFyU3RvcmVOYW1lLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorICAgICAgICAgICAgcE5vZGUgPSBwTm9k ZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTkRFRklORUQNCg0KKw0KDQorDQoNCisgICAgZGVmIEdldEJ1ZmZlclZhclN0b3JlRGF0 YVR5cGVOYW1lKHNlbGYsIFZhclN0b3JlSWQpOg0KDQorDQoNCisgICAgICAgIERhdGFUeXBlTmFt ZSA9IE5vbmUNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5W QUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZU5hbWUsIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1 ZmZlclZhclN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KDQorICAgICAgICAg ICAgICAgIERhdGFUeXBlTmFtZSA9IHBOb2RlLkRhdGFUeXBlLlR5cGVOYW1lDQoNCisgICAgICAg ICAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NV Q0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAg IHJldHVybiBEYXRhVHlwZU5hbWUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQN Cg0KKw0KDQorICAgIGRlZiBHZXRFZmlWYXJTdG9yZUluZm8oc2VsZiwgQmFzZUluZm86IEVGSV9W QVJTVE9SRV9JTkZPKToNCg0KKw0KDQorICAgICAgICBpZiBCYXNlSW5mbyA9PSBOb25lOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0K DQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPT0gTm9uZToNCg0K KyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fR0VUX0VGSVZBUlNU T1JFX0VSUk9SDQoNCisNCg0KKyAgICAgICAgQmFzZUluZm8uSW5mby5WYXJOYW1lID0gc2VsZi5f X0N1cnJWYXJTdG9yYWdlTm9kZS5FZmlWYXIuRWZpVmFyTmFtZQ0KDQorICAgICAgICBCYXNlSW5m by5WYXJUb3RhbFNpemUgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLkVmaVZhci5FZmlWYXJT aXplDQoNCisNCg0KKyAgICAgICAgaWYgQmFzZUluZm8uVmFyVG90YWxTaXplID09IDE6DQoNCisg ICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgNCg0K KyAgICAgICAgZWxpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gMjoNCg0KKyAgICAgICAgICAg IEJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYNCg0KKyAgICAgICAg ZWxpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0gNDoNCg0KKyAgICAgICAgICAgIEJhc2VJbmZv LlZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzINCg0KKyAgICAgICAgZWxpZiBCYXNl SW5mby5WYXJUb3RhbFNpemUgPT0gODoNCg0KKyAgICAgICAgICAgIEJhc2VJbmZvLlZhclR5cGUg PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCg0KKw0KDQor ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQor ICAgIGRlZiBHZXRWYXJTdG9yZUd1aWQoc2VsZiwgVmFyU3RvcmVJZCk6DQoNCisNCg0KKyAgICAg ICAgVmFyR3VpZCA9IE5vbmUNCg0KKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RP UkVfSURfSU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQoNCisNCg0KKyAg ICAgICAgcE5vZGUgPSBzZWxmLl9fQnVmZmVyVmFyU3RvcmVMaXN0DQoNCisgICAgICAgIHdoaWxl IHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZh clN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyR3VpZCA9IHBOb2RlLkd1aWQNCg0KKyAg ICAgICAgICAgICAgICByZXR1cm4gVmFyR3VpZA0KDQorICAgICAgICAgICAgcE5vZGUgPSBwTm9k ZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fRWZpVmFyU3RvcmVMaXN0DQoN CisgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5W YXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQoNCisgICAgICAgICAgICAgICAgVmFyR3VpZCA9IHBO b2RlLkd1aWQNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gVmFyR3VpZA0KDQorICAgICAgICAg ICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fTmFt ZVZhclN0b3JlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAgICAg ICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KDQorICAgICAgICAgICAg ICAgIFZhckd1aWQgPSBwTm9kZS5HdWlkDQoNCisgICAgICAgICAgICAgICAgcmV0dXJuIFZhckd1 aWQNCg0KKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJl dHVybiBWYXJHdWlkDQoNCisNCg0KKyAgICBkZWYgQWRkQnVmZmVyVmFyU3RvcmVGaWVsZEluZm8o c2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCg0KKw0KDQorICAgICAgICBwTmV3 ID0gQnVmZmVyVmFyU3RvcmVGaWVsZEluZm9Ob2RlKEJhc2VJbmZvKQ0KDQorICAgICAgICBpZiBw TmV3ID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZBVEFMX0VSUk9SDQoNCisNCg0KKyAgICAgICAgaWYgc2VsZi5fX0J1ZmZlckZpZWxkSW5m b0xpc3RIZWFkID09IE5vbmU6DQoNCisgICAgICAgICAgICBzZWxmLl9fQnVmZmVyRmllbGRJbmZv TGlzdEhlYWQgPSBwTmV3DQoNCisgICAgICAgICAgICBzZWxmLl9fbUJ1ZmZlckZpZWxkSW5mb0xp c3RUYWlsID0gcE5ldw0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgc2VsZi5fX21C dWZmZXJGaWVsZEluZm9MaXN0VGFpbC5OZXh0ID0gcE5ldw0KDQorICAgICAgICAgICAgc2VsZi5f X21CdWZmZXJGaWVsZEluZm9MaXN0VGFpbCA9IHBOZXcNCg0KKw0KDQorICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorDQoNCitjbGFzcyBDVmZy U3RyaW5nREIob2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAg ICAgICAgc2VsZi5fX1N0cmluZ0ZpbGVOYW1lID0gJycNCg0KKw0KDQorICAgIGRlZiBHZXRWYXJT dG9yZU5hbWVGcm9tU3RyaW5nSWQoc2VsZiwgU3RyaW5nSWQpOg0KDQorICAgICAgICBpZiBzZWxm Ll9fU3RyaW5nRmlsZU5hbWUgPT0gJyc6DQoNCisgICAgICAgICAgICByZXR1cm4gTm9uZQ0KDQor ICAgICAgICB0cnk6DQoNCisgICAgICAgICAgICBmID0gb3BlbihzZWxmLl9fU3RyaW5nRmlsZU5h bWUpDQoNCisgICAgICAgICAgICBTdHJpbmdQdHIgPSBmLnJlYWQoKQ0KDQorICAgICAgICAgICAg Zi5jbG9zZSgpDQoNCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOg0KDQorICAgICAgICAgICAgcHJp bnQoJ0Vycm9yJykNCg0KKw0KDQorZ0NWZnJTdHJpbmdEQiA9IENWZnJTdHJpbmdEQigpDQoNCisN Cg0KK0VGSV9SVUxFX0lEX1NUQVJUID0gMHgwMQ0KDQorRUZJX1JVTEVfSURfSU5WQUxJRCA9IDB4 MDANCg0KKw0KDQorDQoNCitjbGFzcyBTVmZyUnVsZU5vZGUoKToNCg0KKw0KDQorICAgIGRlZiBf X2luaXRfXyhzZWxmLCBSdWxlTmFtZT1Ob25lLCBSdWxlSWQ9MCk6DQoNCisgICAgICAgIHNlbGYu UnVsZUlkID0gUnVsZUlkDQoNCisgICAgICAgIHNlbGYuUnVsZU5hbWUgPSBSdWxlTmFtZQ0KDQor ICAgICAgICBzZWxmLk5leHQgPSBOb25lDQoNCisNCg0KKw0KDQorY2xhc3MgQ1ZmclJ1bGVzREIo b2JqZWN0KToNCg0KKw0KDQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCg0KKyAgICAgICAgc2Vs Zi5fX1J1bGVMaXN0ID0gTm9uZQ0KDQorICAgICAgICBzZWxmLl9fRnJlZVJ1bGVJZCA9IEVGSV9W QVJTVE9SRV9JRF9TVEFSVA0KDQorDQoNCisgICAgZGVmIFJlZ2lzdGVyUnVsZShzZWxmLCBSdWxl TmFtZSk6DQoNCisgICAgICAgIGlmIFJ1bGVOYW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICBy ZXR1cm4NCg0KKw0KDQorICAgICAgICBwTmV3ID0gU1ZmclJ1bGVOb2RlKFJ1bGVOYW1lLCBzZWxm Ll9fRnJlZVJ1bGVJZCkNCg0KKyAgICAgICAgaWYgcE5ldyA9PSBOb25lOiByZXR1cm4NCg0KKyAg ICAgICAgc2VsZi5fX0ZyZWVSdWxlSWQgKz0gMQ0KDQorICAgICAgICBwTmV3Lk5leHQgPSBzZWxm Ll9fUnVsZUxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1J1bGVMaXN0ID0gcE5ldw0KDQorDQoNCisg ICAgZGVmIEdldFJ1bGVJZChzZWxmLCBSdWxlTmFtZSk6DQoNCisgICAgICAgIGlmIFJ1bGVOYW1l ID09IE5vbmU6DQoNCisgICAgICAgICAgICByZXR1cm4NCg0KKw0KDQorICAgICAgICBwTm9kZSA9 IHNlbGYuX19SdWxlTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgaWYgcE5vZGUuUnVsZU5hbWUgPT0gUnVsZU5hbWU6DQoNCisgICAgICAgICAgICAg ICAgcmV0dXJuIHBOb2RlLlJ1bGVJZA0KDQorICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0 DQoNCisNCg0KKyAgICAgICAgcmV0dXJuIEVGSV9SVUxFX0lEX0lOVkFMSUQNCg0KKw0KDQorDQoN CitFRklfUVVFU1RJT05fSURfTUFYID0gMHhGRkZGDQoNCitFRklfRlJFRV9RVUVTVElPTl9JRF9C SVRNQVBfU0laRSA9IGludCgNCg0KKyAgICAoRUZJX1FVRVNUSU9OX0lEX01BWCArIDEpIC8gRUZJ X0JJVFNfUEVSX1VJTlQzMikNCg0KK0VGSV9RVUVTVElPTl9JRF9JTlZBTElEID0gMHgwDQoNCisN Cg0KKw0KDQorY2xhc3MgRUZJX1FVRVNJT05fVFlQRShFbnVtKToNCg0KKyAgICBRVUVTVElPTl9O T1JNQUwgPSAwDQoNCisgICAgUVVFU1RJT05fREFURSA9IDENCg0KKyAgICBRVUVTVElPTl9USU1F ID0gMg0KDQorICAgIFFVRVNUSU9OX1JFRiA9IDMNCg0KKw0KDQorDQoNCitjbGFzcyBTVmZyUXVl c3Rpb25Ob2RlKCk6DQoNCisNCg0KKyAgICBkZWYgX19pbml0X18oc2VsZiwgTmFtZT1Ob25lLCBW YXJJZFN0cj1Ob25lLCBCaXRNYXNrPTApOiAgIw0KDQorICAgICAgICBzZWxmLk5hbWUgPSBOYW1l DQoNCisgICAgICAgIHNlbGYuVmFySWRTdHIgPSBWYXJJZFN0cg0KDQorICAgICAgICBzZWxmLlF1 ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBzZWxmLkJpdE1h c2sgPSBCaXRNYXNrDQoNCisgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCg0KKyAgICAgICAgc2Vs Zi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQoNCisNCg0KKw0KDQor REFURV9ZRUFSX0JJVE1BU0sgPSAweDAwMDBGRkZGDQoNCitEQVRFX01PTlRIX0JJVE1BU0sgPSAw eDAwRkYwMDAwDQoNCitEQVRFX0RBWV9CSVRNQVNLID0gMHhGRjAwMDAwMA0KDQorVElNRV9IT1VS X0JJVE1BU0sgPSAweDAwMDAwMEZGDQoNCitUSU1FX01JTlVURV9CSVRNQVNLID0gMHgwMDAwRkYw MA0KDQorVElNRV9TRUNPTkRfQklUTUFTSyA9IDB4MDBGRjAwMDANCg0KKw0KDQorDQoNCitjbGFz cyBDVmZyUXVlc3Rpb25EQihvYmplY3QpOg0KDQorDQoNCisgICAgZGVmIF9faW5pdF9fKHNlbGYp Og0KDQorICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcCA9IFtdDQoNCisgICAgICAgIGZvciBp IGluIHJhbmdlKDAsIEVGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFKToNCg0KKyAgICAg ICAgICAgIHNlbGYuX19GcmVlUUlkQml0TWFwLmFwcGVuZCgwKQ0KDQorDQoNCisgICAgICAgICMg UXVlc3Rpb24gSUQgMCBpcyByZXNlcnZlZC4NCg0KKyAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRN YXBbMF0gPSAweDgwMDAwMDAwDQoNCisNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9 IE5vbmUNCg0KKw0KDQorICAgIGRlZiBGaW5kUXVlc3Rpb25CeU5hbWUoc2VsZiwgTmFtZSk6DQoN CisgICAgICAgIGlmIE5hbWUgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNl bGYuX19RdWVzdGlvbkxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAg ICAgICAgICAgIGlmIHBOb2RlLk5hbWUgPT0gTmFtZToNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2Rl ID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgRmluZFF1ZXN0aW9uQnlJZChzZWxmLCBR dWVzdGlvbklkKToNCg0KKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVFU1RJT05fSURf SU5WQUxJRDoNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVINCg0KKw0KDQorICAgICAgICBwTm9kZSA9IHNlbGYuX19RdWVzdGlv bkxpc3QNCg0KKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgIGlm IHBOb2RlLlF1ZXN0aW9uSWQgPT0gUXVlc3Rpb25JZDoNCg0KKyAgICAgICAgICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKyAgICAgICAgICAgIHBOb2Rl ID0gcE5vZGUuTmV4dA0KDQorDQoNCisgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5ERUZJTkVEDQoNCisNCg0KKyAgICBkZWYgX19HZXRGcmVlUXVlc3Rpb25JZChzZWxm KToNCg0KKw0KDQorICAgICAgICBJbmRleCA9IDANCg0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo MCwgRUZJX0ZSRUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KDQorICAgICAgICAgICAgaWYg c2VsZi5fX0ZyZWVRSWRCaXRNYXBbaV0gIT0gMHhGRkZGRkZGRjoNCg0KKyAgICAgICAgICAgICAg ICBJbmRleCA9IGkNCg0KKyAgICAgICAgICAgICAgICBicmVhaw0KDQorICAgICAgICBpZiBJbmRl eCA9PSBFRklfRlJFRV9RVUVTVElPTl9JRF9CSVRNQVBfU0laRToNCg0KKyAgICAgICAgICAgIHJl dHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorDQoNCisgICAgICAgIE9mZnNldCA9IDAN Cg0KKyAgICAgICAgTWFzayA9IDB4ODAwMDAwMDANCg0KKyAgICAgICAgd2hpbGUgTWFzayAhPSAw Og0KDQorICAgICAgICAgICAgaWYgKHNlbGYuX19GcmVlUUlkQml0TWFwW0luZGV4XSAmIE1hc2sp ID09IDA6DQoNCisgICAgICAgICAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdIHw9 IE1hc2sNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gKEluZGV4IDw8IEVGSV9CSVRTX1NISUZU X1BFUl9VSU5UMzIpICsgT2Zmc2V0DQoNCisgICAgICAgICAgICBNYXNrID4+PSAxDQoNCisgICAg ICAgICAgICBPZmZzZXQgKz0gMQ0KDQorDQoNCisgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05f SURfSU5WQUxJRA0KDQorDQoNCisgICAgZGVmIF9fQ2hlY2tRdWVzdGlvbklkRnJlZShzZWxmLCBR SWQpOg0KDQorICAgICAgICBJbmRleCA9IGludChRSWQgLyBFRklfQklUU19QRVJfVUlOVDMyKQ0K DQorICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQoNCisgICAgICAg IHJldHVybiAoc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAwMDAwMDAgPj4gT2Zm c2V0KSkgPT0gMA0KDQorDQoNCisgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRVc2VkKHNlbGYsIFFJ ZCk6DQoNCisNCg0KKyAgICAgICAgSW5kZXggPSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQz MikNCg0KKyAgICAgICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KDQorICAg ICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0 KQ0KDQorDQoNCisgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRVbnVzZWQoc2VsZiwgUUlkKToNCg0K KyAgICAgICAgSW5kZXggPSBpbnQoUUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikNCg0KKyAgICAg ICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQzMg0KDQorICAgICAgICBzZWxmLl9f RnJlZVFJZEJpdE1hcFtJbmRleF0gJj0gfigweDgwMDAwMDAwID4+IE9mZnNldCkNCg0KKw0KDQor ICAgIGRlZiBSZWdpc3RlclF1ZXN0aW9uKHNlbGYsIE5hbWUsIFZhcklkU3RyLCBRdWVzdGlvbklk KToNCg0KKw0KDQorICAgICAgICBpZiAoTmFtZSAhPSBOb25lKSBhbmQgKHNlbGYuRmluZFF1ZXN0 aW9uQnlOYW1lKE5hbWUpID09IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTKToNCg0K KyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f UkVERUZJTkVEDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5hbWUs IFZhcklkU3RyKQ0KDQorICAgICAgICBpZiBwTm9kZSA9PSBOb25lOg0KDQorICAgICAgICAgICAg cmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09V UkNFUw0KDQorDQoNCisgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lO VkFMSUQ6DQoNCisgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVzdGlv bklkKCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVja1F1 ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIHJl dHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUVVFU1RJT05JRF9SRURF RklORUQNCg0KKyAgICAgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25J ZCkNCg0KKw0KDQorICAgICAgICBwTm9kZS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAg ICAgICBwTm9kZS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBzZWxmLl9f UXVlc3Rpb25MaXN0ID0gcE5vZGUNCg0KKw0KDQorICAgICAgICAjIGdDRm9ybVBrZy5Eb1BlbmRp bmdBc3NpZ24NCg0KKw0KDQorICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBVcGRhdGVRdWVzdGlvbklkKHNl bGYsIFFJZCwgTmV3UUlkKToNCg0KKw0KDQorICAgICAgICBpZiBRSWQgPT0gTmV3UUlkOg0KDQor ICAgICAgICAgICAgIyBkb24ndCB1cGRhdGUNCg0KKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgICAgIGlmIHNlbGYuX19DaGVj a1F1ZXN0aW9uSWRGcmVlKE5ld1FJZCkgPT0gRmFsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KDQorDQoNCisgICAgICAgIHBOb2Rl ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBUZW1wTGlzdCA9IFtdDQoNCisgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBwTm9kZS5RdWVzdGlv bklkID09IFFJZDoNCg0KKyAgICAgICAgICAgICAgICBUZW1wTGlzdC5hcHBlbmQocE5vZGUpDQoN CisgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKw0KDQorICAgICAgICBpZiBsZW4o VGVtcExpc3QpID09IDA6DQoNCisgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOREVGSU5FRA0KDQorDQoNCisgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVu dXNlZChRSWQpDQoNCisNCg0KKyAgICAgICAgZm9yIHBOb2RlIGluIFRlbXBMaXN0Og0KDQorICAg ICAgICAgICAgcE5vZGUuUXVlc3Rpb25JZCA9IE5ld1FJZA0KDQorDQoNCisgICAgICAgIHNlbGYu X19NYXJrUXVlc3Rpb25JZFVzZWQoTmV3UUlkKQ0KDQorDQoNCisgICAgICAgICMgZ0NGb3JtUGtn LkRvUGVuZGluZ0Fzc2lnbg0KDQorICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgIGRlZiBHZXRRdWVzdGlvbklkKHNlbGYsIE5hbWUsIFZh cklkU3RyPU5vbmUsIFFUeXBlPU5vbmUpOg0KDQorDQoNCisgICAgICAgIFF1ZXN0aW9uSWQgPSBF RklfUVVFU1RJT05fSURfSU5WQUxJRA0KDQorICAgICAgICBCaXRNYXNrID0gMHgwMDAwMDAwMA0K DQorICAgICAgICBpZiBRVHlwZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgUVR5cGUgPSBFRklf UVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KDQorDQoNCisgICAgICAgIGlmIE5hbWUgPT0g Tm9uZSBhbmQgVmFySWRTdHIgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBCaXRNYXNrLCBRVHlwZQ0KDQorDQoNCisgICAgICAgIHBOb2RlID0gc2VsZi5fX1F1ZXN0 aW9uTGlzdA0KDQorICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KDQorDQoNCisgICAgICAg ICAgICBpZiBOYW1lICE9IE5vbmU6DQoNCisgICAgICAgICAgICAgICAgaWYgcE5vZGUuTmFtZSAh PSBOYW1lOg0KDQorICAgICAgICAgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCg0KKyAg ICAgICAgICAgICAgICAgICAgY29udGludWUNCg0KKw0KDQorICAgICAgICAgICAgaWYgVmFySWRT dHIgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5WYXJJZFN0ciAhPSBWYXJJ ZFN0cjoNCg0KKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQoNCisgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlDQoNCisNCg0KKyAgICAgICAgICAgIFF1ZXN0aW9uSWQg PSBwTm9kZS5RdWVzdGlvbklkDQoNCisgICAgICAgICAgICBCaXRNYXNrID0gcE5vZGUuQml0TWFz aw0KDQorICAgICAgICAgICAgaWYgUVR5cGUgIT0gTm9uZToNCg0KKyAgICAgICAgICAgICAgICBR VHlwZSA9IHBOb2RlLlFUeXBlDQoNCisgICAgICAgICAgICBicmVhaw0KDQorDQoNCisgICAgICAg IHJldHVybiBRdWVzdGlvbklkLCBCaXRNYXNrLCBRVHlwZQ0KDQorDQoNCisgICAgZGVmIFJlZ2lz dGVyTmV3RGF0ZVF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJhc2VWYXJJZCwgUXVlc3Rpb25JZCk6DQoN CisNCg0KKyAgICAgICAgaWYgQmFzZVZhcklkID09ICcnIGFuZCBOYW1lID09IE5vbmU6DQoNCisg ICAgICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQor ICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0K DQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tR dWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQN Cg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQp DQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgICAgICBWYXJJZFN0ckxpc3QgPSBbXQ0KDQorICAgICAg ICBpZiBCYXNlVmFySWQgIT0gJyc6DQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5k KEJhc2VWYXJJZCArICcuWWVhcicpDQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5k KEJhc2VWYXJJZCArICcuTW9udGgnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVu ZChCYXNlVmFySWQgKyAnLkRheScpDQoNCisNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuWWVhcicpDQoNCisgICAgICAgICAgICBW YXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLk1vbnRoJykNCg0KKyAgICAgICAgICAgIFZhcklk U3RyTGlzdC5hcHBlbmQoTmFtZSArICcuRGF5JykNCg0KKw0KDQorICAgICAgICBwTm9kZUxpc3Qg PSBbXQ0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJM aXN0WzBdLCBEQVRFX1lFQVJfQklUTUFTSykNCg0KKyAgICAgICAgaWYgcE5vZGUgIT0gTm9uZToN Cg0KKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQoNCisgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX09VVF9GT1JfUkVTT1VSQ0VTDQoNCisNCg0KKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rp b25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFsxXSwgREFURV9NT05USF9CSVRNQVNLKQ0KDQorICAg ICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChw Tm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAg ICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzJdLCBEQVRF X0RBWV9CSVRNQVNLKQ0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAg ICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAg ICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9J RF9JTlZBTElEOg0KDQorICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVl c3Rpb25JZCgpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ2hl Y2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAg ICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0K DQorICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KDQor DQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAg ICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5v ZGVMaXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFsw XS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KDQorICAgICAgICBwTm9k ZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCg0KKyAgICAg ICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQoN CisgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQoNCisgICAgICAgIHBO b2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5O ZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25MaXN0 ID0gcE5vZGVMaXN0WzBdDQoNCisNCg0KKyAgICAgICAgIyBEb1BlbmRpbmdBc3NpZ24NCg0KKyAg ICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQoNCisNCg0KKyAgICBkZWYgUmVnaXN0ZXJOZXdUaW1lUXVlc3Rpb24oc2VsZiwgTmFtZSwgQmFz ZVZhcklkLCBRdWVzdGlvbklkKToNCg0KKyAgICAgICAgaWYgQmFzZVZhcklkID09ICcnIGFuZCBO YW1lID09IE5vbmU6DQoNCisgICAgICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElP Tl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0 RnJlZVF1ZXN0aW9uSWQoKQ0KDQorICAgICAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgICAg ICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0K KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9u SWRVc2VkKFF1ZXN0aW9uSWQpDQoNCisgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCg0KKw0KDQorICAgICAgICBWYXJJZFN0ckxp c3QgPSBbXQ0KDQorICAgICAgICBpZiBCYXNlVmFySWQgIT0gJyc6DQoNCisgICAgICAgICAgICBW YXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuSG91cicpDQoNCisgICAgICAgICAgICBW YXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuTWludXRlJykNCg0KKyAgICAgICAgICAg IFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5TZWNvbmQnKQ0KDQorDQoNCisgICAg ICAgIGVsc2U6DQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLkhv dXInKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChOYW1lICsgJy5NaW51dGUn KQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChOYW1lICsgJy5TZWNvbmQnKQ0K DQorDQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtdDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1 ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMF0sIFRJTUVfSE9VUl9CSVRNQVNLKQ0KDQor ICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVu ZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQor ICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTmFtZSwgVmFySWRTdHJMaXN0WzFdLCBU SU1FX01JTlVURV9CSVRNQVNLKQ0KDQorICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KDQorICAg ICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAg ICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VU X0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUo TmFtZSwgVmFySWRTdHJMaXN0WzJdLCBUSU1FX1NFQ09ORF9CSVRNQVNLKQ0KDQorICAgICAgICBp ZiBwTm9kZSAhPSBOb25lOg0KDQorICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkN Cg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBp ZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAg UXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAgIGVsc2U6 DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklk KSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KDQorICAgICAgICAgICAgc2VsZi5fX01hcmtR dWVzdGlvbklkVXNlZChRdWVzdGlvbklkKQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5R dWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25J ZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzJdLlF1ZXN0aW9uSWQgPSBRdWVz dGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fVElNRQ0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUgPSBFRklfUVVFU0lP Tl9UWVBFLlFVRVNUSU9OX1RJTUUNCg0KKyAgICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0 ID0gcE5vZGVMaXN0WzFdDQoNCisgICAgICAgIHBOb2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0 WzJdDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0K DQorICAgICAgICBzZWxmLl9fUXVlc3Rpb25MaXN0ID0gcE5vZGVMaXN0WzBdDQoNCisNCg0KKyAg ICAgICAgIyBEb1BlbmRpbmdBc3NpZ24NCg0KKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0ZXJS ZWZRdWVzdGlvbihzZWxmLCBOYW1lLCBCYXNlVmFySWQsIFF1ZXN0aW9uSWQpOg0KDQorDQoNCisg ICAgICAgIGlmIEJhc2VWYXJJZCA9PSAnJyBhbmQgTmFtZSA9PSBOb25lOg0KDQorICAgICAgICAg ICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJP Ug0KDQorDQoNCisgICAgICAgIFZhcklkU3RyTGlzdCA9IFtdDQoNCisgICAgICAgIGlmIEJhc2VW YXJJZCAhPSAnJzoNCg0KKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklk ICsgJy5RdWVzdGlvbklkJykNCg0KKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFz ZVZhcklkICsgJy5Gb3JtSWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChC YXNlVmFySWQgKyAnLkZvcm1TZXRHdWlkJykNCg0KKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5h cHBlbmQoQmFzZVZhcklkICsgJy5EZXZpY2VQYXRoJykNCg0KKw0KDQorICAgICAgICBlbHNlOg0K DQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLlF1ZXN0aW9u SWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLkZv cm1JZCcpDQoNCisgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcu Rm9ybVNldEd1aWQnKQ0KDQorICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFy SWQgKyAnLkRldmljZVBhdGgnKQ0KDQorDQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtdDQoNCisg ICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMF0pDQoN CisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3QuYXBw ZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIFF1ZXN0 aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQorDQoN CisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0p DQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3Qu YXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIFF1 ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQor DQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3Rb Ml0pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxp c3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJu IFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0K DQorDQoNCisgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxp c3RbM10pDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0 dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNF Uw0KDQorDQoNCisgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFM SUQ6DQoNCisgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVzdGlvbklk KCkNCg0KKyAgICAgICAgZWxzZToNCg0KKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVja1F1ZXN0 aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KDQorICAgICAgICAgICAgICAgIHJldHVy biBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQoNCisgICAg ICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQoNCisNCg0KKyAg ICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBO b2RlTGlzdFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3Rb Ml0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzNdLlF1ZXN0 aW9uSWQgPSBRdWVzdGlvbklkDQoNCisNCg0KKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlFU eXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAgcE5vZGVMaXN0 WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKyAgICAgICAgcE5v ZGVMaXN0WzNdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCg0KKw0KDQor ICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KDQorICAgICAgICBwTm9k ZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMl0uTmV4 dCA9IHBOb2RlTGlzdFszXQ0KDQorICAgICAgICBwTm9kZUxpc3RbM10uTmV4dCA9IHNlbGYuX19R dWVzdGlvbkxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFsw XQ0KDQorICAgICAgICB4ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KDQorDQoNCisgICAgICAgICMg RG9QZW5kaW5nQXNzaWduDQoNCisNCg0KKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQoNCisNCg0KKyAgICBkZWYgUmVnaXN0ZXJPbGRE YXRlUXVlc3Rpb24oc2VsZiwgWWVhclZhcklkLCBNb250aFZhcklkLCBEYXlWYXJJZCwgUXVlc3Rp b25JZCk6DQoNCisgICAgICAgIHBOb2RlTGlzdCA9IFtdDQoNCisgICAgICAgIGlmIFllYXJWYXJJ ZCA9PSAnJyBvciBNb250aFZhcklkID09ICcnIG9yIERheVZhcklkID09ICcnIG9yIFllYXJWYXJJ ZCA9PSBOb25lIG9yIE1vbnRoVmFySWQgPT0gTm9uZSBvciBEYXlWYXJJZCA9PSBOb25lOg0KDQor ICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9F UlJPUl9TS0lQRUQNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9u ZSwgWWVhclZhcklkLCBEQVRFX1lFQVJfQklUTUFTSykNCg0KKyAgICAgICAgaWYgcE5vZGUgIT0g Tm9uZToNCg0KKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQoNCisgICAgICAg IGVsc2U6DQoNCisgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KDQorDQoNCisgICAgICAg IHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBNb250aFZhcklkLCBEQVRFX01PTlRIX0JJ VE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0 dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VU X0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUo Tm9uZSwgRGF5VmFySWQsIERBVEVfREFZX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9 IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAg ICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAg ICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAg ICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAgIGVs c2U6DQoNCisgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlv bklkKSA9PSBGYWxzZToNCg0KKyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lE X0lOVkFMSUQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAg ICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCg0KKw0KDQorICAgICAg ICBwTm9kZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVM aXN0WzFdLlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5R dWVzdGlvbklkID0gUXVlc3Rpb25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBF RklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlFU eXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQoNCisgICAgICAgIHBOb2RlTGlz dFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KDQorICAgICAgICBw Tm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMV0u TmV4dCA9IHBOb2RlTGlzdFsyXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYu X19RdWVzdGlvbkxpc3QNCg0KKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlz dFswXQ0KDQorDQoNCisgICAgICAgICMgRG9QZW5kaW5nQXNzaWduDQoNCisgICAgICAgIHJldHVy biBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisg ICAgZGVmIFJlZ2lzdGVyT2xkVGltZVF1ZXN0aW9uKHNlbGYsIEhvdXJWYXJJZCwgTWludXRlVmFy SWQsIFNlY29uZFZhcklkLCBRdWVzdGlvbklkKToNCg0KKyAgICAgICAgcE5vZGVMaXN0ID0gW10N Cg0KKyAgICAgICAgaWYgSG91clZhcklkID09ICcnIG9yIE1pbnV0ZVZhcklkID09ICcnIG9yIFNl Y29uZFZhcklkID09ICcnIG9yIEhvdXJWYXJJZCA9PSBOb25lIG9yIE1pbnV0ZVZhcklkID09IE5v bmUgb3IgU2Vjb25kVmFySWQgPT0gTm9uZToNCg0KKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQoNCisNCg0KKyAgICAg ICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5vbmUsIEhvdXJWYXJJZCwgVElNRV9IT1VSX0JJ VE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9k ZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0 dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VU X0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUo Tm9uZSwgTWludXRlVmFySWQsIFRJTUVfTUlOVVRFX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBO b2RlICE9IE5vbmU6DQoNCisgICAgICAgICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQor ICAgICAgICBlbHNlOg0KDQorICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZB TElELCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQor ICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgU2Vjb25kVmFySWQsIFRJTUVf U0VDT05EX0JJVE1BU0spDQoNCisgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQoNCisgICAgICAg ICAgICBwTm9kZUxpc3QuYXBwZW5kKHBOb2RlKQ0KDQorICAgICAgICBlbHNlOg0KDQorICAgICAg ICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCg0KKw0KDQorICAgICAgICBpZiBRdWVzdGlvbklkID09 IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KDQorICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNl bGYuX19HZXRGcmVlUXVlc3Rpb25JZCgpDQoNCisgICAgICAgIGVsc2U6DQoNCisgICAgICAgICAg ICBpZiBzZWxmLl9fQ2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCg0K KyAgICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCg0KKyAgICAgICAgICAgIHNlbGYuX19NYXJrUXVl c3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCg0KKw0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uUXVl c3Rpb25JZCA9IFF1ZXN0aW9uSWQNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1ZXN0aW9uSWQg PSBRdWVzdGlvbklkDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0gUXVlc3Rp b25JZA0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX1RJTUUNCg0KKyAgICAgICAgcE5vZGVMaXN0WzFdLlFUeXBlID0gRUZJX1FVRVNJT05f VFlQRS5RVUVTVElPTl9USU1FDQoNCisgICAgICAgIHBOb2RlTGlzdFsyXS5RVHlwZSA9IEVGSV9R VUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KDQorICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9 IHBOb2RlTGlzdFsxXQ0KDQorICAgICAgICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsy XQ0KDQorICAgICAgICBwTm9kZUxpc3RbMl0uTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCg0K KyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0KDQorDQoNCisgICAg ICAgICMgRG9QZW5kaW5nQXNzaWduDQoNCisgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KDQorDQoNCisgICAgZGVmIFByaW50QWxsUXVl c3Rpb24oc2VsZiwgRmlsZU5hbWUpOg0KDQorDQoNCisgICAgICAgIHdpdGggb3BlbihGaWxlTmFt ZSwgJ3cnKSBhcyBmOg0KDQorICAgICAgICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0 DQoNCisgICAgICAgICAgICB3aGlsZShwTm9kZSAhPSBOb25lKToNCg0KKw0KDQorICAgICAgICAg ICAgICAgIGYud3JpdGUoJ1F1ZXN0aW9uIFZhcklkIGlzIHt9IGFuZCBRdWVzdGlvbklkIGlzICcu Zm9ybWF0KHBOb2RlLlZhcklkU3RyKSkNCg0KKyAgICAgICAgICAgICAgICBmLndyaXRlKCclZFxu JyUocE5vZGUuUXVlc3Rpb25JZCkpDQoNCisgICAgICAgICAgICAgICAgIyBmLndyaXRlKCclI3hc biclKHBOb2RlLlF1ZXN0aW9uSWQpKQ0KDQorICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KDQorDQoNCisgICAgICAgIGYuY2xvc2UoKQ0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlDQpkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvbWFp bi5weSBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL21haW4ucHkNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi42MjRjZmUzYWE4DQotLS0gL2Rldi9u dWxsDQorKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9tYWluLnB5DQpA QCAtMCwwICsxLDI3IEBADQorZnJvbSBkaXN0dXRpbHMuZmlsZWxpc3QgaW1wb3J0IEZpbGVMaXN0 DQoNCitmcm9tIHBpY2tsZXRvb2xzIGltcG9ydCB1aW50OA0KDQoraW1wb3J0IHN5cw0KDQorZnJv bSB0a2ludGVyLnR0ayBpbXBvcnQgVHJlZXZpZXcNCg0KK2Zyb20gYW50bHI0IGltcG9ydCoNCg0K K2Zyb20gVmZyQ29tcGlsZXIuVmZyU3ludGF4TGV4ZXIgaW1wb3J0IFZmclN5bnRheExleGVyDQoN Citmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRheFBhcnNlciBpbXBvcnQgVmZyU3ludGF4UGFyc2Vy DQoNCitmcm9tIFZmckNvbXBpbGVyLlZmclN5bnRheFZpc2l0b3IgaW1wb3J0IFZmclN5bnRheFZp c2l0b3INCg0KK2Zyb20gVmZyQ29tcGlsZXIuVmZyRXJyb3IgaW1wb3J0ICoNCg0KKw0KDQorZGVm IFZmclBhcnNlKEluZmlsZSwgWWFtbE91dEZpbGUsIEpzb25PdXRGaWxlKToNCg0KKyAgICBnQ1Zm ckVycm9ySGFuZGxlLlNldElucHV0RmlsZSAoSW5maWxlKQ0KDQorICAgIElucHV0U3RyZWFtID0g RmlsZVN0cmVhbShJbmZpbGUpDQoNCisgICAgTGV4ZXIgPSBWZnJTeW50YXhMZXhlcihJbnB1dFN0 cmVhbSkNCg0KKyAgICBTdHJlYW0gPSBDb21tb25Ub2tlblN0cmVhbShMZXhlcikNCg0KKyAgICBQ YXJzZXIgPSBWZnJTeW50YXhQYXJzZXIoU3RyZWFtKQ0KDQorICAgIFRyZWUgPSBQYXJzZXIudmZy UHJvZ3JhbSgpDQoNCisgICAgVmlzaXRvciA9IFZmclN5bnRheFZpc2l0b3IoKQ0KDQorICAgIFZp c2l0b3IudmlzaXQoVHJlZSkNCg0KKyAgICBWaXNpdG9yLkR1bXBZYW1sKFZpc2l0b3IuR2V0Um9v dCgpLCBZYW1sT3V0RmlsZSkNCg0KKyAgICBWaXNpdG9yLkR1bXBKc29uKEpzb25PdXRGaWxlKQ0K DQorDQoNCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KDQorICAgIEluZmlsZSA9ICdWZnJD b21waWxlci90ZXN0LmknDQoNCisgICAgWWFtbE91dEZpbGUgPSAnVmZyQ29tcGlsZXIvdGVzdC55 YW1sJw0KDQorICAgIEpzb25PdXRGaWxlID0gJ1ZmckNvbXBpbGVyL3Rlc3QuanNvbicNCg0KKyAg ICBWZnJQYXJzZShJbmZpbGUsIFlhbWxPdXRGaWxlLCBKc29uT3V0RmlsZSkNCg0KLS0gDQoyLjI3 LjAud2luZG93cy4xDQoNCg==