From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35996C433EF for ; Sun, 31 Oct 2021 16:52:46 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AB91E60E54 for ; Sun, 31 Oct 2021 16:52:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org AB91E60E54 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:37974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mhE4a-0008Iq-L3 for qemu-devel@archiver.kernel.org; Sun, 31 Oct 2021 12:52:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mhDvx-00020T-79 for qemu-devel@nongnu.org; Sun, 31 Oct 2021 12:43:50 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:31545) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mhDvr-0008Aq-FT for qemu-devel@nongnu.org; Sun, 31 Oct 2021 12:43:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1635698623; x=1667234623; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yr6pjNb80XVZzIrF9C/kQ/r7D91nMTkNgNfW7ejExCY=; b=tKtnZ73dmVrPAyj5k2bhOt8HUcWDx7jJC3nwaGS6wo5wKZue7ncKNkJs FD8A4iLfTiVlzJ7UNN4npxLS08oBtFahP5m73UDFxhKFozr5L5SW1s8sF gRann0TwQeT+6oLSsftm10FsZuvX+Pi7vAlXESd3gKAcD9NGIGOEs64C3 U=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-01.qualcomm.com with ESMTP; 31 Oct 2021 09:43:36 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg01-sd.qualcomm.com with ESMTP; 31 Oct 2021 09:43:35 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 962BB331F; Sun, 31 Oct 2021 11:43:29 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PULL 29/30] Hexagon HVX (tests/tcg/hexagon) scatter_gather test Date: Sun, 31 Oct 2021 11:43:08 -0500 Message-Id: <1635698589-31849-30-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1635698589-31849-1-git-send-email-tsimpson@quicinc.com> References: <1635698589-31849-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.248, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QWNrZWQtYnk6IFJpY2hhcmQgSGVuZGVyc29uIDxyaWNoYXJkLmhlbmRlcnNvbkBsaW5hcm8ub3Jn PgpTaWduZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+Ci0t LQogdGVzdHMvdGNnL2hleGFnb24vc2NhdHRlcl9nYXRoZXIuYyB8IDEwMTEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy90Y2cvaGV4YWdvbi9NYWtlZmlsZS50YXJn ZXQgIHwgICAgMiArCiAyIGZpbGVzIGNoYW5nZWQsIDEwMTMgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RzL3RjZy9oZXhhZ29uL3NjYXR0ZXJfZ2F0aGVyLmMKCmRpZmYgLS1n aXQgYS90ZXN0cy90Y2cvaGV4YWdvbi9zY2F0dGVyX2dhdGhlci5jIGIvdGVzdHMvdGNnL2hleGFn b24vc2NhdHRlcl9nYXRoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i OTNlYjE4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGNnL2hleGFnb24vc2NhdHRlcl9nYXRo ZXIuYwpAQCAtMCwwICsxLDEwMTEgQEAKKy8qCisgKiAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMSBR dWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK KyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoKKyAqIFRo aXMgZXhhbXBsZSB0ZXN0cyB0aGUgSFZYIHNjYXR0ZXIvZ2F0aGVyIGluc3RydWN0aW9ucworICoK KyAqIFNlZSBzZWN0aW9uIDUuMTMgb2YgdGhlIFY2OCBIVlggUHJvZ3JhbW1lcidzIFJlZmVyZW5j ZQorICoKKyAqIFRoZXJlIGFyZSAzIG1haW4gY2xhc3NlcyBvcGVyYXRpb25zCisgKiAgICAgXzE2 ICAgICAgICAgICAgICAgICAxNi1iaXQgZWxlbWVudHMgYW5kIDE2LWJpdCBvZmZzZXRzCisgKiAg ICAgXzMyICAgICAgICAgICAgICAgICAzMi1iaXQgZWxlbWVudHMgYW5kIDMyLWJpdCBvZmZzZXRz CisgKiAgICAgXzE2XzMyICAgICAgICAgICAgICAxNi1iaXQgZWxlbWVudHMgYW5kIDMyLWJpdCBv ZmZzZXRzCisgKgorICogVGhlcmUgYXJlIGFsc28gbWFza2VkIGFuZCBhY2N1bXVsYXRlIHZlcnNp b25zCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKwordHlwZWRlZiBsb25nIEhW WF9WZWN0b3IgICAgICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDEyOCkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxMjgpKSk7 Cit0eXBlZGVmIGxvbmcgSFZYX1ZlY3RvclBhaXIgICBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9z aXplX18oMjU2KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9f KChhbGlnbmVkKDEyOCkpKTsKK3R5cGVkZWYgbG9uZyBIVlhfVmVjdG9yUHJlZCAgIF9fYXR0cmli dXRlX18oKF9fdmVjdG9yX3NpemVfXygxMjgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTI4KSkpOworCisjZGVmaW5lIFZTQ0FUVEVSXzE2 KEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBcCisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0 ZXJtaF8xMjhCKChpbnQpQkFTRSwgUkdOLCBPRkYsIFZBTFMpCisjZGVmaW5lIFZTQ0FUVEVSXzE2 X01BU0tFRChNQVNLLCBCQVNFLCBSR04sIE9GRiwgVkFMUykgXAorICAgIF9fYnVpbHRpbl9IRVhB R09OX1Y2X3ZzY2F0dGVybWhxXzEyOEIoTUFTSywgKGludClCQVNFLCBSR04sIE9GRiwgVkFMUykK KyNkZWZpbmUgVlNDQVRURVJfMzIoQkFTRSwgUkdOLCBPRkYsIFZBTFMpIFwKKyAgICBfX2J1aWx0 aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13XzEyOEIoKGludClCQVNFLCBSR04sIE9GRiwgVkFMUykK KyNkZWZpbmUgVlNDQVRURVJfMzJfTUFTS0VEKE1BU0ssIEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBc CisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtd3FfMTI4QihNQVNLLCAoaW50KUJB U0UsIFJHTiwgT0ZGLCBWQUxTKQorI2RlZmluZSBWU0NBVFRFUl8xNl8zMihCQVNFLCBSR04sIE9G RiwgVkFMUykgXAorICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3XzEyOEIoKGlu dClCQVNFLCBSR04sIE9GRiwgVkFMUykKKyNkZWZpbmUgVlNDQVRURVJfMTZfMzJfTUFTS0VEKE1B U0ssIEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBcCisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdnNj YXR0ZXJtaHdxXzEyOEIoTUFTSywgKGludClCQVNFLCBSR04sIE9GRiwgVkFMUykKKyNkZWZpbmUg VlNDQVRURVJfMTZfQUNDKEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBcCisgICAgX19idWlsdGluX0hF WEFHT05fVjZfdnNjYXR0ZXJtaF9hZGRfMTI4QigoaW50KUJBU0UsIFJHTiwgT0ZGLCBWQUxTKQor I2RlZmluZSBWU0NBVFRFUl8zMl9BQ0MoQkFTRSwgUkdOLCBPRkYsIFZBTFMpIFwKKyAgICBfX2J1 aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13X2FkZF8xMjhCKChpbnQpQkFTRSwgUkdOLCBPRkYs IFZBTFMpCisjZGVmaW5lIFZTQ0FUVEVSXzE2XzMyX0FDQyhCQVNFLCBSR04sIE9GRiwgVkFMUykg XAorICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3X2FkZF8xMjhCKChpbnQpQkFT RSwgUkdOLCBPRkYsIFZBTFMpCisKKyNkZWZpbmUgVkdBVEhFUl8xNihEU1RBRERSLCBCQVNFLCBS R04sIE9GRikgXAorICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaF8xMjhCKERTVEFE RFIsIChpbnQpQkFTRSwgUkdOLCBPRkYpCisjZGVmaW5lIFZHQVRIRVJfMTZfTUFTS0VEKERTVEFE RFIsIE1BU0ssIEJBU0UsIFJHTiwgT0ZGKSBcCisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdmdh dGhlcm1ocV8xMjhCKERTVEFERFIsIE1BU0ssIChpbnQpQkFTRSwgUkdOLCBPRkYpCisjZGVmaW5l IFZHQVRIRVJfMzIoRFNUQUREUiwgQkFTRSwgUkdOLCBPRkYpIFwKKyAgICBfX2J1aWx0aW5fSEVY QUdPTl9WNl92Z2F0aGVybXdfMTI4QihEU1RBRERSLCAoaW50KUJBU0UsIFJHTiwgT0ZGKQorI2Rl ZmluZSBWR0FUSEVSXzMyX01BU0tFRChEU1RBRERSLCBNQVNLLCBCQVNFLCBSR04sIE9GRikgXAor ICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtd3FfMTI4QihEU1RBRERSLCBNQVNLLCAo aW50KUJBU0UsIFJHTiwgT0ZGKQorI2RlZmluZSBWR0FUSEVSXzE2XzMyKERTVEFERFIsIEJBU0Us IFJHTiwgT0ZGKSBcCisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1od18xMjhCKERT VEFERFIsIChpbnQpQkFTRSwgUkdOLCBPRkYpCisjZGVmaW5lIFZHQVRIRVJfMTZfMzJfTUFTS0VE KERTVEFERFIsIE1BU0ssIEJBU0UsIFJHTiwgT0ZGKSBcCisgICAgX19idWlsdGluX0hFWEFHT05f VjZfdmdhdGhlcm1od3FfMTI4QihEU1RBRERSLCBNQVNLLCAoaW50KUJBU0UsIFJHTiwgT0ZGKQor CisjZGVmaW5lIFZTSFVGRl9IKFYpIFwKKyAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZo XzEyOEIoVikKKyNkZWZpbmUgVlNQTEFUX0goWCkgXAorICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2 X2x2c3BsYXRoXzEyOEIoWCkKKyNkZWZpbmUgVkFORF9WQUwoUFJFRCwgVkFMKSBcCisgICAgX19i dWlsdGluX0hFWEFHT05fVjZfdmFuZHZydF8xMjhCKFBSRUQsIFZBTCkKKyNkZWZpbmUgVkRFQUxf SChWKSBcCisgICAgX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxoXzEyOEIoVikKKworaW50IGVy cjsKKworLyogZGVmaW5lIHRoZSBudW1iZXIgb2Ygcm93cy9jb2xzIGluIGEgc3F1YXJlIG1hdHJp eCAqLworI2RlZmluZSBNQVRSSVhfU0laRSA2NAorCisvKiBkZWZpbmUgdGhlIHNpemUgb2YgdGhl IHNjYXR0ZXIgYnVmZmVyICovCisjZGVmaW5lIFNDQVRURVJfQlVGRkVSX1NJWkUgKE1BVFJJWF9T SVpFICogTUFUUklYX1NJWkUpCisKKy8qIGZha2UgdnRjbSAtIHB1dCBidWZmZXJzIHRvZ2V0aGVy IGFuZCBmb3JjZSBhbGlnbm1lbnQgKi8KK3N0YXRpYyBzdHJ1Y3QgeworICAgIHVuc2lnbmVkIHNo b3J0IHZzY2F0dGVyMTZbU0NBVFRFUl9CVUZGRVJfU0laRV07CisgICAgdW5zaWduZWQgc2hvcnQg dmdhdGhlcjE2W01BVFJJWF9TSVpFXTsKKyAgICB1bnNpZ25lZCBpbnQgICB2c2NhdHRlcjMyW1ND QVRURVJfQlVGRkVSX1NJWkVdOworICAgIHVuc2lnbmVkIGludCAgIHZnYXRoZXIzMltNQVRSSVhf U0laRV07CisgICAgdW5zaWduZWQgc2hvcnQgdnNjYXR0ZXIxNl8zMltTQ0FUVEVSX0JVRkZFUl9T SVpFXTsKKyAgICB1bnNpZ25lZCBzaG9ydCB2Z2F0aGVyMTZfMzJbTUFUUklYX1NJWkVdOworfSB2 dGNtIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMHgxMDAwMCkpKTsKKworLyogZGVjbGFyZSB0aGUg YXJyYXlzIG9mIHJlZmVyZW5jZSB2YWx1ZXMgKi8KK3Vuc2lnbmVkIHNob3J0IHZzY2F0dGVyMTZf cmVmW1NDQVRURVJfQlVGRkVSX1NJWkVdOwordW5zaWduZWQgc2hvcnQgdmdhdGhlcjE2X3JlZltN QVRSSVhfU0laRV07Cit1bnNpZ25lZCBpbnQgICB2c2NhdHRlcjMyX3JlZltTQ0FUVEVSX0JVRkZF Ul9TSVpFXTsKK3Vuc2lnbmVkIGludCAgIHZnYXRoZXIzMl9yZWZbTUFUUklYX1NJWkVdOwordW5z aWduZWQgc2hvcnQgdnNjYXR0ZXIxNl8zMl9yZWZbU0NBVFRFUl9CVUZGRVJfU0laRV07Cit1bnNp Z25lZCBzaG9ydCB2Z2F0aGVyMTZfMzJfcmVmW01BVFJJWF9TSVpFXTsKKworLyogZGVjbGFyZSB0 aGUgYXJyYXlzIG9mIG9mZnNldHMgKi8KK3Vuc2lnbmVkIHNob3J0IGhhbGZfb2Zmc2V0c1tNQVRS SVhfU0laRV07Cit1bnNpZ25lZCBpbnQgICB3b3JkX29mZnNldHNbTUFUUklYX1NJWkVdOworCisv KiBkZWNsYXJlIHRoZSBhcnJheXMgb2YgdmFsdWVzICovCit1bnNpZ25lZCBzaG9ydCBoYWxmX3Zh bHVlc1tNQVRSSVhfU0laRV07Cit1bnNpZ25lZCBzaG9ydCBoYWxmX3ZhbHVlc19hY2NbTUFUUklY X1NJWkVdOwordW5zaWduZWQgc2hvcnQgaGFsZl92YWx1ZXNfbWFza2VkW01BVFJJWF9TSVpFXTsK K3Vuc2lnbmVkIGludCAgIHdvcmRfdmFsdWVzW01BVFJJWF9TSVpFXTsKK3Vuc2lnbmVkIGludCAg IHdvcmRfdmFsdWVzX2FjY1tNQVRSSVhfU0laRV07Cit1bnNpZ25lZCBpbnQgICB3b3JkX3ZhbHVl c19tYXNrZWRbTUFUUklYX1NJWkVdOworCisvKiBkZWNsYXJlIHRoZSBhcnJheXMgb2YgcHJlZGlj YXRlcyAqLwordW5zaWduZWQgc2hvcnQgaGFsZl9wcmVkaWNhdGVzW01BVFJJWF9TSVpFXTsKK3Vu c2lnbmVkIGludCAgIHdvcmRfcHJlZGljYXRlc1tNQVRSSVhfU0laRV07CisKKy8qIG1ha2UgdGhp cyBiaWcgZW5vdWdoIGZvciBhbGwgdGhlIGludHJpbnNpY3MgKi8KK2NvbnN0IHNpemVfdCByZWdp b25fbGVuID0gc2l6ZW9mKHZ0Y20pOworCisvKiBvcHRpb25hbGx5IGFkZCBzeW5jIGluc3RydWN0 aW9ucyAqLworI2RlZmluZSBTWU5DX1ZFQ1RPUiAxCisKK3N0YXRpYyB2b2lkIHN5bmNfc2NhdHRl cih2b2lkICphZGRyKQoreworI2lmIFNZTkNfVkVDVE9SCisgICAgLyoKKyAgICAgKiBEbyB0aGUg c2NhdHRlciByZWxlYXNlIGZvbGxvd2VkIGJ5IGEgZHVtbXkgbG9hZCB0byBjb21wbGV0ZSB0aGUK KyAgICAgKiBzeW5jaHJvbml6YXRpb24uICBOb3JtYWxseSB0aGUgZHVtbXkgbG9hZCB3b3VsZCBi ZSBkZWZlcnJlZCBhcworICAgICAqIGxvbmcgYXMgcG9zc2libGUgdG8gbWluaW1pemUgc3RhbGxz LgorICAgICAqLworICAgIGFzbSB2b2xhdGlsZSgidm1lbSglMCArICMwKTpzY2F0dGVyX3JlbGVh c2VcbiIgOiA6ICJyIihhZGRyKSk7CisgICAgLyogdXNlIHZvbGF0aWxlIHRvIGZvcmNlIHRoZSBs b2FkICovCisgICAgdm9sYXRpbGUgSFZYX1ZlY3RvciB2RHVtbXkgPSAqKEhWWF9WZWN0b3IgKilh ZGRyOyB2RHVtbXkgPSB2RHVtbXk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgc3luY19nYXRo ZXIodm9pZCAqYWRkcikKK3sKKyNpZiBTWU5DX1ZFQ1RPUgorICAgIC8qIHVzZSB2b2xhdGlsZSB0 byBmb3JjZSB0aGUgbG9hZCAqLworICAgIHZvbGF0aWxlIEhWWF9WZWN0b3IgdkR1bW15ID0gKihI VlhfVmVjdG9yICopYWRkcjsgdkR1bW15ID0gdkR1bW15OworI2VuZGlmCit9CisKKy8qIG9wdGlv bmFsbHkgcHJpbnQgdGhlIHJlc3VsdHMgKi8KKyNkZWZpbmUgUFJJTlRfREFUQSAwCisKKyNkZWZp bmUgRklMTF9DSEFSICAgICAgICcuJworCisvKiBmaWxsIHZ0Y20gc2NyYXRjaCB3aXRoIGVlICov Cit2b2lkIHByZWZpbGxfdnRjbV9zY3JhdGNoKHZvaWQpCit7CisgICAgbWVtc2V0KCZ2dGNtLCBG SUxMX0NIQVIsIHNpemVvZih2dGNtKSk7Cit9CisKKy8qIGNyZWF0ZSBieXRlIG9mZnNldHMgdG8g YmUgYSBkaWFnb25hbCBvZiB0aGUgbWF0cml4IHdpdGggMTYgYml0IGVsZW1lbnRzICovCit2b2lk IGNyZWF0ZV9vZmZzZXRzX3ZhbHVlc19wcmVkc18xNih2b2lkKQoreworICAgIHVuc2lnbmVkIHNo b3J0IGhhbGZfZWxlbWVudCA9IDA7CisgICAgdW5zaWduZWQgc2hvcnQgaGFsZl9lbGVtZW50X21h c2tlZCA9IDA7CisgICAgY2hhciBsZXR0ZXIgPSAnQSc7CisgICAgY2hhciBsZXR0ZXJfbWFza2Vk ID0gJ0AnOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgaSsrKSB7Cisg ICAgICAgIGhhbGZfb2Zmc2V0c1tpXSA9IGkgKiAoMiAqIE1BVFJJWF9TSVpFICsgMik7CisKKyAg ICAgICAgaGFsZl9lbGVtZW50ID0gMDsKKyAgICAgICAgaGFsZl9lbGVtZW50X21hc2tlZCA9IDA7 CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBoYWxm X2VsZW1lbnQgfD0gbGV0dGVyIDw8IGogKiA4OworICAgICAgICAgICAgaGFsZl9lbGVtZW50X21h c2tlZCB8PSBsZXR0ZXJfbWFza2VkIDw8IGogKiA4OworICAgICAgICB9CisKKyAgICAgICAgaGFs Zl92YWx1ZXNbaV0gPSBoYWxmX2VsZW1lbnQ7CisgICAgICAgIGhhbGZfdmFsdWVzX2FjY1tpXSA9 ICgoaSAlIDEwKSA8PCA4KSArIChpICUgMTApOworICAgICAgICBoYWxmX3ZhbHVlc19tYXNrZWRb aV0gPSBoYWxmX2VsZW1lbnRfbWFza2VkOworCisgICAgICAgIGxldHRlcisrOworICAgICAgICAv KiByZXNldCB0byAnQScgKi8KKyAgICAgICAgaWYgKGxldHRlciA9PSAnTScpIHsKKyAgICAgICAg ICAgIGxldHRlciA9ICdBJzsKKyAgICAgICAgfQorCisgICAgICAgIGhhbGZfcHJlZGljYXRlc1tp XSA9IChpICUgMyA9PSAwIHx8IGkgJSA1ID09IDApID8gfjAgOiAwOworICAgIH0KK30KKworLyog Y3JlYXRlIGJ5dGUgb2Zmc2V0cyB0byBiZSBhIGRpYWdvbmFsIG9mIHRoZSBtYXRyaXggd2l0aCAz MiBiaXQgZWxlbWVudHMgKi8KK3ZvaWQgY3JlYXRlX29mZnNldHNfdmFsdWVzX3ByZWRzXzMyKHZv aWQpCit7CisgICAgdW5zaWduZWQgaW50IHdvcmRfZWxlbWVudCA9IDA7CisgICAgdW5zaWduZWQg aW50IHdvcmRfZWxlbWVudF9tYXNrZWQgPSAwOworICAgIGNoYXIgbGV0dGVyID0gJ0EnOworICAg IGNoYXIgbGV0dGVyX21hc2tlZCA9ICcmJzsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFU UklYX1NJWkU7IGkrKykgeworICAgICAgICB3b3JkX29mZnNldHNbaV0gPSBpICogKDQgKiBNQVRS SVhfU0laRSArIDQpOworCisgICAgICAgIHdvcmRfZWxlbWVudCA9IDA7CisgICAgICAgIHdvcmRf ZWxlbWVudF9tYXNrZWQgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykg eworICAgICAgICAgICAgd29yZF9lbGVtZW50IHw9IGxldHRlciA8PCBqICogODsKKyAgICAgICAg ICAgIHdvcmRfZWxlbWVudF9tYXNrZWQgfD0gbGV0dGVyX21hc2tlZCA8PCBqICogODsKKyAgICAg ICAgfQorCisgICAgICAgIHdvcmRfdmFsdWVzW2ldID0gd29yZF9lbGVtZW50OworICAgICAgICB3 b3JkX3ZhbHVlc19hY2NbaV0gPSAoKGkgJSAxMCkgPDwgOCkgKyAoaSAlIDEwKTsKKyAgICAgICAg d29yZF92YWx1ZXNfbWFza2VkW2ldID0gd29yZF9lbGVtZW50X21hc2tlZDsKKworICAgICAgICBs ZXR0ZXIrKzsKKyAgICAgICAgLyogcmVzZXQgdG8gJ0EnICovCisgICAgICAgIGlmIChsZXR0ZXIg PT0gJ00nKSB7CisgICAgICAgICAgICBsZXR0ZXIgPSAnQSc7CisgICAgICAgIH0KKworICAgICAg ICB3b3JkX3ByZWRpY2F0ZXNbaV0gPSAoaSAlIDQgPT0gMCB8fCBpICUgNyA9PSAwKSA/IH4wIDog MDsKKyAgICB9Cit9CisKKy8qCisgKiBjcmVhdGUgYnl0ZSBvZmZzZXRzIHRvIGJlIGEgZGlhZ29u YWwgb2YgdGhlIG1hdHJpeCB3aXRoIDE2IGJpdCBlbGVtZW50cworICogYW5kIDMyIGJpdCBvZmZz ZXRzCisgKi8KK3ZvaWQgY3JlYXRlX29mZnNldHNfdmFsdWVzX3ByZWRzXzE2XzMyKHZvaWQpCit7 CisgICAgdW5zaWduZWQgc2hvcnQgaGFsZl9lbGVtZW50ID0gMDsKKyAgICB1bnNpZ25lZCBzaG9y dCBoYWxmX2VsZW1lbnRfbWFza2VkID0gMDsKKyAgICBjaGFyIGxldHRlciA9ICdEJzsKKyAgICBj aGFyIGxldHRlcl9tYXNrZWQgPSAnJCc7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJ WF9TSVpFOyBpKyspIHsKKyAgICAgICAgd29yZF9vZmZzZXRzW2ldID0gaSAqICgyICogTUFUUklY X1NJWkUgKyAyKTsKKworICAgICAgICBoYWxmX2VsZW1lbnQgPSAwOworICAgICAgICBoYWxmX2Vs ZW1lbnRfbWFza2VkID0gMDsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCAyOyBqKyspIHsK KyAgICAgICAgICAgIGhhbGZfZWxlbWVudCB8PSBsZXR0ZXIgPDwgaiAqIDg7CisgICAgICAgICAg ICBoYWxmX2VsZW1lbnRfbWFza2VkIHw9IGxldHRlcl9tYXNrZWQgPDwgaiAqIDg7CisgICAgICAg IH0KKworICAgICAgICBoYWxmX3ZhbHVlc1tpXSA9IGhhbGZfZWxlbWVudDsKKyAgICAgICAgaGFs Zl92YWx1ZXNfYWNjW2ldID0gKChpICUgMTApIDw8IDgpICsgKGkgJSAxMCk7CisgICAgICAgIGhh bGZfdmFsdWVzX21hc2tlZFtpXSA9IGhhbGZfZWxlbWVudF9tYXNrZWQ7CisKKyAgICAgICAgbGV0 dGVyKys7CisgICAgICAgIC8qIHJlc2V0IHRvICdBJyAqLworICAgICAgICBpZiAobGV0dGVyID09 ICdQJykgeworICAgICAgICAgICAgbGV0dGVyID0gJ0QnOworICAgICAgICB9CisKKyAgICAgICAg aGFsZl9wcmVkaWNhdGVzW2ldID0gKGkgJSAyID09IDAgfHwgaSAlIDEzID09IDApID8gfjAgOiAw OworICAgIH0KK30KKworLyogc2NhdHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIGludHJp bnNpY3MgKi8KK3ZvaWQgdmVjdG9yX3NjYXR0ZXJfMTYodm9pZCkKK3sKKyAgICAvKiBjb3B5IHRo ZSBvZmZzZXRzIGFuZCB2YWx1ZXMgdG8gdmVjdG9ycyAqLworICAgIEhWWF9WZWN0b3Igb2Zmc2V0 cyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfb2Zmc2V0czsKKyAgICBIVlhfVmVjdG9yIHZhbHVlcyA9 ICooSFZYX1ZlY3RvciAqKWhhbGZfdmFsdWVzOworCisgICAgVlNDQVRURVJfMTYoJnZ0Y20udnNj YXR0ZXIxNiwgcmVnaW9uX2xlbiwgb2Zmc2V0cywgdmFsdWVzKTsKKworICAgIHN5bmNfc2NhdHRl cih2dGNtLnZzY2F0dGVyMTYpOworfQorCisvKiBzY2F0dGVyLWFjY3VtdWxhdGUgdGhlIDE2IGJp dCBlbGVtZW50cyB1c2luZyBpbnRyaW5zaWNzICovCit2b2lkIHZlY3Rvcl9zY2F0dGVyXzE2X2Fj Yyh2b2lkKQoreworICAgIC8qIGNvcHkgdGhlIG9mZnNldHMgYW5kIHZhbHVlcyB0byB2ZWN0b3Jz ICovCisgICAgSFZYX1ZlY3RvciBvZmZzZXRzID0gKihIVlhfVmVjdG9yICopaGFsZl9vZmZzZXRz OworICAgIEhWWF9WZWN0b3IgdmFsdWVzID0gKihIVlhfVmVjdG9yICopaGFsZl92YWx1ZXNfYWNj OworCisgICAgVlNDQVRURVJfMTZfQUNDKCZ2dGNtLnZzY2F0dGVyMTYsIHJlZ2lvbl9sZW4sIG9m ZnNldHMsIHZhbHVlcyk7CisKKyAgICBzeW5jX3NjYXR0ZXIodnRjbS52c2NhdHRlcjE2KTsKK30K KworLyogc2NhdHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KK3Zv aWQgdmVjdG9yX3NjYXR0ZXJfMTZfbWFza2VkKHZvaWQpCit7CisgICAgLyogY29weSB0aGUgb2Zm c2V0cyBhbmQgdmFsdWVzIHRvIHZlY3RvcnMgKi8KKyAgICBIVlhfVmVjdG9yIG9mZnNldHMgPSAq KEhWWF9WZWN0b3IgKiloYWxmX29mZnNldHM7CisgICAgSFZYX1ZlY3RvciB2YWx1ZXMgPSAqKEhW WF9WZWN0b3IgKiloYWxmX3ZhbHVlc19tYXNrZWQ7CisgICAgSFZYX1ZlY3RvciBwcmVkX3JlZyA9 ICooSFZYX1ZlY3RvciAqKWhhbGZfcHJlZGljYXRlczsKKyAgICBIVlhfVmVjdG9yUHJlZCBwcmVk cyA9IFZBTkRfVkFMKHByZWRfcmVnLCB+MCk7CisKKyAgICBWU0NBVFRFUl8xNl9NQVNLRUQocHJl ZHMsICZ2dGNtLnZzY2F0dGVyMTYsIHJlZ2lvbl9sZW4sIG9mZnNldHMsIHZhbHVlcyk7CisKKyAg ICBzeW5jX3NjYXR0ZXIodnRjbS52c2NhdHRlcjE2KTsKK30KKworLyogc2NhdHRlciB0aGUgMzIg Yml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KK3ZvaWQgdmVjdG9yX3NjYXR0ZXJfMzIo dm9pZCkKK3sKKyAgICAvKiBjb3B5IHRoZSBvZmZzZXRzIGFuZCB2YWx1ZXMgdG8gdmVjdG9ycyAq LworICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2xvID0gKihIVlhfVmVjdG9yICopd29yZF9vZmZzZXRz OworICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2hpID0gKihIVlhfVmVjdG9yICopJndvcmRfb2Zmc2V0 c1tNQVRSSVhfU0laRSAvIDJdOworICAgIEhWWF9WZWN0b3IgdmFsdWVzbG8gPSAqKEhWWF9WZWN0 b3IgKil3b3JkX3ZhbHVlczsKKyAgICBIVlhfVmVjdG9yIHZhbHVlc2hpID0gKihIVlhfVmVjdG9y ICopJndvcmRfdmFsdWVzW01BVFJJWF9TSVpFIC8gMl07CisKKyAgICBWU0NBVFRFUl8zMigmdnRj bS52c2NhdHRlcjMyLCByZWdpb25fbGVuLCBvZmZzZXRzbG8sIHZhbHVlc2xvKTsKKyAgICBWU0NB VFRFUl8zMigmdnRjbS52c2NhdHRlcjMyLCByZWdpb25fbGVuLCBvZmZzZXRzaGksIHZhbHVlc2hp KTsKKworICAgIHN5bmNfc2NhdHRlcih2dGNtLnZzY2F0dGVyMzIpOworfQorCisvKiBzY2F0dGVy LWFjYyB0aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KK3ZvaWQgdmVjdG9y X3NjYXR0ZXJfMzJfYWNjKHZvaWQpCit7CisgICAgLyogY29weSB0aGUgb2Zmc2V0cyBhbmQgdmFs dWVzIHRvIHZlY3RvcnMgKi8KKyAgICBIVlhfVmVjdG9yIG9mZnNldHNsbyA9ICooSFZYX1ZlY3Rv ciAqKXdvcmRfb2Zmc2V0czsKKyAgICBIVlhfVmVjdG9yIG9mZnNldHNoaSA9ICooSFZYX1ZlY3Rv ciAqKSZ3b3JkX29mZnNldHNbTUFUUklYX1NJWkUgLyAyXTsKKyAgICBIVlhfVmVjdG9yIHZhbHVl c2xvID0gKihIVlhfVmVjdG9yICopd29yZF92YWx1ZXNfYWNjOworICAgIEhWWF9WZWN0b3IgdmFs dWVzaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF92YWx1ZXNfYWNjW01BVFJJWF9TSVpFIC8gMl07 CisKKyAgICBWU0NBVFRFUl8zMl9BQ0MoJnZ0Y20udnNjYXR0ZXIzMiwgcmVnaW9uX2xlbiwgb2Zm c2V0c2xvLCB2YWx1ZXNsbyk7CisgICAgVlNDQVRURVJfMzJfQUNDKCZ2dGNtLnZzY2F0dGVyMzIs IHJlZ2lvbl9sZW4sIG9mZnNldHNoaSwgdmFsdWVzaGkpOworCisgICAgc3luY19zY2F0dGVyKHZ0 Y20udnNjYXR0ZXIzMik7Cit9CisKKy8qIHNjYXR0ZXIgdGhlIDMyIGJpdCBlbGVtZW50cyB1c2lu ZyBpbnRyaW5zaWNzICovCit2b2lkIHZlY3Rvcl9zY2F0dGVyXzMyX21hc2tlZCh2b2lkKQorewor ICAgIC8qIGNvcHkgdGhlIG9mZnNldHMgYW5kIHZhbHVlcyB0byB2ZWN0b3JzICovCisgICAgSFZY X1ZlY3RvciBvZmZzZXRzbG8gPSAqKEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7CisgICAgSFZY X1ZlY3RvciBvZmZzZXRzaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01BVFJJWF9T SVpFIC8gMl07CisgICAgSFZYX1ZlY3RvciB2YWx1ZXNsbyA9ICooSFZYX1ZlY3RvciAqKXdvcmRf dmFsdWVzX21hc2tlZDsKKyAgICBIVlhfVmVjdG9yIHZhbHVlc2hpID0gKihIVlhfVmVjdG9yICop JndvcmRfdmFsdWVzX21hc2tlZFtNQVRSSVhfU0laRSAvIDJdOworICAgIEhWWF9WZWN0b3IgcHJl ZF9yZWdsbyA9ICooSFZYX1ZlY3RvciAqKXdvcmRfcHJlZGljYXRlczsKKyAgICBIVlhfVmVjdG9y IHByZWRfcmVnaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF9wcmVkaWNhdGVzW01BVFJJWF9TSVpF IC8gMl07CisgICAgSFZYX1ZlY3RvclByZWQgcHJlZHNsbyA9IFZBTkRfVkFMKHByZWRfcmVnbG8s IH4wKTsKKyAgICBIVlhfVmVjdG9yUHJlZCBwcmVkc2hpID0gVkFORF9WQUwocHJlZF9yZWdoaSwg fjApOworCisgICAgVlNDQVRURVJfMzJfTUFTS0VEKHByZWRzbG8sICZ2dGNtLnZzY2F0dGVyMzIs IHJlZ2lvbl9sZW4sIG9mZnNldHNsbywKKyAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzbG8p OworICAgIFZTQ0FUVEVSXzMyX01BU0tFRChwcmVkc2hpLCAmdnRjbS52c2NhdHRlcjMyLCByZWdp b25fbGVuLCBvZmZzZXRzaGksCisgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc2hpKTsKKwor ICAgIHN5bmNfc2NhdHRlcih2dGNtLnZzY2F0dGVyMTYpOworfQorCisvKiBzY2F0dGVyIHRoZSAx NiBiaXQgZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zmc2V0cyB1c2luZyBpbnRyaW5zaWNzICovCit2 b2lkIHZlY3Rvcl9zY2F0dGVyXzE2XzMyKHZvaWQpCit7CisgICAgSFZYX1ZlY3RvclBhaXIgb2Zm c2V0czsKKyAgICBIVlhfVmVjdG9yIHZhbHVlczsKKworICAgIC8qIGdldCB0aGUgd29yZCBvZmZz ZXRzIGluIGEgdmVjdG9yIHBhaXIgKi8KKyAgICBvZmZzZXRzID0gKihIVlhfVmVjdG9yUGFpciAq KXdvcmRfb2Zmc2V0czsKKworICAgIC8qIHRoZXNlIHZhbHVlcyBuZWVkIHRvIGJlIHNodWZmbGVk IGZvciB0aGUgc2NhdHRlciAqLworICAgIHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfdmFs dWVzOworICAgIHZhbHVlcyA9IFZTSFVGRl9IKHZhbHVlcyk7CisKKyAgICBWU0NBVFRFUl8xNl8z MigmdnRjbS52c2NhdHRlcjE2XzMyLCByZWdpb25fbGVuLCBvZmZzZXRzLCB2YWx1ZXMpOworCisg ICAgc3luY19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNl8zMik7Cit9CisKKy8qIHNjYXR0ZXItYWNj IHRoZSAxNiBiaXQgZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zmc2V0cyB1c2luZyBpbnRyaW5zaWNz ICovCit2b2lkIHZlY3Rvcl9zY2F0dGVyXzE2XzMyX2FjYyh2b2lkKQoreworICAgIEhWWF9WZWN0 b3JQYWlyIG9mZnNldHM7CisgICAgSFZYX1ZlY3RvciB2YWx1ZXM7CisKKyAgICAvKiBnZXQgdGhl IHdvcmQgb2Zmc2V0cyBpbiBhIHZlY3RvciBwYWlyICovCisgICAgb2Zmc2V0cyA9ICooSFZYX1Zl Y3RvclBhaXIgKil3b3JkX29mZnNldHM7CisKKyAgICAvKiB0aGVzZSB2YWx1ZXMgbmVlZCB0byBi ZSBzaHVmZmxlZCBmb3IgdGhlIHNjYXR0ZXIgKi8KKyAgICB2YWx1ZXMgPSAqKEhWWF9WZWN0b3Ig KiloYWxmX3ZhbHVlc19hY2M7CisgICAgdmFsdWVzID0gVlNIVUZGX0godmFsdWVzKTsKKworICAg IFZTQ0FUVEVSXzE2XzMyX0FDQygmdnRjbS52c2NhdHRlcjE2XzMyLCByZWdpb25fbGVuLCBvZmZz ZXRzLCB2YWx1ZXMpOworCisgICAgc3luY19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNl8zMik7Cit9 CisKKy8qIG1hc2tlZCBzY2F0dGVyIHRoZSAxNiBiaXQgZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zm c2V0cyB1c2luZyBpbnRyaW5zaWNzICovCit2b2lkIHZlY3Rvcl9zY2F0dGVyXzE2XzMyX21hc2tl ZCh2b2lkKQoreworICAgIEhWWF9WZWN0b3JQYWlyIG9mZnNldHM7CisgICAgSFZYX1ZlY3RvciB2 YWx1ZXM7CisgICAgSFZYX1ZlY3RvciBwcmVkX3JlZzsKKworICAgIC8qIGdldCB0aGUgd29yZCBv ZmZzZXRzIGluIGEgdmVjdG9yIHBhaXIgKi8KKyAgICBvZmZzZXRzID0gKihIVlhfVmVjdG9yUGFp ciAqKXdvcmRfb2Zmc2V0czsKKworICAgIC8qIHRoZXNlIHZhbHVlcyBuZWVkIHRvIGJlIHNodWZm bGVkIGZvciB0aGUgc2NhdHRlciAqLworICAgIHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKWhhbGZf dmFsdWVzX21hc2tlZDsKKyAgICB2YWx1ZXMgPSBWU0hVRkZfSCh2YWx1ZXMpOworCisgICAgcHJl ZF9yZWcgPSAqKEhWWF9WZWN0b3IgKiloYWxmX3ByZWRpY2F0ZXM7CisgICAgcHJlZF9yZWcgPSBW U0hVRkZfSChwcmVkX3JlZyk7CisgICAgSFZYX1ZlY3RvclByZWQgcHJlZHMgPSBWQU5EX1ZBTChw cmVkX3JlZywgfjApOworCisgICAgVlNDQVRURVJfMTZfMzJfTUFTS0VEKHByZWRzLCAmdnRjbS52 c2NhdHRlcjE2XzMyLCByZWdpb25fbGVuLCBvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICB2YWx1ZXMpOworCisgICAgc3luY19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNl8zMik7Cit9 CisKKy8qIGdhdGhlciB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc2NhdHRlcjE2IGJ1ZmZlciAqLwor dm9pZCB2ZWN0b3JfZ2F0aGVyXzE2KHZvaWQpCit7CisgICAgSFZYX1ZlY3RvciAqdmdhdGhlciA9 IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjE2OworICAgIEhWWF9WZWN0b3Igb2Zmc2V0cyA9 ICooSFZYX1ZlY3RvciAqKWhhbGZfb2Zmc2V0czsKKworICAgIFZHQVRIRVJfMTYodmdhdGhlciwg JnZ0Y20udnNjYXR0ZXIxNiwgcmVnaW9uX2xlbiwgb2Zmc2V0cyk7CisKKyAgICBzeW5jX2dhdGhl cih2Z2F0aGVyKTsKK30KKworc3RhdGljIHVuc2lnbmVkIHNob3J0IGdhdGhlcl8xNl9tYXNrZWRf aW5pdCh2b2lkKQoreworICAgIGNoYXIgbGV0dGVyID0gJz8nOworICAgIHJldHVybiBsZXR0ZXIg fCAobGV0dGVyIDw8IDgpOworfQorCit2b2lkIHZlY3Rvcl9nYXRoZXJfMTZfbWFza2VkKHZvaWQp Cit7CisgICAgSFZYX1ZlY3RvciAqdmdhdGhlciA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhl cjE2OworICAgIEhWWF9WZWN0b3Igb2Zmc2V0cyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfb2Zmc2V0 czsKKyAgICBIVlhfVmVjdG9yIHByZWRfcmVnID0gKihIVlhfVmVjdG9yICopaGFsZl9wcmVkaWNh dGVzOworICAgIEhWWF9WZWN0b3JQcmVkIHByZWRzID0gVkFORF9WQUwocHJlZF9yZWcsIH4wKTsK KworICAgICp2Z2F0aGVyID0gVlNQTEFUX0goZ2F0aGVyXzE2X21hc2tlZF9pbml0KCkpOworICAg IFZHQVRIRVJfMTZfTUFTS0VEKHZnYXRoZXIsIHByZWRzLCAmdnRjbS52c2NhdHRlcjE2LCByZWdp b25fbGVuLCBvZmZzZXRzKTsKKworICAgIHN5bmNfZ2F0aGVyKHZnYXRoZXIpOworfQorCisvKiBn YXRoZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIzMiBidWZmZXIgKi8KK3ZvaWQgdmVj dG9yX2dhdGhlcl8zMih2b2lkKQoreworICAgIEhWWF9WZWN0b3IgKnZnYXRoZXJsbyA9IChIVlhf VmVjdG9yICopJnZ0Y20udmdhdGhlcjMyOworICAgIEhWWF9WZWN0b3IgKnZnYXRoZXJoaSA9Cisg ICAgICAgIChIVlhfVmVjdG9yICopKChpbnQpJnZ0Y20udmdhdGhlcjMyICsgKE1BVFJJWF9TSVpF ICogMikpOworICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2xvID0gKihIVlhfVmVjdG9yICopd29yZF9v ZmZzZXRzOworICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2hpID0gKihIVlhfVmVjdG9yICopJndvcmRf b2Zmc2V0c1tNQVRSSVhfU0laRSAvIDJdOworCisgICAgVkdBVEhFUl8zMih2Z2F0aGVybG8sICZ2 dGNtLnZzY2F0dGVyMzIsIHJlZ2lvbl9sZW4sIG9mZnNldHNsbyk7CisgICAgVkdBVEhFUl8zMih2 Z2F0aGVyaGksICZ2dGNtLnZzY2F0dGVyMzIsIHJlZ2lvbl9sZW4sIG9mZnNldHNoaSk7CisKKyAg ICBzeW5jX2dhdGhlcih2Z2F0aGVyaGkpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGdhdGhl cl8zMl9tYXNrZWRfaW5pdCh2b2lkKQoreworICAgIGNoYXIgbGV0dGVyID0gJz8nOworICAgIHJl dHVybiBsZXR0ZXIgfCAobGV0dGVyIDw8IDgpIHwgKGxldHRlciA8PCAxNikgfCAobGV0dGVyIDw8 IDI0KTsKK30KKwordm9pZCB2ZWN0b3JfZ2F0aGVyXzMyX21hc2tlZCh2b2lkKQoreworICAgIEhW WF9WZWN0b3IgKnZnYXRoZXJsbyA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjMyOworICAg IEhWWF9WZWN0b3IgKnZnYXRoZXJoaSA9CisgICAgICAgIChIVlhfVmVjdG9yICopKChpbnQpJnZ0 Y20udmdhdGhlcjMyICsgKE1BVFJJWF9TSVpFICogMikpOworICAgIEhWWF9WZWN0b3Igb2Zmc2V0 c2xvID0gKihIVlhfVmVjdG9yICopd29yZF9vZmZzZXRzOworICAgIEhWWF9WZWN0b3Igb2Zmc2V0 c2hpID0gKihIVlhfVmVjdG9yICopJndvcmRfb2Zmc2V0c1tNQVRSSVhfU0laRSAvIDJdOworICAg IEhWWF9WZWN0b3IgcHJlZF9yZWdsbyA9ICooSFZYX1ZlY3RvciAqKXdvcmRfcHJlZGljYXRlczsK KyAgICBIVlhfVmVjdG9yUHJlZCBwcmVkc2xvID0gVkFORF9WQUwocHJlZF9yZWdsbywgfjApOwor ICAgIEhWWF9WZWN0b3IgcHJlZF9yZWdoaSA9ICooSFZYX1ZlY3RvciAqKSZ3b3JkX3ByZWRpY2F0 ZXNbTUFUUklYX1NJWkUgLyAyXTsKKyAgICBIVlhfVmVjdG9yUHJlZCBwcmVkc2hpID0gVkFORF9W QUwocHJlZF9yZWdoaSwgfjApOworCisgICAgKnZnYXRoZXJsbyA9IFZTUExBVF9IKGdhdGhlcl8z Ml9tYXNrZWRfaW5pdCgpKTsKKyAgICAqdmdhdGhlcmhpID0gVlNQTEFUX0goZ2F0aGVyXzMyX21h c2tlZF9pbml0KCkpOworICAgIFZHQVRIRVJfMzJfTUFTS0VEKHZnYXRoZXJsbywgcHJlZHNsbywg JnZ0Y20udnNjYXR0ZXIzMiwgcmVnaW9uX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICBvZmZz ZXRzbG8pOworICAgIFZHQVRIRVJfMzJfTUFTS0VEKHZnYXRoZXJoaSwgcHJlZHNoaSwgJnZ0Y20u dnNjYXR0ZXIzMiwgcmVnaW9uX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzaGkp OworCisgICAgc3luY19nYXRoZXIodmdhdGhlcmxvKTsKKyAgICBzeW5jX2dhdGhlcih2Z2F0aGVy aGkpOworfQorCisvKiBnYXRoZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIxNl8zMiBi dWZmZXIgKi8KK3ZvaWQgdmVjdG9yX2dhdGhlcl8xNl8zMih2b2lkKQoreworICAgIEhWWF9WZWN0 b3IgKnZnYXRoZXI7CisgICAgSFZYX1ZlY3RvclBhaXIgb2Zmc2V0czsKKyAgICBIVlhfVmVjdG9y IHZhbHVlczsKKworICAgIC8qIGdldCB0aGUgdnRjbSBhZGRyZXNzIHRvIGdhdGhlciBmcm9tICov CisgICAgdmdhdGhlciA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjE2XzMyOworCisgICAg LyogZ2V0IHRoZSB3b3JkIG9mZnNldHMgaW4gYSB2ZWN0b3IgcGFpciAqLworICAgIG9mZnNldHMg PSAqKEhWWF9WZWN0b3JQYWlyICopd29yZF9vZmZzZXRzOworCisgICAgVkdBVEhFUl8xNl8zMih2 Z2F0aGVyLCAmdnRjbS52c2NhdHRlcjE2XzMyLCByZWdpb25fbGVuLCBvZmZzZXRzKTsKKworICAg IC8qIGRlYWwgdGhlIGVsZW1lbnRzIHRvIGdldCB0aGUgb3JkZXIgYmFjayAqLworICAgIHZhbHVl cyA9ICooSFZYX1ZlY3RvciAqKXZnYXRoZXI7CisgICAgdmFsdWVzID0gVkRFQUxfSCh2YWx1ZXMp OworCisgICAgLyogd3JpdGUgaXQgYmFjayB0byB2dGNtIGFkZHJlc3MgKi8KKyAgICAqKEhWWF9W ZWN0b3IgKil2Z2F0aGVyID0gdmFsdWVzOworfQorCit2b2lkIHZlY3Rvcl9nYXRoZXJfMTZfMzJf bWFza2VkKHZvaWQpCit7CisgICAgSFZYX1ZlY3RvciAqdmdhdGhlcjsKKyAgICBIVlhfVmVjdG9y UGFpciBvZmZzZXRzOworICAgIEhWWF9WZWN0b3IgcHJlZF9yZWc7CisgICAgSFZYX1ZlY3RvclBy ZWQgcHJlZHM7CisgICAgSFZYX1ZlY3RvciB2YWx1ZXM7CisKKyAgICAvKiBnZXQgdGhlIHZ0Y20g YWRkcmVzcyB0byBnYXRoZXIgZnJvbSAqLworICAgIHZnYXRoZXIgPSAoSFZYX1ZlY3RvciAqKSZ2 dGNtLnZnYXRoZXIxNl8zMjsKKworICAgIC8qIGdldCB0aGUgd29yZCBvZmZzZXRzIGluIGEgdmVj dG9yIHBhaXIgKi8KKyAgICBvZmZzZXRzID0gKihIVlhfVmVjdG9yUGFpciAqKXdvcmRfb2Zmc2V0 czsKKyAgICBwcmVkX3JlZyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfcHJlZGljYXRlczsKKyAgICBw cmVkX3JlZyA9IFZTSFVGRl9IKHByZWRfcmVnKTsKKyAgICBwcmVkcyA9IFZBTkRfVkFMKHByZWRf cmVnLCB+MCk7CisKKyAgICp2Z2F0aGVyID0gVlNQTEFUX0goZ2F0aGVyXzE2X21hc2tlZF9pbml0 KCkpOworICAgVkdBVEhFUl8xNl8zMl9NQVNLRUQodmdhdGhlciwgcHJlZHMsICZ2dGNtLnZzY2F0 dGVyMTZfMzIsIHJlZ2lvbl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzKTsK KworICAgIC8qIGRlYWwgdGhlIGVsZW1lbnRzIHRvIGdldCB0aGUgb3JkZXIgYmFjayAqLworICAg IHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKXZnYXRoZXI7CisgICAgdmFsdWVzID0gVkRFQUxfSCh2 YWx1ZXMpOworCisgICAgLyogd3JpdGUgaXQgYmFjayB0byB2dGNtIGFkZHJlc3MgKi8KKyAgICAq KEhWWF9WZWN0b3IgKil2Z2F0aGVyID0gdmFsdWVzOworfQorCitzdGF0aWMgdm9pZCBjaGVja19i dWZmZXIoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqYywgdm9pZCAqciwgc2l6ZV90IHNpemUpCit7 CisgICAgY2hhciAqY2hlY2sgPSAoY2hhciAqKWM7CisgICAgY2hhciAqcmVmID0gKGNoYXIgKily OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChjaGVj a1tpXSAhPSByZWZbaV0pIHsKKyAgICAgICAgICAgIHByaW50ZigiRVJST1IgJXMgWyVkXTogMHgl eCAoJWMpICE9IDB4JXggKCVjKVxuIiwgbmFtZSwgaSwKKyAgICAgICAgICAgICAgICAgICBjaGVj a1tpXSwgY2hlY2tbaV0sIHJlZltpXSwgcmVmW2ldKTsKKyAgICAgICAgICAgIGVycisrOworICAg ICAgICB9CisgICAgfQorfQorCisvKgorICogVGhlc2Ugc2NhbGFyIGZ1bmN0aW9ucyBhcmUgdGhl IEMgZXF1aXZhbGVudHMgb2YgdGhlIHZlY3RvciBmdW5jdGlvbnMgdGhhdAorICogdXNlIEhWWAor ICovCisKKy8qIHNjYXR0ZXIgdGhlIDE2IGJpdCBlbGVtZW50cyB1c2luZyBDICovCit2b2lkIHNj YWxhcl9zY2F0dGVyXzE2KHVuc2lnbmVkIHNob3J0ICp2c2NhdHRlcjE2KQoreworICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7ICsraSkgeworICAgICAgICB2c2NhdHRlcjE2W2hh bGZfb2Zmc2V0c1tpXSAvIDJdID0gaGFsZl92YWx1ZXNbaV07CisgICAgfQorfQorCit2b2lkIGNo ZWNrX3NjYXR0ZXJfMTYoKQoreworICAgIG1lbXNldCh2c2NhdHRlcjE2X3JlZiwgRklMTF9DSEFS LAorICAgICAgICAgICBTQ0FUVEVSX0JVRkZFUl9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0 KSk7CisgICAgc2NhbGFyX3NjYXR0ZXJfMTYodnNjYXR0ZXIxNl9yZWYpOworICAgIGNoZWNrX2J1 ZmZlcihfX2Z1bmNfXywgdnRjbS52c2NhdHRlcjE2LCB2c2NhdHRlcjE2X3JlZiwKKyAgICAgICAg ICAgICAgICAgU0NBVFRFUl9CVUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwor fQorCisvKiBzY2F0dGVyIHRoZSAxNiBiaXQgZWxlbWVudHMgdXNpbmcgQyAqLwordm9pZCBzY2Fs YXJfc2NhdHRlcl8xNl9hY2ModW5zaWduZWQgc2hvcnQgKnZzY2F0dGVyMTYpCit7CisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CisgICAgICAgIHZzY2F0dGVyMTZb aGFsZl9vZmZzZXRzW2ldIC8gMl0gKz0gaGFsZl92YWx1ZXNfYWNjW2ldOworICAgIH0KK30KKwor dm9pZCBjaGVja19zY2F0dGVyXzE2X2FjYygpCit7CisgICAgbWVtc2V0KHZzY2F0dGVyMTZfcmVm LCBGSUxMX0NIQVIsCisgICAgICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5z aWduZWQgc2hvcnQpKTsKKyAgICBzY2FsYXJfc2NhdHRlcl8xNih2c2NhdHRlcjE2X3JlZik7Cisg ICAgc2NhbGFyX3NjYXR0ZXJfMTZfYWNjKHZzY2F0dGVyMTZfcmVmKTsKKyAgICBjaGVja19idWZm ZXIoX19mdW5jX18sIHZ0Y20udnNjYXR0ZXIxNiwgdnNjYXR0ZXIxNl9yZWYsCisgICAgICAgICAg ICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKTsKK30K KworLyogc2NhdHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIEMgKi8KK3ZvaWQgc2NhbGFy X3NjYXR0ZXJfMTZfbWFza2VkKHVuc2lnbmVkIHNob3J0ICp2c2NhdHRlcjE2KQoreworICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7IGkrKykgeworICAgICAgICBpZiAoaGFsZl9w cmVkaWNhdGVzW2ldKSB7CisgICAgICAgICAgICB2c2NhdHRlcjE2W2hhbGZfb2Zmc2V0c1tpXSAv IDJdID0gaGFsZl92YWx1ZXNfbWFza2VkW2ldOworICAgICAgICB9CisgICAgfQorCit9CisKK3Zv aWQgY2hlY2tfc2NhdHRlcl8xNl9tYXNrZWQoKQoreworICAgIG1lbXNldCh2c2NhdHRlcjE2X3Jl ZiwgRklMTF9DSEFSLAorICAgICAgICAgICBTQ0FUVEVSX0JVRkZFUl9TSVpFICogc2l6ZW9mKHVu c2lnbmVkIHNob3J0KSk7CisgICAgc2NhbGFyX3NjYXR0ZXJfMTYodnNjYXR0ZXIxNl9yZWYpOwor ICAgIHNjYWxhcl9zY2F0dGVyXzE2X2FjYyh2c2NhdHRlcjE2X3JlZik7CisgICAgc2NhbGFyX3Nj YXR0ZXJfMTZfbWFza2VkKHZzY2F0dGVyMTZfcmVmKTsKKyAgICBjaGVja19idWZmZXIoX19mdW5j X18sIHZ0Y20udnNjYXR0ZXIxNiwgdnNjYXR0ZXIxNl9yZWYsCisgICAgICAgICAgICAgICAgIFND QVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKTsKK30KKworLyogc2Nh dHRlciB0aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIEMgKi8KK3ZvaWQgc2NhbGFyX3NjYXR0ZXJf MzIodW5zaWduZWQgaW50ICp2c2NhdHRlcjMyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg TUFUUklYX1NJWkU7ICsraSkgeworICAgICAgICB2c2NhdHRlcjMyW3dvcmRfb2Zmc2V0c1tpXSAv IDRdID0gd29yZF92YWx1ZXNbaV07CisgICAgfQorfQorCit2b2lkIGNoZWNrX3NjYXR0ZXJfMzIo KQoreworICAgIG1lbXNldCh2c2NhdHRlcjMyX3JlZiwgRklMTF9DSEFSLAorICAgICAgICAgICBT Q0FUVEVSX0JVRkZFUl9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOworICAgIHNjYWxhcl9z Y2F0dGVyXzMyKHZzY2F0dGVyMzJfcmVmKTsKKyAgICBjaGVja19idWZmZXIoX19mdW5jX18sIHZ0 Y20udnNjYXR0ZXIzMiwgdnNjYXR0ZXIzMl9yZWYsCisgICAgICAgICAgICAgICAgIFNDQVRURVJf QlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWduZWQgaW50KSk7Cit9CisKKy8qIHNjYXR0ZXIgdGhl IDMyIGJpdCBlbGVtZW50cyB1c2luZyBDICovCit2b2lkIHNjYWxhcl9zY2F0dGVyXzMyX2FjYyh1 bnNpZ25lZCBpbnQgKnZzY2F0dGVyMzIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRS SVhfU0laRTsgKytpKSB7CisgICAgICAgIHZzY2F0dGVyMzJbd29yZF9vZmZzZXRzW2ldIC8gNF0g Kz0gd29yZF92YWx1ZXNfYWNjW2ldOworICAgIH0KK30KKwordm9pZCBjaGVja19zY2F0dGVyXzMy X2FjYygpCit7CisgICAgbWVtc2V0KHZzY2F0dGVyMzJfcmVmLCBGSUxMX0NIQVIsCisgICAgICAg ICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWduZWQgaW50KSk7CisgICAgc2Nh bGFyX3NjYXR0ZXJfMzIodnNjYXR0ZXIzMl9yZWYpOworICAgIHNjYWxhcl9zY2F0dGVyXzMyX2Fj Yyh2c2NhdHRlcjMyX3JlZik7CisgICAgY2hlY2tfYnVmZmVyKF9fZnVuY19fLCB2dGNtLnZzY2F0 dGVyMzIsIHZzY2F0dGVyMzJfcmVmLAorICAgICAgICAgICAgICAgICBTQ0FUVEVSX0JVRkZFUl9T SVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOworfQorCisvKiBzY2F0dGVyIHRoZSAzMiBiaXQg ZWxlbWVudHMgdXNpbmcgQyAqLwordm9pZCBzY2FsYXJfc2NhdHRlcl8zMl9tYXNrZWQodW5zaWdu ZWQgaW50ICp2c2NhdHRlcjMyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJ WkU7IGkrKykgeworICAgICAgICBpZiAod29yZF9wcmVkaWNhdGVzW2ldKSB7CisgICAgICAgICAg ICB2c2NhdHRlcjMyW3dvcmRfb2Zmc2V0c1tpXSAvIDRdID0gd29yZF92YWx1ZXNfbWFza2VkW2ld OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIGNoZWNrX3NjYXR0ZXJfMzJfbWFza2VkKCkK K3sKKyAgICBtZW1zZXQodnNjYXR0ZXIzMl9yZWYsIEZJTExfQ0hBUiwKKyAgICAgICAgICAgU0NB VFRFUl9CVUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBpbnQpKTsKKyAgICBzY2FsYXJfc2Nh dHRlcl8zMih2c2NhdHRlcjMyX3JlZik7CisgICAgc2NhbGFyX3NjYXR0ZXJfMzJfYWNjKHZzY2F0 dGVyMzJfcmVmKTsKKyAgICBzY2FsYXJfc2NhdHRlcl8zMl9tYXNrZWQodnNjYXR0ZXIzMl9yZWYp OworICAgIGNoZWNrX2J1ZmZlcihfX2Z1bmNfXywgdnRjbS52c2NhdHRlcjMyLCB2c2NhdHRlcjMy X3JlZiwKKyAgICAgICAgICAgICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5z aWduZWQgaW50KSk7Cit9CisKKy8qIHNjYXR0ZXIgdGhlIDMyIGJpdCBlbGVtZW50cyB1c2luZyBD ICovCit2b2lkIHNjYWxhcl9zY2F0dGVyXzE2XzMyKHVuc2lnbmVkIHNob3J0ICp2c2NhdHRlcjE2 XzMyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7ICsraSkgeworICAg ICAgICB2c2NhdHRlcjE2XzMyW3dvcmRfb2Zmc2V0c1tpXSAvIDJdID0gaGFsZl92YWx1ZXNbaV07 CisgICAgfQorfQorCit2b2lkIGNoZWNrX3NjYXR0ZXJfMTZfMzIoKQoreworICAgIG1lbXNldCh2 c2NhdHRlcjE2XzMyX3JlZiwgRklMTF9DSEFSLAorICAgICAgICAgICBTQ0FUVEVSX0JVRkZFUl9T SVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7CisgICAgc2NhbGFyX3NjYXR0ZXJfMTZfMzIo dnNjYXR0ZXIxNl8zMl9yZWYpOworICAgIGNoZWNrX2J1ZmZlcihfX2Z1bmNfXywgdnRjbS52c2Nh dHRlcjE2XzMyLCB2c2NhdHRlcjE2XzMyX3JlZiwKKyAgICAgICAgICAgICAgICAgU0NBVFRFUl9C VUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOworfQorCisvKiBzY2F0dGVyIHRo ZSAzMiBiaXQgZWxlbWVudHMgdXNpbmcgQyAqLwordm9pZCBzY2FsYXJfc2NhdHRlcl8xNl8zMl9h Y2ModW5zaWduZWQgc2hvcnQgKnZzY2F0dGVyMTZfMzIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CisgICAgICAgIHZzY2F0dGVyMTZfMzJbd29yZF9vZmZz ZXRzW2ldIC8gMl0gKz0gaGFsZl92YWx1ZXNfYWNjW2ldOworICAgIH0KK30KKwordm9pZCBjaGVj a19zY2F0dGVyXzE2XzMyX2FjYygpCit7CisgICAgbWVtc2V0KHZzY2F0dGVyMTZfMzJfcmVmLCBG SUxMX0NIQVIsCisgICAgICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWdu ZWQgc2hvcnQpKTsKKyAgICBzY2FsYXJfc2NhdHRlcl8xNl8zMih2c2NhdHRlcjE2XzMyX3JlZik7 CisgICAgc2NhbGFyX3NjYXR0ZXJfMTZfMzJfYWNjKHZzY2F0dGVyMTZfMzJfcmVmKTsKKyAgICBj aGVja19idWZmZXIoX19mdW5jX18sIHZ0Y20udnNjYXR0ZXIxNl8zMiwgdnNjYXR0ZXIxNl8zMl9y ZWYsCisgICAgICAgICAgICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWdu ZWQgc2hvcnQpKTsKK30KKwordm9pZCBzY2FsYXJfc2NhdHRlcl8xNl8zMl9tYXNrZWQodW5zaWdu ZWQgc2hvcnQgKnZzY2F0dGVyMTZfMzIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRS SVhfU0laRTsgaSsrKSB7CisgICAgICAgIGlmIChoYWxmX3ByZWRpY2F0ZXNbaV0pIHsKKyAgICAg ICAgICAgIHZzY2F0dGVyMTZfMzJbd29yZF9vZmZzZXRzW2ldIC8gMl0gPSBoYWxmX3ZhbHVlc19t YXNrZWRbaV07CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgY2hlY2tfc2NhdHRlcl8xNl8z Ml9tYXNrZWQoKQoreworICAgIG1lbXNldCh2c2NhdHRlcjE2XzMyX3JlZiwgRklMTF9DSEFSLAor ICAgICAgICAgICBTQ0FUVEVSX0JVRkZFUl9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7 CisgICAgc2NhbGFyX3NjYXR0ZXJfMTZfMzIodnNjYXR0ZXIxNl8zMl9yZWYpOworICAgIHNjYWxh cl9zY2F0dGVyXzE2XzMyX2FjYyh2c2NhdHRlcjE2XzMyX3JlZik7CisgICAgc2NhbGFyX3NjYXR0 ZXJfMTZfMzJfbWFza2VkKHZzY2F0dGVyMTZfMzJfcmVmKTsKKyAgICBjaGVja19idWZmZXIoX19m dW5jX18sIHZ0Y20udnNjYXR0ZXIxNl8zMiwgdnNjYXR0ZXIxNl8zMl9yZWYsCisgICAgICAgICAg ICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKTsKK30K KworLyogZ2F0aGVyIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBzY2F0dGVyIGJ1ZmZlciB1c2luZyBD ICovCit2b2lkIHNjYWxhcl9nYXRoZXJfMTYodW5zaWduZWQgc2hvcnQgKnZnYXRoZXIxNikKK3sK KyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsKKyAgICAgICAgdmdh dGhlcjE2W2ldID0gdnRjbS52c2NhdHRlcjE2W2hhbGZfb2Zmc2V0c1tpXSAvIDJdOworICAgIH0K K30KKwordm9pZCBjaGVja19nYXRoZXJfMTYoKQoreworICAgICAgbWVtc2V0KHZnYXRoZXIxNl9y ZWYsIDAsIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7CisgICAgICBzY2Fs YXJfZ2F0aGVyXzE2KHZnYXRoZXIxNl9yZWYpOworICAgICAgY2hlY2tfYnVmZmVyKF9fZnVuY19f LCB2dGNtLnZnYXRoZXIxNiwgdmdhdGhlcjE2X3JlZiwKKyAgICAgICAgICAgICAgICAgICBNQVRS SVhfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOworfQorCit2b2lkIHNjYWxhcl9nYXRo ZXJfMTZfbWFza2VkKHVuc2lnbmVkIHNob3J0ICp2Z2F0aGVyMTYpCit7CisgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CisgICAgICAgIGlmIChoYWxmX3ByZWRpY2F0 ZXNbaV0pIHsKKyAgICAgICAgICAgIHZnYXRoZXIxNltpXSA9IHZ0Y20udnNjYXR0ZXIxNltoYWxm X29mZnNldHNbaV0gLyAyXTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBjaGVja19nYXRo ZXJfMTZfbWFza2VkKCkKK3sKKyAgICBtZW1zZXQodmdhdGhlcjE2X3JlZiwgZ2F0aGVyXzE2X21h c2tlZF9pbml0KCksCisgICAgICAgICAgIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNo b3J0KSk7CisgICAgc2NhbGFyX2dhdGhlcl8xNl9tYXNrZWQodmdhdGhlcjE2X3JlZik7CisgICAg Y2hlY2tfYnVmZmVyKF9fZnVuY19fLCB2dGNtLnZnYXRoZXIxNiwgdmdhdGhlcjE2X3JlZiwKKyAg ICAgICAgICAgICAgICAgTUFUUklYX1NJWkUgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKTsKK30K KworLyogZ2F0aGVyIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBzY2F0dGVyIGJ1ZmZlciB1c2luZyBD ICovCit2b2lkIHNjYWxhcl9nYXRoZXJfMzIodW5zaWduZWQgaW50ICp2Z2F0aGVyMzIpCit7Cisg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CisgICAgICAgIHZnYXRo ZXIzMltpXSA9IHZ0Y20udnNjYXR0ZXIzMlt3b3JkX29mZnNldHNbaV0gLyA0XTsKKyAgICB9Cit9 CisKK3ZvaWQgY2hlY2tfZ2F0aGVyXzMyKHZvaWQpCit7CisgICAgbWVtc2V0KHZnYXRoZXIzMl9y ZWYsIDAsIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOworICAgIHNjYWxhcl9n YXRoZXJfMzIodmdhdGhlcjMyX3JlZik7CisgICAgY2hlY2tfYnVmZmVyKF9fZnVuY19fLCB2dGNt LnZnYXRoZXIzMiwgdmdhdGhlcjMyX3JlZiwKKyAgICAgICAgICAgICAgICAgTUFUUklYX1NJWkUg KiBzaXplb2YodW5zaWduZWQgaW50KSk7Cit9CisKK3ZvaWQgc2NhbGFyX2dhdGhlcl8zMl9tYXNr ZWQodW5zaWduZWQgaW50ICp2Z2F0aGVyMzIpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBN QVRSSVhfU0laRTsgKytpKSB7CisgICAgICAgIGlmICh3b3JkX3ByZWRpY2F0ZXNbaV0pIHsKKyAg ICAgICAgICAgIHZnYXRoZXIzMltpXSA9IHZ0Y20udnNjYXR0ZXIzMlt3b3JkX29mZnNldHNbaV0g LyA0XTsKKyAgICAgICAgfQorICAgIH0KK30KKworCit2b2lkIGNoZWNrX2dhdGhlcl8zMl9tYXNr ZWQodm9pZCkKK3sKKyAgICBtZW1zZXQodmdhdGhlcjMyX3JlZiwgZ2F0aGVyXzMyX21hc2tlZF9p bml0KCksCisgICAgICAgICAgIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOwor ICAgIHNjYWxhcl9nYXRoZXJfMzJfbWFza2VkKHZnYXRoZXIzMl9yZWYpOworICAgIGNoZWNrX2J1 ZmZlcihfX2Z1bmNfXywgdnRjbS52Z2F0aGVyMzIsCisgICAgICAgICAgICAgICAgIHZnYXRoZXIz Ml9yZWYsIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOworfQorCisvKiBnYXRo ZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIgYnVmZmVyIHVzaW5nIEMgKi8KK3ZvaWQg c2NhbGFyX2dhdGhlcl8xNl8zMih1bnNpZ25lZCBzaG9ydCAqdmdhdGhlcjE2XzMyKQoreworICAg IGZvciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7ICsraSkgeworICAgICAgICB2Z2F0aGVy MTZfMzJbaV0gPSB2dGNtLnZzY2F0dGVyMTZfMzJbd29yZF9vZmZzZXRzW2ldIC8gMl07CisgICAg fQorfQorCit2b2lkIGNoZWNrX2dhdGhlcl8xNl8zMih2b2lkKQoreworICAgIG1lbXNldCh2Z2F0 aGVyMTZfMzJfcmVmLCAwLCBNQVRSSVhfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwor ICAgIHNjYWxhcl9nYXRoZXJfMTZfMzIodmdhdGhlcjE2XzMyX3JlZik7CisgICAgY2hlY2tfYnVm ZmVyKF9fZnVuY19fLCB2dGNtLnZnYXRoZXIxNl8zMiwgdmdhdGhlcjE2XzMyX3JlZiwKKyAgICAg ICAgICAgICAgICAgTUFUUklYX1NJWkUgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpKTsKK30KKwor dm9pZCBzY2FsYXJfZ2F0aGVyXzE2XzMyX21hc2tlZCh1bnNpZ25lZCBzaG9ydCAqdmdhdGhlcjE2 XzMyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7ICsraSkgeworICAg ICAgICBpZiAoaGFsZl9wcmVkaWNhdGVzW2ldKSB7CisgICAgICAgICAgICB2Z2F0aGVyMTZfMzJb aV0gPSB2dGNtLnZzY2F0dGVyMTZfMzJbd29yZF9vZmZzZXRzW2ldIC8gMl07CisgICAgICAgIH0K KyAgICB9CisKK30KKwordm9pZCBjaGVja19nYXRoZXJfMTZfMzJfbWFza2VkKHZvaWQpCit7Cisg ICAgbWVtc2V0KHZnYXRoZXIxNl8zMl9yZWYsIGdhdGhlcl8xNl9tYXNrZWRfaW5pdCgpLAorICAg ICAgICAgICBNQVRSSVhfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOworICAgIHNjYWxh cl9nYXRoZXJfMTZfMzJfbWFza2VkKHZnYXRoZXIxNl8zMl9yZWYpOworICAgIGNoZWNrX2J1ZmZl cihfX2Z1bmNfXywgdnRjbS52Z2F0aGVyMTZfMzIsIHZnYXRoZXIxNl8zMl9yZWYsCisgICAgICAg ICAgICAgICAgIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7Cit9CisKKy8q IHByaW50IHNjYXR0ZXIxNiBidWZmZXIgKi8KK3ZvaWQgcHJpbnRfc2NhdHRlcjE2X2J1ZmZlcih2 b2lkKQoreworICAgIGlmIChQUklOVF9EQVRBKSB7CisgICAgICAgIHByaW50ZigiXG5cblByaW50 aW5nIHRoZSAxNiBiaXQgc2NhdHRlciBidWZmZXIiKTsKKworICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IFNDQVRURVJfQlVGRkVSX1NJWkU7IGkrKykgeworICAgICAgICAgICAgaWYgKChpICUg TUFUUklYX1NJWkUpID09IDApIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIlxuIik7CisgICAg ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDI7IGorKykgeworICAg ICAgICAgICAgICAgIHByaW50ZigiJWMiLCAoY2hhcikoKHZ0Y20udnNjYXR0ZXIxNltpXSA+PiBq ICogOCkgJiAweGZmKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGYoIiAiKTsK KyAgICAgICAgfQorICAgICAgICBwcmludGYoIlxuIik7CisgICAgfQorfQorCisvKiBwcmludCB0 aGUgZ2F0aGVyIDE2IGJ1ZmZlciAqLwordm9pZCBwcmludF9nYXRoZXJfcmVzdWx0XzE2KHZvaWQp Cit7CisgICAgaWYgKFBSSU5UX0RBVEEpIHsKKyAgICAgICAgcHJpbnRmKCJcblxuUHJpbnRpbmcg dGhlIDE2IGJpdCBnYXRoZXIgcmVzdWx0XG4iKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsg aSA8IE1BVFJJWF9TSVpFOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwg MjsgaisrKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlYyIsIChjaGFyKSgodnRjbS52Z2F0 aGVyMTZbaV0gPj4gaiAqIDgpICYgMHhmZikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg cHJpbnRmKCIgIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCJcbiIpOworICAgIH0KK30K KworLyogcHJpbnQgdGhlIHNjYXR0ZXIzMiBidWZmZXIgKi8KK3ZvaWQgcHJpbnRfc2NhdHRlcjMy X2J1ZmZlcih2b2lkKQoreworICAgIGlmIChQUklOVF9EQVRBKSB7CisgICAgICAgIHByaW50Zigi XG5cblByaW50aW5nIHRoZSAzMiBiaXQgc2NhdHRlciBidWZmZXIiKTsKKworICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IFNDQVRURVJfQlVGRkVSX1NJWkU7IGkrKykgeworICAgICAgICAgICAg aWYgKChpICUgTUFUUklYX1NJWkUpID09IDApIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIlxu Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGor KykgeworICAgICAgICAgICAgICAgIHByaW50ZigiJWMiLCAoY2hhcikoKHZ0Y20udnNjYXR0ZXIz MltpXSA+PiBqICogOCkgJiAweGZmKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmlu dGYoIiAiKTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIlxuIik7CisgICAgfQorfQorCisv KiBwcmludCB0aGUgZ2F0aGVyIDMyIGJ1ZmZlciAqLwordm9pZCBwcmludF9nYXRoZXJfcmVzdWx0 XzMyKHZvaWQpCit7CisgICAgaWYgKFBSSU5UX0RBVEEpIHsKKyAgICAgICAgcHJpbnRmKCJcblxu UHJpbnRpbmcgdGhlIDMyIGJpdCBnYXRoZXIgcmVzdWx0XG4iKTsKKworICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGog PSAwOyBqIDwgNDsgaisrKSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlYyIsIChjaGFyKSgo dnRjbS52Z2F0aGVyMzJbaV0gPj4gaiAqIDgpICYgMHhmZikpOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgIH0KKyAgICAgICAgcHJpbnRmKCJcbiIpOwor ICAgIH0KK30KKworLyogcHJpbnQgdGhlIHNjYXR0ZXIxNl8zMiBidWZmZXIgKi8KK3ZvaWQgcHJp bnRfc2NhdHRlcjE2XzMyX2J1ZmZlcih2b2lkKQoreworICAgIGlmIChQUklOVF9EQVRBKSB7Cisg ICAgICAgIHByaW50ZigiXG5cblByaW50aW5nIHRoZSAxNl8zMiBiaXQgc2NhdHRlciBidWZmZXIi KTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFNDQVRURVJfQlVGRkVSX1NJWkU7IGkr KykgeworICAgICAgICAgICAgaWYgKChpICUgTUFUUklYX1NJWkUpID09IDApIHsKKyAgICAgICAg ICAgICAgICBwcmludGYoIlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGlu dCBqID0gMDsgaiA8IDI7IGorKykgeworICAgICAgICAgICAgICAgIHByaW50ZigiJWMiLAorICAg ICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSgodnRjbS52c2NhdHRlcjE2XzMyW2ld ID4+IGogKiA4KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByaW50Zigi ICIpOworICAgICAgICB9CisgICAgICAgIHByaW50ZigiXG4iKTsKKyAgICB9Cit9CisKKy8qIHBy aW50IHRoZSBnYXRoZXIgMTZfMzIgYnVmZmVyICovCit2b2lkIHByaW50X2dhdGhlcl9yZXN1bHRf MTZfMzIodm9pZCkKK3sKKyAgICBpZiAoUFJJTlRfREFUQSkgeworICAgICAgICBwcmludGYoIlxu XG5QcmludGluZyB0aGUgMTZfMzIgYml0IGdhdGhlciByZXN1bHRcbiIpOworCisgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7IGkrKykgeworICAgICAgICAgICAgZm9yIChp bnQgaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiVjIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKCh2dGNtLnZnYXRoZXIxNl8zMltp XSA+PiBqICogOCkgJiAweGZmKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGYo IiAiKTsKKyAgICAgICAgfQorICAgICAgICBwcmludGYoIlxuIik7CisgICAgfQorfQorCitpbnQg bWFpbigpCit7CisgICAgcHJlZmlsbF92dGNtX3NjcmF0Y2goKTsKKworICAgIC8qIDE2IGJpdCBl bGVtZW50cyB3aXRoIDE2IGJpdCBvZmZzZXRzICovCisgICAgY3JlYXRlX29mZnNldHNfdmFsdWVz X3ByZWRzXzE2KCk7CisKKyAgICB2ZWN0b3Jfc2NhdHRlcl8xNigpOworICAgIHByaW50X3NjYXR0 ZXIxNl9idWZmZXIoKTsKKyAgICBjaGVja19zY2F0dGVyXzE2KCk7CisKKyAgICB2ZWN0b3JfZ2F0 aGVyXzE2KCk7CisgICAgcHJpbnRfZ2F0aGVyX3Jlc3VsdF8xNigpOworICAgIGNoZWNrX2dhdGhl cl8xNigpOworCisgICAgdmVjdG9yX2dhdGhlcl8xNl9tYXNrZWQoKTsKKyAgICBwcmludF9nYXRo ZXJfcmVzdWx0XzE2KCk7CisgICAgY2hlY2tfZ2F0aGVyXzE2X21hc2tlZCgpOworCisgICAgdmVj dG9yX3NjYXR0ZXJfMTZfYWNjKCk7CisgICAgcHJpbnRfc2NhdHRlcjE2X2J1ZmZlcigpOworICAg IGNoZWNrX3NjYXR0ZXJfMTZfYWNjKCk7CisKKyAgICB2ZWN0b3Jfc2NhdHRlcl8xNl9tYXNrZWQo KTsKKyAgICBwcmludF9zY2F0dGVyMTZfYnVmZmVyKCk7CisgICAgY2hlY2tfc2NhdHRlcl8xNl9t YXNrZWQoKTsKKworICAgIC8qIDMyIGJpdCBlbGVtZW50cyB3aXRoIDMyIGJpdCBvZmZzZXRzICov CisgICAgY3JlYXRlX29mZnNldHNfdmFsdWVzX3ByZWRzXzMyKCk7CisKKyAgICB2ZWN0b3Jfc2Nh dHRlcl8zMigpOworICAgIHByaW50X3NjYXR0ZXIzMl9idWZmZXIoKTsKKyAgICBjaGVja19zY2F0 dGVyXzMyKCk7CisKKyAgICB2ZWN0b3JfZ2F0aGVyXzMyKCk7CisgICAgcHJpbnRfZ2F0aGVyX3Jl c3VsdF8zMigpOworICAgIGNoZWNrX2dhdGhlcl8zMigpOworCisgICAgdmVjdG9yX2dhdGhlcl8z Ml9tYXNrZWQoKTsKKyAgICBwcmludF9nYXRoZXJfcmVzdWx0XzMyKCk7CisgICAgY2hlY2tfZ2F0 aGVyXzMyX21hc2tlZCgpOworCisgICAgdmVjdG9yX3NjYXR0ZXJfMzJfYWNjKCk7CisgICAgcHJp bnRfc2NhdHRlcjMyX2J1ZmZlcigpOworICAgIGNoZWNrX3NjYXR0ZXJfMzJfYWNjKCk7CisKKyAg ICB2ZWN0b3Jfc2NhdHRlcl8zMl9tYXNrZWQoKTsKKyAgICBwcmludF9zY2F0dGVyMzJfYnVmZmVy KCk7CisgICAgY2hlY2tfc2NhdHRlcl8zMl9tYXNrZWQoKTsKKworICAgIC8qIDE2IGJpdCBlbGVt ZW50cyB3aXRoIDMyIGJpdCBvZmZzZXRzICovCisgICAgY3JlYXRlX29mZnNldHNfdmFsdWVzX3By ZWRzXzE2XzMyKCk7CisKKyAgICB2ZWN0b3Jfc2NhdHRlcl8xNl8zMigpOworICAgIHByaW50X3Nj YXR0ZXIxNl8zMl9idWZmZXIoKTsKKyAgICBjaGVja19zY2F0dGVyXzE2XzMyKCk7CisKKyAgICB2 ZWN0b3JfZ2F0aGVyXzE2XzMyKCk7CisgICAgcHJpbnRfZ2F0aGVyX3Jlc3VsdF8xNl8zMigpOwor ICAgIGNoZWNrX2dhdGhlcl8xNl8zMigpOworCisgICAgdmVjdG9yX2dhdGhlcl8xNl8zMl9tYXNr ZWQoKTsKKyAgICBwcmludF9nYXRoZXJfcmVzdWx0XzE2XzMyKCk7CisgICAgY2hlY2tfZ2F0aGVy XzE2XzMyX21hc2tlZCgpOworCisgICAgdmVjdG9yX3NjYXR0ZXJfMTZfMzJfYWNjKCk7CisgICAg cHJpbnRfc2NhdHRlcjE2XzMyX2J1ZmZlcigpOworICAgIGNoZWNrX3NjYXR0ZXJfMTZfMzJfYWNj KCk7CisKKyAgICB2ZWN0b3Jfc2NhdHRlcl8xNl8zMl9tYXNrZWQoKTsKKyAgICBwcmludF9zY2F0 dGVyMTZfMzJfYnVmZmVyKCk7CisgICAgY2hlY2tfc2NhdHRlcl8xNl8zMl9tYXNrZWQoKTsKKwor ICAgIHB1dHMoZXJyID8gIkZBSUwiIDogIlBBU1MiKTsKKyAgICByZXR1cm4gZXJyOworfQpkaWZm IC0tZ2l0IGEvdGVzdHMvdGNnL2hleGFnb24vTWFrZWZpbGUudGFyZ2V0IGIvdGVzdHMvdGNnL2hl eGFnb24vTWFrZWZpbGUudGFyZ2V0CmluZGV4IDU5YjViYjEuLmM0NTQwZDUgMTAwNjQ0Ci0tLSBh L3Rlc3RzL3RjZy9oZXhhZ29uL01ha2VmaWxlLnRhcmdldAorKysgYi90ZXN0cy90Y2cvaGV4YWdv bi9NYWtlZmlsZS50YXJnZXQKQEAgLTM5LDYgKzM5LDcgQEAgSEVYX1RFU1RTICs9IGJyZXYKIEhF WF9URVNUUyArPSBsb2FkX3VucGFjawogSEVYX1RFU1RTICs9IGxvYWRfYWxpZ24KIEhFWF9URVNU UyArPSB2ZWN0b3JfYWRkX2ludAorSEVYX1RFU1RTICs9IHNjYXR0ZXJfZ2F0aGVyCiBIRVhfVEVT VFMgKz0gYXRvbWljcwogSEVYX1RFU1RTICs9IGZwc3R1ZmYKIEhFWF9URVNUUyArPSBvdmVyZmxv dwpAQCAtNDYsNSArNDcsNiBAQCBIRVhfVEVTVFMgKz0gaHZ4X21pc2MKIAogVEVTVFMgKz0gJChI RVhfVEVTVFMpCiAKK3NjYXR0ZXJfZ2F0aGVyOiBDRkxBR1MgKz0gLW1odngKIHZlY3Rvcl9hZGRf aW50OiBDRkxBR1MgKz0gLW1odnggLWZ2ZWN0b3JpemUKIGh2eF9taXNjOiBDRkxBR1MgKz0gLW1o dngKLS0gCjIuNy40Cgo=