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 X-Spam-Level: X-Spam-Status: No, score=-4.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,URIBL_DBL_ABUSE_MALW autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71621C3524A for ; Mon, 3 Feb 2020 03:12:20 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 35B73205F4 for ; Mon, 3 Feb 2020 03:12:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="LlA5sXZg"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=ndufresne-ca.20150623.gappssmtp.com header.i=@ndufresne-ca.20150623.gappssmtp.com header.b="AK+e3Km5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 35B73205F4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xy/hgEri3F6Ln5ES+COe1jYB2vfO9JbHRNsI3YXuVpQ=; b=LlA5sXZgsAFtAA DiXkDLK8se+2tzXDh8vGoexOl7dW09vCFfd3n9hInKwN/A7Xv1fAWXrFQKF1DP/Mc7qrwQTVIwWCN 7dZWphEi54SDwYdbPyYr6T2kLvVi0Y/r6pjbtP+CDoy8wezOpd5ceY7T4TVi7IST2J8ImvWFKalOq 5uIm8RS7dRqMdAVOFbopOvTzD6Hu7+vPJpZy2wetPJowubdCKyy2bih4CFu8XvTN5i5dwM0Y/E6eI +/wMMAHONqUZKJo/xv+wwyCKXg/lCVARp+GgDUqznml0l0JwpR/LDwUH8G8tSbxMk8brfirlvWb5p mVQ9pzyizqxEmCzB8CaA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iyS9b-0001aw-6n; Mon, 03 Feb 2020 03:12:03 +0000 Received: from mail-qt1-x842.google.com ([2607:f8b0:4864:20::842]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iyS9P-0001TL-Vd for linux-amlogic@lists.infradead.org; Mon, 03 Feb 2020 03:11:56 +0000 Received: by mail-qt1-x842.google.com with SMTP id h12so10384123qtu.1 for ; Sun, 02 Feb 2020 19:11:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=L84kR28aINnKvlcJPw1ffOVe0dxk5e3TedLlFlX4090=; b=AK+e3Km5gwOOK4sPmSQT/JedakvtjGJeM543MY5rpNOYCx8XUq37fT81xUSpiPscvN m2fwR864eRvmvN5dAs7Gyshh3WjkeFT3y/JuAjm1GBkU7AYAmCBNz3KkIXqrV/+V65ib K/gSYz6QVQs5I5sTBo+jSt1DKN6wgpiykPpfhmuYmF99uqwVgIrNKiImR70WQzyvgDJe yfcJGvVD/DQrAs6lcL5jCGjG+fBnKSfS9MvksAWIjlyfMFhjaPu6HFXtBfwjv9gSqL2q qZFQ0u12CelI0vMjnUvtfEfz0PWtrvY3Plrup1jVLwS7bZiYbVByRcLjqC8ABiapMd50 Kmhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=L84kR28aINnKvlcJPw1ffOVe0dxk5e3TedLlFlX4090=; b=bHYWhpXmK90TcBVFqcq0XlSrqO/YB4XdiBjvFBYlT28N51ML7JW4qRFD7kwHSe5pjX yQq5NISWeEEWJJqTDGo4n9Qpbi19E3sBX9jDZa50EEvwY8oBgW/QLmg3UL34K80u32H/ PjNDAsaFVEHpvssZ7KEO7kg1Vnwd5AhGynI96MhalzEH/YbTRWtUaE/AxccwU156g+V+ xaA6N2YfkMlAv52ye1yPadmXdCNtsEjHx79pBQBe5yb9Z2bfx0XcHsiGA9s9BQ8QYRy3 1HxgJcTqeiTL8NnEtajvAwziEabtIOYnNVNw461q6UcInAMgdjHIOSGi8vEliPcKKMWj CESw== X-Gm-Message-State: APjAAAVQ77olir8QrrqfJ43LYJB2xF2Zc98njv4it/M3Ja0U6i0GAYNC skYg03omMZF1/RhCIwAIzljSWcEediQgXg== X-Google-Smtp-Source: APXvYqz9bh5RBBtJqqDb/v5DIm0AqciyfmgagKzZ5dRdGRFXxyNlV5GZKkt9BQWsotwptC01FMlxiA== X-Received: by 2002:ac8:7388:: with SMTP id t8mr21748245qtp.244.1580699506747; Sun, 02 Feb 2020 19:11:46 -0800 (PST) Received: from skullcanyon ([192.222.193.21]) by smtp.gmail.com with ESMTPSA id f59sm6129010qtb.75.2020.02.02.19.11.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Feb 2020 19:11:45 -0800 (PST) Message-ID: Subject: Re: [PATCH v3 5/5] media: meson: vdec: add VP9 decoder support From: Nicolas Dufresne To: Neil Armstrong , mchehab@kernel.org, hans.verkuil@cisco.com Date: Sun, 02 Feb 2020 22:11:44 -0500 In-Reply-To: <20200116133437.2443-6-narmstrong@baylibre.com> References: <20200116133437.2443-1-narmstrong@baylibre.com> <20200116133437.2443-6-narmstrong@baylibre.com> User-Agent: Evolution 3.34.3 (3.34.3-1.fc31) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200202_191152_113562_1CE3CB93 X-CRM114-Status: GOOD ( 17.35 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Maxime Jourdan , linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgTmVpbCwKCkxlIGpldWRpIDE2IGphbnZpZXIgMjAyMCDDoCAxNDozNCArMDEwMCwgTmVpbCBB cm1zdHJvbmcgYSDDqWNyaXQgOgo+IEZyb206IE1heGltZSBKb3VyZGFuIDxtam91cmRhbkBiYXls aWJyZS5jb20+Cj4gCj4gVGhpcyBhZGRzIFZQOSBkZWNvZGluZyBmb3IgdGhlIEFtbG9naWMgR1hM LCBHMTJBICYgU00xIFNvQ3MsIHVzaW5nCj4gdGhlIGNvbW1vbmcgIkhFVkMiIEhXIGRlY29kZXIu Cj4gCj4gRm9yIEcxMkEgJiBTTTEsIGl0IHVzZXMgdGhlIElPTU1VIHN1cHBvcnQgZnJvbSB0aGUg ZmlybXdhcmUuCj4gCj4gRm9yIDEwYml0IGRlY29kaW5nLCB0aGUgZmlybXdhcmUgY2FuIG9ubHkg ZGVjb2RlIGluIHRoZSBwcm9wcmlldGFyeQo+IEFtbG9naWMgRnJhbWVidWZmZXIgQ29tcHJlc3Np b24gZm9ybWF0LCBidXQgY2FuIG91dHB1dCBpbiA4Yml0IE5WMTIKPiBidWZmZXIgd2hpbGUgd3Jp dGluZyB0aGUgZGVjb2RlZCBmcmFtZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYXhpbWUgSm91cmRh biA8bWpvdXJkYW5AYmF5bGlicmUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE5laWwgQXJtc3Ryb25n IDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9zdGFnaW5nL21lZGlh L21lc29uL3ZkZWMvTWFrZWZpbGUgICAgIHwgICAgMiArLQo+ICBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvbWVzb24vdmRlYy9jb2RlY192cDkuYyAgfCAyMTM5ICsrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX3ZwOS5oICB8ICAgMTMgKwo+ICBk cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9oZXZjX3JlZ3MuaCAgfCAgICA3ICsKPiAg ZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlYy5jICAgICAgIHwgICAgNSArCj4g IC4uLi9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmMgICB8ICAgIDQgKwo+ ICAuLi4vc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL3ZkZWNfcGxhdGZvcm0uYyAgfCAgIDM4ICsK PiAgNyBmaWxlcyBjaGFuZ2VkLCAyMjA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVj X3ZwOS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24v dmRlYy9jb2RlY192cDkuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEv bWVzb24vdmRlYy9NYWtlZmlsZSBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL01h a2VmaWxlCj4gaW5kZXggZjU1YjZlNjI1MDM0Li42ZTcyNmFmODRhYzkgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9NYWtlZmlsZQo+IEBAIC0zLDYgKzMsNiBAQAo+ICAK PiAgbWVzb24tdmRlYy1vYmpzID0gZXNwYXJzZXIubyB2ZGVjLm8gdmRlY19oZWxwZXJzLm8gdmRl Y19wbGF0Zm9ybS5vCj4gIG1lc29uLXZkZWMtb2JqcyArPSB2ZGVjXzEubyB2ZGVjX2hldmMubwo+ IC1tZXNvbi12ZGVjLW9ianMgKz0gY29kZWNfbXBlZzEyLm8gY29kZWNfaDI2NC5vIGNvZGVjX2hl dmNfY29tbW9uLm8KPiArbWVzb24tdmRlYy1vYmpzICs9IGNvZGVjX21wZWcxMi5vIGNvZGVjX2gy NjQubyBjb2RlY19oZXZjX2NvbW1vbi5vIGNvZGVjX3ZwOS5vCj4gIAo+ICBvYmotJChDT05GSUdf VklERU9fTUVTT05fVkRFQykgKz0gbWVzb24tdmRlYy5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv c3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX3ZwOS5jIGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL21lc29uL3ZkZWMvY29kZWNfdnA5LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAwMC4uOWUyM2NjYmI3Y2MwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZl cnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX3ZwOS5jCj4gQEAgLTAsMCArMSwyMTM5 IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+ICsvKgo+ICsgKiBD b3B5cmlnaHQgKEMpIDIwMTggTWF4aW1lIEpvdXJkYW4gPG1qb3VyZGFuQGJheWxpYnJlLmNvbT4K PiArICogQ29weXJpZ2h0IChDKSAyMDE1IEFtbG9naWMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1tZW0ybWVtLmg+Cj4gKyNpbmNs dWRlIDxtZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPgo+ICsKPiArI2luY2x1ZGUgImRvc19y ZWdzLmgiCj4gKyNpbmNsdWRlICJoZXZjX3JlZ3MuaCIKPiArI2luY2x1ZGUgInZkZWNfaGVscGVy cy5oIgo+ICsjaW5jbHVkZSAiY29kZWNfaGV2Y19jb21tb24uaCIKPiArCj4gKy8qIEhFVkMgcmVn IG1hcHBpbmcgKi8KPiArI2RlZmluZSBWUDlfREVDX1NUQVRVU19SRUcJSEVWQ19BU1NJU1RfU0NS QVRDSF8wCj4gKwkjZGVmaW5lIFZQOV8xMEJfREVDT0RFX1NMSUNFCTUKPiArCSNkZWZpbmUgVlA5 X0hFQURfUEFSU0VSX0RPTkUJMHhmMAo+ICsjZGVmaW5lIFZQOV9SUE1fQlVGRkVSCQlIRVZDX0FT U0lTVF9TQ1JBVENIXzEKPiArI2RlZmluZSBWUDlfU0hPUlRfVEVSTV9SUFMJSEVWQ19BU1NJU1Rf U0NSQVRDSF8yCj4gKyNkZWZpbmUgVlA5X0FEQVBUX1BST0JfUkVHCUhFVkNfQVNTSVNUX1NDUkFU Q0hfMwo+ICsjZGVmaW5lIFZQOV9NTVVfTUFQX0JVRkZFUglIRVZDX0FTU0lTVF9TQ1JBVENIXzQK PiArI2RlZmluZSBWUDlfUFBTX0JVRkZFUgkJSEVWQ19BU1NJU1RfU0NSQVRDSF81Cj4gKyNkZWZp bmUgVlA5X1NBT19VUAkJSEVWQ19BU1NJU1RfU0NSQVRDSF82Cj4gKyNkZWZpbmUgVlA5X1NUUkVB TV9TV0FQX0JVRkZFUglIRVZDX0FTU0lTVF9TQ1JBVENIXzcKPiArI2RlZmluZSBWUDlfU1RSRUFN X1NXQVBfQlVGRkVSMiBIRVZDX0FTU0lTVF9TQ1JBVENIXzgKPiArI2RlZmluZSBWUDlfUFJPQl9T V0FQX0JVRkZFUglIRVZDX0FTU0lTVF9TQ1JBVENIXzkKPiArI2RlZmluZSBWUDlfQ09VTlRfU1dB UF9CVUZGRVIJSEVWQ19BU1NJU1RfU0NSQVRDSF9BCj4gKyNkZWZpbmUgVlA5X1NFR19NQVBfQlVG RkVSCUhFVkNfQVNTSVNUX1NDUkFUQ0hfQgo+ICsjZGVmaW5lIFZQOV9TQ0FMRUxVVAkJSEVWQ19B U1NJU1RfU0NSQVRDSF9ECj4gKyNkZWZpbmUgVlA5X1dBSVRfRkxBRwkJSEVWQ19BU1NJU1RfU0NS QVRDSF9FCj4gKyNkZWZpbmUgTE1FTV9EVU1QX0FEUgkJSEVWQ19BU1NJU1RfU0NSQVRDSF9GCj4g KyNkZWZpbmUgTkFMX1NFQVJDSF9DVEwJCUhFVkNfQVNTSVNUX1NDUkFUQ0hfSQo+ICsjZGVmaW5l IFZQOV9ERUNPREVfTU9ERQkJSEVWQ19BU1NJU1RfU0NSQVRDSF9KCj4gKwkjZGVmaW5lIERFQ09E RV9NT0RFX1NJTkdMRSAwCj4gKyNkZWZpbmUgREVDT0RFX1NUT1BfUE9TCQlIRVZDX0FTU0lTVF9T Q1JBVENIX0sKPiArI2RlZmluZSBIRVZDX0RFQ09ERV9DT1VOVAlIRVZDX0FTU0lTVF9TQ1JBVENI X00KPiArI2RlZmluZSBIRVZDX0RFQ09ERV9TSVpFCUhFVkNfQVNTSVNUX1NDUkFUQ0hfTgo+ICsK PiArLyogVlA5IENvbnN0YW50cyAqLwo+ICsjZGVmaW5lIExDVV9TSVpFCQk2NAo+ICsjZGVmaW5l IE1BWF9SRUZfUElDX05VTQkJMjQKPiArI2RlZmluZSBSRUZTX1BFUl9GUkFNRQkJMwo+ICsjZGVm aW5lIFJFRl9GUkFNRVMJCTgKPiArI2RlZmluZSBNVl9NRU1fVU5JVAkJMHgyNDAKPiArI2RlZmlu ZSBBREFQVF9QUk9CX1NJWkUJCTB4ZjgwCj4gKwo+ICtlbnVtIEZSQU1FX1RZUEUgewo+ICsJS0VZ X0ZSQU1FID0gMCwKPiArCUlOVEVSX0ZSQU1FID0gMSwKPiArCUZSQU1FX1RZUEVTLAo+ICt9Owo+ ICsKPiArLyogVlA5IFdvcmtzcGFjZSBsYXlvdXQgKi8KPiArI2RlZmluZSBNUFJFRF9NVl9CVUZf U0laRSAweDEyMDAwMAo+ICsKPiArI2RlZmluZSBJUFBfU0laRQkweDQwMDAKPiArI2RlZmluZSBT QU9fQUJWX1NJWkUJMHgzMDAwMAo+ICsjZGVmaW5lIFNBT19WQl9TSVpFCTB4MzAwMDAKPiArI2Rl ZmluZSBTSF9UTV9SUFNfU0laRQkweDgwMAo+ICsjZGVmaW5lIFZQU19TSVpFCTB4ODAwCj4gKyNk ZWZpbmUgU1BTX1NJWkUJMHg4MDAKPiArI2RlZmluZSBQUFNfU0laRQkweDIwMDAKPiArI2RlZmlu ZSBTQU9fVVBfU0laRQkweDI4MDAKPiArI2RlZmluZSBTV0FQX0JVRl9TSVpFCTB4ODAwCj4gKyNk ZWZpbmUgU1dBUF9CVUYyX1NJWkUJMHg4MDAKPiArI2RlZmluZSBTQ0FMRUxVVF9TSVpFCTB4ODAw MAo+ICsjZGVmaW5lIERCTEtfUEFSQV9TSVpFCTB4ODAwMDAKPiArI2RlZmluZSBEQkxLX0RBVEFf U0laRQkweDgwMDAwCj4gKyNkZWZpbmUgU0VHX01BUF9TSVpFCTB4ZDgwMAo+ICsjZGVmaW5lIFBS T0JfU0laRQkweDUwMDAKPiArI2RlZmluZSBDT1VOVF9TSVpFCTB4MzAwMAo+ICsjZGVmaW5lIE1N VV9WQkhfU0laRQkweDUwMDAKPiArI2RlZmluZSBNUFJFRF9BQlZfU0laRQkweDEwMDAwCj4gKyNk ZWZpbmUgTVBSRURfTVZfU0laRQkoTVBSRURfTVZfQlVGX1NJWkUgKiBNQVhfUkVGX1BJQ19OVU0p Cj4gKyNkZWZpbmUgUlBNX0JVRl9TSVpFCTB4MTAwCj4gKyNkZWZpbmUgTE1FTV9TSVpFCTB4ODAw Cj4gKwo+ICsjZGVmaW5lIElQUF9PRkZTRVQgICAgICAgMHgwMAo+ICsjZGVmaW5lIFNBT19BQlZf T0ZGU0VUICAgKElQUF9PRkZTRVQgKyBJUFBfU0laRSkKPiArI2RlZmluZSBTQU9fVkJfT0ZGU0VU ICAgIChTQU9fQUJWX09GRlNFVCArIFNBT19BQlZfU0laRSkKPiArI2RlZmluZSBTSF9UTV9SUFNf T0ZGU0VUIChTQU9fVkJfT0ZGU0VUICsgU0FPX1ZCX1NJWkUpCj4gKyNkZWZpbmUgVlBTX09GRlNF VCAgICAgICAoU0hfVE1fUlBTX09GRlNFVCArIFNIX1RNX1JQU19TSVpFKQo+ICsjZGVmaW5lIFNQ U19PRkZTRVQgICAgICAgKFZQU19PRkZTRVQgKyBWUFNfU0laRSkKPiArI2RlZmluZSBQUFNfT0ZG U0VUICAgICAgIChTUFNfT0ZGU0VUICsgU1BTX1NJWkUpCj4gKyNkZWZpbmUgU0FPX1VQX09GRlNF VCAgICAoUFBTX09GRlNFVCArIFBQU19TSVpFKQo+ICsjZGVmaW5lIFNXQVBfQlVGX09GRlNFVCAg KFNBT19VUF9PRkZTRVQgKyBTQU9fVVBfU0laRSkKPiArI2RlZmluZSBTV0FQX0JVRjJfT0ZGU0VU IChTV0FQX0JVRl9PRkZTRVQgKyBTV0FQX0JVRl9TSVpFKQo+ICsjZGVmaW5lIFNDQUxFTFVUX09G RlNFVCAgKFNXQVBfQlVGMl9PRkZTRVQgKyBTV0FQX0JVRjJfU0laRSkKPiArI2RlZmluZSBEQkxL X1BBUkFfT0ZGU0VUIChTQ0FMRUxVVF9PRkZTRVQgKyBTQ0FMRUxVVF9TSVpFKQo+ICsjZGVmaW5l IERCTEtfREFUQV9PRkZTRVQgKERCTEtfUEFSQV9PRkZTRVQgKyBEQkxLX1BBUkFfU0laRSkKPiAr I2RlZmluZSBTRUdfTUFQX09GRlNFVCAgIChEQkxLX0RBVEFfT0ZGU0VUICsgREJMS19EQVRBX1NJ WkUpCj4gKyNkZWZpbmUgUFJPQl9PRkZTRVQgICAgICAoU0VHX01BUF9PRkZTRVQgKyBTRUdfTUFQ X1NJWkUpCj4gKyNkZWZpbmUgQ09VTlRfT0ZGU0VUICAgICAoUFJPQl9PRkZTRVQgKyBQUk9CX1NJ WkUpCj4gKyNkZWZpbmUgTU1VX1ZCSF9PRkZTRVQgICAoQ09VTlRfT0ZGU0VUICsgQ09VTlRfU0la RSkKPiArI2RlZmluZSBNUFJFRF9BQlZfT0ZGU0VUIChNTVVfVkJIX09GRlNFVCArIE1NVV9WQkhf U0laRSkKPiArI2RlZmluZSBNUFJFRF9NVl9PRkZTRVQgIChNUFJFRF9BQlZfT0ZGU0VUICsgTVBS RURfQUJWX1NJWkUpCj4gKyNkZWZpbmUgUlBNX09GRlNFVCAgICAgICAoTVBSRURfTVZfT0ZGU0VU ICsgTVBSRURfTVZfU0laRSkKPiArI2RlZmluZSBMTUVNX09GRlNFVCAgICAgIChSUE1fT0ZGU0VU ICsgUlBNX0JVRl9TSVpFKQo+ICsKPiArI2RlZmluZSBTSVpFX1dPUktTUEFDRQlBTElHTihMTUVN X09GRlNFVCArIExNRU1fU0laRSwgNjQgKiBTWl8xSykKPiArCj4gKyNkZWZpbmUgTk9ORSAgICAg ICAgICAgLTEKPiArI2RlZmluZSBJTlRSQV9GUkFNRSAgICAgMAo+ICsjZGVmaW5lIExBU1RfRlJB TUUgICAgICAxCj4gKyNkZWZpbmUgR09MREVOX0ZSQU1FICAgIDIKPiArI2RlZmluZSBBTFRSRUZf RlJBTUUgICAgMwo+ICsjZGVmaW5lIE1BWF9SRUZfRlJBTUVTICA0Cj4gKwo+ICsvKgo+ICsgKiBE ZWZpbmVzLCBkZWNsYXJhdGlvbnMsIHN1Yi1mdW5jdGlvbnMgZm9yIHZwOSBkZS1ibG9jayBsb29w Cj4gKwlmaWx0ZXIgVGhyL0x2bCB0YWJsZSB1cGRhdGUKPiArICogLSBzdHJ1Y3Qgc2VnbWVudGF0 aW9uIGlzIGZvciBsb29wIGZpbHRlciBvbmx5IChyZW1vdmVkIHNvbWV0aGluZykKPiArICogLSBm dW5jdGlvbiAidnA5X2xvb3BfZmlsdGVyX2luaXQiIGFuZCAidnA5X2xvb3BfZmlsdGVyX2ZyYW1l X2luaXQiIHdpbGwKPiArCWJlIGluc3RhbnRpYXRlZCBpbiBDX0VudHJ5Cj4gKyAqIC0gdnA5X2xv b3BfZmlsdGVyX2luaXQgcnVuIG9uY2UgYmVmb3JlIGRlY29kaW5nIHN0YXJ0Cj4gKyAqIC0gdnA5 X2xvb3BfZmlsdGVyX2ZyYW1lX2luaXQgcnVuIGJlZm9yZSBldmVyeSBmcmFtZSBkZWNvZGluZyBz dGFydAo+ICsgKiAtIHNldCB2aWRlbyBmb3JtYXQgdG8gVlA5IGlzIGluIHZwOV9sb29wX2ZpbHRl cl9pbml0Cj4gKyAqLwo+ICsjZGVmaW5lIE1BWF9MT09QX0ZJTFRFUgkJNjMKPiArI2RlZmluZSBN QVhfUkVGX0xGX0RFTFRBUwk0Cj4gKyNkZWZpbmUgTUFYX01PREVfTEZfREVMVEFTCTIKPiArI2Rl ZmluZSBTRUdNRU5UX0RFTFRBREFUQQkwCj4gKyNkZWZpbmUgU0VHTUVOVF9BQlNEQVRBCQkxCj4g KyNkZWZpbmUgTUFYX1NFR01FTlRTCQk4Cj4gKwo+ICsvKiBWUDkgUFJPQiBwcm9jZXNzaW5nIGRl ZmluZXMgKi8KPiArI2RlZmluZSBWUDlfUEFSVElUSU9OX1NUQVJUICAgICAgMAo+ICsjZGVmaW5l IFZQOV9QQVJUSVRJT05fU0laRV9TVEVQICAoMyAqIDQpCj4gKyNkZWZpbmUgVlA5X1BBUlRJVElP Tl9PTkVfU0laRSAgICg0ICogVlA5X1BBUlRJVElPTl9TSVpFX1NURVApCj4gKyNkZWZpbmUgVlA5 X1BBUlRJVElPTl9LRVlfU1RBUlQgIDAKPiArI2RlZmluZSBWUDlfUEFSVElUSU9OX1BfU1RBUlQg ICAgVlA5X1BBUlRJVElPTl9PTkVfU0laRQo+ICsjZGVmaW5lIFZQOV9QQVJUSVRJT05fU0laRSAg ICAgICAoMiAqIFZQOV9QQVJUSVRJT05fT05FX1NJWkUpCj4gKyNkZWZpbmUgVlA5X1NLSVBfU1RB UlQgICAgICAgICAgIChWUDlfUEFSVElUSU9OX1NUQVJUICsgVlA5X1BBUlRJVElPTl9TSVpFKQo+ ICsjZGVmaW5lIFZQOV9TS0lQX1NJWkUgICAgICAgICAgICA0IC8qIG9ubHkgdXNlIDMqLwo+ICsj ZGVmaW5lIFZQOV9UWF9NT0RFX1NUQVJUICAgICAgICAoVlA5X1NLSVBfU1RBUlQgKyBWUDlfU0tJ UF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9UWF9NT0RFXzhfMF9PRkZTRVQgICAwCj4gKyNkZWZpbmUg VlA5X1RYX01PREVfOF8xX09GRlNFVCAgIDEKPiArI2RlZmluZSBWUDlfVFhfTU9ERV8xNl8wX09G RlNFVCAgMgo+ICsjZGVmaW5lIFZQOV9UWF9NT0RFXzE2XzFfT0ZGU0VUICA0Cj4gKyNkZWZpbmUg VlA5X1RYX01PREVfMzJfMF9PRkZTRVQgIDYKPiArI2RlZmluZSBWUDlfVFhfTU9ERV8zMl8xX09G RlNFVCAgOQo+ICsjZGVmaW5lIFZQOV9UWF9NT0RFX1NJWkUgICAgICAgICAxMgo+ICsjZGVmaW5l IFZQOV9DT0VGX1NUQVJUICAgICAgICAgICAoVlA5X1RYX01PREVfU1RBUlQgKyBWUDlfVFhfTU9E RV9TSVpFKQo+ICsjZGVmaW5lIFZQOV9DT0VGX0JBTkRfMF9PRkZTRVQgICAwCj4gKyNkZWZpbmUg VlA5X0NPRUZfQkFORF8xX09GRlNFVCAgIChWUDlfQ09FRl9CQU5EXzBfT0ZGU0VUICsgMyAqIDMg KyAxKQo+ICsjZGVmaW5lIFZQOV9DT0VGX0JBTkRfMl9PRkZTRVQgICAoVlA5X0NPRUZfQkFORF8x X09GRlNFVCArIDYgKiAzKQo+ICsjZGVmaW5lIFZQOV9DT0VGX0JBTkRfM19PRkZTRVQgICAoVlA5 X0NPRUZfQkFORF8yX09GRlNFVCArIDYgKiAzKQo+ICsjZGVmaW5lIFZQOV9DT0VGX0JBTkRfNF9P RkZTRVQgICAoVlA5X0NPRUZfQkFORF8zX09GRlNFVCArIDYgKiAzKQo+ICsjZGVmaW5lIFZQOV9D T0VGX0JBTkRfNV9PRkZTRVQgICAoVlA5X0NPRUZfQkFORF80X09GRlNFVCArIDYgKiAzKQo+ICsj ZGVmaW5lIFZQOV9DT0VGX1NJWkVfT05FX1NFVCAgICAxMDAgLyogKCgzICsgNSAqIDYpICogMyAr IDEgcGFkZGluZykqLwo+ICsjZGVmaW5lIFZQOV9DT0VGXzRYNF9TVEFSVCAgICAgICAoVlA5X0NP RUZfU1RBUlQgKyAwICogVlA5X0NPRUZfU0laRV9PTkVfU0VUKQo+ICsjZGVmaW5lIFZQOV9DT0VG XzhYOF9TVEFSVCAgICAgICAoVlA5X0NPRUZfU1RBUlQgKyA0ICogVlA5X0NPRUZfU0laRV9PTkVf U0VUKQo+ICsjZGVmaW5lIFZQOV9DT0VGXzE2WDE2X1NUQVJUICAgICAoVlA5X0NPRUZfU1RBUlQg KyA4ICogVlA5X0NPRUZfU0laRV9PTkVfU0VUKQo+ICsjZGVmaW5lIFZQOV9DT0VGXzMyWDMyX1NU QVJUICAgICAoVlA5X0NPRUZfU1RBUlQgKyAxMiAqIFZQOV9DT0VGX1NJWkVfT05FX1NFVCkKPiAr I2RlZmluZSBWUDlfQ09FRl9TSVpFX1BMQU5FICAgICAgKDIgKiBWUDlfQ09FRl9TSVpFX09ORV9T RVQpCj4gKyNkZWZpbmUgVlA5X0NPRUZfU0laRSAgICAgICAgICAgICg0ICogMiAqIDIgKiBWUDlf Q09FRl9TSVpFX09ORV9TRVQpCj4gKyNkZWZpbmUgVlA5X0lOVEVSX01PREVfU1RBUlQgICAgIChW UDlfQ09FRl9TVEFSVCArIFZQOV9DT0VGX1NJWkUpCj4gKyNkZWZpbmUgVlA5X0lOVEVSX01PREVf U0laRSAgICAgIDI0IC8qIG9ubHkgdXNlIDIxICgjICogNykqLwo+ICsjZGVmaW5lIFZQOV9JTlRF UlBfU1RBUlQgICAgICAgICAoVlA5X0lOVEVSX01PREVfU1RBUlQgKyBWUDlfSU5URVJfTU9ERV9T SVpFKQo+ICsjZGVmaW5lIFZQOV9JTlRFUlBfU0laRSAgICAgICAgICA4Cj4gKyNkZWZpbmUgVlA5 X0lOVFJBX0lOVEVSX1NUQVJUICAgIChWUDlfSU5URVJQX1NUQVJUICsgVlA5X0lOVEVSUF9TSVpF KQo+ICsjZGVmaW5lIFZQOV9JTlRSQV9JTlRFUl9TSVpFICAgICA0Cj4gKyNkZWZpbmUgVlA5X0lO VEVSUF9JTlRSQV9JTlRFUl9TVEFSVCAgVlA5X0lOVEVSUF9TVEFSVAo+ICsjZGVmaW5lIFZQOV9J TlRFUlBfSU5UUkFfSU5URVJfU0laRSAgIChWUDlfSU5URVJQX1NJWkUgKyBWUDlfSU5UUkFfSU5U RVJfU0laRSkKPiArI2RlZmluZSBWUDlfQ09NUF9JTlRFUl9TVEFSVCAgICAgXAo+ICsJCShWUDlf SU5URVJQX0lOVFJBX0lOVEVSX1NUQVJUICsgVlA5X0lOVEVSUF9JTlRSQV9JTlRFUl9TSVpFKQo+ ICsjZGVmaW5lIFZQOV9DT01QX0lOVEVSX1NJWkUgICAgICA1Cj4gKyNkZWZpbmUgVlA5X0NPTVBf UkVGX1NUQVJUICAgICAgIChWUDlfQ09NUF9JTlRFUl9TVEFSVCArIFZQOV9DT01QX0lOVEVSX1NJ WkUpCj4gKyNkZWZpbmUgVlA5X0NPTVBfUkVGX1NJWkUgICAgICAgIDUKPiArI2RlZmluZSBWUDlf U0lOR0xFX1JFRl9TVEFSVCAgICAgKFZQOV9DT01QX1JFRl9TVEFSVCArIFZQOV9DT01QX1JFRl9T SVpFKQo+ICsjZGVmaW5lIFZQOV9TSU5HTEVfUkVGX1NJWkUgICAgICAxMAo+ICsjZGVmaW5lIFZQ OV9SRUZfTU9ERV9TVEFSVCAgICAgICBWUDlfQ09NUF9JTlRFUl9TVEFSVAo+ICsjZGVmaW5lIFZQ OV9SRUZfTU9ERV9TSVpFICAgICAgICBcCj4gKwkJKFZQOV9DT01QX0lOVEVSX1NJWkUgKyBWUDlf Q09NUF9SRUZfU0laRSArIFZQOV9TSU5HTEVfUkVGX1NJWkUpCj4gKyNkZWZpbmUgVlA5X0lGX1lf TU9ERV9TVEFSVCAgICAgIChWUDlfUkVGX01PREVfU1RBUlQgKyBWUDlfUkVGX01PREVfU0laRSkK PiArI2RlZmluZSBWUDlfSUZfWV9NT0RFX1NJWkUgICAgICAgMzYKPiArI2RlZmluZSBWUDlfSUZf VVZfTU9ERV9TVEFSVCAgICAgKFZQOV9JRl9ZX01PREVfU1RBUlQgKyBWUDlfSUZfWV9NT0RFX1NJ WkUpCj4gKyNkZWZpbmUgVlA5X0lGX1VWX01PREVfU0laRSAgICAgIDkyIC8qIG9ubHkgdXNlIDkw Ki8KPiArI2RlZmluZSBWUDlfTVZfSk9JTlRTX1NUQVJUICAgICAgKFZQOV9JRl9VVl9NT0RFX1NU QVJUICsgVlA5X0lGX1VWX01PREVfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfSk9JTlRTX1NJWkUg ICAgICAgMwo+ICsjZGVmaW5lIFZQOV9NVl9TSUdOXzBfU1RBUlQgICAgICAoVlA5X01WX0pPSU5U U19TVEFSVCArIFZQOV9NVl9KT0lOVFNfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfU0lHTl8wX1NJ WkUgICAgICAgMQo+ICsjZGVmaW5lIFZQOV9NVl9DTEFTU0VTXzBfU1RBUlQgICAoVlA5X01WX1NJ R05fMF9TVEFSVCArIFZQOV9NVl9TSUdOXzBfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1NF U18wX1NJWkUgICAgMTAKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwXzBfU1RBUlQgICAgXAo+ICsJ CShWUDlfTVZfQ0xBU1NFU18wX1NUQVJUICsgVlA5X01WX0NMQVNTRVNfMF9TSVpFKQo+ICsjZGVm aW5lIFZQOV9NVl9DTEFTUzBfMF9TSVpFICAgICAxCj4gKyNkZWZpbmUgVlA5X01WX0JJVFNfMF9T VEFSVCAgICAgIChWUDlfTVZfQ0xBU1MwXzBfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwXzBfU0laRSkK PiArI2RlZmluZSBWUDlfTVZfQklUU18wX1NJWkUgICAgICAgMTAKPiArI2RlZmluZSBWUDlfTVZf U0lHTl8xX1NUQVJUICAgICAgKFZQOV9NVl9CSVRTXzBfU1RBUlQgKyBWUDlfTVZfQklUU18wX1NJ WkUpCj4gKyNkZWZpbmUgVlA5X01WX1NJR05fMV9TSVpFICAgICAgIDEKPiArI2RlZmluZSBWUDlf TVZfQ0xBU1NFU18xX1NUQVJUICAgXAo+ICsJCQkoVlA5X01WX1NJR05fMV9TVEFSVCArIFZQOV9N Vl9TSUdOXzFfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1NFU18xX1NJWkUgICAgMTAKPiAr I2RlZmluZSBWUDlfTVZfQ0xBU1MwXzFfU1RBUlQgICAgXAo+ICsJCQkoVlA5X01WX0NMQVNTRVNf MV9TVEFSVCArIFZQOV9NVl9DTEFTU0VTXzFfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1Mw XzFfU0laRSAgICAgMQo+ICsjZGVmaW5lIFZQOV9NVl9CSVRTXzFfU1RBUlQgICAgICBcCj4gKwkJ CShWUDlfTVZfQ0xBU1MwXzFfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwXzFfU0laRSkKPiArI2RlZmlu ZSBWUDlfTVZfQklUU18xX1NJWkUgICAgICAgMTAKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0ZQ XzBfU1RBUlQgXAo+ICsJCQkoVlA5X01WX0JJVFNfMV9TVEFSVCArIFZQOV9NVl9CSVRTXzFfU0la RSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0ZQXzBfU0laRSAgOQo+ICsjZGVmaW5lIFZQOV9N Vl9DTEFTUzBfRlBfMV9TVEFSVCBcCj4gKwkJCShWUDlfTVZfQ0xBU1MwX0ZQXzBfU1RBUlQgKyBW UDlfTVZfQ0xBU1MwX0ZQXzBfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0ZQXzFfU0la RSAgOQo+ICsjZGVmaW5lIFZQOV9NVl9DTEFTUzBfSFBfMF9TVEFSVCBcCj4gKwkJCShWUDlfTVZf Q0xBU1MwX0ZQXzFfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwX0ZQXzFfU0laRSkKPiArI2RlZmluZSBW UDlfTVZfQ0xBU1MwX0hQXzBfU0laRSAgMgo+ICsjZGVmaW5lIFZQOV9NVl9DTEFTUzBfSFBfMV9T VEFSVCBcCj4gKwkJCShWUDlfTVZfQ0xBU1MwX0hQXzBfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwX0hQ XzBfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0hQXzFfU0laRSAgMgo+ICsjZGVmaW5l IFZQOV9NVl9TVEFSVCAgICAgICAgICAgICBWUDlfTVZfSk9JTlRTX1NUQVJUCj4gKyNkZWZpbmUg VlA5X01WX1NJWkUgICAgICAgICAgICAgIDcyIC8qb25seSB1c2UgNjkqLwo+ICsKPiArI2RlZmlu ZSBWUDlfVE9UQUxfU0laRSAgICAgICAgICAgKFZQOV9NVl9TVEFSVCArIFZQOV9NVl9TSVpFKQo+ ICsKPiArLyogVlA5IENPVU5UIG1lbSBwcm9jZXNzaW5nIGRlZmluZXMgKi8KPiArI2RlZmluZSBW UDlfQ09FRl9DT1VOVF9TVEFSVCAgICAgICAgICAgMAo+ICsjZGVmaW5lIFZQOV9DT0VGX0NPVU5U X0JBTkRfMF9PRkZTRVQgICAwCj4gKyNkZWZpbmUgVlA5X0NPRUZfQ09VTlRfQkFORF8xX09GRlNF VCAgIFwKPiArCQkJKFZQOV9DT0VGX0NPVU5UX0JBTkRfMF9PRkZTRVQgKyAzICogNSkKPiArI2Rl ZmluZSBWUDlfQ09FRl9DT1VOVF9CQU5EXzJfT0ZGU0VUICAgXAo+ICsJCQkoVlA5X0NPRUZfQ09V TlRfQkFORF8xX09GRlNFVCArIDYgKiA1KQo+ICsjZGVmaW5lIFZQOV9DT0VGX0NPVU5UX0JBTkRf M19PRkZTRVQgICBcCj4gKwkJCShWUDlfQ09FRl9DT1VOVF9CQU5EXzJfT0ZGU0VUICsgNiAqIDUp Cj4gKyNkZWZpbmUgVlA5X0NPRUZfQ09VTlRfQkFORF80X09GRlNFVCAgIFwKPiArCQkJKFZQOV9D T0VGX0NPVU5UX0JBTkRfM19PRkZTRVQgKyA2ICogNSkKPiArI2RlZmluZSBWUDlfQ09FRl9DT1VO VF9CQU5EXzVfT0ZGU0VUICAgXAo+ICsJCQkoVlA5X0NPRUZfQ09VTlRfQkFORF80X09GRlNFVCAr IDYgKiA1KQo+ICsjZGVmaW5lIFZQOV9DT0VGX0NPVU5UX1NJWkVfT05FX1NFVCAgICAxNjUgLyog KCgzICsgNSAqIDYpICogNSAqLwo+ICsjZGVmaW5lIFZQOV9DT0VGX0NPVU5UXzRYNF9TVEFSVCAg ICAgICBcCj4gKwkJKFZQOV9DT0VGX0NPVU5UX1NUQVJUICsgMCAqIFZQOV9DT0VGX0NPVU5UX1NJ WkVfT05FX1NFVCkKPiArI2RlZmluZSBWUDlfQ09FRl9DT1VOVF84WDhfU1RBUlQgICAgICAgXAo+ ICsJCShWUDlfQ09FRl9DT1VOVF9TVEFSVCArIDQgKiBWUDlfQ09FRl9DT1VOVF9TSVpFX09ORV9T RVQpCj4gKyNkZWZpbmUgVlA5X0NPRUZfQ09VTlRfMTZYMTZfU1RBUlQgICAgIFwKPiArCQkoVlA5 X0NPRUZfQ09VTlRfU1RBUlQgKyA4ICogVlA5X0NPRUZfQ09VTlRfU0laRV9PTkVfU0VUKQo+ICsj ZGVmaW5lIFZQOV9DT0VGX0NPVU5UXzMyWDMyX1NUQVJUICAgICBcCj4gKwkJKFZQOV9DT0VGX0NP VU5UX1NUQVJUICsgMTIgKiBWUDlfQ09FRl9DT1VOVF9TSVpFX09ORV9TRVQpCj4gKyNkZWZpbmUg VlA5X0NPRUZfQ09VTlRfU0laRV9QTEFORSAgICAgICgyICogVlA5X0NPRUZfQ09VTlRfU0laRV9P TkVfU0VUKQo+ICsjZGVmaW5lIFZQOV9DT0VGX0NPVU5UX1NJWkUgICAgICAgICAgICAoNCAqIDIg KiAyICogVlA5X0NPRUZfQ09VTlRfU0laRV9PTkVfU0VUKQo+ICsKPiArI2RlZmluZSBWUDlfSU5U UkFfSU5URVJfQ09VTlRfU1RBUlQgICAgXAo+ICsJCShWUDlfQ09FRl9DT1VOVF9TVEFSVCArIFZQ OV9DT0VGX0NPVU5UX1NJWkUpCj4gKyNkZWZpbmUgVlA5X0lOVFJBX0lOVEVSX0NPVU5UX1NJWkUg ICAgICg0ICogMikKPiArI2RlZmluZSBWUDlfQ09NUF9JTlRFUl9DT1VOVF9TVEFSVCAgICAgXAo+ ICsJCShWUDlfSU5UUkFfSU5URVJfQ09VTlRfU1RBUlQgKyBWUDlfSU5UUkFfSU5URVJfQ09VTlRf U0laRSkKPiArI2RlZmluZSBWUDlfQ09NUF9JTlRFUl9DT1VOVF9TSVpFICAgICAgKDUgKiAyKQo+ ICsjZGVmaW5lIFZQOV9DT01QX1JFRl9DT1VOVF9TVEFSVCAgICAgICBcCj4gKwkJKFZQOV9DT01Q X0lOVEVSX0NPVU5UX1NUQVJUICsgVlA5X0NPTVBfSU5URVJfQ09VTlRfU0laRSkKPiArI2RlZmlu ZSBWUDlfQ09NUF9SRUZfQ09VTlRfU0laRSAgICAgICAgKDUgKiAyKQo+ICsjZGVmaW5lIFZQOV9T SU5HTEVfUkVGX0NPVU5UX1NUQVJUICAgICBcCj4gKwkJKFZQOV9DT01QX1JFRl9DT1VOVF9TVEFS VCArIFZQOV9DT01QX1JFRl9DT1VOVF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9TSU5HTEVfUkVGX0NP VU5UX1NJWkUgICAgICAoMTAgKiAyKQo+ICsjZGVmaW5lIFZQOV9UWF9NT0RFX0NPVU5UX1NUQVJU ICAgICAgICBcCj4gKwkJKFZQOV9TSU5HTEVfUkVGX0NPVU5UX1NUQVJUICsgVlA5X1NJTkdMRV9S RUZfQ09VTlRfU0laRSkKPiArI2RlZmluZSBWUDlfVFhfTU9ERV9DT1VOVF9TSVpFICAgICAgICAg KDEyICogMikKPiArI2RlZmluZSBWUDlfU0tJUF9DT1VOVF9TVEFSVCAgICAgICAgICAgXAo+ICsJ CShWUDlfVFhfTU9ERV9DT1VOVF9TVEFSVCArIFZQOV9UWF9NT0RFX0NPVU5UX1NJWkUpCj4gKyNk ZWZpbmUgVlA5X1NLSVBfQ09VTlRfU0laRSAgICAgICAgICAgICgzICogMikKPiArI2RlZmluZSBW UDlfTVZfU0lHTl8wX0NPVU5UX1NUQVJUICAgICAgXAo+ICsJCShWUDlfU0tJUF9DT1VOVF9TVEFS VCArIFZQOV9TS0lQX0NPVU5UX1NJWkUpCj4gKyNkZWZpbmUgVlA5X01WX1NJR05fMF9DT1VOVF9T SVpFICAgICAgICgxICogMikKPiArI2RlZmluZSBWUDlfTVZfU0lHTl8xX0NPVU5UX1NUQVJUICAg ICAgXAo+ICsJCShWUDlfTVZfU0lHTl8wX0NPVU5UX1NUQVJUICsgVlA5X01WX1NJR05fMF9DT1VO VF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9NVl9TSUdOXzFfQ09VTlRfU0laRSAgICAgICAoMSAqIDIp Cj4gKyNkZWZpbmUgVlA5X01WX0JJVFNfMF9DT1VOVF9TVEFSVCAgICAgIFwKPiArCQkoVlA5X01W X1NJR05fMV9DT1VOVF9TVEFSVCArIFZQOV9NVl9TSUdOXzFfQ09VTlRfU0laRSkKPiArI2RlZmlu ZSBWUDlfTVZfQklUU18wX0NPVU5UX1NJWkUgICAgICAgKDEwICogMikKPiArI2RlZmluZSBWUDlf TVZfQklUU18xX0NPVU5UX1NUQVJUICAgICAgXAo+ICsJCShWUDlfTVZfQklUU18wX0NPVU5UX1NU QVJUICsgVlA5X01WX0JJVFNfMF9DT1VOVF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9NVl9CSVRTXzFf Q09VTlRfU0laRSAgICAgICAoMTAgKiAyKQo+ICsjZGVmaW5lIFZQOV9NVl9DTEFTUzBfSFBfMF9D T1VOVF9TVEFSVCBcCj4gKwkJKFZQOV9NVl9CSVRTXzFfQ09VTlRfU1RBUlQgKyBWUDlfTVZfQklU U18xX0NPVU5UX1NJWkUpCj4gKyNkZWZpbmUgVlA5X01WX0NMQVNTMF9IUF8wX0NPVU5UX1NJWkUg ICgyICogMikKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0hQXzFfQ09VTlRfU1RBUlQgXAo+ICsJ CShWUDlfTVZfQ0xBU1MwX0hQXzBfQ09VTlRfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwX0hQXzBfQ09V TlRfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0hQXzFfQ09VTlRfU0laRSAgKDIgKiAy KQo+ICsKPiArLyogU3RhcnQgbWVyZ2VfdHJlZSAqLwo+ICsjZGVmaW5lIFZQOV9JTlRFUl9NT0RF X0NPVU5UX1NUQVJUICAgICBcCj4gKwkJKFZQOV9NVl9DTEFTUzBfSFBfMV9DT1VOVF9TVEFSVCAr IFZQOV9NVl9DTEFTUzBfSFBfMV9DT1VOVF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9JTlRFUl9NT0RF X0NPVU5UX1NJWkUgICAgICAoNyAqIDQpCj4gKyNkZWZpbmUgVlA5X0lGX1lfTU9ERV9DT1VOVF9T VEFSVCAgICAgIFwKPiArCQkoVlA5X0lOVEVSX01PREVfQ09VTlRfU1RBUlQgKyBWUDlfSU5URVJf TU9ERV9DT1VOVF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9JRl9ZX01PREVfQ09VTlRfU0laRSAgICAg ICAoMTAgKiA0KQo+ICsjZGVmaW5lIFZQOV9JRl9VVl9NT0RFX0NPVU5UX1NUQVJUICAgICBcCj4g KwkJKFZQOV9JRl9ZX01PREVfQ09VTlRfU1RBUlQgKyBWUDlfSUZfWV9NT0RFX0NPVU5UX1NJWkUp Cj4gKyNkZWZpbmUgVlA5X0lGX1VWX01PREVfQ09VTlRfU0laRSAgICAgICgxMCAqIDEwKQo+ICsj ZGVmaW5lIFZQOV9QQVJUSVRJT05fUF9DT1VOVF9TVEFSVCAgICBcCj4gKwkJKFZQOV9JRl9VVl9N T0RFX0NPVU5UX1NUQVJUICsgVlA5X0lGX1VWX01PREVfQ09VTlRfU0laRSkKPiArI2RlZmluZSBW UDlfUEFSVElUSU9OX1BfQ09VTlRfU0laRSAgICAgKDQgKiA0ICogNCkKPiArI2RlZmluZSBWUDlf SU5URVJQX0NPVU5UX1NUQVJUICAgICAgICAgXAo+ICsJCShWUDlfUEFSVElUSU9OX1BfQ09VTlRf U1RBUlQgKyBWUDlfUEFSVElUSU9OX1BfQ09VTlRfU0laRSkKPiArI2RlZmluZSBWUDlfSU5URVJQ X0NPVU5UX1NJWkUgICAgICAgICAgKDQgKiAzKQo+ICsjZGVmaW5lIFZQOV9NVl9KT0lOVFNfQ09V TlRfU1RBUlQgICAgICBcCj4gKwkJKFZQOV9JTlRFUlBfQ09VTlRfU1RBUlQgKyBWUDlfSU5URVJQ X0NPVU5UX1NJWkUpCj4gKyNkZWZpbmUgVlA5X01WX0pPSU5UU19DT1VOVF9TSVpFICAgICAgICgx ICogNCkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1NFU18wX0NPVU5UX1NUQVJUICAgXAo+ICsJCShW UDlfTVZfSk9JTlRTX0NPVU5UX1NUQVJUICsgVlA5X01WX0pPSU5UU19DT1VOVF9TSVpFKQo+ICsj ZGVmaW5lIFZQOV9NVl9DTEFTU0VTXzBfQ09VTlRfU0laRSAgICAoMSAqIDExKQo+ICsjZGVmaW5l IFZQOV9NVl9DTEFTUzBfMF9DT1VOVF9TVEFSVCAgICBcCj4gKwkJKFZQOV9NVl9DTEFTU0VTXzBf Q09VTlRfU1RBUlQgKyBWUDlfTVZfQ0xBU1NFU18wX0NPVU5UX1NJWkUpCj4gKyNkZWZpbmUgVlA5 X01WX0NMQVNTMF8wX0NPVU5UX1NJWkUgICAgICgxICogMikKPiArI2RlZmluZSBWUDlfTVZfQ0xB U1NFU18xX0NPVU5UX1NUQVJUICAgXAo+ICsJCShWUDlfTVZfQ0xBU1MwXzBfQ09VTlRfU1RBUlQg KyBWUDlfTVZfQ0xBU1MwXzBfQ09VTlRfU0laRSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1NFU18x X0NPVU5UX1NJWkUgICAgKDEgKiAxMSkKPiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwXzFfQ09VTlRf U1RBUlQgICAgXAo+ICsJCShWUDlfTVZfQ0xBU1NFU18xX0NPVU5UX1NUQVJUICsgVlA5X01WX0NM QVNTRVNfMV9DT1VOVF9TSVpFKQo+ICsjZGVmaW5lIFZQOV9NVl9DTEFTUzBfMV9DT1VOVF9TSVpF ICAgICAoMSAqIDIpCj4gKyNkZWZpbmUgVlA5X01WX0NMQVNTMF9GUF8wX0NPVU5UX1NUQVJUIFwK PiArCQkoVlA5X01WX0NMQVNTMF8xX0NPVU5UX1NUQVJUICsgVlA5X01WX0NMQVNTMF8xX0NPVU5U X1NJWkUpCj4gKyNkZWZpbmUgVlA5X01WX0NMQVNTMF9GUF8wX0NPVU5UX1NJWkUgICgzICogNCkK PiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0ZQXzFfQ09VTlRfU1RBUlQgXAo+ICsJCShWUDlfTVZf Q0xBU1MwX0ZQXzBfQ09VTlRfU1RBUlQgKyBWUDlfTVZfQ0xBU1MwX0ZQXzBfQ09VTlRfU0laRSkK PiArI2RlZmluZSBWUDlfTVZfQ0xBU1MwX0ZQXzFfQ09VTlRfU0laRSAgKDMgKiA0KQo+ICsKPiAr I2RlZmluZSBEQ19QUkVEICAgIDAJLyogQXZlcmFnZSBvZiBhYm92ZSBhbmQgbGVmdCBwaXhlbHMg Ki8KPiArI2RlZmluZSBWX1BSRUQgICAgIDEJLyogVmVydGljYWwgKi8KPiArI2RlZmluZSBIX1BS RUQgICAgIDIJLyogSG9yaXpvbnRhbCAqLwo+ICsjZGVmaW5lIEQ0NV9QUkVEICAgMwkvKiBEaXJl Y3Rpb25hbCA0NSBkZWcgPSByb3VuZChhcmN0YW4oMS8xKSAqIDE4MC9waSkgKi8KPiArI2RlZmlu ZSBEMTM1X1BSRUQgIDQJLyogRGlyZWN0aW9uYWwgMTM1IGRlZyA9IDE4MCAtIDQ1ICovCj4gKyNk ZWZpbmUgRDExN19QUkVEICA1CS8qIERpcmVjdGlvbmFsIDExNyBkZWcgPSAxODAgLSA2MyAqLwo+ ICsjZGVmaW5lIEQxNTNfUFJFRCAgNgkvKiBEaXJlY3Rpb25hbCAxNTMgZGVnID0gMTgwIC0gMjcg Ki8KPiArI2RlZmluZSBEMjA3X1BSRUQgIDcJLyogRGlyZWN0aW9uYWwgMjA3IGRlZyA9IDE4MCAr IDI3ICovCj4gKyNkZWZpbmUgRDYzX1BSRUQgICA4CS8qIERpcmVjdGlvbmFsIDYzIGRlZyA9IHJv dW5kKGFyY3RhbigyLzEpICogMTgwL3BpKSAqLwo+ICsjZGVmaW5lIFRNX1BSRUQgICAgOQkvKiBU cnVlLW1vdGlvbiAqLwo+ICsKPiArI2RlZmluZSBST1VORF9QT1dFUl9PRl9UV08odmFsdWUsIG51 bSkgKCgodmFsdWUpICsgKDEgPDwgKChudW0pIC0gMSkpKSA+PiAobnVtKSkKPiArCj4gKyNkZWZp bmUgTU9ERV9NVl9DT1VOVF9TQVQgMjAKPiArc3RhdGljIGNvbnN0IGludCBjb3VudF90b191cGRh dGVfZmFjdG9yW01PREVfTVZfQ09VTlRfU0FUICsgMV0gPSB7Cj4gKwkwLCA2LCAxMiwgMTksIDI1 LCAzMiwgMzgsIDQ0LCA1MSwgNTcsIDY0LAo+ICsJNzAsIDc2LCA4MywgODksIDk2LCAxMDIsIDEw OCwgMTE1LCAxMjEsIDEyOAo+ICt9Owo+ICsKPiArdW5pb24gcnBtX3BhcmFtIHsKPiArCXN0cnVj dCB7Cj4gKwkJdTE2IGRhdGFbUlBNX0JVRl9TSVpFXTsKPiArCX0gbDsKPiArCXN0cnVjdCB7Cj4g KwkJdTE2IHByb2ZpbGU7Cj4gKwkJdTE2IHNob3dfZXhpc3RpbmdfZnJhbWU7Cj4gKwkJdTE2IGZy YW1lX3RvX3Nob3dfaWR4Owo+ICsJCXUxNiBmcmFtZV90eXBlOyAvKjEgYml0Ki8KPiArCQl1MTYg c2hvd19mcmFtZTsgLyoxIGJpdCovCj4gKwkJdTE2IGVycm9yX3Jlc2lsaWVudF9tb2RlOyAvKjEg Yml0Ki8KPiArCQl1MTYgaW50cmFfb25seTsgLyoxIGJpdCovCj4gKwkJdTE2IGRpc3BsYXlfc2l6 ZV9wcmVzZW50OyAvKjEgYml0Ki8KPiArCQl1MTYgcmVzZXRfZnJhbWVfY29udGV4dDsKPiArCQl1 MTYgcmVmcmVzaF9mcmFtZV9mbGFnczsKPiArCQl1MTYgd2lkdGg7Cj4gKwkJdTE2IGhlaWdodDsK PiArCQl1MTYgZGlzcGxheV93aWR0aDsKPiArCQl1MTYgZGlzcGxheV9oZWlnaHQ7Cj4gKwkJdTE2 IHJlZl9pbmZvOwo+ICsJCXUxNiBzYW1lX2ZyYW1lX3NpemU7Cj4gKwkJdTE2IG1vZGVfcmVmX2Rl bHRhX2VuYWJsZWQ7Cj4gKwkJdTE2IHJlZl9kZWx0YXNbNF07Cj4gKwkJdTE2IG1vZGVfZGVsdGFz WzJdOwo+ICsJCXUxNiBmaWx0ZXJfbGV2ZWw7Cj4gKwkJdTE2IHNoYXJwbmVzc19sZXZlbDsKPiAr CQl1MTYgYml0X2RlcHRoOwo+ICsJCXUxNiBzZWdfcXVhbnRfaW5mb1s4XTsKPiArCQl1MTYgc2Vn X2VuYWJsZWQ7Cj4gKwkJdTE2IHNlZ19hYnNfZGVsdGE7Cj4gKwkJLyogYml0IDE1OiBmZWF0dXJl IGVuYWJsZWQ7IGJpdCA4LCBzaWduOyBiaXRbNTowXSwgZGF0YSAqLwo+ICsJCXUxNiBzZWdfbGZf aW5mb1s4XTsKPiArCX0gcDsKPiArfTsKPiArCj4gK2VudW0gU0VHX0xWTF9GRUFUVVJFUyB7Cj4g KwlTRUdfTFZMX0FMVF9RID0gMCwJLyogVXNlIGFsdGVybmF0ZSBRdWFudGl6ZXIgKi8KPiArCVNF R19MVkxfQUxUX0xGID0gMSwJLyogVXNlIGFsdGVybmF0ZSBsb29wIGZpbHRlciB2YWx1ZSAqLwo+ ICsJU0VHX0xWTF9SRUZfRlJBTUUgPSAyLAkvKiBPcHRpb25hbCBTZWdtZW50IHJlZmVyZW5jZSBm cmFtZSAqLwo+ICsJU0VHX0xWTF9TS0lQID0gMywJLyogT3B0aW9uYWwgU2VnbWVudCAoMCwwKSAr IHNraXAgbW9kZSAqLwo+ICsJU0VHX0xWTF9NQVggPSA0CQkvKiBOdW1iZXIgb2YgZmVhdHVyZXMg c3VwcG9ydGVkICovCj4gK307Cj4gKwo+ICtzdHJ1Y3Qgc2VnbWVudGF0aW9uIHsKPiArCXU4IGVu YWJsZWQ7Cj4gKwl1OCB1cGRhdGVfbWFwOwo+ICsJdTggdXBkYXRlX2RhdGE7Cj4gKwl1OCBhYnNf ZGVsdGE7Cj4gKwl1OCB0ZW1wb3JhbF91cGRhdGU7Cj4gKwlzMTYgZmVhdHVyZV9kYXRhW01BWF9T RUdNRU5UU11bU0VHX0xWTF9NQVhdOwo+ICsJdW5zaWduZWQgaW50IGZlYXR1cmVfbWFza1tNQVhf U0VHTUVOVFNdOwo+ICt9Owo+ICsKPiArc3RydWN0IGxvb3BfZmlsdGVyX3RocmVzaCB7Cj4gKwl1 OCBtYmxpbTsKPiArCXU4IGxpbTsKPiArCXU4IGhldl90aHI7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qg bG9vcF9maWx0ZXJfaW5mb19uIHsKPiArCXN0cnVjdCBsb29wX2ZpbHRlcl90aHJlc2ggbGZ0aHJb TUFYX0xPT1BfRklMVEVSICsgMV07Cj4gKwl1OCBsdmxbTUFYX1NFR01FTlRTXVtNQVhfUkVGX0ZS QU1FU11bTUFYX01PREVfTEZfREVMVEFTXTsKPiArfTsKPiArCj4gK3N0cnVjdCBsb29wZmlsdGVy IHsKPiArCWludCBmaWx0ZXJfbGV2ZWw7Cj4gKwo+ICsJaW50IHNoYXJwbmVzc19sZXZlbDsKPiAr CWludCBsYXN0X3NoYXJwbmVzc19sZXZlbDsKPiArCj4gKwl1OCBtb2RlX3JlZl9kZWx0YV9lbmFi bGVkOwo+ICsJdTggbW9kZV9yZWZfZGVsdGFfdXBkYXRlOwo+ICsKPiArCS8qMCA9IEludHJhLCBM YXN0LCBHRiwgQVJGKi8KPiArCXNpZ25lZCBjaGFyIHJlZl9kZWx0YXNbTUFYX1JFRl9MRl9ERUxU QVNdOwo+ICsJc2lnbmVkIGNoYXIgbGFzdF9yZWZfZGVsdGFzW01BWF9SRUZfTEZfREVMVEFTXTsK PiArCj4gKwkvKjAgPSBaRVJPX01WLCBNViovCj4gKwlzaWduZWQgY2hhciBtb2RlX2RlbHRhc1tN QVhfTU9ERV9MRl9ERUxUQVNdOwo+ICsJc2lnbmVkIGNoYXIgbGFzdF9tb2RlX2RlbHRhc1tNQVhf TU9ERV9MRl9ERUxUQVNdOwo+ICt9Owo+ICsKPiArc3RydWN0IHZwOV9mcmFtZSB7Cj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gKwlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICp2YnVmOwo+ICsJ aW50IGluZGV4Owo+ICsJaW50IGludHJhX29ubHk7Cj4gKwlpbnQgc2hvdzsKPiArCWludCB0eXBl Owo+ICsJaW50IGRvbmU7Cj4gKwl1bnNpZ25lZCBpbnQgd2lkdGg7Cj4gKwl1bnNpZ25lZCBpbnQg aGVpZ2h0Owo+ICt9Owo+ICsKPiArc3RydWN0IGNvZGVjX3ZwOSB7Cj4gKwkvKiBWUDkgY29udGV4 dCBsb2NrICovCj4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiArCj4gKwkvKiBDb21tb24gcGFydCB3 aXRoIHRoZSBIRVZDIGRlY29kZXIgKi8KPiArCXN0cnVjdCBjb2RlY19oZXZjX2NvbW1vbiBjb21t b247Cj4gKwo+ICsJLyogQnVmZmVyIGZvciB0aGUgVlA5IFdvcmtzcGFjZSAqLwo+ICsJdm9pZCAg ICAgICp3b3Jrc3BhY2VfdmFkZHI7Cj4gKwlkbWFfYWRkcl90IHdvcmtzcGFjZV9wYWRkcjsKPiAr Cj4gKwkvKiBDb250YWlucyBtYW55IGluZm9ybWF0aW9uIHBhcnNlZCBmcm9tIHRoZSBiaXRzdHJl YW0gKi8KPiArCXVuaW9uIHJwbV9wYXJhbSBycG1fcGFyYW07Cj4gKwo+ICsJLyogV2hldGhlciB3 ZSBkZXRlY3RlZCB0aGUgYml0c3RyZWFtIGFzIDEwLWJpdCAqLwo+ICsJaW50IGlzXzEwYml0Owo+ ICsKPiArCS8qIENvZGVkIHJlc29sdXRpb24gcmVwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlICovCj4g Kwl1MzIgd2lkdGgsIGhlaWdodDsKPiArCj4gKwkvKiBBbGwgcmVmIGZyYW1lcyB1c2VkIGJ5IHRo ZSBIVyBhdCBhIGdpdmVuIHRpbWUgKi8KPiArCXN0cnVjdCBsaXN0X2hlYWQgcmVmX2ZyYW1lc19s aXN0Owo+ICsJdTMyIGZyYW1lc19udW07Cj4gKwo+ICsJLyogSW4gY2FzZSBvZiBkb3duc2FtcGxp bmcgKGRlY29kaW5nIHdpdGggRkJDIGJ1dCBvdXRwdXR0aW5nIGluIE5WMTJNKSwKPiArCSAqIHdl IG5lZWQgdG8gYWxsb2NhdGUgYWRkaXRpb25hbCBidWZmZXJzIGZvciBGQkMuCj4gKwkgKi8KPiAr CXZvaWQgICAgICAqZmJjX2J1ZmZlcl92YWRkcltNQVhfUkVGX1BJQ19OVU1dOwo+ICsJZG1hX2Fk ZHJfdCBmYmNfYnVmZmVyX3BhZGRyW01BWF9SRUZfUElDX05VTV07Cj4gKwo+ICsJaW50IHJlZl9m cmFtZV9tYXBbUkVGX0ZSQU1FU107Cj4gKwlpbnQgbmV4dF9yZWZfZnJhbWVfbWFwW1JFRl9GUkFN RVNdOwo+ICsJc3RydWN0IHZwOV9mcmFtZSAqZnJhbWVfcmVmc1tSRUZTX1BFUl9GUkFNRV07Cj4g Kwo+ICsJdTMyIGxjdV90b3RhbDsKPiArCj4gKwkvKiBsb29wIGZpbHRlciAqLwo+ICsJaW50IGRl ZmF1bHRfZmlsdF9sdmw7Cj4gKwlzdHJ1Y3QgbG9vcF9maWx0ZXJfaW5mb19uIGxmaTsKPiArCXN0 cnVjdCBsb29wZmlsdGVyIGxmOwo+ICsJc3RydWN0IHNlZ21lbnRhdGlvbiBzZWdfNGxmOwo+ICsK PiArCXN0cnVjdCB2cDlfZnJhbWUgKmN1cl9mcmFtZTsKPiArCXN0cnVjdCB2cDlfZnJhbWUgKnBy ZXZfZnJhbWU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGRpdl9yMzIoczY0IG0sIGludCBuKQo+ ICt7Cj4gKwlzNjQgcXUgPSBkaXZfczY0KG0sIG4pOwo+ICsKPiArCXJldHVybiAoaW50KXF1Owo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNsaXBfcHJvYihpbnQgcCkKPiArewo+ICsJcmV0dXJuIGNs YW1wX3ZhbChwLCAxLCAyNTUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHNlZ2ZlYXR1cmVfYWN0 aXZlKHN0cnVjdCBzZWdtZW50YXRpb24gKnNlZywgaW50IHNlZ21lbnRfaWQsCj4gKwkJCSAgICAg ZW51bSBTRUdfTFZMX0ZFQVRVUkVTIGZlYXR1cmVfaWQpCj4gK3sKPiArCXJldHVybiBzZWctPmVu YWJsZWQgJiYKPiArCQkoc2VnLT5mZWF0dXJlX21hc2tbc2VnbWVudF9pZF0gJiAoMSA8PCBmZWF0 dXJlX2lkKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZ2V0X3NlZ2RhdGEoc3RydWN0IHNlZ21l bnRhdGlvbiAqc2VnLCBpbnQgc2VnbWVudF9pZCwKPiArCQkgICAgICAgZW51bSBTRUdfTFZMX0ZF QVRVUkVTIGZlYXR1cmVfaWQpCj4gK3sKPiArCXJldHVybiBzZWctPmZlYXR1cmVfZGF0YVtzZWdt ZW50X2lkXVtmZWF0dXJlX2lkXTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnA5X3VwZGF0ZV9z aGFycG5lc3Moc3RydWN0IGxvb3BfZmlsdGVyX2luZm9fbiAqbGZpLAo+ICsJCQkJIGludCBzaGFy cG5lc3NfbHZsKQo+ICt7Cj4gKwlpbnQgbHZsOwo+ICsKPiArCS8qIEZvciBlYWNoIHBvc3NpYmxl IHZhbHVlIGZvciB0aGUgbG9vcCBmaWx0ZXIgZmlsbCBvdXQgbGltaXRzKi8KPiArCWZvciAobHZs ID0gMDsgbHZsIDw9IE1BWF9MT09QX0ZJTFRFUjsgbHZsKyspIHsKPiArCQkvKiBTZXQgbG9vcCBm aWx0ZXIgcGFyYW1ldGVycyB0aGF0IGNvbnRyb2wgc2hhcnBuZXNzLiovCj4gKwkJaW50IGJsb2Nr X2luc2lkZV9saW1pdCA9IGx2bCA+PiAoKHNoYXJwbmVzc19sdmwgPiAwKSArCj4gKwkJCQkJKHNo YXJwbmVzc19sdmwgPiA0KSk7Cj4gKwo+ICsJCWlmIChzaGFycG5lc3NfbHZsID4gMCkgewo+ICsJ CQlpZiAoYmxvY2tfaW5zaWRlX2xpbWl0ID4gKDkgLSBzaGFycG5lc3NfbHZsKSkKPiArCQkJCWJs b2NrX2luc2lkZV9saW1pdCA9ICg5IC0gc2hhcnBuZXNzX2x2bCk7Cj4gKwkJfQo+ICsKPiArCQlp ZiAoYmxvY2tfaW5zaWRlX2xpbWl0IDwgMSkKPiArCQkJYmxvY2tfaW5zaWRlX2xpbWl0ID0gMTsK PiArCj4gKwkJbGZpLT5sZnRocltsdmxdLmxpbSA9ICh1OClibG9ja19pbnNpZGVfbGltaXQ7Cj4g KwkJbGZpLT5sZnRocltsdmxdLm1ibGltID0gKHU4KSgyICogKGx2bCArIDIpICsKPiArCQkJCWJs b2NrX2luc2lkZV9saW1pdCk7Cj4gKwl9Cj4gK30KPiArCj4gKy8qIEluc3RhbnRpYXRlIHRoaXMg ZnVuY3Rpb24gb25jZSB3aGVuIGRlY29kZSBpcyBzdGFydGVkICovCj4gK3N0YXRpYyB2b2lkCj4g K3ZwOV9sb29wX2ZpbHRlcl9pbml0KHN0cnVjdCBhbXZkZWNfY29yZSAqY29yZSwgc3RydWN0IGNv ZGVjX3ZwOSAqdnA5KQo+ICt7Cj4gKwlzdHJ1Y3QgbG9vcF9maWx0ZXJfaW5mb19uICpsZmkgPSAm dnA5LT5sZmk7Cj4gKwlzdHJ1Y3QgbG9vcGZpbHRlciAqbGYgPSAmdnA5LT5sZjsKPiArCXN0cnVj dCBzZWdtZW50YXRpb24gKnNlZ180bGYgPSAmdnA5LT5zZWdfNGxmOwo+ICsJaW50IGk7Cj4gKwo+ ICsJbWVtc2V0KGxmaSwgMCwgc2l6ZW9mKHN0cnVjdCBsb29wX2ZpbHRlcl9pbmZvX24pKTsKPiAr CW1lbXNldChsZiwgMCwgc2l6ZW9mKHN0cnVjdCBsb29wZmlsdGVyKSk7Cj4gKwltZW1zZXQoc2Vn XzRsZiwgMCwgc2l6ZW9mKHN0cnVjdCBzZWdtZW50YXRpb24pKTsKPiArCWxmLT5zaGFycG5lc3Nf bGV2ZWwgPSAwOwo+ICsJdnA5X3VwZGF0ZV9zaGFycG5lc3MobGZpLCBsZi0+c2hhcnBuZXNzX2xl dmVsKTsKPiArCWxmLT5sYXN0X3NoYXJwbmVzc19sZXZlbCA9IGxmLT5zaGFycG5lc3NfbGV2ZWw7 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKPiArCQl1bnNpZ25lZCBpbnQgdGhy Owo+ICsKPiArCQl0aHIgPSAoKGxmaS0+bGZ0aHJbaSAqIDIgKyAxXS5saW0gJiAweDNmKSA8PCA4 KSB8Cj4gKwkJCShsZmktPmxmdGhyW2kgKiAyICsgMV0ubWJsaW0gJiAweGZmKTsKPiArCQl0aHIg PSAodGhyIDw8IDE2KSB8ICgobGZpLT5sZnRocltpICogMl0ubGltICYgMHgzZikgPDwgOCkgfAo+ ICsJCQkobGZpLT5sZnRocltpICogMl0ubWJsaW0gJiAweGZmKTsKPiArCj4gKwkJYW12ZGVjX3dy aXRlX2Rvcyhjb3JlLCBIRVZDX0RCTEtfQ0ZHOSwgdGhyKTsKPiArCX0KPiArCj4gKwlpZiAoY29y ZS0+cGxhdGZvcm0tPnJldmlzaW9uID49IFZERUNfUkVWSVNJT05fRzEyQSkKPiArCQkvKiBWUDkg dmlkZW8gZm9ybWF0ICovCj4gKwkJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX0RCTEtfQ0ZH QiwgKDB4NTQgPDwgOCkgfCBCSVQoMCkpOwo+ICsJZWxzZSBpZiAoY29yZS0+cGxhdGZvcm0tPnJl dmlzaW9uID49IFZERUNfUkVWSVNJT05fU00xKQo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwg SEVWQ19EQkxLX0NGR0IsCj4gKwkJCQkgKDB4MyA8PCAxNCkgfCAvKiBkdyBmaWZvIHRocmVzIHIg YW5kIGIgKi8KPiArCQkJCSAoMHgzIDw8IDEyKSB8IC8qIGR3IGZpZm8gdGhyZXMgciBvciBiICov Cj4gKwkJCQkgKDB4MyA8PCAxMCkgfCAvKiBkdyBmaWZvIHRocmVzIG5vdCByL2IgKi8KPiArCQkJ CSBCSVQoMCkpOyAvKiBWUDkgdmlkZW8gZm9ybWF0ICovCj4gKwllbHNlCj4gKwkJYW12ZGVjX3dy aXRlX2Rvcyhjb3JlLCBIRVZDX0RCTEtfQ0ZHQiwgMHg0MDQwMDAwMSk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkCj4gK3ZwOV9sb29wX2ZpbHRlcl9mcmFtZV9pbml0KHN0cnVjdCBhbXZkZWNfY29y ZSAqY29yZSwgc3RydWN0IHNlZ21lbnRhdGlvbiAqc2VnLAo+ICsJCQkgICBzdHJ1Y3QgbG9vcF9m aWx0ZXJfaW5mb19uICpsZmksCj4gKwkJCSAgIHN0cnVjdCBsb29wZmlsdGVyICpsZiwgaW50IGRl ZmF1bHRfZmlsdF9sdmwpCj4gK3sKPiArCWludCBpOwo+ICsJaW50IHNlZ19pZDsKPiArCj4gKwkv Kgo+ICsJICogbl9zaGlmdCBpcyB0aGUgbXVsdGlwbGllciBmb3IgbGZfZGVsdGFzCj4gKwkgKiB0 aGUgbXVsdGlwbGllciBpczoKPiArCSAqIC0gMSBmb3Igd2hlbiBmaWx0ZXJfbHZsIGlzIGJldHdl ZW4gMCBhbmQgMzEKPiArCSAqIC0gMiB3aGVuIGZpbHRlcl9sdmwgaXMgYmV0d2VlbiAzMiBhbmQg NjMKPiArCSAqLwo+ICsJY29uc3QgaW50IHNjYWxlID0gMSA8PCAoZGVmYXVsdF9maWx0X2x2bCA+ PiA1KTsKPiArCj4gKwkvKiB1cGRhdGUgbGltaXRzIGlmIHNoYXJwbmVzcyBoYXMgY2hhbmdlZCAq Lwo+ICsJaWYgKGxmLT5sYXN0X3NoYXJwbmVzc19sZXZlbCAhPSBsZi0+c2hhcnBuZXNzX2xldmVs KSB7Cj4gKwkJdnA5X3VwZGF0ZV9zaGFycG5lc3MobGZpLCBsZi0+c2hhcnBuZXNzX2xldmVsKTsK PiArCQlsZi0+bGFzdF9zaGFycG5lc3NfbGV2ZWwgPSBsZi0+c2hhcnBuZXNzX2xldmVsOwo+ICsK PiArCQkvKiBXcml0ZSB0byByZWdpc3RlciAqLwo+ICsJCWZvciAoaSA9IDA7IGkgPCAzMjsgaSsr KSB7Cj4gKwkJCXVuc2lnbmVkIGludCB0aHI7Cj4gKwo+ICsJCQl0aHIgPSAoKGxmaS0+bGZ0aHJb aSAqIDIgKyAxXS5saW0gJiAweDNmKSA8PCA4KSB8Cj4gKwkJCSAgICAgIChsZmktPmxmdGhyW2kg KiAyICsgMV0ubWJsaW0gJiAweGZmKTsKPiArCQkJdGhyID0gKHRociA8PCAxNikgfAo+ICsJCQkg ICAgICAoKGxmaS0+bGZ0aHJbaSAqIDJdLmxpbSAmIDB4M2YpIDw8IDgpIHwKPiArCQkJICAgICAg KGxmaS0+bGZ0aHJbaSAqIDJdLm1ibGltICYgMHhmZik7Cj4gKwo+ICsJCQlhbXZkZWNfd3JpdGVf ZG9zKGNvcmUsIEhFVkNfREJMS19DRkc5LCB0aHIpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlmb3Ig KHNlZ19pZCA9IDA7IHNlZ19pZCA8IE1BWF9TRUdNRU5UUzsgc2VnX2lkKyspIHsKPiArCQlpbnQg bHZsX3NlZyA9IGRlZmF1bHRfZmlsdF9sdmw7Cj4gKwo+ICsJCWlmIChzZWdmZWF0dXJlX2FjdGl2 ZShzZWcsIHNlZ19pZCwgU0VHX0xWTF9BTFRfTEYpKSB7Cj4gKwkJCWNvbnN0IGludCBkYXRhID0g Z2V0X3NlZ2RhdGEoc2VnLCBzZWdfaWQsCj4gKwkJCQkJCVNFR19MVkxfQUxUX0xGKTsKPiArCQkJ bHZsX3NlZyA9IGNsYW1wX3QoaW50LAo+ICsJCQkJCSAgc2VnLT5hYnNfZGVsdGEgPT0gU0VHTUVO VF9BQlNEQVRBID8KPiArCQkJCQkJZGF0YSA6IGRlZmF1bHRfZmlsdF9sdmwgKyBkYXRhLAo+ICsJ CQkJCSAgMCwgTUFYX0xPT1BfRklMVEVSKTsKPiArCQl9Cj4gKwo+ICsJCWlmICghbGYtPm1vZGVf cmVmX2RlbHRhX2VuYWJsZWQpIHsKPiArCQkJLyoKPiArCQkJICogV2UgY291bGQgZ2V0IHJpZCBv ZiB0aGlzIGlmIHdlIGFzc3VtZSB0aGF0IGRlbHRhcwo+ICsJCQkgKiBhcmUgc2V0IHRvIHplcm8g d2hlbiBub3QgaW4gdXNlLgo+ICsJCQkgKiBlbmNvZGVyIGFsd2F5cyB1c2VzIGRlbHRhcwo+ICsJ CQkgKi8KPiArCQkJbWVtc2V0KGxmaS0+bHZsW3NlZ19pZF0sIGx2bF9zZWcsCj4gKwkJCSAgICAg ICBzaXplb2YobGZpLT5sdmxbc2VnX2lkXSkpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWludCByZWYs IG1vZGU7Cj4gKwkJCWNvbnN0IGludCBpbnRyYV9sdmwgPQo+ICsJCQkJbHZsX3NlZyArIGxmLT5y ZWZfZGVsdGFzW0lOVFJBX0ZSQU1FXSAqIHNjYWxlOwo+ICsJCQlsZmktPmx2bFtzZWdfaWRdW0lO VFJBX0ZSQU1FXVswXSA9Cj4gKwkJCQljbGFtcF92YWwoaW50cmFfbHZsLCAwLCBNQVhfTE9PUF9G SUxURVIpOwo+ICsKPiArCQkJZm9yIChyZWYgPSBMQVNUX0ZSQU1FOyByZWYgPCBNQVhfUkVGX0ZS QU1FUzsgKytyZWYpIHsKPiArCQkJCWZvciAobW9kZSA9IDA7IG1vZGUgPCBNQVhfTU9ERV9MRl9E RUxUQVM7Cj4gKwkJCQkgICAgICsrbW9kZSkgewo+ICsJCQkJCWNvbnN0IGludCBpbnRlcl9sdmwg PQo+ICsJCQkJCQlsdmxfc2VnICsKPiArCQkJCQkJbGYtPnJlZl9kZWx0YXNbcmVmXSAqIHNjYWxl ICsKPiArCQkJCQkJbGYtPm1vZGVfZGVsdGFzW21vZGVdICogc2NhbGU7Cj4gKwkJCQkJbGZpLT5s dmxbc2VnX2lkXVtyZWZdW21vZGVdID0KPiArCQkJCQkJY2xhbXBfdmFsKGludGVyX2x2bCwgMCwK PiArCQkJCQkJCSAgTUFYX0xPT1BfRklMVEVSKTsKPiArCQkJCX0KPiArCQkJfQo+ICsJCX0KPiAr CX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewo+ICsJCXVuc2lnbmVkIGludCBs ZXZlbDsKPiArCj4gKwkJbGV2ZWwgPSAoKGxmaS0+bHZsW2kgPj4gMV1bM11baSAmIDFdICYgMHgz ZikgPDwgMjQpIHwKPiArCQkJKChsZmktPmx2bFtpID4+IDFdWzJdW2kgJiAxXSAmIDB4M2YpIDw8 IDE2KSB8Cj4gKwkJCSgobGZpLT5sdmxbaSA+PiAxXVsxXVtpICYgMV0gJiAweDNmKSA8PCA4KSB8 Cj4gKwkJCShsZmktPmx2bFtpID4+IDFdWzBdW2kgJiAxXSAmIDB4M2YpOwo+ICsJCWlmICghZGVm YXVsdF9maWx0X2x2bCkKPiArCQkJbGV2ZWwgPSAwOwo+ICsKPiArCQlhbXZkZWNfd3JpdGVfZG9z KGNvcmUsIEhFVkNfREJMS19DRkdBLCBsZXZlbCk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2 b2lkIGNvZGVjX3ZwOV9mbHVzaF9vdXRwdXQoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzKQo+ ICt7Cj4gKwlzdHJ1Y3QgY29kZWNfdnA5ICp2cDkgPSBzZXNzLT5wcml2Owo+ICsJc3RydWN0IHZw OV9mcmFtZSAqdG1wLCAqbjsKPiArCj4gKwltdXRleF9sb2NrKCZ2cDktPmxvY2spOwo+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHRtcCwgbiwgJnZwOS0+cmVmX2ZyYW1lc19saXN0LCBsaXN0 KSB7Cj4gKwkJaWYgKCF0bXAtPmRvbmUpIHsKPiArCQkJaWYgKHRtcC0+c2hvdykKPiArCQkJCWFt dmRlY19kc3RfYnVmX2RvbmUoc2VzcywgdG1wLT52YnVmLAo+ICsJCQkJCQkgICAgVjRMMl9GSUVM RF9OT05FKTsKPiArCQkJZWxzZQo+ICsJCQkJdjRsMl9tMm1fYnVmX3F1ZXVlKHNlc3MtPm0ybV9j dHgsIHRtcC0+dmJ1Zik7Cj4gKwo+ICsJCQl2cDktPmZyYW1lc19udW0tLTsKPiArCQl9Cj4gKwo+ ICsJCWxpc3RfZGVsKCZ0bXAtPmxpc3QpOwo+ICsJCWtmcmVlKHRtcCk7Cj4gKwl9Cj4gKwltdXRl eF91bmxvY2soJnZwOS0+bG9jayk7Cj4gK30KPiArCj4gK3N0YXRpYyB1MzIgY29kZWNfdnA5X251 bV9wZW5kaW5nX2J1ZnMoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzKQo+ICt7Cj4gKwlzdHJ1 Y3QgY29kZWNfdnA5ICp2cDkgPSBzZXNzLT5wcml2Owo+ICsKPiArCWlmICghdnA5KQo+ICsJCXJl dHVybiAwOwo+ICsKPiArCXJldHVybiB2cDktPmZyYW1lc19udW07Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgY29kZWNfdnA5X2FsbG9jX3dvcmtzcGFjZShzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUs Cj4gKwkJCQkgICAgIHN0cnVjdCBjb2RlY192cDkgKnZwOSkKPiArewo+ICsJLyogQWxsb2NhdGUg c29tZSBtZW1vcnkgZm9yIHRoZSBWUDkgZGVjb2RlcidzIHN0YXRlICovCj4gKwl2cDktPndvcmtz cGFjZV92YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChjb3JlLT5kZXYsIFNJWkVfV09SS1NQQUNF LAo+ICsJCQkJCQkgICZ2cDktPndvcmtzcGFjZV9wYWRkciwKPiArCQkJCQkJICBHRlBfS0VSTkVM KTsKPiArCWlmICghdnA5LT53b3Jrc3BhY2VfdmFkZHIpIHsKPiArCQlkZXZfZXJyKGNvcmUtPmRl diwgIkZhaWxlZCB0byBhbGxvY2F0ZSBWUDkgV29ya3NwYWNlXG4iKTsKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCX0KPiArCj4gKwltZW1zZXQodnA5LT53b3Jrc3BhY2VfdmFkZHIsIDAsIFNJWkVf V09SS1NQQUNFKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29k ZWNfdnA5X3NldHVwX3dvcmtzcGFjZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4gKwkJ CQkgICAgICBzdHJ1Y3QgY29kZWNfdnA5ICp2cDkpCj4gK3sKPiArCXN0cnVjdCBhbXZkZWNfY29y ZSAqY29yZSA9IHNlc3MtPmNvcmU7Cj4gKwl1MzIgcmV2aXNpb24gPSBjb3JlLT5wbGF0Zm9ybS0+ cmV2aXNpb247Cj4gKwlkbWFfYWRkcl90IHdrYWRkciA9IHZwOS0+d29ya3NwYWNlX3BhZGRyOwo+ ICsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfSVBQX0xJTkVCVUZGX0JBU0UsIHdr YWRkciArIElQUF9PRkZTRVQpOwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBWUDlfUlBNX0JV RkZFUiwgd2thZGRyICsgUlBNX09GRlNFVCk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQ OV9TSE9SVF9URVJNX1JQUywgd2thZGRyICsgU0hfVE1fUlBTX09GRlNFVCk7Cj4gKwlhbXZkZWNf d3JpdGVfZG9zKGNvcmUsIFZQOV9QUFNfQlVGRkVSLCB3a2FkZHIgKyBQUFNfT0ZGU0VUKTsKPiAr CWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5X1NBT19VUCwgd2thZGRyICsgU0FPX1VQX09GRlNF VCk7Cj4gKwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBWUDlfU1RSRUFNX1NXQVBfQlVGRkVS LAo+ICsJCQkgd2thZGRyICsgU1dBUF9CVUZfT0ZGU0VUKTsKPiArCWFtdmRlY193cml0ZV9kb3Mo Y29yZSwgVlA5X1NUUkVBTV9TV0FQX0JVRkZFUjIsCj4gKwkJCSB3a2FkZHIgKyBTV0FQX0JVRjJf T0ZGU0VUKTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5X1NDQUxFTFVULCB3a2FkZHIg KyBTQ0FMRUxVVF9PRkZTRVQpOwo+ICsKPiArCWlmIChjb3JlLT5wbGF0Zm9ybS0+cmV2aXNpb24g Pj0gVkRFQ19SRVZJU0lPTl9HMTJBKQo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19E QkxLX0NGR0UsCj4gKwkJCQkgd2thZGRyICsgREJMS19QQVJBX09GRlNFVCk7Cj4gKwo+ICsJYW12 ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX0RCTEtfQ0ZHNCwgd2thZGRyICsgREJMS19QQVJBX09G RlNFVCk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfREJMS19DRkc1LCB3a2FkZHIg KyBEQkxLX0RBVEFfT0ZGU0VUKTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5X1NFR19N QVBfQlVGRkVSLCB3a2FkZHIgKyBTRUdfTUFQX09GRlNFVCk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9z KGNvcmUsIFZQOV9QUk9CX1NXQVBfQlVGRkVSLCB3a2FkZHIgKyBQUk9CX09GRlNFVCk7Cj4gKwlh bXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQOV9DT1VOVF9TV0FQX0JVRkZFUiwgd2thZGRyICsgQ09V TlRfT0ZGU0VUKTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgTE1FTV9EVU1QX0FEUiwgd2th ZGRyICsgTE1FTV9PRkZTRVQpOwo+ICsKPiArCWlmIChjb2RlY19oZXZjX3VzZV9tbXUocmV2aXNp b24sIHNlc3MtPnBpeGZtdF9jYXAsIHZwOS0+aXNfMTBiaXQpKSB7Cj4gKwkJYW12ZGVjX3dyaXRl X2Rvcyhjb3JlLCBIRVZDX1NBT19NTVVfVkgwX0FERFIsCj4gKwkJCQkgd2thZGRyICsgTU1VX1ZC SF9PRkZTRVQpOwo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19TQU9fTU1VX1ZIMV9B RERSLAo+ICsJCQkJIHdrYWRkciArIE1NVV9WQkhfT0ZGU0VUICsgKE1NVV9WQkhfU0laRSAvIDIp KTsKPiArCj4gKwkJaWYgKHJldmlzaW9uID49IFZERUNfUkVWSVNJT05fRzEyQSkKPiArCQkJYW12 ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX0FTU0lTVF9NTVVfTUFQX0FERFIsCj4gKwkJCQkJIHZw OS0+Y29tbW9uLm1tdV9tYXBfcGFkZHIpOwo+ICsJCWVsc2UKPiArCQkJYW12ZGVjX3dyaXRlX2Rv cyhjb3JlLCBWUDlfTU1VX01BUF9CVUZGRVIsCj4gKwkJCQkJIHZwOS0+Y29tbW9uLm1tdV9tYXBf cGFkZHIpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNvZGVjX3ZwOV9zdGFydChzdHJ1 Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MpCj4gK3sKPiArCXN0cnVjdCBhbXZkZWNfY29yZSAqY29y ZSA9IHNlc3MtPmNvcmU7Cj4gKwlzdHJ1Y3QgY29kZWNfdnA5ICp2cDk7Cj4gKwl1MzIgdmFsOwo+ ICsJaW50IGk7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXZwOSA9IGt6YWxsb2Moc2l6ZW9mKCp2cDkp LCBHRlBfS0VSTkVMKTsKPiArCWlmICghdnA5KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiAr CXJldCA9IGNvZGVjX3ZwOV9hbGxvY193b3Jrc3BhY2UoY29yZSwgdnA5KTsKPiArCWlmIChyZXQp Cj4gKwkJZ290byBmcmVlX3ZwOTsKPiArCj4gKwljb2RlY192cDlfc2V0dXBfd29ya3NwYWNlKHNl c3MsIHZwOSk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zX2JpdHMoY29yZSwgSEVWQ19TVFJFQU1fQ09O VFJPTCwgQklUKDApKTsKPiArCS8qIHN0cmVhbV9maWZvX2hvbGUgKi8KPiArCWlmIChjb3JlLT5w bGF0Zm9ybS0+cmV2aXNpb24gPj0gVkRFQ19SRVZJU0lPTl9HMTJBKQo+ICsJCWFtdmRlY193cml0 ZV9kb3NfYml0cyhjb3JlLCBIRVZDX1NUUkVBTV9GSUZPX0NUTCwgQklUKDI5KSk7Cj4gKwo+ICsJ dmFsID0gYW12ZGVjX3JlYWRfZG9zKGNvcmUsIEhFVkNfUEFSU0VSX0lOVF9DT05UUk9MKSAmIDB4 N2ZmZmZmZmY7Cj4gKwl2YWwgfD0gKDMgPDwgMjkpIHwgQklUKDI0KSB8IEJJVCgyMikgfCBCSVQo NykgfCBCSVQoNCkgfCBCSVQoMCk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfUEFS U0VSX0lOVF9DT05UUk9MLCB2YWwpOwo+ICsJYW12ZGVjX3dyaXRlX2Rvc19iaXRzKGNvcmUsIEhF VkNfU0hJRlRfU1RBVFVTLCBCSVQoMCkpOwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZD X1NISUZUX0NPTlRST0wsIEJJVCgxMCkgfCBCSVQoOSkgfAo+ICsJCQkgKDMgPDwgNikgfCBCSVQo NSkgfCBCSVQoMikgfCBCSVQoMSkgfCBCSVQoMCkpOwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3Jl LCBIRVZDX0NBQkFDX0NPTlRST0wsIEJJVCgwKSk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUs IEhFVkNfUEFSU0VSX0NPUkVfQ09OVFJPTCwgQklUKDApKTsKPiArCWFtdmRlY193cml0ZV9kb3Mo Y29yZSwgSEVWQ19TSElGVF9TVEFSVENPREUsIDB4MDAwMDAwMDEpOwo+ICsKPiArCWFtdmRlY193 cml0ZV9kb3MoY29yZSwgVlA5X0RFQ19TVEFUVVNfUkVHLCAwKTsKPiArCj4gKwlhbXZkZWNfd3Jp dGVfZG9zKGNvcmUsIEhFVkNfUEFSU0VSX0NNRF9XUklURSwgQklUKDE2KSk7Cj4gKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRSh2ZGVjX2hldmNfcGFyc2VyX2NtZCk7ICsraSkKPiArCQlhbXZk ZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfUEFSU0VSX0NNRF9XUklURSwKPiArCQkJCSB2ZGVjX2hl dmNfcGFyc2VyX2NtZFtpXSk7Cj4gKwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX1BB UlNFUl9DTURfU0tJUF8wLCBQQVJTRVJfQ01EX1NLSVBfQ0ZHXzApOwo+ICsJYW12ZGVjX3dyaXRl X2Rvcyhjb3JlLCBIRVZDX1BBUlNFUl9DTURfU0tJUF8xLCBQQVJTRVJfQ01EX1NLSVBfQ0ZHXzEp Owo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX1BBUlNFUl9DTURfU0tJUF8yLCBQQVJT RVJfQ01EX1NLSVBfQ0ZHXzIpOwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX1BBUlNF Ul9JRl9DT05UUk9MLAo+ICsJCQkgQklUKDUpIHwgQklUKDIpIHwgQklUKDApKTsKPiArCj4gKwlh bXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX0lQUF9UT1BfQ05UTCwgQklUKDApKTsKPiArCWFt dmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfSVBQX1RPUF9DTlRMLCBCSVQoMSkpOwo+ICsKPiAr CWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5X1dBSVRfRkxBRywgMSk7Cj4gKwo+ICsJLyogY2xl YXIgbWFpbGJveCBpbnRlcnJ1cHQgKi8KPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19B U1NJU1RfTUJPWDFfQ0xSX1JFRywgMSk7Cj4gKwkvKiBlbmFibGUgbWFpbGJveCBpbnRlcnJ1cHQg Ki8KPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19BU1NJU1RfTUJPWDFfTUFTSywgMSk7 Cj4gKwkvKiBkaXNhYmxlIFBTQ0FMRSBmb3IgaGFyZHdhcmUgc2hhcmluZyAqLwo+ICsJYW12ZGVj X3dyaXRlX2Rvcyhjb3JlLCBIRVZDX1BTQ0FMRV9DVFJMLCAwKTsKPiArCS8qIExldCB0aGUgdUNv ZGUgZG8gYWxsIHRoZSBwYXJzaW5nICovCj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIE5BTF9T RUFSQ0hfQ1RMLCAweDgpOwo+ICsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgREVDT0RFX1NU T1BfUE9TLCAwKTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5X0RFQ09ERV9NT0RFLCBE RUNPREVfTU9ERV9TSU5HTEUpOwo+ICsKPiArCXByX2RlYnVnKCJkZWNvZGVfY291bnQ6ICV1OyBk ZWNvZGVfc2l6ZTogJXVcbiIsCj4gKwkJIGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBIRVZDX0RFQ09E RV9DT1VOVCksCj4gKwkJIGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBIRVZDX0RFQ09ERV9TSVpFKSk7 Cj4gKwo+ICsJdnA5X2xvb3BfZmlsdGVyX2luaXQoY29yZSwgdnA5KTsKPiArCj4gKwlJTklUX0xJ U1RfSEVBRCgmdnA5LT5yZWZfZnJhbWVzX2xpc3QpOwo+ICsJbXV0ZXhfaW5pdCgmdnA5LT5sb2Nr KTsKPiArCW1lbXNldCgmdnA5LT5yZWZfZnJhbWVfbWFwLCAtMSwgc2l6ZW9mKHZwOS0+cmVmX2Zy YW1lX21hcCkpOwo+ICsJbWVtc2V0KCZ2cDktPm5leHRfcmVmX2ZyYW1lX21hcCwgLTEsIHNpemVv Zih2cDktPm5leHRfcmVmX2ZyYW1lX21hcCkpOwo+ICsJZm9yIChpID0gMDsgaSA8IFJFRlNfUEVS X0ZSQU1FOyArK2kpCj4gKwkJdnA5LT5mcmFtZV9yZWZzW2ldID0gTlVMTDsKPiArCXNlc3MtPnBy aXYgPSB2cDk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtmcmVlX3ZwOToKPiArCWtmcmVlKHZw OSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNvZGVjX3ZwOV9zdG9w KHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiArewo+ICsJc3RydWN0IGFtdmRlY19jb3Jl ICpjb3JlID0gc2Vzcy0+Y29yZTsKPiArCXN0cnVjdCBjb2RlY192cDkgKnZwOSA9IHNlc3MtPnBy aXY7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmdnA5LT5sb2NrKTsKPiArCWlmICh2cDktPndvcmtzcGFj ZV92YWRkcikKPiArCQlkbWFfZnJlZV9jb2hlcmVudChjb3JlLT5kZXYsIFNJWkVfV09SS1NQQUNF LAo+ICsJCQkJICB2cDktPndvcmtzcGFjZV92YWRkciwKPiArCQkJCSAgdnA5LT53b3Jrc3BhY2Vf cGFkZHIpOwo+ICsKPiArCWNvZGVjX2hldmNfZnJlZV9mYmNfYnVmZmVycyhzZXNzLCAmdnA5LT5j b21tb24pOwo+ICsJbXV0ZXhfdW5sb2NrKCZ2cDktPmxvY2spOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjb2RlY192cDlfc2V0X3NhbyhzdHJ1Y3QgYW12ZGVjX3Nl c3Npb24gKnNlc3MsCj4gKwkJCSAgICAgIHN0cnVjdCB2YjJfYnVmZmVyICp2YikKPiArewo+ICsJ c3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPiArCXN0cnVjdCBjb2RlY192 cDkgKnZwOSA9IHNlc3MtPnByaXY7Cj4gKwo+ICsJZG1hX2FkZHJfdCBidWZfeV9wYWRkcjsKPiAr CWRtYV9hZGRyX3QgYnVmX3Vfdl9wYWRkcjsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJaWYgKGNvZGVj X2hldmNfdXNlX2Rvd25zYW1wbGUoc2Vzcy0+cGl4Zm10X2NhcCwgdnA5LT5pc18xMGJpdCkpCj4g KwkJYnVmX3lfcGFkZHIgPQo+ICsJCQl2cDktPmNvbW1vbi5mYmNfYnVmZmVyX3BhZGRyW3ZiLT5p bmRleF07Cj4gKwllbHNlCj4gKwkJYnVmX3lfcGFkZHIgPQo+ICsJCSAgICAgICB2YjJfZG1hX2Nv bnRpZ19wbGFuZV9kbWFfYWRkcih2YiwgMCk7Cj4gKwo+ICsJaWYgKGNvZGVjX2hldmNfdXNlX2Zi YyhzZXNzLT5waXhmbXRfY2FwLCB2cDktPmlzXzEwYml0KSkgewo+ICsJCXZhbCA9IGFtdmRlY19y ZWFkX2Rvcyhjb3JlLCBIRVZDX1NBT19DVFJMNSkgJiB+MHhmZjAyMDA7Cj4gKwkJYW12ZGVjX3dy aXRlX2Rvcyhjb3JlLCBIRVZDX1NBT19DVFJMNSwgdmFsKTsKPiArCQlhbXZkZWNfd3JpdGVfZG9z KGNvcmUsIEhFVkNfQ01fQk9EWV9TVEFSVF9BRERSLCBidWZfeV9wYWRkcik7Cj4gKwl9Cj4gKwo+ ICsJaWYgKHNlc3MtPnBpeGZtdF9jYXAgPT0gVjRMMl9QSVhfRk1UX05WMTJNKSB7Cj4gKwkJYnVm X3lfcGFkZHIgPQo+ICsJCSAgICAgICB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcih2Yiwg MCk7Cj4gKwkJYnVmX3Vfdl9wYWRkciA9Cj4gKwkJICAgICAgIHZiMl9kbWFfY29udGlnX3BsYW5l X2RtYV9hZGRyKHZiLCAxKTsKPiArCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfU0FPX1lf U1RBUlRfQUREUiwgYnVmX3lfcGFkZHIpOwo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVW Q19TQU9fQ19TVEFSVF9BRERSLCBidWZfdV92X3BhZGRyKTsKPiArCQlhbXZkZWNfd3JpdGVfZG9z KGNvcmUsIEhFVkNfU0FPX1lfV1BUUiwgYnVmX3lfcGFkZHIpOwo+ICsJCWFtdmRlY193cml0ZV9k b3MoY29yZSwgSEVWQ19TQU9fQ19XUFRSLCBidWZfdV92X3BhZGRyKTsKPiArCX0KPiArCj4gKwlp ZiAoY29kZWNfaGV2Y191c2VfbW11KGNvcmUtPnBsYXRmb3JtLT5yZXZpc2lvbiwgc2Vzcy0+cGl4 Zm10X2NhcCwKPiArCQkJICAgICAgIHZwOS0+aXNfMTBiaXQpKSB7Cj4gKwkJYW12ZGVjX3dyaXRl X2Rvcyhjb3JlLCBIRVZDX0NNX0hFQURFUl9TVEFSVF9BRERSLAo+ICsJCQkJIHZwOS0+Y29tbW9u Lm1tdV9oZWFkZXJfcGFkZHJbdmItPmluZGV4XSk7Cj4gKwkJLyogdXNlIEhFVkNfQ01fSEVBREVS X1NUQVJUX0FERFIgKi8KPiArCQlhbXZkZWNfd3JpdGVfZG9zX2JpdHMoY29yZSwgSEVWQ19TQU9f Q1RSTDUsIEJJVCgxMCkpOwo+ICsJfQo+ICsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVW Q19TQU9fWV9MRU5HVEgsCj4gKwkJCSBhbXZkZWNfZ2V0X291dHB1dF9zaXplKHNlc3MpKTsKPiAr CWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19TQU9fQ19MRU5HVEgsCj4gKwkJCSAoYW12ZGVj X2dldF9vdXRwdXRfc2l6ZShzZXNzKSAvIDIpKTsKPiArCj4gKwlpZiAoY29yZS0+cGxhdGZvcm0t PnJldmlzaW9uID49IFZERUNfUkVWSVNJT05fRzEyQSkgewo+ICsJCWFtdmRlY19jbGVhcl9kb3Nf Yml0cyhjb3JlLCBIRVZDX0RCTEtfQ0ZHQiwKPiArCQkJCSAgICAgIEJJVCg0KSB8IEJJVCg1KSB8 IEJJVCg4KSB8IEJJVCg5KSk7Cj4gKwkJLyogZW5hYmxlIGZpcnN0LCBjb21wcmVzc2VkIHdyaXRl ICovCj4gKwkJaWYgKGNvZGVjX2hldmNfdXNlX2ZiYyhzZXNzLT5waXhmbXRfY2FwLCB2cDktPmlz XzEwYml0KSkKPiArCQkJYW12ZGVjX3dyaXRlX2Rvc19iaXRzKGNvcmUsIEhFVkNfREJMS19DRkdC LCBCSVQoOCkpOwo+ICsKPiArCQkvKiBlbmFibGUgc2Vjb25kLCB1bmNvbXByZXNzZWQgd3JpdGUg Ki8KPiArCQlpZiAoc2Vzcy0+cGl4Zm10X2NhcCA9PSBWNEwyX1BJWF9GTVRfTlYxMk0pCj4gKwkJ CWFtdmRlY193cml0ZV9kb3NfYml0cyhjb3JlLCBIRVZDX0RCTEtfQ0ZHQiwgQklUKDkpKTsKPiAr Cj4gKwkJLyogZGJsayBwaXBlbGluZSBtb2RlPTEgZm9yIHBlcmZvcm1hbmNlICovCj4gKwkJaWYg KHNlc3MtPndpZHRoID49IDEyODApCj4gKwkJCWFtdmRlY193cml0ZV9kb3NfYml0cyhjb3JlLCBI RVZDX0RCTEtfQ0ZHQiwgQklUKDQpKTsKPiArCj4gKwkJcHJfZGVidWcoIkhFVkNfREJMS19DRkdC OiAlMDhYXG4iLAo+ICsJCQkgYW12ZGVjX3JlYWRfZG9zKGNvcmUsIEhFVkNfREJMS19DRkdCKSk7 Cj4gKwl9Cj4gKwo+ICsJdmFsID0gYW12ZGVjX3JlYWRfZG9zKGNvcmUsIEhFVkNfU0FPX0NUUkwx KSAmIH4weDNmZjA7Cj4gKwl2YWwgfD0gMHhmZjA7IC8qIFNldCBlbmRpYW5uZXNzIGZvciAyLWJ5 dGVzIHN3YXBzIChudjEyKSAqLwo+ICsJaWYgKGNvcmUtPnBsYXRmb3JtLT5yZXZpc2lvbiA8IFZE RUNfUkVWSVNJT05fRzEyQSkgewo+ICsJCXZhbCAmPSB+MHgzOwo+ICsJCWlmICghY29kZWNfaGV2 Y191c2VfZmJjKHNlc3MtPnBpeGZtdF9jYXAsIHZwOS0+aXNfMTBiaXQpKQo+ICsJCQl2YWwgfD0g QklUKDApOyAvKiBkaXNhYmxlIGNtIGNvbXByZXNzaW9uICovCj4gKwkJLyogVE9GSVg6IEhhbmRs ZSBBbWxvZ2ljIEZyYW1lYnVmZmVyIGNvbXByZXNzaW9uICovCj4gKwl9Cj4gKwo+ICsJYW12ZGVj X3dyaXRlX2Rvcyhjb3JlLCBIRVZDX1NBT19DVFJMMSwgdmFsKTsKPiArCXByX2RlYnVnKCJIRVZD X1NBT19DVFJMMTogJTA4WFxuIiwgdmFsKTsKPiArCj4gKwkvKiBubyBkb3duc2NhbGUgZm9yIE5W MTIgKi8KPiArCXZhbCA9IGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBIRVZDX1NBT19DVFJMNSkgJiB+ MHhmZjAwMDA7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfU0FPX0NUUkw1LCB2YWwp Owo+ICsKPiArCXZhbCA9IGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBIRVZDRF9JUFBfQVhJSUZfQ09O RklHKSAmIH4weDMwOwo+ICsJdmFsIHw9IDB4ZjsKPiArCXZhbCAmPSB+QklUKDEyKTsgLyogTlYx MiAqLwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDRF9JUFBfQVhJSUZfQ09ORklHLCB2 YWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZG1hX2FkZHJfdCBjb2RlY192cDlfZ2V0X2ZyYW1lX212 X3BhZGRyKHN0cnVjdCBjb2RlY192cDkgKnZwOSwKPiArCQkJCQkgICAgICAgc3RydWN0IHZwOV9m cmFtZSAqZnJhbWUpCj4gK3sKPiArCXJldHVybiB2cDktPndvcmtzcGFjZV9wYWRkciArIE1QUkVE X01WX09GRlNFVCArCj4gKwkgICAgICAgKGZyYW1lLT5pbmRleCAqIE1QUkVEX01WX0JVRl9TSVpF KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29kZWNfdnA5X3NldF9tcHJlZF9tdihzdHJ1Y3Qg YW12ZGVjX2NvcmUgKmNvcmUsCj4gKwkJCQkgICBzdHJ1Y3QgY29kZWNfdnA5ICp2cDkpCj4gK3sK PiArCWludCBtcHJlZF9tdl9yZF9lbmRfYWRkcjsKPiArCWludCB1c2VfcHJldl9mcmFtZV9tdnMg PSB2cDktPnByZXZfZnJhbWUtPndpZHRoID09Cj4gKwkJCQkJdnA5LT5jdXJfZnJhbWUtPndpZHRo ICYmCj4gKwkJCQkgdnA5LT5wcmV2X2ZyYW1lLT5oZWlnaHQgPT0KPiArCQkJCQl2cDktPmN1cl9m cmFtZS0+aGVpZ2h0ICYmCj4gKwkJCQkgIXZwOS0+cHJldl9mcmFtZS0+aW50cmFfb25seSAmJgo+ ICsJCQkJIHZwOS0+cHJldl9mcmFtZS0+c2hvdyAmJgo+ICsJCQkJIHZwOS0+cHJldl9mcmFtZS0+ dHlwZSAhPSBLRVlfRlJBTUU7Cj4gKwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX01Q UkVEX0NUUkwzLCAweDI0MTIyNDEyKTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19N UFJFRF9BQlZfU1RBUlRfQUREUiwKPiArCQkJIHZwOS0+d29ya3NwYWNlX3BhZGRyICsgTVBSRURf QUJWX09GRlNFVCk7Cj4gKwo+ICsJYW12ZGVjX2NsZWFyX2Rvc19iaXRzKGNvcmUsIEhFVkNfTVBS RURfQ1RSTDQsIEJJVCg2KSk7Cj4gKwlpZiAodXNlX3ByZXZfZnJhbWVfbXZzKQo+ICsJCWFtdmRl Y193cml0ZV9kb3NfYml0cyhjb3JlLCBIRVZDX01QUkVEX0NUUkw0LCBCSVQoNikpOwo+ICsKPiAr CWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19NUFJFRF9NVl9XUl9TVEFSVF9BRERSLAo+ICsJ CQkgY29kZWNfdnA5X2dldF9mcmFtZV9tdl9wYWRkcih2cDksIHZwOS0+Y3VyX2ZyYW1lKSk7Cj4g KwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfTVBSRURfTVZfV1BUUiwKPiArCQkJIGNvZGVj X3ZwOV9nZXRfZnJhbWVfbXZfcGFkZHIodnA5LCB2cDktPmN1cl9mcmFtZSkpOwo+ICsKPiArCWFt dmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19NUFJFRF9NVl9SRF9TVEFSVF9BRERSLAo+ICsJCQkg Y29kZWNfdnA5X2dldF9mcmFtZV9tdl9wYWRkcih2cDksIHZwOS0+cHJldl9mcmFtZSkpOwo+ICsJ YW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBIRVZDX01QUkVEX01WX1JQVFIsCj4gKwkJCSBjb2RlY192 cDlfZ2V0X2ZyYW1lX212X3BhZGRyKHZwOSwgdnA5LT5wcmV2X2ZyYW1lKSk7Cj4gKwo+ICsJbXBy ZWRfbXZfcmRfZW5kX2FkZHIgPQo+ICsJCQljb2RlY192cDlfZ2V0X2ZyYW1lX212X3BhZGRyKHZw OSwgdnA5LT5wcmV2X2ZyYW1lKSArCj4gKwkJCSh2cDktPmxjdV90b3RhbCAqIE1WX01FTV9VTklU KTsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ19NUFJFRF9NVl9SRF9FTkRfQUREUiwg bXByZWRfbXZfcmRfZW5kX2FkZHIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjb2RlY192cDlf dXBkYXRlX25leHRfcmVmKHN0cnVjdCBjb2RlY192cDkgKnZwOSkKPiArewo+ICsJdW5pb24gcnBt X3BhcmFtICpwYXJhbSA9ICZ2cDktPnJwbV9wYXJhbTsKPiArCXUzMiBidWZfaWR4ID0gdnA5LT5j dXJfZnJhbWUtPmluZGV4Owo+ICsJaW50IHJlZl9pbmRleCA9IDA7Cj4gKwlpbnQgcmVmcmVzaF9m cmFtZV9mbGFnczsKPiArCWludCBtYXNrOwo+ICsKPiArCXJlZnJlc2hfZnJhbWVfZmxhZ3MgPSB2 cDktPmN1cl9mcmFtZS0+dHlwZSA9PSBLRVlfRlJBTUUgPwo+ICsJCQkJMHhmZiA6IHBhcmFtLT5w LnJlZnJlc2hfZnJhbWVfZmxhZ3M7Cj4gKwo+ICsJZm9yIChtYXNrID0gcmVmcmVzaF9mcmFtZV9m bGFnczsgbWFzazsgbWFzayA+Pj0gMSkgewo+ICsJCXByX2RlYnVnKCJtYXNrPSUwOFg7IHJlZl9p bmRleD0lZFxuIiwgbWFzaywgcmVmX2luZGV4KTsKPiArCQlpZiAobWFzayAmIDEpCj4gKwkJCXZw OS0+bmV4dF9yZWZfZnJhbWVfbWFwW3JlZl9pbmRleF0gPSBidWZfaWR4Owo+ICsJCWVsc2UKPiAr CQkJdnA5LT5uZXh0X3JlZl9mcmFtZV9tYXBbcmVmX2luZGV4XSA9Cj4gKwkJCQl2cDktPnJlZl9m cmFtZV9tYXBbcmVmX2luZGV4XTsKPiArCj4gKwkJKytyZWZfaW5kZXg7Cj4gKwl9Cj4gKwo+ICsJ Zm9yICg7IHJlZl9pbmRleCA8IFJFRl9GUkFNRVM7ICsrcmVmX2luZGV4KQo+ICsJCXZwOS0+bmV4 dF9yZWZfZnJhbWVfbWFwW3JlZl9pbmRleF0gPQo+ICsJCQl2cDktPnJlZl9mcmFtZV9tYXBbcmVm X2luZGV4XTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29kZWNfdnA5X3NhdmVfcmVmcyhzdHJ1 Y3QgY29kZWNfdnA5ICp2cDkpCj4gK3sKPiArCXVuaW9uIHJwbV9wYXJhbSAqcGFyYW0gPSAmdnA5 LT5ycG1fcGFyYW07Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgUkVGU19QRVJf RlJBTUU7ICsraSkgewo+ICsJCWNvbnN0IGludCByZWYgPSAocGFyYW0tPnAucmVmX2luZm8gPj4K PiArCQkJCSAoKChSRUZTX1BFUl9GUkFNRSAtIGkgLSAxKSAqIDQpICsgMSkpICYgMHg3Owo+ICsK PiArCQlpZiAodnA5LT5yZWZfZnJhbWVfbWFwW3JlZl0gPCAwKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJcHJfd2FybigiJXM6IEZJWE1FLCB3b3VsZCBuZWVkIHRvIHNhdmUgcmVmICVkXG4iLAo+ ICsJCQlfX2Z1bmNfXywgdnA5LT5yZWZfZnJhbWVfbWFwW3JlZl0pOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBjb2RlY192cDlfdXBkYXRlX3JlZihzdHJ1Y3QgY29kZWNfdnA5ICp2cDkp Cj4gK3sKPiArCXVuaW9uIHJwbV9wYXJhbSAqcGFyYW0gPSAmdnA5LT5ycG1fcGFyYW07Cj4gKwlp bnQgcmVmX2luZGV4ID0gMDsKPiArCWludCBtYXNrOwo+ICsJaW50IHJlZnJlc2hfZnJhbWVfZmxh Z3M7Cj4gKwo+ICsJaWYgKCF2cDktPmN1cl9mcmFtZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcmVm cmVzaF9mcmFtZV9mbGFncyA9IHZwOS0+Y3VyX2ZyYW1lLT50eXBlID09IEtFWV9GUkFNRSA/Cj4g KwkJCQkweGZmIDogcGFyYW0tPnAucmVmcmVzaF9mcmFtZV9mbGFnczsKPiArCj4gKwlmb3IgKG1h c2sgPSByZWZyZXNoX2ZyYW1lX2ZsYWdzOyBtYXNrOyBtYXNrID4+PSAxKSB7Cj4gKwkJdnA5LT5y ZWZfZnJhbWVfbWFwW3JlZl9pbmRleF0gPQo+ICsJCQl2cDktPm5leHRfcmVmX2ZyYW1lX21hcFty ZWZfaW5kZXhdOwo+ICsJCSsrcmVmX2luZGV4Owo+ICsJfQo+ICsKPiArCWlmIChwYXJhbS0+cC5z aG93X2V4aXN0aW5nX2ZyYW1lKQo+ICsJCXJldHVybjsKPiArCj4gKwlmb3IgKDsgcmVmX2luZGV4 IDwgUkVGX0ZSQU1FUzsgKytyZWZfaW5kZXgpCj4gKwkJdnA5LT5yZWZfZnJhbWVfbWFwW3JlZl9p bmRleF0gPQo+ICsJCQl2cDktPm5leHRfcmVmX2ZyYW1lX21hcFtyZWZfaW5kZXhdOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IHZwOV9mcmFtZSAqY29kZWNfdnA5X2dldF9mcmFtZV9ieV9pZHgo c3RydWN0IGNvZGVjX3ZwOSAqdnA5LAo+ICsJCQkJCQkgICAgaW50IGlkeCkKPiArewo+ICsJc3Ry dWN0IHZwOV9mcmFtZSAqZnJhbWU7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShmcmFtZSwg JnZwOS0+cmVmX2ZyYW1lc19saXN0LCBsaXN0KSB7Cj4gKwkJaWYgKGZyYW1lLT5pbmRleCA9PSBp ZHgpCj4gKwkJCXJldHVybiBmcmFtZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgY29kZWNfdnA5X3N5bmNfcmVmKHN0cnVjdCBjb2RlY192cDkgKnZw OSkKPiArewo+ICsJdW5pb24gcnBtX3BhcmFtICpwYXJhbSA9ICZ2cDktPnJwbV9wYXJhbTsKPiAr CWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBSRUZTX1BFUl9GUkFNRTsgKytpKSB7Cj4g KwkJY29uc3QgaW50IHJlZiA9IChwYXJhbS0+cC5yZWZfaW5mbyA+Pgo+ICsJCQkJICgoKFJFRlNf UEVSX0ZSQU1FIC0gaSAtIDEpICogNCkgKyAxKSkgJiAweDc7Cj4gKwkJY29uc3QgaW50IGlkeCA9 IHZwOS0+cmVmX2ZyYW1lX21hcFtyZWZdOwo+ICsKPiArCQl2cDktPmZyYW1lX3JlZnNbaV0gPSBj b2RlY192cDlfZ2V0X2ZyYW1lX2J5X2lkeCh2cDksIGlkeCk7Cj4gKwkJaWYgKCF2cDktPmZyYW1l X3JlZnNbaV0pCj4gKwkJCXByX3dhcm4oIiVzOiBjb3VsZG4ndCBmaW5kIFZQOSByZWYgJWRcbiIs IF9fZnVuY19fLAo+ICsJCQkJaWR4KTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29k ZWNfdnA5X3NldF9yZWZzKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcywKPiArCQkJICAgICAg IHN0cnVjdCBjb2RlY192cDkgKnZwOSkKPiArewo+ICsJc3RydWN0IGFtdmRlY19jb3JlICpjb3Jl ID0gc2Vzcy0+Y29yZTsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBSRUZTX1BF Ul9GUkFNRTsgKytpKSB7Cj4gKwkJc3RydWN0IHZwOV9mcmFtZSAqZnJhbWUgPSB2cDktPmZyYW1l X3JlZnNbaV07Cj4gKwkJaW50IGlkX3k7Cj4gKwkJaW50IGlkX3VfdjsKPiArCj4gKwkJaWYgKCFm cmFtZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChjb2RlY19oZXZjX3VzZV9mYmMoc2Vz cy0+cGl4Zm10X2NhcCwgdnA5LT5pc18xMGJpdCkpIHsKPiArCQkJaWRfeSA9IGZyYW1lLT5pbmRl eDsKPiArCQkJaWRfdV92ID0gaWRfeTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZF95ID0gZnJhbWUt PmluZGV4ICogMjsKPiArCQkJaWRfdV92ID0gaWRfeSArIDE7Cj4gKwkJfQo+ICsKPiArCQlhbXZk ZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9BTkNfQ0FOVkFTX0RBVEFfQUREUiwKPiArCQkJ CSAoaWRfdV92IDw8IDE2KSB8IChpZF91X3YgPDwgOCkgfCBpZF95KTsKPiArCX0KPiArfQo+ICsK PiArc3RhdGljIHZvaWQgY29kZWNfdnA5X3NldF9tYyhzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNl c3MsCj4gKwkJCSAgICAgc3RydWN0IGNvZGVjX3ZwOSAqdnA5KQo+ICt7Cj4gKwlzdHJ1Y3QgYW12 ZGVjX2NvcmUgKmNvcmUgPSBzZXNzLT5jb3JlOwo+ICsJdTMyIHNjYWxlID0gMDsKPiArCXUzMiBz ejsKPiArCWludCBpOwo+ICsKPiArCWFtdmRlY193cml0ZV9kb3MoY29yZSwgSEVWQ0RfTVBQX0FO Q19DQU5WQVNfQUNDQ09ORklHX0FERFIsIDEpOwo+ICsJY29kZWNfdnA5X3NldF9yZWZzKHNlc3Ms IHZwOSk7Cj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNEX01QUF9BTkNfQ0FOVkFTX0FD Q0NPTkZJR19BRERSLAo+ICsJCQkgKDE2IDw8IDgpIHwgMSk7Cj4gKwljb2RlY192cDlfc2V0X3Jl ZnMoc2VzcywgdnA5KTsKPiArCj4gKwlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQOURfTVBQX1JF RklORk9fVEJMX0FDQ0NPTkZJRywgQklUKDIpKTsKPiArCWZvciAoaSA9IDA7IGkgPCBSRUZTX1BF Ul9GUkFNRTsgKytpKSB7Cj4gKwkJaWYgKCF2cDktPmZyYW1lX3JlZnNbaV0pCj4gKwkJCWNvbnRp bnVlOwo+ICsKPiArCQlpZiAodnA5LT5mcmFtZV9yZWZzW2ldLT53aWR0aCAhPSB2cDktPndpZHRo IHx8Cj4gKwkJICAgIHZwOS0+ZnJhbWVfcmVmc1tpXS0+aGVpZ2h0ICE9IHZwOS0+aGVpZ2h0KQo+ ICsJCQlzY2FsZSA9IDE7Cj4gKwo+ICsJCXN6ID0gYW12ZGVjX2FtMjFjX2JvZHlfc2l6ZSh2cDkt PmZyYW1lX3JlZnNbaV0tPndpZHRoLAo+ICsJCQkJCSAgICB2cDktPmZyYW1lX3JlZnNbaV0tPmhl aWdodCk7Cj4gKwo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5RF9NUFBfUkVGSU5GT19E QVRBLAo+ICsJCQkJIHZwOS0+ZnJhbWVfcmVmc1tpXS0+d2lkdGgpOwo+ICsJCWFtdmRlY193cml0 ZV9kb3MoY29yZSwgVlA5RF9NUFBfUkVGSU5GT19EQVRBLAo+ICsJCQkJIHZwOS0+ZnJhbWVfcmVm c1tpXS0+aGVpZ2h0KTsKPiArCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQOURfTVBQX1JFRklO Rk9fREFUQSwKPiArCQkJCSAodnA5LT5mcmFtZV9yZWZzW2ldLT53aWR0aCA8PCAxNCkgLwo+ICsJ CQkJIHZwOS0+d2lkdGgpOwo+ICsJCWFtdmRlY193cml0ZV9kb3MoY29yZSwgVlA5RF9NUFBfUkVG SU5GT19EQVRBLAo+ICsJCQkJICh2cDktPmZyYW1lX3JlZnNbaV0tPmhlaWdodCA8PCAxNCkgLwo+ ICsJCQkJIHZwOS0+aGVpZ2h0KTsKPiArCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQOURfTVBQ X1JFRklORk9fREFUQSwgc3ogPj4gNSk7Cj4gKwl9Cj4gKwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhj b3JlLCBWUDlEX01QUF9SRUZfU0NBTEVfRU5CTCwgc2NhbGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3RydWN0IHZwOV9mcmFtZSAqY29kZWNfdnA5X2dldF9uZXdfZnJhbWUoc3RydWN0IGFtdmRlY19z ZXNzaW9uICpzZXNzKQo+ICt7Cj4gKwlzdHJ1Y3QgY29kZWNfdnA5ICp2cDkgPSBzZXNzLT5wcml2 Owo+ICsJdW5pb24gcnBtX3BhcmFtICpwYXJhbSA9ICZ2cDktPnJwbV9wYXJhbTsKPiArCXN0cnVj dCB2YjJfdjRsMl9idWZmZXIgKnZidWY7Cj4gKwlzdHJ1Y3QgdnA5X2ZyYW1lICpuZXdfZnJhbWU7 Cj4gKwo+ICsJbmV3X2ZyYW1lID0ga3phbGxvYyhzaXplb2YoKm5ld19mcmFtZSksIEdGUF9LRVJO RUwpOwo+ICsJaWYgKCFuZXdfZnJhbWUpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJdmJ1ZiA9 IHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKHNlc3MtPm0ybV9jdHgpOwo+ICsJaWYgKCF2YnVmKSB7 Cj4gKwkJZGV2X2VycihzZXNzLT5jb3JlLT5kZXYsICJObyBkc3QgYnVmZmVyIGF2YWlsYWJsZVxu Iik7Cj4gKwkJa2ZyZWUobmV3X2ZyYW1lKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4g Kwl3aGlsZSAoY29kZWNfdnA5X2dldF9mcmFtZV9ieV9pZHgodnA5LCB2YnVmLT52YjJfYnVmLmlu ZGV4KSkgewo+ICsJCXN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKm9sZF92YnVmID0gdmJ1ZjsKPiAr Cj4gKwkJdmJ1ZiA9IHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKHNlc3MtPm0ybV9jdHgpOwo+ICsJ CXY0bDJfbTJtX2J1Zl9xdWV1ZShzZXNzLT5tMm1fY3R4LCBvbGRfdmJ1Zik7Cj4gKwkJaWYgKCF2 YnVmKSB7Cj4gKwkJCWRldl9lcnIoc2Vzcy0+Y29yZS0+ZGV2LCAiTm8gZHN0IGJ1ZmZlciBhdmFp bGFibGVcbiIpOwo+ICsJCQlrZnJlZShuZXdfZnJhbWUpOwo+ICsJCQlyZXR1cm4gTlVMTDsKPiAr CQl9Cj4gKwl9Cj4gKwo+ICsJbmV3X2ZyYW1lLT52YnVmID0gdmJ1ZjsKPiArCW5ld19mcmFtZS0+ aW5kZXggPSB2YnVmLT52YjJfYnVmLmluZGV4Owo+ICsJbmV3X2ZyYW1lLT5pbnRyYV9vbmx5ID0g cGFyYW0tPnAuaW50cmFfb25seTsKPiArCW5ld19mcmFtZS0+c2hvdyA9IHBhcmFtLT5wLnNob3df ZnJhbWU7Cj4gKwluZXdfZnJhbWUtPnR5cGUgPSBwYXJhbS0+cC5mcmFtZV90eXBlOwo+ICsJbmV3 X2ZyYW1lLT53aWR0aCA9IHZwOS0+d2lkdGg7Cj4gKwluZXdfZnJhbWUtPmhlaWdodCA9IHZwOS0+ aGVpZ2h0Owo+ICsJbGlzdF9hZGRfdGFpbCgmbmV3X2ZyYW1lLT5saXN0LCAmdnA5LT5yZWZfZnJh bWVzX2xpc3QpOwo+ICsJdnA5LT5mcmFtZXNfbnVtKys7Cj4gKwo+ICsJcmV0dXJuIG5ld19mcmFt ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29kZWNfdnA5X3Nob3dfZXhpc3RpbmdfZnJhbWUo c3RydWN0IGNvZGVjX3ZwOSAqdnA5KQo+ICt7Cj4gKwl1bmlvbiBycG1fcGFyYW0gKnBhcmFtID0g JnZwOS0+cnBtX3BhcmFtOwo+ICsKPiArCWlmICghcGFyYW0tPnAuc2hvd19leGlzdGluZ19mcmFt ZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcHJfZGVidWcoInNob3dpbmcgZnJhbWUgJXVcbiIsIHBh cmFtLT5wLmZyYW1lX3RvX3Nob3dfaWR4KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY29kZWNf dnA5X3JtX25vc2hvd19mcmFtZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MpCj4gK3sKPiAr CXN0cnVjdCBjb2RlY192cDkgKnZwOSA9IHNlc3MtPnByaXY7Cj4gKwlzdHJ1Y3QgdnA5X2ZyYW1l ICp0bXA7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsICZ2cDktPnJlZl9mcmFtZXNf bGlzdCwgbGlzdCkgewo+ICsJCWlmICh0bXAtPnNob3cpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAr CQlwcl9kZWJ1Zygicm0gbm9zaG93OiAldVxuIiwgdG1wLT5pbmRleCk7Cj4gKwkJdjRsMl9tMm1f YnVmX3F1ZXVlKHNlc3MtPm0ybV9jdHgsIHRtcC0+dmJ1Zik7Cj4gKwkJbGlzdF9kZWwoJnRtcC0+ bGlzdCk7Cj4gKwkJa2ZyZWUodG1wKTsKPiArCQl2cDktPmZyYW1lc19udW0tLTsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNvZGVjX3ZwOV9wcm9jZXNzX2ZyYW1l KHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiArewo+ICsJc3RydWN0IGFtdmRlY19jb3Jl ICpjb3JlID0gc2Vzcy0+Y29yZTsKPiArCXN0cnVjdCBjb2RlY192cDkgKnZwOSA9IHNlc3MtPnBy aXY7Cj4gKwl1bmlvbiBycG1fcGFyYW0gKnBhcmFtID0gJnZwOS0+cnBtX3BhcmFtOwo+ICsJaW50 IGludHJhX29ubHk7Cj4gKwo+ICsJaWYgKCFwYXJhbS0+cC5zaG93X2ZyYW1lKQo+ICsJCWNvZGVj X3ZwOV9ybV9ub3Nob3dfZnJhbWUoc2Vzcyk7Cj4gKwo+ICsJdnA5LT5jdXJfZnJhbWUgPSBjb2Rl Y192cDlfZ2V0X25ld19mcmFtZShzZXNzKTsKPiArCWlmICghdnA5LT5jdXJfZnJhbWUpCj4gKwkJ cmV0dXJuOwo+ICsKPiArCXByX2RlYnVnKCJmcmFtZSAlZDogdHlwZTogJTA4WDsgc2hvd19leGlz dDogJXU7IHNob3c6ICV1LCBpbnRyYV9vbmx5OiAldVxuIiwKPiArCQkgdnA5LT5jdXJfZnJhbWUt PmluZGV4LAo+ICsJCSBwYXJhbS0+cC5mcmFtZV90eXBlLCBwYXJhbS0+cC5zaG93X2V4aXN0aW5n X2ZyYW1lLAo+ICsJCSBwYXJhbS0+cC5zaG93X2ZyYW1lLCBwYXJhbS0+cC5pbnRyYV9vbmx5KTsK PiArCj4gKwlpZiAocGFyYW0tPnAuZnJhbWVfdHlwZSAhPSBLRVlfRlJBTUUpCj4gKwkJY29kZWNf dnA5X3N5bmNfcmVmKHZwOSk7Cj4gKwljb2RlY192cDlfdXBkYXRlX25leHRfcmVmKHZwOSk7Cj4g Kwljb2RlY192cDlfc2hvd19leGlzdGluZ19mcmFtZSh2cDkpOwo+ICsKPiArCWlmIChjb2RlY19o ZXZjX3VzZV9tbXUoY29yZS0+cGxhdGZvcm0tPnJldmlzaW9uLCBzZXNzLT5waXhmbXRfY2FwLAo+ ICsJCQkgICAgICAgdnA5LT5pc18xMGJpdCkpCj4gKwkJY29kZWNfaGV2Y19maWxsX21tdV9tYXAo c2VzcywgJnZwOS0+Y29tbW9uLAo+ICsJCQkJCSZ2cDktPmN1cl9mcmFtZS0+dmJ1Zi0+dmIyX2J1 Zik7Cj4gKwo+ICsJaW50cmFfb25seSA9IHBhcmFtLT5wLnNob3dfZnJhbWUgPyAwIDogcGFyYW0t PnAuaW50cmFfb25seTsKPiArCj4gKwkvKiBjbGVhciBtcHJlZCAoZm9yIGtleWZyYW1lIG9ubHkp ICovCj4gKwlpZiAocGFyYW0tPnAuZnJhbWVfdHlwZSAhPSBLRVlfRlJBTUUgJiYgIWludHJhX29u bHkpIHsKPiArCQljb2RlY192cDlfc2V0X21jKHNlc3MsIHZwOSk7Cj4gKwkJY29kZWNfdnA5X3Nl dF9tcHJlZF9tdihjb3JlLCB2cDkpOwo+ICsJfSBlbHNlIHsKPiArCQlhbXZkZWNfY2xlYXJfZG9z X2JpdHMoY29yZSwgSEVWQ19NUFJFRF9DVFJMNCwgQklUKDYpKTsKPiArCX0KPiArCj4gKwlhbXZk ZWNfd3JpdGVfZG9zKGNvcmUsIEhFVkNfUEFSU0VSX1BJQ1RVUkVfU0laRSwKPiArCQkJICh2cDkt PmhlaWdodCA8PCAxNikgfCB2cDktPndpZHRoKTsKPiArCWNvZGVjX3ZwOV9zZXRfc2FvKHNlc3Ms ICZ2cDktPmN1cl9mcmFtZS0+dmJ1Zi0+dmIyX2J1Zik7Cj4gKwo+ICsJdnA5X2xvb3BfZmlsdGVy X2ZyYW1lX2luaXQoY29yZSwgJnZwOS0+c2VnXzRsZiwKPiArCQkJCSAgICZ2cDktPmxmaSwgJnZw OS0+bGYsCj4gKwkJCQkgICB2cDktPmRlZmF1bHRfZmlsdF9sdmwpOwo+ICsKPiArCS8qIGFzayB1 Q29kZSB0byBzdGFydCBkZWNvZGluZyAqLwo+ICsJYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBWUDlf REVDX1NUQVRVU19SRUcsIFZQOV8xMEJfREVDT0RFX1NMSUNFKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgY29kZWNfdnA5X3Byb2Nlc3NfbGYoc3RydWN0IGNvZGVjX3ZwOSAqdnA5KQo+ICt7Cj4g Kwl1bmlvbiBycG1fcGFyYW0gKnBhcmFtID0gJnZwOS0+cnBtX3BhcmFtOwo+ICsJaW50IGk7Cj4g Kwo+ICsJdnA5LT5sZi5tb2RlX3JlZl9kZWx0YV9lbmFibGVkID0gcGFyYW0tPnAubW9kZV9yZWZf ZGVsdGFfZW5hYmxlZDsKPiArCXZwOS0+bGYuc2hhcnBuZXNzX2xldmVsID0gcGFyYW0tPnAuc2hh cnBuZXNzX2xldmVsOwo+ICsJdnA5LT5kZWZhdWx0X2ZpbHRfbHZsID0gcGFyYW0tPnAuZmlsdGVy X2xldmVsOwo+ICsJdnA5LT5zZWdfNGxmLmVuYWJsZWQgPSBwYXJhbS0+cC5zZWdfZW5hYmxlZDsK PiArCXZwOS0+c2VnXzRsZi5hYnNfZGVsdGEgPSBwYXJhbS0+cC5zZWdfYWJzX2RlbHRhOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCj4gKwkJdnA5LT5sZi5yZWZfZGVsdGFzW2ldID0g cGFyYW0tPnAucmVmX2RlbHRhc1tpXTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQo+ ICsJCXZwOS0+bGYubW9kZV9kZWx0YXNbaV0gPSBwYXJhbS0+cC5tb2RlX2RlbHRhc1tpXTsKPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1NFR01FTlRTOyBpKyspCj4gKwkJdnA5LT5zZWdfNGxm LmZlYXR1cmVfbWFza1tpXSA9Cj4gKwkJCShwYXJhbS0+cC5zZWdfbGZfaW5mb1tpXSAmIDB4ODAw MCkgPwo+ICsJCQkJKDEgPDwgU0VHX0xWTF9BTFRfTEYpIDogMDsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgTUFYX1NFR01FTlRTOyBpKyspCj4gKwkJdnA5LT5zZWdfNGxmLmZlYXR1cmVfZGF0YVtp XVtTRUdfTFZMX0FMVF9MRl0gPQo+ICsJCQkocGFyYW0tPnAuc2VnX2xmX2luZm9baV0gJiAweDEw MCkgPwo+ICsJCQkJLShwYXJhbS0+cC5zZWdfbGZfaW5mb1tpXSAmIDB4M2YpCj4gKwkJCQk6IChw YXJhbS0+cC5zZWdfbGZfaW5mb1tpXSAmIDB4M2YpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBj b2RlY192cDlfcmVzdW1lKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiArewo+ICsJc3Ry dWN0IGNvZGVjX3ZwOSAqdnA5ID0gc2Vzcy0+cHJpdjsKPiArCj4gKwltdXRleF9sb2NrKCZ2cDkt PmxvY2spOwo+ICsKPiArCWlmIChjb2RlY19oZXZjX3NldHVwX2J1ZmZlcnMoc2VzcywgJnZwOS0+ Y29tbW9uLCB2cDktPmlzXzEwYml0KSkgewo+ICsJCW11dGV4X3VubG9jaygmdnA5LT5sb2NrKTsK PiArCQlhbXZkZWNfYWJvcnQoc2Vzcyk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWNvZGVj X3ZwOV9zZXR1cF93b3Jrc3BhY2Uoc2VzcywgdnA5KTsKPiArCWNvZGVjX2hldmNfc2V0dXBfZGVj b2RlX2hlYWQoc2VzcywgdnA5LT5pc18xMGJpdCk7Cj4gKwljb2RlY192cDlfcHJvY2Vzc19sZih2 cDkpOwo+ICsJY29kZWNfdnA5X3Byb2Nlc3NfZnJhbWUoc2Vzcyk7Cj4gKwo+ICsJbXV0ZXhfdW5s b2NrKCZ2cDktPmxvY2spOwo+ICt9Cj4gKwo+ICsvKioKPiArICogVGhlIFJQTSBzZWN0aW9uIHdp dGhpbiB0aGUgd29ya3NwYWNlIGNvbnRhaW5zCj4gKyAqIG1hbnkgaW5mb3JtYXRpb24gcmVnYXJk aW5nIHRoZSBwYXJzZWQgYml0c3RyZWFtCj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBjb2RlY192cDlf ZmV0Y2hfcnBtKHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiArewo+ICsJc3RydWN0IGNv ZGVjX3ZwOSAqdnA5ID0gc2Vzcy0+cHJpdjsKPiArCXUxNiAqcnBtX3ZhZGRyID0gdnA5LT53b3Jr c3BhY2VfdmFkZHIgKyBSUE1fT0ZGU0VUOwo+ICsJaW50IGksIGo7Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IFJQTV9CVUZfU0laRTsgaSArPSA0KQo+ICsJCWZvciAoaiA9IDA7IGogPCA0OyBqKysp Cj4gKwkJCXZwOS0+cnBtX3BhcmFtLmwuZGF0YVtpICsgal0gPSBycG1fdmFkZHJbaSArIDMgLSBq XTsKPiArfQo+ICsKPiArc3RhdGljIGludCBjb2RlY192cDlfcHJvY2Vzc19ycG0oc3RydWN0IGNv ZGVjX3ZwOSAqdnA5KQo+ICt7Cj4gKwl1bmlvbiBycG1fcGFyYW0gKnBhcmFtID0gJnZwOS0+cnBt X3BhcmFtOwo+ICsJaW50IHNyY19jaGFuZ2VkID0gMDsKPiArCWludCBpc18xMGJpdCA9IDA7Cj4g KwlpbnQgcGljX3dpZHRoXzY0ID0gQUxJR04ocGFyYW0tPnAud2lkdGgsIDY0KTsKPiArCWludCBw aWNfaGVpZ2h0XzMyID0gQUxJR04ocGFyYW0tPnAuaGVpZ2h0LCAzMik7Cj4gKwlpbnQgcGljX3dp ZHRoX2xjdSAgPSAocGljX3dpZHRoXzY0ICUgTENVX1NJWkUpID8KPiArCQkJCXBpY193aWR0aF82 NCAvIExDVV9TSVpFICArIDEKPiArCQkJCTogcGljX3dpZHRoXzY0IC8gTENVX1NJWkU7Cj4gKwlp bnQgcGljX2hlaWdodF9sY3UgPSAocGljX2hlaWdodF8zMiAlIExDVV9TSVpFKSA/Cj4gKwkJCQlw aWNfaGVpZ2h0XzMyIC8gTENVX1NJWkUgKyAxCj4gKwkJCQk6IHBpY19oZWlnaHRfMzIgLyBMQ1Vf U0laRTsKPiArCXZwOS0+bGN1X3RvdGFsID0gcGljX3dpZHRoX2xjdSAqIHBpY19oZWlnaHRfbGN1 Owo+ICsKPiArCWlmIChwYXJhbS0+cC5iaXRfZGVwdGggPT0gMTApCj4gKwkJaXNfMTBiaXQgPSAx Owo+ICsKPiArCWlmICh2cDktPndpZHRoICE9IHBhcmFtLT5wLndpZHRoIHx8IHZwOS0+aGVpZ2h0 ICE9IHBhcmFtLT5wLmhlaWdodCB8fAo+ICsJICAgIHZwOS0+aXNfMTBiaXQgIT0gaXNfMTBiaXQp Cj4gKwkJc3JjX2NoYW5nZWQgPSAxOwo+ICsKPiArCXZwOS0+d2lkdGggPSBwYXJhbS0+cC53aWR0 aDsKPiArCXZwOS0+aGVpZ2h0ID0gcGFyYW0tPnAuaGVpZ2h0Owo+ICsJdnA5LT5pc18xMGJpdCA9 IGlzXzEwYml0Owo+ICsKPiArCXByX2RlYnVnKCJ3aWR0aDogJXU7IGhlaWdodDogJXU7IGlzXzEw Yml0OiAlZDsgc3JjX2NoYW5nZWQ6ICVkXG4iLAo+ICsJCSB2cDktPndpZHRoLCB2cDktPmhlaWdo dCwgaXNfMTBiaXQsIHNyY19jaGFuZ2VkKTsKPiArCj4gKwlyZXR1cm4gc3JjX2NoYW5nZWQ7Cj4g K30KPiArCj4gK3N0YXRpYyBib29sIGNvZGVjX3ZwOV9pc19yZWYoc3RydWN0IGNvZGVjX3ZwOSAq dnA5LCBzdHJ1Y3QgdnA5X2ZyYW1lICpmcmFtZSkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IFJFRl9GUkFNRVM7ICsraSkKPiArCQlpZiAodnA5LT5yZWZfZnJhbWVfbWFw W2ldID09IGZyYW1lLT5pbmRleCkKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJcmV0dXJuIGZh bHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjb2RlY192cDlfc2hvd19mcmFtZShzdHJ1Y3Qg YW12ZGVjX3Nlc3Npb24gKnNlc3MpCj4gK3sKPiArCXN0cnVjdCBjb2RlY192cDkgKnZwOSA9IHNl c3MtPnByaXY7Cj4gKwlzdHJ1Y3QgdnA5X2ZyYW1lICp0bXAsICpuOwo+ICsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSh0bXAsIG4sICZ2cDktPnJlZl9mcmFtZXNfbGlzdCwgbGlzdCkgewo+ ICsJCWlmICghdG1wLT5zaG93IHx8IHRtcCA9PSB2cDktPmN1cl9mcmFtZSkKPiArCQkJY29udGlu dWU7Cj4gKwo+ICsJCWlmICghdG1wLT5kb25lKSB7Cj4gKwkJCXByX2RlYnVnKCJEb25pbmcgJXVc biIsIHRtcC0+aW5kZXgpOwo+ICsJCQlhbXZkZWNfZHN0X2J1Zl9kb25lKHNlc3MsIHRtcC0+dmJ1 ZiwgVjRMMl9GSUVMRF9OT05FKTsKPiArCQkJdG1wLT5kb25lID0gMTsKPiArCQkJdnA5LT5mcmFt ZXNfbnVtLS07Cj4gKwkJfQo+ICsKPiArCQlpZiAoY29kZWNfdnA5X2lzX3JlZih2cDksIHRtcCkg fHwgdG1wID09IHZwOS0+cHJldl9mcmFtZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXByX2Rl YnVnKCJkZWxldGluZyAlZFxuIiwgdG1wLT5pbmRleCk7Cj4gKwkJbGlzdF9kZWwoJnRtcC0+bGlz dCk7Cj4gKwkJa2ZyZWUodG1wKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnA5X3Ry ZWVfbWVyZ2VfcHJvYnModW5zaWduZWQgaW50ICpwcmV2X3Byb2IsCj4gKwkJCQkgdW5zaWduZWQg aW50ICpjdXJfcHJvYiwKPiArCQkJCSBpbnQgY29lZl9ub2RlX3N0YXJ0LCBpbnQgdHJlZV9sZWZ0 LAo+ICsJCQkJIGludCB0cmVlX3JpZ2h0LAo+ICsJCQkJIGludCB0cmVlX2ksIGludCBub2RlKQo+ ICt7Cj4gKwlpbnQgcHJvYl8zMiwgcHJvYl9yZXMsIHByb2Jfc2hpZnQ7Cj4gKwlpbnQgcHJlX3By b2IsIG5ld19wcm9iOwo+ICsJaW50IGRlbiwgbV9jb3VudCwgZ2V0X3Byb2IsIGZhY3RvcjsKPiAr Cj4gKwlwcm9iXzMyID0gcHJldl9wcm9iW2NvZWZfbm9kZV9zdGFydCAvIDQgKiAyXTsKPiArCXBy b2JfcmVzID0gY29lZl9ub2RlX3N0YXJ0ICYgMzsKPiArCXByb2Jfc2hpZnQgPSBwcm9iX3JlcyAq IDg7Cj4gKwlwcmVfcHJvYiA9IChwcm9iXzMyID4+IHByb2Jfc2hpZnQpICYgMHhmZjsKPiArCj4g KwlkZW4gPSB0cmVlX2xlZnQgKyB0cmVlX3JpZ2h0Owo+ICsKPiArCWlmIChkZW4gPT0gMCkgewo+ ICsJCW5ld19wcm9iID0gcHJlX3Byb2I7Cj4gKwl9IGVsc2Ugewo+ICsJCW1fY291bnQgPSBkZW4g PCBNT0RFX01WX0NPVU5UX1NBVCA/IGRlbiA6IE1PREVfTVZfQ09VTlRfU0FUOwo+ICsJCWdldF9w cm9iID0KPiArCQkJY2xpcF9wcm9iKGRpdl9yMzIoKChpbnQ2NF90KXRyZWVfbGVmdCAqIDI1NiAr Cj4gKwkJCQkJICAgKGRlbiA+PiAxKSksCj4gKwkJCQkJICBkZW4pKTsKPiArCj4gKwkJLyogd2Vp Z2h0ZWRfcHJvYiAqLwo+ICsJCWZhY3RvciA9IGNvdW50X3RvX3VwZGF0ZV9mYWN0b3JbbV9jb3Vu dF07Cj4gKwkJbmV3X3Byb2IgPSBST1VORF9QT1dFUl9PRl9UV08ocHJlX3Byb2IgKiAoMjU2IC0g ZmFjdG9yKSArCj4gKwkJCQkJICAgICAgZ2V0X3Byb2IgKiBmYWN0b3IsIDgpOwo+ICsJfQo+ICsK PiArCWN1cl9wcm9iW2NvZWZfbm9kZV9zdGFydCAvIDQgKiAyXSA9Cj4gKwkJKGN1cl9wcm9iW2Nv ZWZfbm9kZV9zdGFydCAvIDQgKiAyXSAmICh+KDB4ZmYgPDwgcHJvYl9zaGlmdCkpKSB8Cj4gKwkJ KG5ld19wcm9iIDw8IHByb2Jfc2hpZnQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhZGFwdF9j b2VmX3Byb2JzX2N4dCh1bnNpZ25lZCBpbnQgKnByZXZfcHJvYiwKPiArCQkJCSB1bnNpZ25lZCBp bnQgKmN1cl9wcm9iLAo+ICsJCQkJIHVuc2lnbmVkIGludCAqY291bnQsCj4gKwkJCQkgaW50IHVw ZGF0ZV9mYWN0b3IsCj4gKwkJCQkgaW50IGN4dF9udW0sCj4gKwkJCQkgaW50IGNvZWZfY3h0X3N0 YXJ0LAo+ICsJCQkJIGludCBjb2VmX2NvdW50X2N4dF9zdGFydCkKPiArewo+ICsJaW50IHByb2Jf MzIsIHByb2JfcmVzLCBwcm9iX3NoaWZ0Owo+ICsJaW50IHByZV9wcm9iLCBuZXdfcHJvYjsKPiAr CWludCBudW0sIGRlbiwgbV9jb3VudCwgZ2V0X3Byb2IsIGZhY3RvcjsKPiArCWludCBub2RlLCBj b2VmX25vZGVfc3RhcnQ7Cj4gKwlpbnQgY291bnRfc2F0ID0gMjQ7Cj4gKwlpbnQgY3h0Owo+ICsK PiArCWZvciAoY3h0ID0gMDsgY3h0IDwgY3h0X251bTsgY3h0KyspIHsKPiArCQljb25zdCBpbnQg bjAgPSBjb3VudFtjb2VmX2NvdW50X2N4dF9zdGFydF07Cj4gKwkJY29uc3QgaW50IG4xID0gY291 bnRbY29lZl9jb3VudF9jeHRfc3RhcnQgKyAxXTsKPiArCQljb25zdCBpbnQgbjIgPSBjb3VudFtj b2VmX2NvdW50X2N4dF9zdGFydCArIDJdOwo+ICsJCWNvbnN0IGludCBuZW9iID0gY291bnRbY29l Zl9jb3VudF9jeHRfc3RhcnQgKyAzXTsKPiArCQljb25zdCBpbnQgbm5lb2IgPSBjb3VudFtjb2Vm X2NvdW50X2N4dF9zdGFydCArIDRdOwo+ICsJCWNvbnN0IHVuc2lnbmVkIGludCBicmFuY2hfY3Rb M11bMl0gPSB7Cj4gKwkJCXsgbmVvYiwgbm5lb2IgfSwKPiArCQkJeyBuMCwgbjEgKyBuMiB9LAo+ ICsJCQl7IG4xLCBuMiB9Cj4gKwkJfTsKPiArCj4gKwkJY29lZl9ub2RlX3N0YXJ0ID0gY29lZl9j eHRfc3RhcnQ7Cj4gKwkJZm9yIChub2RlID0gMCA7IG5vZGUgPCAzIDsgbm9kZSsrKSB7Cj4gKwkJ CXByb2JfMzIgPSBwcmV2X3Byb2JbY29lZl9ub2RlX3N0YXJ0IC8gNCAqIDJdOwo+ICsJCQlwcm9i X3JlcyA9IGNvZWZfbm9kZV9zdGFydCAmIDM7Cj4gKwkJCXByb2Jfc2hpZnQgPSBwcm9iX3JlcyAq IDg7Cj4gKwkJCXByZV9wcm9iID0gKHByb2JfMzIgPj4gcHJvYl9zaGlmdCkgJiAweGZmOwo+ICsK PiArCQkJLyogZ2V0IGJpbmFyeSBwcm9iICovCj4gKwkJCW51bSA9IGJyYW5jaF9jdFtub2RlXVsw XTsKPiArCQkJZGVuID0gYnJhbmNoX2N0W25vZGVdWzBdICsgYnJhbmNoX2N0W25vZGVdWzFdOwo+ ICsJCQltX2NvdW50ID0gZGVuIDwgY291bnRfc2F0ID8gZGVuIDogY291bnRfc2F0Owo+ICsKPiAr CQkJZ2V0X3Byb2IgPSAoZGVuID09IDApID8KPiArCQkJCQkxMjh1IDoKPiArCQkJCQljbGlwX3By b2IoZGl2X3IzMigoKGludDY0X3QpbnVtICogMjU2ICsKPiArCQkJCQkJCSAgKGRlbiA+PiAxKSks IGRlbikpOwo+ICsKPiArCQkJZmFjdG9yID0gdXBkYXRlX2ZhY3RvciAqIG1fY291bnQgLyBjb3Vu dF9zYXQ7Cj4gKwkJCW5ld19wcm9iID0KPiArCQkJCVJPVU5EX1BPV0VSX09GX1RXTyhwcmVfcHJv YiAqICgyNTYgLSBmYWN0b3IpICsKPiArCQkJCQkJICAgZ2V0X3Byb2IgKiBmYWN0b3IsIDgpOwo+ ICsKPiArCQkJY3VyX3Byb2JbY29lZl9ub2RlX3N0YXJ0IC8gNCAqIDJdID0KPiArCQkJCShjdXJf cHJvYltjb2VmX25vZGVfc3RhcnQgLyA0ICogMl0gJgo+ICsJCQkJICh+KDB4ZmYgPDwgcHJvYl9z aGlmdCkpKSB8Cj4gKwkJCQkobmV3X3Byb2IgPDwgcHJvYl9zaGlmdCk7Cj4gKwo+ICsJCQljb2Vm X25vZGVfc3RhcnQgKz0gMTsKPiArCQl9Cj4gKwo+ICsJCWNvZWZfY3h0X3N0YXJ0ID0gY29lZl9j eHRfc3RhcnQgKyAzOwo+ICsJCWNvZWZfY291bnRfY3h0X3N0YXJ0ID0gY29lZl9jb3VudF9jeHRf c3RhcnQgKyA1Owo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBhZGFwdF9jb2VmX3Byb2Jz KGludCBwcmV2X2tmLCBpbnQgY3VyX2tmLCBpbnQgcHJlX2ZjLAo+ICsJCQkgICAgIHVuc2lnbmVk IGludCAqcHJldl9wcm9iLCB1bnNpZ25lZCBpbnQgKmN1cl9wcm9iLAo+ICsJCQkgICAgIHVuc2ln bmVkIGludCAqY291bnQpCj4gK3sKPiArCWludCB0eF9zaXplLCBjb2VmX3R4X3NpemVfc3RhcnQs IGNvZWZfY291bnRfdHhfc2l6ZV9zdGFydDsKPiArCWludCBwbGFuZSwgY29lZl9wbGFuZV9zdGFy dCwgY29lZl9jb3VudF9wbGFuZV9zdGFydDsKPiArCWludCB0eXBlLCBjb2VmX3R5cGVfc3RhcnQs IGNvZWZfY291bnRfdHlwZV9zdGFydDsKPiArCWludCBiYW5kLCBjb2VmX2JhbmRfc3RhcnQsIGNv ZWZfY291bnRfYmFuZF9zdGFydDsKPiArCWludCBjeHRfbnVtOwo+ICsJaW50IGNvZWZfY3h0X3N0 YXJ0LCBjb2VmX2NvdW50X2N4dF9zdGFydDsKPiArCWludCBub2RlLCBjb2VmX25vZGVfc3RhcnQs IGNvZWZfY291bnRfbm9kZV9zdGFydDsKPiArCj4gKwlpbnQgdHJlZV9pLCB0cmVlX2xlZnQsIHRy ZWVfcmlnaHQ7Cj4gKwlpbnQgbXZkX2k7Cj4gKwo+ICsJaW50IHVwZGF0ZV9mYWN0b3IgPSBjdXJf a2YgPyAxMTIgOiAocHJldl9rZiA/IDEyOCA6IDExMik7Cj4gKwo+ICsJaW50IHByb2JfMzI7Cj4g KwlpbnQgcHJvYl9yZXM7Cj4gKwlpbnQgcHJvYl9zaGlmdDsKPiArCWludCBwcmVfcHJvYjsKPiAr Cj4gKwlpbnQgZGVuOwo+ICsJaW50IGdldF9wcm9iOwo+ICsJaW50IG1fY291bnQ7Cj4gKwlpbnQg ZmFjdG9yOwo+ICsKPiArCWludCBuZXdfcHJvYjsKPiArCj4gKwlmb3IgKHR4X3NpemUgPSAwIDsg dHhfc2l6ZSA8IDQgOyB0eF9zaXplKyspIHsKPiArCQljb2VmX3R4X3NpemVfc3RhcnQgPSBWUDlf Q09FRl9TVEFSVCArCj4gKwkJCQl0eF9zaXplICogNCAqIFZQOV9DT0VGX1NJWkVfT05FX1NFVDsK PiArCQljb2VmX2NvdW50X3R4X3NpemVfc3RhcnQgPSBWUDlfQ09FRl9DT1VOVF9TVEFSVCArCj4g KwkJCQl0eF9zaXplICogNCAqIFZQOV9DT0VGX0NPVU5UX1NJWkVfT05FX1NFVDsKPiArCQljb2Vm X3BsYW5lX3N0YXJ0ID0gY29lZl90eF9zaXplX3N0YXJ0Owo+ICsJCWNvZWZfY291bnRfcGxhbmVf c3RhcnQgPSBjb2VmX2NvdW50X3R4X3NpemVfc3RhcnQ7Cj4gKwo+ICsJCWZvciAocGxhbmUgPSAw IDsgcGxhbmUgPCAyIDsgcGxhbmUrKykgewo+ICsJCQljb2VmX3R5cGVfc3RhcnQgPSBjb2VmX3Bs YW5lX3N0YXJ0Owo+ICsJCQljb2VmX2NvdW50X3R5cGVfc3RhcnQgPSBjb2VmX2NvdW50X3BsYW5l X3N0YXJ0Owo+ICsKPiArCQkJZm9yICh0eXBlID0gMCA7IHR5cGUgPCAyIDsgdHlwZSsrKSB7Cj4g KwkJCQljb2VmX2JhbmRfc3RhcnQgPSBjb2VmX3R5cGVfc3RhcnQ7Cj4gKwkJCQljb2VmX2NvdW50 X2JhbmRfc3RhcnQgPSBjb2VmX2NvdW50X3R5cGVfc3RhcnQ7Cj4gKwo+ICsJCQkJZm9yIChiYW5k ID0gMCA7IGJhbmQgPCA2IDsgYmFuZCsrKSB7Cj4gKwkJCQkJaWYgKGJhbmQgPT0gMCkKPiArCQkJ CQkJY3h0X251bSA9IDM7Cj4gKwkJCQkJZWxzZQo+ICsJCQkJCQljeHRfbnVtID0gNjsKPiArCQkJ CQljb2VmX2N4dF9zdGFydCA9IGNvZWZfYmFuZF9zdGFydDsKPiArCQkJCQljb2VmX2NvdW50X2N4 dF9zdGFydCA9Cj4gKwkJCQkJCWNvZWZfY291bnRfYmFuZF9zdGFydDsKPiArCj4gKwkJCQkJYWRh cHRfY29lZl9wcm9ic19jeHQocHJldl9wcm9iLAo+ICsJCQkJCQkJICAgICBjdXJfcHJvYiwKPiAr CQkJCQkJCSAgICAgY291bnQsCj4gKwkJCQkJCQkgICAgIHVwZGF0ZV9mYWN0b3IsCj4gKwkJCQkJ CQkgICAgIGN4dF9udW0sCj4gKwkJCQkJCQkgICAgIGNvZWZfY3h0X3N0YXJ0LAo+ICsJCQkJCQkJ Y29lZl9jb3VudF9jeHRfc3RhcnQpOwo+ICsKPiArCQkJCQlpZiAoYmFuZCA9PSAwKSB7Cj4gKwkJ CQkJCWNvZWZfYmFuZF9zdGFydCArPSAxMDsKPiArCQkJCQkJY29lZl9jb3VudF9iYW5kX3N0YXJ0 ICs9IDE1Owo+ICsJCQkJCX0gZWxzZSB7Cj4gKwkJCQkJCWNvZWZfYmFuZF9zdGFydCArPSAxODsK PiArCQkJCQkJY29lZl9jb3VudF9iYW5kX3N0YXJ0ICs9IDMwOwo+ICsJCQkJCX0KPiArCQkJCX0K PiArCQkJCWNvZWZfdHlwZV9zdGFydCArPSBWUDlfQ09FRl9TSVpFX09ORV9TRVQ7Cj4gKwkJCQlj b2VmX2NvdW50X3R5cGVfc3RhcnQgKz0KPiArCQkJCQlWUDlfQ09FRl9DT1VOVF9TSVpFX09ORV9T RVQ7Cj4gKwkJCX0KPiArCj4gKwkJCWNvZWZfcGxhbmVfc3RhcnQgKz0gMiAqIFZQOV9DT0VGX1NJ WkVfT05FX1NFVDsKPiArCQkJY29lZl9jb3VudF9wbGFuZV9zdGFydCArPQo+ICsJCQkJMiAqIFZQ OV9DT0VGX0NPVU5UX1NJWkVfT05FX1NFVDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKGN1cl9r ZiA9PSAwKSB7Cj4gKwkJLyogbW9kZV9tdl9tZXJnZV9wcm9icyAtIG1lcmdlX2ludHJhX2ludGVy X3Byb2IgKi8KPiArCQlmb3IgKGNvZWZfY291bnRfbm9kZV9zdGFydCA9IFZQOV9JTlRSQV9JTlRF Ul9DT1VOVF9TVEFSVDsKPiArCQkgICAgIGNvZWZfY291bnRfbm9kZV9zdGFydCA8IChWUDlfTVZf Q0xBU1MwX0hQXzFfQ09VTlRfU1RBUlQgKwo+ICsJCQkJCSAgICAgIFZQOV9NVl9DTEFTUzBfSFBf MV9DT1VOVF9TSVpFKTsKPiArCQkgICAgIGNvZWZfY291bnRfbm9kZV9zdGFydCArPSAyKSB7Cj4g KwkJCWlmIChjb2VmX2NvdW50X25vZGVfc3RhcnQgPT0KPiArCQkJCQlWUDlfSU5UUkFfSU5URVJf Q09VTlRfU1RBUlQpCj4gKwkJCQljb2VmX25vZGVfc3RhcnQgPSBWUDlfSU5UUkFfSU5URVJfU1RB UlQ7Cj4gKwkJCWVsc2UgaWYgKGNvZWZfY291bnRfbm9kZV9zdGFydCA9PQo+ICsJCQkJCVZQOV9D T01QX0lOVEVSX0NPVU5UX1NUQVJUKQo+ICsJCQkJY29lZl9ub2RlX3N0YXJ0ID0gVlA5X0NPTVBf SU5URVJfU1RBUlQ7Cj4gKwkJCWVsc2UgaWYgKGNvZWZfY291bnRfbm9kZV9zdGFydCA9PQo+ICsJ CQkJCVZQOV9UWF9NT0RFX0NPVU5UX1NUQVJUKQo+ICsJCQkJY29lZl9ub2RlX3N0YXJ0ID0gVlA5 X1RYX01PREVfU1RBUlQ7Cj4gKwkJCWVsc2UgaWYgKGNvZWZfY291bnRfbm9kZV9zdGFydCA9PQo+ ICsJCQkJCVZQOV9TS0lQX0NPVU5UX1NUQVJUKQo+ICsJCQkJY29lZl9ub2RlX3N0YXJ0ID0gVlA5 X1NLSVBfU1RBUlQ7Cj4gKwkJCWVsc2UgaWYgKGNvZWZfY291bnRfbm9kZV9zdGFydCA9PQo+ICsJ CQkJCVZQOV9NVl9TSUdOXzBfQ09VTlRfU1RBUlQpCj4gKwkJCQljb2VmX25vZGVfc3RhcnQgPSBW UDlfTVZfU0lHTl8wX1NUQVJUOwo+ICsJCQllbHNlIGlmIChjb2VmX2NvdW50X25vZGVfc3RhcnQg PT0KPiArCQkJCQlWUDlfTVZfU0lHTl8xX0NPVU5UX1NUQVJUKQo+ICsJCQkJY29lZl9ub2RlX3N0 YXJ0ID0gVlA5X01WX1NJR05fMV9TVEFSVDsKPiArCQkJZWxzZSBpZiAoY29lZl9jb3VudF9ub2Rl X3N0YXJ0ID09Cj4gKwkJCQkJVlA5X01WX0JJVFNfMF9DT1VOVF9TVEFSVCkKPiArCQkJCWNvZWZf bm9kZV9zdGFydCA9IFZQOV9NVl9CSVRTXzBfU1RBUlQ7Cj4gKwkJCWVsc2UgaWYgKGNvZWZfY291 bnRfbm9kZV9zdGFydCA9PQo+ICsJCQkJCVZQOV9NVl9CSVRTXzFfQ09VTlRfU1RBUlQpCj4gKwkJ CQljb2VmX25vZGVfc3RhcnQgPSBWUDlfTVZfQklUU18xX1NUQVJUOwo+ICsJCQllbHNlIGlmIChj b2VmX2NvdW50X25vZGVfc3RhcnQgPT0KPiArCQkJCQlWUDlfTVZfQ0xBU1MwX0hQXzBfQ09VTlRf U1RBUlQpCj4gKwkJCQljb2VmX25vZGVfc3RhcnQgPSBWUDlfTVZfQ0xBU1MwX0hQXzBfU1RBUlQ7 Cj4gKwo+ICsJCQlkZW4gPSBjb3VudFtjb2VmX2NvdW50X25vZGVfc3RhcnRdICsKPiArCQkJICAg ICAgY291bnRbY29lZl9jb3VudF9ub2RlX3N0YXJ0ICsgMV07Cj4gKwo+ICsJCQlwcm9iXzMyID0g cHJldl9wcm9iW2NvZWZfbm9kZV9zdGFydCAvIDQgKiAyXTsKPiArCQkJcHJvYl9yZXMgPSBjb2Vm X25vZGVfc3RhcnQgJiAzOwo+ICsJCQlwcm9iX3NoaWZ0ID0gcHJvYl9yZXMgKiA4Owo+ICsJCQlw cmVfcHJvYiA9IChwcm9iXzMyID4+IHByb2Jfc2hpZnQpICYgMHhmZjsKPiArCj4gKwkJCWlmIChk ZW4gPT0gMCkgewo+ICsJCQkJbmV3X3Byb2IgPSBwcmVfcHJvYjsKPiArCQkJfSBlbHNlIHsKPiAr CQkJCW1fY291bnQgPSBkZW4gPCBNT0RFX01WX0NPVU5UX1NBVCA/Cj4gKwkJCQkJCWRlbiA6IE1P REVfTVZfQ09VTlRfU0FUOwo+ICsJCQkJZ2V0X3Byb2IgPQo+ICsJCQkJY2xpcF9wcm9iKGRpdl9y MzIoKChpbnQ2NF90KQo+ICsJCQkJCWNvdW50W2NvZWZfY291bnRfbm9kZV9zdGFydF0gKiAyNTYg Kwo+ICsJCQkJCShkZW4gPj4gMSkpLAo+ICsJCQkJCWRlbikpOwo+ICsKPiArCQkJCS8qIHdlaWdo dGVkIHByb2IgKi8KPiArCQkJCWZhY3RvciA9IGNvdW50X3RvX3VwZGF0ZV9mYWN0b3JbbV9jb3Vu dF07Cj4gKwkJCQluZXdfcHJvYiA9Cj4gKwkJCQkJUk9VTkRfUE9XRVJfT0ZfVFdPKHByZV9wcm9i ICoKPiArCQkJCQkJCSAgICgyNTYgLSBmYWN0b3IpICsKPiArCQkJCQkJCSAgIGdldF9wcm9iICog ZmFjdG9yLAo+ICsJCQkJCQkJICAgOCk7Cj4gKwkJCX0KPiArCj4gKwkJCWN1cl9wcm9iW2NvZWZf bm9kZV9zdGFydCAvIDQgKiAyXSA9Cj4gKwkJCQkoY3VyX3Byb2JbY29lZl9ub2RlX3N0YXJ0IC8g NCAqIDJdICYKPiArCQkJCSAofigweGZmIDw8IHByb2Jfc2hpZnQpKSkgfAo+ICsJCQkJKG5ld19w cm9iIDw8IHByb2Jfc2hpZnQpOwo+ICsKPiArCQkJY29lZl9ub2RlX3N0YXJ0ID0gY29lZl9ub2Rl X3N0YXJ0ICsgMTsKPiArCQl9Cj4gKwo+ICsJCWNvZWZfbm9kZV9zdGFydCA9IFZQOV9JTlRFUl9N T0RFX1NUQVJUOwo+ICsJCWNvZWZfY291bnRfbm9kZV9zdGFydCA9IFZQOV9JTlRFUl9NT0RFX0NP VU5UX1NUQVJUOwo+ICsJCWZvciAodHJlZV9pID0gMCA7IHRyZWVfaSA8IDcgOyB0cmVlX2krKykg ewo+ICsJCQlmb3IgKG5vZGUgPSAwIDsgbm9kZSA8IDMgOyBub2RlKyspIHsKPiArCQkJCXVuc2ln bmVkIGludCBzdGFydCA9IGNvZWZfY291bnRfbm9kZV9zdGFydDsKPiArCj4gKwkJCQlzd2l0Y2gg KG5vZGUpIHsKPiArCQkJCWNhc2UgMjoKPiArCQkJCQl0cmVlX2xlZnQgPSBjb3VudFtzdGFydCAr IDFdOwo+ICsJCQkJCXRyZWVfcmlnaHQgPSBjb3VudFtzdGFydCArIDNdOwo+ICsJCQkJCWJyZWFr Owo+ICsJCQkJY2FzZSAxOgo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgMF07Cj4g KwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgMV0gKwo+ICsJCQkJCQkgICAgIGNvdW50 W3N0YXJ0ICsgM107Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQlkZWZhdWx0Ogo+ICsJCQkJCXRyZWVf bGVmdCA9IGNvdW50W3N0YXJ0ICsgMl07Cj4gKwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0 ICsgMF0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgMV0gKwo+ICsJCQkJCQkgICAgIGNv dW50W3N0YXJ0ICsgM107Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJdnA5X3Ry ZWVfbWVyZ2VfcHJvYnMocHJldl9wcm9iLCBjdXJfcHJvYiwKPiArCQkJCQkJICAgICBjb2VmX25v ZGVfc3RhcnQsCj4gKwkJCQkJCSAgICAgdHJlZV9sZWZ0LCB0cmVlX3JpZ2h0LAo+ICsJCQkJCQkg ICAgIHRyZWVfaSwgbm9kZSk7Cj4gKwo+ICsJCQkJY29lZl9ub2RlX3N0YXJ0ID0gY29lZl9ub2Rl X3N0YXJ0ICsgMTsKPiArCQkJfQo+ICsKPiArCQkJY29lZl9jb3VudF9ub2RlX3N0YXJ0ID0gY29l Zl9jb3VudF9ub2RlX3N0YXJ0ICsgNDsKPiArCQl9Cj4gKwo+ICsJCWNvZWZfbm9kZV9zdGFydCA9 IFZQOV9JRl9ZX01PREVfU1RBUlQ7Cj4gKwkJY29lZl9jb3VudF9ub2RlX3N0YXJ0ID0gVlA5X0lG X1lfTU9ERV9DT1VOVF9TVEFSVDsKPiArCQlmb3IgKHRyZWVfaSA9IDAgOyB0cmVlX2kgPCAxNCA7 IHRyZWVfaSsrKSB7Cj4gKwkJCWZvciAobm9kZSA9IDAgOyBub2RlIDwgOSA7IG5vZGUrKykgewo+ ICsJCQkJdW5zaWduZWQgaW50IHN0YXJ0ID0gY29lZl9jb3VudF9ub2RlX3N0YXJ0Owo+ICsKPiAr CQkJCXN3aXRjaCAobm9kZSkgewo+ICsJCQkJY2FzZSA4Ogo+ICsJCQkJCXRyZWVfbGVmdCA9Cj4g KwkJCQkJCWNvdW50W3N0YXJ0ICsgRDE1M19QUkVEXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0KPiAr CQkJCQkJY291bnRbc3RhcnQgKyBEMjA3X1BSRURdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJY2Fz ZSA3Ogo+ICsJCQkJCXRyZWVfbGVmdCA9Cj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDYzX1BSRURd Owo+ICsJCQkJCXRyZWVfcmlnaHQgPQo+ICsJCQkJCQljb3VudFtzdGFydCArIEQyMDdfUFJFRF0g Kwo+ICsJCQkJCQljb3VudFtzdGFydCArIEQxNTNfUFJFRF07Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJ CQljYXNlIDY6Cj4gKwkJCQkJdHJlZV9sZWZ0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBENDVf UFJFRF07Cj4gKwkJCQkJdHJlZV9yaWdodCA9Cj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDIwN19Q UkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDE1M19QUkVEXSArCj4gKwkJCQkJCWNvdW50 W3N0YXJ0ICsgRDYzX1BSRURdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJY2FzZSA1Ogo+ICsJCQkJ CXRyZWVfbGVmdCA9Cj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDEzNV9QUkVEXTsKPiArCQkJCQl0 cmVlX3JpZ2h0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTE3X1BSRURdOwo+ICsJCQkJCWJy ZWFrOwo+ICsJCQkJY2FzZSA0Ogo+ICsJCQkJCXRyZWVfbGVmdCA9Cj4gKwkJCQkJCWNvdW50W3N0 YXJ0ICsgSF9QUkVEXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0KPiArCQkJCQkJY291bnRbc3RhcnQg KyBEMTE3X1BSRURdICsKPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTM1X1BSRURdOwo+ICsJCQkJ CWJyZWFrOwo+ICsJCQkJY2FzZSAzOgo+ICsJCQkJCXRyZWVfbGVmdCA9Cj4gKwkJCQkJCWNvdW50 W3N0YXJ0ICsgSF9QUkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDExN19QUkVEXSArCj4g KwkJCQkJCWNvdW50W3N0YXJ0ICsgRDEzNV9QUkVEXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0KPiAr CQkJCQkJY291bnRbc3RhcnQgKyBENDVfUFJFRF0gKwo+ICsJCQkJCQljb3VudFtzdGFydCArIEQy MDdfUFJFRF0gKwo+ICsJCQkJCQljb3VudFtzdGFydCArIEQxNTNfUFJFRF0gKwo+ICsJCQkJCQlj b3VudFtzdGFydCArIEQ2M19QUkVEXTsKPiArCQkJCQlicmVhazsKPiArCQkJCWNhc2UgMjoKPiAr CQkJCQl0cmVlX2xlZnQgPQo+ICsJCQkJCQljb3VudFtzdGFydCArIFZfUFJFRF07Cj4gKwkJCQkJ dHJlZV9yaWdodCA9Cj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgSF9QUkVEXSArCj4gKwkJCQkJCWNv dW50W3N0YXJ0ICsgRDExN19QUkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDEzNV9QUkVE XSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDQ1X1BSRURdICsKPiArCQkJCQkJY291bnRbc3Rh cnQgKyBEMjA3X1BSRURdICsKPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTUzX1BSRURdICsKPiAr CQkJCQkJY291bnRbc3RhcnQgKyBENjNfUFJFRF07Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQljYXNl IDE6Cj4gKwkJCQkJdHJlZV9sZWZ0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBUTV9QUkVEXTsK PiArCQkJCQl0cmVlX3JpZ2h0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBWX1BSRURdICsKPiAr CQkJCQkJY291bnRbc3RhcnQgKyBIX1BSRURdICsKPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTE3 X1BSRURdICsKPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTM1X1BSRURdICsKPiArCQkJCQkJY291 bnRbc3RhcnQgKyBENDVfUFJFRF0gKwo+ICsJCQkJCQljb3VudFtzdGFydCArIEQyMDdfUFJFRF0g Kwo+ICsJCQkJCQljb3VudFtzdGFydCArIEQxNTNfUFJFRF0gKwo+ICsJCQkJCQljb3VudFtzdGFy dCArIEQ2M19QUkVEXTsKPiArCQkJCQlicmVhazsKPiArCQkJCWRlZmF1bHQ6Cj4gKwkJCQkJdHJl ZV9sZWZ0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBEQ19QUkVEXTsKPiArCQkJCQl0cmVlX3Jp Z2h0ID0KPiArCQkJCQkJY291bnRbc3RhcnQgKyBUTV9QUkVEXSArCj4gKwkJCQkJCWNvdW50W3N0 YXJ0ICsgVl9QUkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgSF9QUkVEXSArCj4gKwkJCQkJ CWNvdW50W3N0YXJ0ICsgRDExN19QUkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDEzNV9Q UkVEXSArCj4gKwkJCQkJCWNvdW50W3N0YXJ0ICsgRDQ1X1BSRURdICsKPiArCQkJCQkJY291bnRb c3RhcnQgKyBEMjA3X1BSRURdICsKPiArCQkJCQkJY291bnRbc3RhcnQgKyBEMTUzX1BSRURdICsK PiArCQkJCQkJY291bnRbc3RhcnQgKyBENjNfUFJFRF07Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQl9 Cj4gKwo+ICsJCQkJdnA5X3RyZWVfbWVyZ2VfcHJvYnMocHJldl9wcm9iLCBjdXJfcHJvYiwKPiAr CQkJCQkJICAgICBjb2VmX25vZGVfc3RhcnQsCj4gKwkJCQkJCSAgICAgdHJlZV9sZWZ0LCB0cmVl X3JpZ2h0LAo+ICsJCQkJCQkgICAgIHRyZWVfaSwgbm9kZSk7Cj4gKwo+ICsJCQkJY29lZl9ub2Rl X3N0YXJ0ID0gY29lZl9ub2RlX3N0YXJ0ICsgMTsKPiArCQkJfQo+ICsJCQljb2VmX2NvdW50X25v ZGVfc3RhcnQgPSBjb2VmX2NvdW50X25vZGVfc3RhcnQgKyAxMDsKPiArCQl9Cj4gKwo+ICsJCWNv ZWZfbm9kZV9zdGFydCA9IFZQOV9QQVJUSVRJT05fUF9TVEFSVDsKPiArCQljb2VmX2NvdW50X25v ZGVfc3RhcnQgPSBWUDlfUEFSVElUSU9OX1BfQ09VTlRfU1RBUlQ7Cj4gKwkJZm9yICh0cmVlX2kg PSAwIDsgdHJlZV9pIDwgMTYgOyB0cmVlX2krKykgewo+ICsJCQlmb3IgKG5vZGUgPSAwIDsgbm9k ZSA8IDMgOyBub2RlKyspIHsKPiArCQkJCXVuc2lnbmVkIGludCBzdGFydCA9IGNvZWZfY291bnRf bm9kZV9zdGFydDsKPiArCj4gKwkJCQlzd2l0Y2ggKG5vZGUpIHsKPiArCQkJCWNhc2UgMjoKPiAr CQkJCQl0cmVlX2xlZnQgPSBjb3VudFtzdGFydCArIDJdOwo+ICsJCQkJCXRyZWVfcmlnaHQgPSBj b3VudFtzdGFydCArIDNdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJY2FzZSAxOgo+ICsJCQkJCXRy ZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgMV07Cj4gKwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0 YXJ0ICsgMl0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgM107Cj4gKwkJCQkJYnJlYWs7 Cj4gKwkJCQlkZWZhdWx0Ogo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgMF07Cj4g KwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgMV0gKwo+ICsJCQkJCQkgICAgIGNvdW50 W3N0YXJ0ICsgMl0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgM107Cj4gKwkJCQkJYnJl YWs7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJdnA5X3RyZWVfbWVyZ2VfcHJvYnMocHJldl9wcm9iLCBj dXJfcHJvYiwKPiArCQkJCQkJICAgICBjb2VmX25vZGVfc3RhcnQsCj4gKwkJCQkJCSAgICAgdHJl ZV9sZWZ0LCB0cmVlX3JpZ2h0LAo+ICsJCQkJCQkgICAgIHRyZWVfaSwgbm9kZSk7Cj4gKwo+ICsJ CQkJY29lZl9ub2RlX3N0YXJ0ID0gY29lZl9ub2RlX3N0YXJ0ICsgMTsKPiArCQkJfQo+ICsKPiAr CQkJY29lZl9jb3VudF9ub2RlX3N0YXJ0ID0gY29lZl9jb3VudF9ub2RlX3N0YXJ0ICsgNDsKPiAr CQl9Cj4gKwo+ICsJCWNvZWZfbm9kZV9zdGFydCA9IFZQOV9JTlRFUlBfU1RBUlQ7Cj4gKwkJY29l Zl9jb3VudF9ub2RlX3N0YXJ0ID0gVlA5X0lOVEVSUF9DT1VOVF9TVEFSVDsKPiArCQlmb3IgKHRy ZWVfaSA9IDAgOyB0cmVlX2kgPCA0IDsgdHJlZV9pKyspIHsKPiArCQkJZm9yIChub2RlID0gMCA7 IG5vZGUgPCAyIDsgbm9kZSsrKSB7Cj4gKwkJCQl1bnNpZ25lZCBpbnQgc3RhcnQgPSBjb2VmX2Nv dW50X25vZGVfc3RhcnQ7Cj4gKwo+ICsJCQkJc3dpdGNoIChub2RlKSB7Cj4gKwkJCQljYXNlIDE6 Cj4gKwkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAxXTsKPiArCQkJCQl0cmVlX3JpZ2h0 ID0gY291bnRbc3RhcnQgKyAyXTsKPiArCQkJCQlicmVhazsKPiArCQkJCWRlZmF1bHQ6Cj4gKwkJ CQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAwXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0gY291 bnRbc3RhcnQgKyAxXSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyAyXTsKPiArCQkJCQli cmVhazsKPiArCQkJCX0KPiArCj4gKwkJCQl2cDlfdHJlZV9tZXJnZV9wcm9icyhwcmV2X3Byb2Is IGN1cl9wcm9iLAo+ICsJCQkJCQkgICAgIGNvZWZfbm9kZV9zdGFydCwKPiArCQkJCQkJICAgICB0 cmVlX2xlZnQsIHRyZWVfcmlnaHQsCj4gKwkJCQkJCSAgICAgdHJlZV9pLCBub2RlKTsKPiArCj4g KwkJCQljb2VmX25vZGVfc3RhcnQgPSBjb2VmX25vZGVfc3RhcnQgKyAxOwo+ICsJCQl9Cj4gKwkJ CWNvZWZfY291bnRfbm9kZV9zdGFydCA9IGNvZWZfY291bnRfbm9kZV9zdGFydCArIDM7Cj4gKwkJ fQo+ICsKPiArCQljb2VmX25vZGVfc3RhcnQgPSBWUDlfTVZfSk9JTlRTX1NUQVJUOwo+ICsJCWNv ZWZfY291bnRfbm9kZV9zdGFydCA9IFZQOV9NVl9KT0lOVFNfQ09VTlRfU1RBUlQ7Cj4gKwkJZm9y ICh0cmVlX2kgPSAwIDsgdHJlZV9pIDwgMSA7IHRyZWVfaSsrKSB7Cj4gKwkJCWZvciAobm9kZSA9 IDAgOyBub2RlIDwgMyA7IG5vZGUrKykgewo+ICsJCQkJdW5zaWduZWQgaW50IHN0YXJ0ID0gY29l Zl9jb3VudF9ub2RlX3N0YXJ0Owo+ICsKPiArCQkJCXN3aXRjaCAobm9kZSkgewo+ICsJCQkJY2Fz ZSAyOgo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgMl07Cj4gKwkJCQkJdHJlZV9y aWdodCA9IGNvdW50W3N0YXJ0ICsgM107Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQljYXNlIDE6Cj4g KwkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAxXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0g Y291bnRbc3RhcnQgKyAyXSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyAzXTsKPiArCQkJ CQlicmVhazsKPiArCQkJCWRlZmF1bHQ6Cj4gKwkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQg KyAwXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0gY291bnRbc3RhcnQgKyAxXSArCj4gKwkJCQkJCSAg ICAgY291bnRbc3RhcnQgKyAyXSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyAzXTsKPiAr CQkJCQlicmVhazsKPiArCQkJCX0KPiArCj4gKwkJCQl2cDlfdHJlZV9tZXJnZV9wcm9icyhwcmV2 X3Byb2IsIGN1cl9wcm9iLAo+ICsJCQkJCQkgICAgIGNvZWZfbm9kZV9zdGFydCwKPiArCQkJCQkJ ICAgICB0cmVlX2xlZnQsIHRyZWVfcmlnaHQsCj4gKwkJCQkJCSAgICAgdHJlZV9pLCBub2RlKTsK PiArCj4gKwkJCQljb2VmX25vZGVfc3RhcnQgPSBjb2VmX25vZGVfc3RhcnQgKyAxOwo+ICsJCQl9 Cj4gKwkJCWNvZWZfY291bnRfbm9kZV9zdGFydCA9IGNvZWZfY291bnRfbm9kZV9zdGFydCArIDQ7 Cj4gKwkJfQo+ICsKPiArCQlmb3IgKG12ZF9pID0gMCA7IG12ZF9pIDwgMiA7IG12ZF9pKyspIHsK PiArCQkJY29lZl9ub2RlX3N0YXJ0ID0gbXZkX2kgPyBWUDlfTVZfQ0xBU1NFU18xX1NUQVJUIDoK PiArCQkJCQkJICBWUDlfTVZfQ0xBU1NFU18wX1NUQVJUOwo+ICsJCQljb2VmX2NvdW50X25vZGVf c3RhcnQgPSBtdmRfaSA/Cj4gKwkJCQkJVlA5X01WX0NMQVNTRVNfMV9DT1VOVF9TVEFSVCA6Cj4g KwkJCQkJVlA5X01WX0NMQVNTRVNfMF9DT1VOVF9TVEFSVDsKPiArCQkJdHJlZV9pID0gMDsKPiAr CQkJZm9yIChub2RlID0gMDsgbm9kZSA8IDEwOyBub2RlKyspIHsKPiArCQkJCXVuc2lnbmVkIGlu dCBzdGFydCA9IGNvZWZfY291bnRfbm9kZV9zdGFydDsKPiArCj4gKwkJCQlzd2l0Y2ggKG5vZGUp IHsKPiArCQkJCWNhc2UgOToKPiArCQkJCQl0cmVlX2xlZnQgPSBjb3VudFtzdGFydCArIDldOwo+ ICsJCQkJCXRyZWVfcmlnaHQgPSBjb3VudFtzdGFydCArIDEwXTsKPiArCQkJCQlicmVhazsKPiAr CQkJCWNhc2UgODoKPiArCQkJCQl0cmVlX2xlZnQgPSBjb3VudFtzdGFydCArIDddOwo+ICsJCQkJ CXRyZWVfcmlnaHQgPSBjb3VudFtzdGFydCArIDhdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJY2Fz ZSA3Ogo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgN10gKwo+ICsJCQkJCQkgICAg IGNvdW50W3N0YXJ0ICsgOF07Cj4gKwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgOV0g Kwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgMTBdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJ Y2FzZSA2Ogo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgNl07Cj4gKwkJCQkJdHJl ZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgN10gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsg OF0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgOV0gKwo+ICsJCQkJCQkgICAgIGNvdW50 W3N0YXJ0ICsgMTBdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJY2FzZSA1Ogo+ICsJCQkJCXRyZWVf bGVmdCA9IGNvdW50W3N0YXJ0ICsgNF07Cj4gKwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0 ICsgNV07Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQljYXNlIDQ6Cj4gKwkJCQkJdHJlZV9sZWZ0ID0g Y291bnRbc3RhcnQgKyA0XSArCj4gKwkJCQkJCSAgICBjb3VudFtzdGFydCArIDVdOwo+ICsJCQkJ CXRyZWVfcmlnaHQgPSBjb3VudFtzdGFydCArIDZdICsKPiArCQkJCQkJICAgICBjb3VudFtzdGFy dCArIDddICsKPiArCQkJCQkJICAgICBjb3VudFtzdGFydCArIDhdICsKPiArCQkJCQkJICAgICBj b3VudFtzdGFydCArIDldICsKPiArCQkJCQkJICAgICBjb3VudFtzdGFydCArIDEwXTsKPiArCQkJ CQlicmVhazsKPiArCQkJCWNhc2UgMzoKPiArCQkJCQl0cmVlX2xlZnQgPSBjb3VudFtzdGFydCAr IDJdOwo+ICsJCQkJCXRyZWVfcmlnaHQgPSBjb3VudFtzdGFydCArIDNdOwo+ICsJCQkJCWJyZWFr Owo+ICsJCQkJY2FzZSAyOgo+ICsJCQkJCXRyZWVfbGVmdCA9IGNvdW50W3N0YXJ0ICsgMl0gKwo+ ICsJCQkJCQkgICAgY291bnRbc3RhcnQgKyAzXTsKPiArCQkJCQl0cmVlX3JpZ2h0ID0gY291bnRb c3RhcnQgKyA0XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA1XSArCj4gKwkJCQkJCSAg ICAgY291bnRbc3RhcnQgKyA2XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA3XSArCj4g KwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA4XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQg KyA5XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyAxMF07Cj4gKwkJCQkJYnJlYWs7Cj4g KwkJCQljYXNlIDE6Cj4gKwkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAxXTsKPiArCQkJ CQl0cmVlX3JpZ2h0ID0gY291bnRbc3RhcnQgKyAyXSArCj4gKwkJCQkJCSAgICAgY291bnRbc3Rh cnQgKyAzXSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA0XSArCj4gKwkJCQkJCSAgICAg Y291bnRbc3RhcnQgKyA1XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA2XSArCj4gKwkJ CQkJCSAgICAgY291bnRbc3RhcnQgKyA3XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA4 XSArCj4gKwkJCQkJCSAgICAgY291bnRbc3RhcnQgKyA5XSArCj4gKwkJCQkJCSAgICAgY291bnRb c3RhcnQgKyAxMF07Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQlkZWZhdWx0Ogo+ICsJCQkJCXRyZWVf bGVmdCA9IGNvdW50W3N0YXJ0ICsgMF07Cj4gKwkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0 ICsgMV0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgMl0gKwo+ICsJCQkJCQkgICAgIGNv dW50W3N0YXJ0ICsgM10gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgNF0gKwo+ICsJCQkJ CQkgICAgIGNvdW50W3N0YXJ0ICsgNV0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgNl0g Kwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgN10gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0 YXJ0ICsgOF0gKwo+ICsJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgOV0gKwo+ICsJCQkJCQkgICAg IGNvdW50W3N0YXJ0ICsgMTBdOwo+ICsJCQkJCWJyZWFrOwo+ICsJCQkJfQo+ICsKPiArCQkJCXZw OV90cmVlX21lcmdlX3Byb2JzKHByZXZfcHJvYiwgY3VyX3Byb2IsCj4gKwkJCQkJCSAgICAgY29l Zl9ub2RlX3N0YXJ0LAo+ICsJCQkJCQkgICAgIHRyZWVfbGVmdCwgdHJlZV9yaWdodCwKPiArCQkJ CQkJICAgICB0cmVlX2ksIG5vZGUpOwo+ICsKPiArCQkJCWNvZWZfbm9kZV9zdGFydCA9IGNvZWZf bm9kZV9zdGFydCArIDE7Cj4gKwkJCX0KPiArCj4gKwkJCWNvZWZfbm9kZV9zdGFydCA9IG12ZF9p ID8gVlA5X01WX0NMQVNTMF8xX1NUQVJUIDoKPiArCQkJCQkJICBWUDlfTVZfQ0xBU1MwXzBfU1RB UlQ7Cj4gKwkJCWNvZWZfY291bnRfbm9kZV9zdGFydCA9CW12ZF9pID8KPiArCQkJCQkJVlA5X01W X0NMQVNTMF8xX0NPVU5UX1NUQVJUIDoKPiArCQkJCQkJVlA5X01WX0NMQVNTMF8wX0NPVU5UX1NU QVJUOwo+ICsJCQl0cmVlX2kgPSAwOwo+ICsJCQlub2RlID0gMDsKPiArCQkJdHJlZV9sZWZ0ID0g Y291bnRbY29lZl9jb3VudF9ub2RlX3N0YXJ0ICsgMF07Cj4gKwkJCXRyZWVfcmlnaHQgPSBjb3Vu dFtjb2VmX2NvdW50X25vZGVfc3RhcnQgKyAxXTsKPiArCj4gKwkJCXZwOV90cmVlX21lcmdlX3By b2JzKHByZXZfcHJvYiwgY3VyX3Byb2IsCj4gKwkJCQkJICAgICBjb2VmX25vZGVfc3RhcnQsCj4g KwkJCQkJICAgICB0cmVlX2xlZnQsIHRyZWVfcmlnaHQsCj4gKwkJCQkJICAgICB0cmVlX2ksIG5v ZGUpOwo+ICsJCQljb2VmX25vZGVfc3RhcnQgPSBtdmRfaSA/IFZQOV9NVl9DTEFTUzBfRlBfMV9T VEFSVCA6Cj4gKwkJCQkJCSAgVlA5X01WX0NMQVNTMF9GUF8wX1NUQVJUOwo+ICsJCQljb2VmX2Nv dW50X25vZGVfc3RhcnQgPQltdmRfaSA/Cj4gKwkJCQkJVlA5X01WX0NMQVNTMF9GUF8xX0NPVU5U X1NUQVJUIDoKPiArCQkJCQlWUDlfTVZfQ0xBU1MwX0ZQXzBfQ09VTlRfU1RBUlQ7Cj4gKwo+ICsJ CQlmb3IgKHRyZWVfaSA9IDA7IHRyZWVfaSA8IDM7IHRyZWVfaSsrKSB7Cj4gKwkJCQlmb3IgKG5v ZGUgPSAwOyBub2RlIDwgMzsgbm9kZSsrKSB7Cj4gKwkJCQkJdW5zaWduZWQgaW50IHN0YXJ0ID0K PiArCQkJCQkJY29lZl9jb3VudF9ub2RlX3N0YXJ0Owo+ICsJCQkJCXN3aXRjaCAobm9kZSkgewo+ ICsJCQkJCWNhc2UgMjoKPiArCQkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAyXTsKPiAr CQkJCQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgM107Cj4gKwkJCQkJCWJyZWFrOwo+ICsJ CQkJCWNhc2UgMToKPiArCQkJCQkJdHJlZV9sZWZ0ID0gY291bnRbc3RhcnQgKyAxXTsKPiArCQkJ CQkJdHJlZV9yaWdodCA9IGNvdW50W3N0YXJ0ICsgMl0gKwo+ICsJCQkJCQkJICAgICBjb3VudFtz dGFydCArIDNdOwo+ICsJCQkJCQlicmVhazsKPiArCQkJCQlkZWZhdWx0Ogo+ICsJCQkJCQl0cmVl X2xlZnQgPSBjb3VudFtzdGFydCArIDBdOwo+ICsJCQkJCQl0cmVlX3JpZ2h0ID0gY291bnRbc3Rh cnQgKyAxXSArCj4gKwkJCQkJCQkgICAgIGNvdW50W3N0YXJ0ICsgMl0gKwo+ICsJCQkJCQkJICAg ICBjb3VudFtzdGFydCArIDNdOwo+ICsJCQkJCQlicmVhazsKPiArCQkJCQl9Cj4gKwo+ICsJCQkJ CXZwOV90cmVlX21lcmdlX3Byb2JzKHByZXZfcHJvYiwKPiArCQkJCQkJCSAgICAgY3VyX3Byb2Is Cj4gKwkJCQkJCQkgICAgIGNvZWZfbm9kZV9zdGFydCwKPiArCQkJCQkJCSAgICAgdHJlZV9sZWZ0 LAo+ICsJCQkJCQkJICAgICB0cmVlX3JpZ2h0LAo+ICsJCQkJCQkJICAgICB0cmVlX2ksIG5vZGUp Owo+ICsKPiArCQkJCQljb2VmX25vZGVfc3RhcnQgPSBjb2VmX25vZGVfc3RhcnQgKyAxOwo+ICsJ CQkJfQo+ICsJCQkJY29lZl9jb3VudF9ub2RlX3N0YXJ0ID0KPiArCQkJCQljb2VmX2NvdW50X25v ZGVfc3RhcnQgKyA0Owo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgY29kZWNfdnA5X3RocmVhZGVkX2lzcihzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNl c3MpCj4gK3sKPiArCXN0cnVjdCBhbXZkZWNfY29yZSAqY29yZSA9IHNlc3MtPmNvcmU7Cj4gKwlz dHJ1Y3QgY29kZWNfdnA5ICp2cDkgPSBzZXNzLT5wcml2Owo+ICsJdTMyIGRlY19zdGF0dXMgPSBh bXZkZWNfcmVhZF9kb3MoY29yZSwgVlA5X0RFQ19TVEFUVVNfUkVHKTsKPiArCXUzMiBwcm9iX3N0 YXR1cyA9IGFtdmRlY19yZWFkX2Rvcyhjb3JlLCBWUDlfQURBUFRfUFJPQl9SRUcpOwo+ICsJaW50 IGk7Cj4gKwo+ICsJaWYgKCF2cDkpCj4gKwkJcmV0dXJuIElSUV9IQU5ETEVEOwo+ICsKPiArCW11 dGV4X2xvY2soJnZwOS0+bG9jayk7Cj4gKwlpZiAoZGVjX3N0YXR1cyAhPSBWUDlfSEVBRF9QQVJT RVJfRE9ORSkgewo+ICsJCWRldl9lcnIoY29yZS0+ZGV2X2RlYywgIlVucmVjb2duaXplZCBkZWNf c3RhdHVzOiAlMDhYXG4iLAo+ICsJCQlkZWNfc3RhdHVzKTsKPiArCQlhbXZkZWNfYWJvcnQoc2Vz cyk7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJcHJfZGVidWcoIklTUjogJTA4WDsl MDhYXG4iLCBkZWNfc3RhdHVzLCBwcm9iX3N0YXR1cyk7Cj4gKwlzZXNzLT5rZXlmcmFtZV9mb3Vu ZCA9IDE7Cj4gKwo+ICsJaWYgKChwcm9iX3N0YXR1cyAmIDB4ZmYpID09IDB4ZmQgJiYgdnA5LT5j dXJfZnJhbWUpIHsKPiArCQkvKiBWUDlfUkVRX0FEQVBUX1BST0IgKi8KPiArCQl1OCAqcHJldl9w cm9iX2IgPSAoKHU4ICopdnA5LT53b3Jrc3BhY2VfdmFkZHIgKwo+ICsJCQkJCSBQUk9CX09GRlNF VCkgKwo+ICsJCQkJCSgocHJvYl9zdGF0dXMgPj4gOCkgKiAweDEwMDApOwo+ICsJCXU4ICpjdXJf cHJvYl9iID0gKCh1OCAqKXZwOS0+d29ya3NwYWNlX3ZhZGRyICsKPiArCQkJCQkgUFJPQl9PRkZT RVQpICsgMHg0MDAwOwo+ICsJCXU4ICpjb3VudF9iID0gKHU4ICopdnA5LT53b3Jrc3BhY2VfdmFk ZHIgKwo+ICsJCQkJICAgQ09VTlRfT0ZGU0VUOwo+ICsJCWludCBsYXN0X2ZyYW1lX3R5cGUgPSB2 cDktPnByZXZfZnJhbWUgPwo+ICsJCQkJCQl2cDktPnByZXZfZnJhbWUtPnR5cGUgOgo+ICsJCQkJ CQlLRVlfRlJBTUU7Cj4gKwo+ICsJCWFkYXB0X2NvZWZfcHJvYnMobGFzdF9mcmFtZV90eXBlID09 IEtFWV9GUkFNRSwKPiArCQkJCSB2cDktPmN1cl9mcmFtZS0+dHlwZSA9PSBLRVlfRlJBTUUgPyAx IDogMCwKPiArCQkJCSBwcm9iX3N0YXR1cyA+PiA4LAo+ICsJCQkJICh1bnNpZ25lZCBpbnQgKilw cmV2X3Byb2JfYiwKPiArCQkJCSAodW5zaWduZWQgaW50ICopY3VyX3Byb2JfYiwKPiArCQkJCSAo dW5zaWduZWQgaW50ICopY291bnRfYik7Cj4gKwo+ICsJCW1lbWNweShwcmV2X3Byb2JfYiwgY3Vy X3Byb2JfYiwgQURBUFRfUFJPQl9TSVpFKTsKPiArCQlhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIFZQ OV9BREFQVF9QUk9CX1JFRywgMCk7Cj4gKwl9Cj4gKwo+ICsJLyogSW52YWxpZGF0ZSBmaXJzdCAz IHJlZnMgKi8KPiArCWZvciAoaSA9IDA7IGkgPCBSRUZTX1BFUl9GUkFNRSA7ICsraSkKPiArCQl2 cDktPmZyYW1lX3JlZnNbaV0gPSBOVUxMOwo+ICsKPiArCXZwOS0+cHJldl9mcmFtZSA9IHZwOS0+ Y3VyX2ZyYW1lOwo+ICsJY29kZWNfdnA5X3VwZGF0ZV9yZWYodnA5KTsKPiArCj4gKwljb2RlY192 cDlfZmV0Y2hfcnBtKHNlc3MpOwo+ICsJaWYgKGNvZGVjX3ZwOV9wcm9jZXNzX3JwbSh2cDkpKSB7 Cj4gKwkJYW12ZGVjX3NyY19jaGFuZ2Uoc2VzcywgdnA5LT53aWR0aCwgdnA5LT5oZWlnaHQsIDE2 KTsKPiArCj4gKwkJLyogTm8gZnJhbWUgaXMgYWN0dWFsbHkgcHJvY2Vzc2VkICovCj4gKwkJdnA5 LT5jdXJfZnJhbWUgPSBOVUxMOwo+ICsKPiArCQkvKiBTaG93IHRoZSByZW1haW5pbmcgZnJhbWUg Ki8KPiArCQljb2RlY192cDlfc2hvd19mcmFtZShzZXNzKTsKPiArCj4gKwkJLyogRklYTUU6IFNh dmUgcmVmcyBmb3IgcmVzaXplZCBmcmFtZSAqLwo+ICsJCWlmICh2cDktPmZyYW1lc19udW0pCj4g KwkJCWNvZGVjX3ZwOV9zYXZlX3JlZnModnA5KTsKPiArCj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9 Cj4gKwo+ICsJY29kZWNfdnA5X3Byb2Nlc3NfbGYodnA5KTsKPiArCWNvZGVjX3ZwOV9wcm9jZXNz X2ZyYW1lKHNlc3MpOwo+ICsJY29kZWNfdnA5X3Nob3dfZnJhbWUoc2Vzcyk7Cj4gKwo+ICt1bmxv Y2s6Cj4gKwltdXRleF91bmxvY2soJnZwOS0+bG9jayk7Cj4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBjb2RlY192cDlfaXNyKHN0cnVjdCBhbXZk ZWNfc2Vzc2lvbiAqc2VzcykKPiArewo+ICsJcmV0dXJuIElSUV9XQUtFX1RIUkVBRDsKPiArfQo+ ICsKPiArc3RydWN0IGFtdmRlY19jb2RlY19vcHMgY29kZWNfdnA5X29wcyA9IHsKPiArCS5zdGFy dCA9IGNvZGVjX3ZwOV9zdGFydCwKPiArCS5zdG9wID0gY29kZWNfdnA5X3N0b3AsCj4gKwkuaXNy ID0gY29kZWNfdnA5X2lzciwKPiArCS50aHJlYWRlZF9pc3IgPSBjb2RlY192cDlfdGhyZWFkZWRf aXNyLAo+ICsJLm51bV9wZW5kaW5nX2J1ZnMgPSBjb2RlY192cDlfbnVtX3BlbmRpbmdfYnVmcywK PiArCS5kcmFpbiA9IGNvZGVjX3ZwOV9mbHVzaF9vdXRwdXQsCj4gKwkucmVzdW1lID0gY29kZWNf dnA5X3Jlc3VtZSwKPiArfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvY29kZWNfdnA5LmggYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9j b2RlY192cDkuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi42 MmRiNjVhMmI5MzkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlh L21lc29uL3ZkZWMvY29kZWNfdnA5LmgKPiBAQCAtMCwwICsxLDEzIEBACj4gKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTggTWF4aW1lIEpvdXJkYW4gPG1heGkuam91cmRhbkB3YW5hZG9vLmZyPgo+ICsgKi8KPiArCj4g KyNpZm5kZWYgX19NRVNPTl9WREVDX0NPREVDX1ZQOV9IXwo+ICsjZGVmaW5lIF9fTUVTT05fVkRF Q19DT0RFQ19WUDlfSF8KPiArCj4gKyNpbmNsdWRlICJ2ZGVjLmgiCj4gKwo+ICtleHRlcm4gc3Ry dWN0IGFtdmRlY19jb2RlY19vcHMgY29kZWNfdnA5X29wczsKPiArCj4gKyNlbmRpZgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9oZXZjX3JlZ3MuaCBiL2Ry aXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjL2hldmNfcmVncy5oCj4gaW5kZXggNTVjMWE4 MGI5NTVhLi4wMzkyZjQxYTFlZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L21lc29uL3ZkZWMvaGV2Y19yZWdzLmgKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVz b24vdmRlYy9oZXZjX3JlZ3MuaAo+IEBAIC0xMjIsNiArMTIyLDggQEAKPiAgI2RlZmluZSBIRVZD X01QUkVEX0wwX1JFRjAwX1BPQyAweGM4ODAKPiAgI2RlZmluZSBIRVZDX01QUkVEX0wxX1JFRjAw X1BPQyAweGM4YzAKPiAgCj4gKyNkZWZpbmUgSEVWQ19NUFJFRF9DVFJMNCAweGM5MzAKPiArCj4g ICNkZWZpbmUgSEVWQ19NUFJFRF9DVVJfUE9DIDB4Yzk4MAo+ICAjZGVmaW5lIEhFVkNfTVBSRURf Q09MX1BPQyAweGM5ODQKPiAgI2RlZmluZSBIRVZDX01QUkVEX01WX1JEX0VORF9BRERSIDB4Yzk4 OAo+IEBAIC0xNDAsNiArMTQyLDEwIEBACj4gICNkZWZpbmUgSEVWQ0RfSVBQX0xJTkVCVUZGX0JB U0UgMHhkMDI0Cj4gICNkZWZpbmUgSEVWQ0RfSVBQX0FYSUlGX0NPTkZJRyAweGQwMmMKPiAgCj4g KyNkZWZpbmUgVlA5RF9NUFBfUkVGX1NDQUxFX0VOQkwJCTB4ZDEwNAo+ICsjZGVmaW5lIFZQOURf TVBQX1JFRklORk9fVEJMX0FDQ0NPTkZJRwkweGQxMDgKPiArI2RlZmluZSBWUDlEX01QUF9SRUZJ TkZPX0RBVEEJCTB4ZDEwYwo+ICsKPiAgI2RlZmluZSBIRVZDRF9NUFBfQU5DMkFYSV9UQkxfQ09O Rl9BRERSIDB4ZDE4MAo+ICAjZGVmaW5lIEhFVkNEX01QUF9BTkMyQVhJX1RCTF9DTURfQUREUiAw eGQxODQKPiAgI2RlZmluZSBIRVZDRF9NUFBfQU5DMkFYSV9UQkxfREFUQSAweGQxOTAKPiBAQCAt MTY0LDYgKzE3MCw3IEBACj4gICNkZWZpbmUgSEVWQ19EQkxLX0NGRzkgMHhkNDI0Cj4gICNkZWZp bmUgSEVWQ19EQkxLX0NGR0EgMHhkNDI4Cj4gICNkZWZpbmUgSEVWQ19EQkxLX1NUUzAgMHhkNDJj Cj4gKyNkZWZpbmUgSEVWQ19EQkxLX0NGR0IgMHhkNDJjCj4gICNkZWZpbmUgSEVWQ19EQkxLX1NU UzEgMHhkNDMwCj4gICNkZWZpbmUgSEVWQ19EQkxLX0NGR0UgMHhkNDM4Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjLmMgYi9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjLmMKPiBpbmRleCA1NTE0ZDJkMjU5YTQuLjFlNTMx YTMzNWM1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92 ZGVjLmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjLmMKPiBA QCAtMzk1LDYgKzM5NSw3IEBAIHN0YXRpYyB2b2lkIHZkZWNfcmVzZXRfYnVmc19yZWN5Y2xlKHN0 cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiAgc3RhdGljIHZvaWQgdmRlY19zdG9wX3N0cmVh bWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICpxKQo+ICB7Cj4gIAlzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24g KnNlc3MgPSB2YjJfZ2V0X2Rydl9wcml2KHEpOwo+ICsJc3RydWN0IGFtdmRlY19jb2RlY19vcHMg KmNvZGVjX29wcyA9IHNlc3MtPmZtdF9vdXQtPmNvZGVjX29wczsKPiAgCXN0cnVjdCBhbXZkZWNf Y29yZSAqY29yZSA9IHNlc3MtPmNvcmU7Cj4gIAlzdHJ1Y3QgdmIyX3Y0bDJfYnVmZmVyICpidWY7 Cj4gIAo+IEBAIC00MjMsNiArNDI0LDEwIEBAIHN0YXRpYyB2b2lkIHZkZWNfc3RvcF9zdHJlYW1p bmcoc3RydWN0IHZiMl9xdWV1ZSAqcSkKPiAgCj4gIAkJc2Vzcy0+c3RyZWFtb25fb3V0ID0gMDsK PiAgCX0gZWxzZSB7Cj4gKwkJLyogRHJhaW4gcmVtYWluaW5nIHJlZnMgaWYgd2FzIHN0aWxsIHJ1 bm5pbmcgKi8KPiArCQlpZiAoc2Vzcy0+c3RhdHVzID49IFNUQVRVU19SVU5OSU5HICYmIGNvZGVj X29wcy0+ZHJhaW4pCj4gKwkJCWNvZGVjX29wcy0+ZHJhaW4oc2Vzcyk7Cj4gKwo+ICAJCXdoaWxl ICgoYnVmID0gdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoc2Vzcy0+bTJtX2N0eCkpKQo+ICAJCQl2 NGwyX20ybV9idWZfZG9uZShidWYsIFZCMl9CVUZfU1RBVEVfRVJST1IpOwo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmMgYi9k cml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX2hlbHBlcnMuYwo+IGluZGV4IDgx ODA2NGI2YjRkMC4uYTRmNjJiODkyMTg4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9tZXNvbi92ZGVjL3ZkZWNfaGVscGVycy5jCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL21lc29uL3ZkZWMvdmRlY19oZWxwZXJzLmMKPiBAQCAtMjk5LDYgKzI5OSwxMCBAQCBzdGF0 aWMgdm9pZCBkc3RfYnVmX2RvbmUoc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzLAo+ICAJCQlz ZXNzLT5zZXF1ZW5jZV9jYXAgLSAxKTsKPiAgCQl2NGwyX2V2ZW50X3F1ZXVlX2ZoKCZzZXNzLT5m aCwgJmV2KTsKPiAgCQl2YnVmLT5mbGFncyB8PSBWNEwyX0JVRl9GTEFHX0xBU1Q7Cj4gKwl9IGVs c2UgaWYgKHNlc3MtPnN0YXR1cyA9PSBTVEFUVVNfTkVFRFNfUkVTVU1FKSB7Cj4gKwkJLyogTWFy ayBMQVNUIGZvciBkcmFpbmVkIHNob3cgZnJhbWVzIGR1cmluZyBhIHNvdXJjZSBjaGFuZ2UgKi8K PiArCQl2YnVmLT5mbGFncyB8PSBWNEwyX0JVRl9GTEFHX0xBU1Q7Cj4gKwkJc2Vzcy0+c2VxdWVu Y2VfY2FwID0gMDsKPiAgCX0gZWxzZSBpZiAoc2Vzcy0+c2hvdWxkX3N0b3ApCj4gIAkJZGV2X2Ri ZyhkZXYsICJzaG91bGRfc3RvcCwgJXUgYnVmcyByZW1haW5cbiIsCj4gIAkJCWF0b21pY19yZWFk KCZzZXNzLT5lc3BhcnNlcl9xdWV1ZWRfYnVmcykpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX3BsYXRmb3JtLmMgYi9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvbWVzb24vdmRlYy92ZGVjX3BsYXRmb3JtLmMKPiBpbmRleCBlOTM1NmE0NjgyOGYuLjcy YTgzM2IxY2ViZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRl Yy92ZGVjX3BsYXRmb3JtLmMKPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRl Yy92ZGVjX3BsYXRmb3JtLmMKPiBAQCAtOCw4ICs4LDEwIEBACj4gICNpbmNsdWRlICJ2ZGVjLmgi Cj4gIAo+ICAjaW5jbHVkZSAidmRlY18xLmgiCj4gKyNpbmNsdWRlICJ2ZGVjX2hldmMuaCIKPiAg I2luY2x1ZGUgImNvZGVjX21wZWcxMi5oIgo+ICAjaW5jbHVkZSAiY29kZWNfaDI2NC5oIgo+ICsj aW5jbHVkZSAiY29kZWNfdnA5LmgiCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtdmRlY19m b3JtYXQgdmRlY19mb3JtYXRzX2d4YmJbXSA9IHsKPiAgCXsKPiBAQCAtNTEsNiArNTMsMTggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBhbXZkZWNfZm9ybWF0IHZkZWNfZm9ybWF0c19neGJiW10gPSB7 Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtdmRlY19mb3JtYXQgdmRlY19mb3JtYXRzX2d4 bFtdID0gewo+ICAJewo+ICsJCS5waXhmbXQgPSBWNEwyX1BJWF9GTVRfVlA5LAo+ICsJCS5taW5f YnVmZmVycyA9IDE2LAo+ICsJCS5tYXhfYnVmZmVycyA9IDI0LAo+ICsJCS5tYXhfd2lkdGggPSAz ODQwLAo+ICsJCS5tYXhfaGVpZ2h0ID0gMjE2MCwKPiArCQkudmRlY19vcHMgPSAmdmRlY19oZXZj X29wcywKPiArCQkuY29kZWNfb3BzID0gJmNvZGVjX3ZwOV9vcHMsCj4gKwkJLmZpcm13YXJlX3Bh dGggPSAibWVzb24vdmRlYy9neGxfdnA5LmJpbiIsCgpJcyB0aGVyZSBhIHB1bGwgcmVxdWVzdCBw ZW5kaW5nIGZvciB0aGlzIGZpcm13YXJlID8gSSBjb3VsZCBub3QgdGVzdCBhcwp0aGlzIGZpcm13 YXJlIHdhcyBtaXNzaW5nLiBOb3RlIHRoYXQgaXQgY291bGQgYmUgbmljZSB0byByZW1vdmUgdGhl CmZvcm1hdCBmcm9tIHRoZSBlbnVtZXJhdGlvbiBpbiB0aGF0IGNhc2UsIGFzIGl0J3MgdmVyeSBj b25mdXNpbmcKaW5pdGlhbGx5LgoKPiArCQkucGl4Zm10c19jYXAgPSB7IFY0TDJfUElYX0ZNVF9O VjEyTSwgMCB9LAo+ICsJCS5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRCB8Cj4gKwkJ CSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9OLAo+ICsJfSwgewo+ICAJCS5waXhmbXQgPSBW NEwyX1BJWF9GTVRfSDI2NCwKPiAgCQkubWluX2J1ZmZlcnMgPSAyLAo+ICAJCS5tYXhfYnVmZmVy cyA9IDI0LAo+IEBAIC0xMjcsNiArMTQxLDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW12ZGVj X2Zvcm1hdCB2ZGVjX2Zvcm1hdHNfZ3htW10gPSB7Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGFtdmRlY19mb3JtYXQgdmRlY19mb3JtYXRzX2cxMmFbXSA9IHsKPiAgCXsKPiArCQkucGl4Zm10 ID0gVjRMMl9QSVhfRk1UX1ZQOSwKPiArCQkubWluX2J1ZmZlcnMgPSAxNiwKPiArCQkubWF4X2J1 ZmZlcnMgPSAyNCwKPiArCQkubWF4X3dpZHRoID0gMzg0MCwKPiArCQkubWF4X2hlaWdodCA9IDIx NjAsCj4gKwkJLnZkZWNfb3BzID0gJnZkZWNfaGV2Y19vcHMsCj4gKwkJLmNvZGVjX29wcyA9ICZj b2RlY192cDlfb3BzLAo+ICsJCS5maXJtd2FyZV9wYXRoID0gIm1lc29uL3ZkZWMvZzEyYV92cDku YmluIiwKPiArCQkucGl4Zm10c19jYXAgPSB7IFY0TDJfUElYX0ZNVF9OVjEyTSwgMCB9LAo+ICsJ CS5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRCB8Cj4gKwkJCSBWNEwyX0ZNVF9GTEFH X0RZTl9SRVNPTFVUSU9OLAo+ICsJfSwgewo+ICAJCS5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSDI2 NCwKPiAgCQkubWluX2J1ZmZlcnMgPSAyLAo+ICAJCS5tYXhfYnVmZmVycyA9IDI0LAo+IEBAIC0x NjUsNiArMTkxLDE4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW12ZGVjX2Zvcm1hdCB2ZGVjX2Zv cm1hdHNfZzEyYVtdID0gewo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbXZkZWNfZm9ybWF0 IHZkZWNfZm9ybWF0c19zbTFbXSA9IHsKPiAgCXsKPiArCQkucGl4Zm10ID0gVjRMMl9QSVhfRk1U X1ZQOSwKPiArCQkubWluX2J1ZmZlcnMgPSAxNiwKPiArCQkubWF4X2J1ZmZlcnMgPSAyNCwKPiAr CQkubWF4X3dpZHRoID0gMzg0MCwKPiArCQkubWF4X2hlaWdodCA9IDIxNjAsCj4gKwkJLnZkZWNf b3BzID0gJnZkZWNfaGV2Y19vcHMsCj4gKwkJLmNvZGVjX29wcyA9ICZjb2RlY192cDlfb3BzLAo+ ICsJCS5maXJtd2FyZV9wYXRoID0gIm1lc29uL3ZkZWMvZzEyYV92cDkuYmluIiwKPiArCQkucGl4 Zm10c19jYXAgPSB7IFY0TDJfUElYX0ZNVF9OVjEyTSwgMCB9LAo+ICsJCS5mbGFncyA9IFY0TDJf Rk1UX0ZMQUdfQ09NUFJFU1NFRCB8Cj4gKwkJCSBWNEwyX0ZNVF9GTEFHX0RZTl9SRVNPTFVUSU9O LAo+ICsJfSwgewo+ICAJCS5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSDI2NCwKPiAgCQkubWluX2J1 ZmZlcnMgPSAyLAo+ICAJCS5tYXhfYnVmZmVycyA9IDI0LAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0Cmxp bnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK