From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 67849C47DAF for ; Mon, 22 Jan 2024 06:38:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rRnuU-0003Ah-Kk; Mon, 22 Jan 2024 01:35:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rRnuE-00031X-N2 for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:40 -0500 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rRnuA-0005lx-MT for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:38 -0500 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40M42Pgf013123; Mon, 22 Jan 2024 06:35:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s= qcppdkim1; bh=dnhe60Lq1qSKHbSZOB4x0e/kKq0lCce9CFpfSWWFrs0=; b=EQ Y03vmdvY2QGbrSqU0y1M3HzYyNGEPrYVRpB8fosAD0tp1K8qavh9viWlwfVYNSo7 nqSAXOT5XgIa9XpOcET9hHlugPcJYL4mueb2pg/tMCPiF9R6WedMl6KsDMa8IaEk Nx0mGkjfeYjlPh7LY4mKiMvzea3ILleUkwJYfiEITqjlhW3bwOf1pzvpmoX7GvHW zYxmj67d0d32yImiFRAOP1uGst/RstHIx2TAp2GAaMFHiW03MgaF5pvmeBnOlJ7n 5XgXuGCIYYYdRiaShGH5oF9NpRZFmRW5NGXS9U6aCKD4mqYZSNVzEiPItAskWMLE YQzU/NeV3BYrycmDi1Nw== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3vr6xn328r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:31 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 40M6ZUCd027379 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:30 GMT Received: from hu-bcain-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Sun, 21 Jan 2024 22:35:29 -0800 From: Brian Cain To: CC: , , , , , , , , , , Subject: [PULL 14/15] Hexagon (target/hexagon) Remove old dectree.py Date: Sun, 21 Jan 2024 22:35:00 -0800 Message-ID: <20240122063501.782041-15-bcain@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240122063501.782041-1-bcain@quicinc.com> References: <20240122063501.782041-1-bcain@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: qskOteU_YEmYOhd5cAidAbsmLEvxawDa X-Proofpoint-ORIG-GUID: qskOteU_YEmYOhd5cAidAbsmLEvxawDa X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-21_04,2024-01-19_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 mlxscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=800 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401220046 Received-SPF: pass client-ip=205.220.168.131; envelope-from=bcain@quicinc.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogVGF5bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KCk5vdyB0aGF0 IHdlIGFyZSB1c2luZyBRRU1VIGRlY29kZXRyZWUucHksIHJlbW92ZSB0aGUgb2xkIGRlY29kZXIK ClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDxsdGF5bG9yc2ltcHNvbkBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBCcmlhbiBDYWluIDxiY2FpbkBxdWljaW5jLmNvbT4KTWVzc2FnZS1JZDog PDIwMjQwMTE1MjIxNDQzLjM2NTI4Ny00LWx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KU2lnbmVk LW9mZi1ieTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+Ci0tLQogdGFyZ2V0L2hleGFn b24vZGVjb2RlLmMgICAgICAgICAgICAgfCAzNDQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0 YXJnZXQvaGV4YWdvbi9kZWN0cmVlLnB5ICAgICAgICAgICB8IDQwMyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiB0YXJnZXQvaGV4YWdvbi9nZW5fZGVjdHJlZV9pbXBvcnQuYyB8ICA0OSAt LS0tCiB0YXJnZXQvaGV4YWdvbi9tZXNvbi5idWlsZCAgICAgICAgICB8ICAxMiAtCiB0YXJnZXQv aGV4YWdvbi9vcGNvZGVzLmMgICAgICAgICAgICB8ICAyOSAtLQogdGFyZ2V0L2hleGFnb24vb3Bj b2Rlcy5oICAgICAgICAgICAgfCAgIDIgLQogNiBmaWxlcyBjaGFuZ2VkLCA4MzkgZGVsZXRpb25z KC0pCiBkZWxldGUgbW9kZSAxMDA3NTUgdGFyZ2V0L2hleGFnb24vZGVjdHJlZS5weQoKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL2RlY29kZS5jIGIvdGFyZ2V0L2hleGFnb24vZGVjb2RlLmMK aW5kZXggMTYwYjIzYTg5NS4uYTQwMjEwY2ExZSAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24v ZGVjb2RlLmMKKysrIGIvdGFyZ2V0L2hleGFnb24vZGVjb2RlLmMKQEAgLTg4LDE3NSArODgsNiBA QCBzdGF0aWMgaW50IHNoaWZ0X2xlZnQoRGlzYXNDb250ZXh0ICpjdHgsIGludCB4LCBpbnQgbiwg aW50IGltbW5vKQogLyogSW5jbHVkZSB0aGUgZ2VuZXJhdGVkIGhlbHBlcnMgZm9yIHRoZSBkZWNv ZGVyICovCiAjaW5jbHVkZSAiZGVjb2RldHJlZV90cmFuc19mdW5jc19nZW5lcmF0ZWQuYy5pbmMi CiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBzdHJ1Y3QgRGVjdHJlZVRhYmxlICp0YWJs ZV9saW5rOwotICAgIGNvbnN0IHN0cnVjdCBEZWN0cmVlVGFibGUgKnRhYmxlX2xpbmtfYjsKLSAg ICBPcGNvZGUgb3Bjb2RlOwotICAgIGVudW0gewotICAgICAgICBERUNUUkVFX0VOVFJZX0lOVkFM SUQsCi0gICAgICAgIERFQ1RSRUVfVEFCTEVfTElOSywKLSAgICAgICAgREVDVFJFRV9TVUJJTlNO UywKLSAgICAgICAgREVDVFJFRV9FWFRTUEFDRSwKLSAgICAgICAgREVDVFJFRV9URVJNSU5BTAot ICAgIH0gdHlwZTsKLX0gRGVjdHJlZUVudHJ5OwotCi10eXBlZGVmIHN0cnVjdCBEZWN0cmVlVGFi bGUgewotICAgIHVuc2lnbmVkIGludCAoKmxvb2t1cF9mdW5jdGlvbikoaW50IHN0YXJ0Yml0LCBp bnQgd2lkdGgsIHVpbnQzMl90IG9wY29kZSk7Ci0gICAgdW5zaWduZWQgaW50IHNpemU7Ci0gICAg dW5zaWduZWQgaW50IHN0YXJ0Yml0OwotICAgIHVuc2lnbmVkIGludCB3aWR0aDsKLSAgICBjb25z dCBEZWN0cmVlRW50cnkgdGFibGVbXTsKLX0gRGVjdHJlZVRhYmxlOwotCi0jZGVmaW5lIERFQ09E RV9ORVdfVEFCTEUoVEFHLCBTSVpFLCBXSEFUTk9UKSBcCi0gICAgc3RhdGljIGNvbnN0IERlY3Ry ZWVUYWJsZSBkZWN0cmVlX3RhYmxlXyMjVEFHOwotI2RlZmluZSBUQUJMRV9MSU5LKFRBQkxFKSAg ICAgICAgICAgICAgICAgICAgIC8qIE5PVEhJTkcgKi8KLSNkZWZpbmUgVEVSTUlOQUwoVEFHLCBF TkMpICAgICAgICAgICAgICAgICAgICAvKiBOT1RISU5HICovCi0jZGVmaW5lIFNVQklOU05TKFRB RywgQ0xBU1NBLCBDTEFTU0IsIEVOQykgICAgLyogTk9USElORyAqLwotI2RlZmluZSBFWFRTUEFD RShUQUcsIEVOQykgICAgICAgICAgICAgICAgICAgIC8qIE5PVEhJTkcgKi8KLSNkZWZpbmUgSU5W QUxJRCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOT1RISU5HICovCi0jZGVmaW5l IERFQ09ERV9FTkRfVEFCTEUoLi4uKSAgICAgICAgICAgICAgICAgLyogTk9USElORyAqLwotI2Rl ZmluZSBERUNPREVfTUFUQ0hfSU5GTyguLi4pICAgICAgICAgICAgICAgIC8qIE5PVEhJTkcgKi8K LSNkZWZpbmUgREVDT0RFX0xFR0FDWV9NQVRDSF9JTkZPKC4uLikgICAgICAgICAvKiBOT1RISU5H ICovCi0jZGVmaW5lIERFQ09ERV9PUElORk8oLi4uKSAgICAgICAgICAgICAgICAgICAgLyogTk9U SElORyAqLwotCi0jaW5jbHVkZSAiZGVjdHJlZV9nZW5lcmF0ZWQuaC5pbmMiCi0KLSN1bmRlZiBE RUNPREVfT1BJTkZPCi0jdW5kZWYgREVDT0RFX01BVENIX0lORk8KLSN1bmRlZiBERUNPREVfTEVH QUNZX01BVENIX0lORk8KLSN1bmRlZiBERUNPREVfRU5EX1RBQkxFCi0jdW5kZWYgSU5WQUxJRAot I3VuZGVmIFRFUk1JTkFMCi0jdW5kZWYgU1VCSU5TTlMKLSN1bmRlZiBFWFRTUEFDRQotI3VuZGVm IFRBQkxFX0xJTksKLSN1bmRlZiBERUNPREVfTkVXX1RBQkxFCi0jdW5kZWYgREVDT0RFX1NFUEFS QVRPUl9CSVRTCi0KLSNkZWZpbmUgREVDT0RFX1NFUEFSQVRPUl9CSVRTKFNUQVJULCBXSURUSCkg TlVMTCwgU1RBUlQsIFdJRFRICi0jZGVmaW5lIERFQ09ERV9ORVdfVEFCTEVfSEVMUEVSKFRBRywg U0laRSwgRk4sIFNUQVJULCBXSURUSCkgXAotICAgIHN0YXRpYyBjb25zdCBEZWN0cmVlVGFibGUg ZGVjdHJlZV90YWJsZV8jI1RBRyA9IHsgXAotICAgICAgICAuc2l6ZSA9IFNJWkUsIFwKLSAgICAg ICAgLmxvb2t1cF9mdW5jdGlvbiA9IEZOLCBcCi0gICAgICAgIC5zdGFydGJpdCA9IFNUQVJULCBc Ci0gICAgICAgIC53aWR0aCA9IFdJRFRILCBcCi0gICAgICAgIC50YWJsZSA9IHsKLSNkZWZpbmUg REVDT0RFX05FV19UQUJMRShUQUcsIFNJWkUsIFdIQVROT1QpIFwKLSAgICBERUNPREVfTkVXX1RB QkxFX0hFTFBFUihUQUcsIFNJWkUsIFdIQVROT1QpCi0KLSNkZWZpbmUgVEFCTEVfTElOSyhUQUJM RSkgXAotICAgIHsgLnR5cGUgPSBERUNUUkVFX1RBQkxFX0xJTkssIC50YWJsZV9saW5rID0gJmRl Y3RyZWVfdGFibGVfIyNUQUJMRSB9LAotI2RlZmluZSBURVJNSU5BTChUQUcsIEVOQykgXAotICAg IHsgLnR5cGUgPSBERUNUUkVFX1RFUk1JTkFMLCAub3Bjb2RlID0gVEFHICB9LAotI2RlZmluZSBT VUJJTlNOUyhUQUcsIENMQVNTQSwgQ0xBU1NCLCBFTkMpIFwKLSAgICB7IFwKLSAgICAgICAgLnR5 cGUgPSBERUNUUkVFX1NVQklOU05TLCBcCi0gICAgICAgIC50YWJsZV9saW5rID0gJmRlY3RyZWVf dGFibGVfREVDT0RFX1NVQklOU05fIyNDTEFTU0EsIFwKLSAgICAgICAgLnRhYmxlX2xpbmtfYiA9 ICZkZWN0cmVlX3RhYmxlX0RFQ09ERV9TVUJJTlNOXyMjQ0xBU1NCIFwKLSAgICB9LAotI2RlZmlu ZSBFWFRTUEFDRShUQUcsIEVOQykgeyAudHlwZSA9IERFQ1RSRUVfRVhUU1BBQ0UgfSwKLSNkZWZp bmUgSU5WQUxJRCgpIHsgLnR5cGUgPSBERUNUUkVFX0VOVFJZX0lOVkFMSUQsIC5vcGNvZGUgPSBY WF9MQVNUX09QQ09ERSB9LAotCi0jZGVmaW5lIERFQ09ERV9FTkRfVEFCTEUoLi4uKSB9IH07Ci0K LSNkZWZpbmUgREVDT0RFX01BVENIX0lORk8oLi4uKSAgICAgICAgICAgICAgICAvKiBOT1RISU5H ICovCi0jZGVmaW5lIERFQ09ERV9MRUdBQ1lfTUFUQ0hfSU5GTyguLi4pICAgICAgICAgLyogTk9U SElORyAqLwotI2RlZmluZSBERUNPREVfT1BJTkZPKC4uLikgICAgICAgICAgICAgICAgICAgIC8q IE5PVEhJTkcgKi8KLQotI2luY2x1ZGUgImRlY3RyZWVfZ2VuZXJhdGVkLmguaW5jIgotCi0jdW5k ZWYgREVDT0RFX09QSU5GTwotI3VuZGVmIERFQ09ERV9NQVRDSF9JTkZPCi0jdW5kZWYgREVDT0RF X0xFR0FDWV9NQVRDSF9JTkZPCi0jdW5kZWYgREVDT0RFX0VORF9UQUJMRQotI3VuZGVmIElOVkFM SUQKLSN1bmRlZiBURVJNSU5BTAotI3VuZGVmIFNVQklOU05TCi0jdW5kZWYgRVhUU1BBQ0UKLSN1 bmRlZiBUQUJMRV9MSU5LCi0jdW5kZWYgREVDT0RFX05FV19UQUJMRQotI3VuZGVmIERFQ09ERV9O RVdfVEFCTEVfSEVMUEVSCi0jdW5kZWYgREVDT0RFX1NFUEFSQVRPUl9CSVRTCi0KLXN0YXRpYyBj b25zdCBEZWN0cmVlVGFibGUgZGVjdHJlZV90YWJsZV9ERUNPREVfRVhUX0VYVF9ub2V4dCA9IHsK LSAgICAuc2l6ZSA9IDEsIC5sb29rdXBfZnVuY3Rpb24gPSBOVUxMLCAuc3RhcnRiaXQgPSAwLCAu d2lkdGggPSAwLAotICAgIC50YWJsZSA9IHsKLSAgICAgICAgeyAudHlwZSA9IERFQ1RSRUVfRU5U UllfSU5WQUxJRCwgLm9wY29kZSA9IFhYX0xBU1RfT1BDT0RFIH0sCi0gICAgfQotfTsKLQotc3Rh dGljIGNvbnN0IERlY3RyZWVUYWJsZSAqZXh0X3RyZWVzW1hYX0xBU1RfRVhUX0lEWF07Ci0KLXN0 YXRpYyB2b2lkIGRlY29kZV9leHRfaW5pdCh2b2lkKQotewotICAgIGludCBpOwotICAgIGZvciAo aSA9IEVYVF9JRFhfbm9leHQ7IGkgPCBFWFRfSURYX25vZXh0X0FGVEVSOyBpKyspIHsKLSAgICAg ICAgZXh0X3RyZWVzW2ldID0gJmRlY3RyZWVfdGFibGVfREVDT0RFX0VYVF9FWFRfbm9leHQ7Ci0g ICAgfQotICAgIGZvciAoaSA9IEVYVF9JRFhfbW12ZWM7IGkgPCBFWFRfSURYX21tdmVjX0FGVEVS OyBpKyspIHsKLSAgICAgICAgZXh0X3RyZWVzW2ldID0gJmRlY3RyZWVfdGFibGVfREVDT0RFX0VY VF9FWFRfbW12ZWM7Ci0gICAgfQotfQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgdWludDMyX3Qg bWFzazsKLSAgICB1aW50MzJfdCBtYXRjaDsKLX0gRGVjb2RlSVRhYmxlRW50cnk7Ci0KLSNkZWZp bmUgREVDT0RFX05FV19UQUJMRShUQUcsIFNJWkUsIFdIQVROT1QpICAvKiBOT1RISU5HICovCi0j ZGVmaW5lIFRBQkxFX0xJTksoVEFCTEUpICAgICAgICAgICAgICAgICAgICAgLyogTk9USElORyAq LwotI2RlZmluZSBURVJNSU5BTChUQUcsIEVOQykgICAgICAgICAgICAgICAgICAgIC8qIE5PVEhJ TkcgKi8KLSNkZWZpbmUgU1VCSU5TTlMoVEFHLCBDTEFTU0EsIENMQVNTQiwgRU5DKSAgICAvKiBO T1RISU5HICovCi0jZGVmaW5lIEVYVFNQQUNFKFRBRywgRU5DKSAgICAgICAgICAgICAgICAgICAg LyogTk9USElORyAqLwotI2RlZmluZSBJTlZBTElEKCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIE5PVEhJTkcgKi8KLSNkZWZpbmUgREVDT0RFX0VORF9UQUJMRSguLi4pICAgICAgICAg ICAgICAgICAvKiBOT1RISU5HICovCi0jZGVmaW5lIERFQ09ERV9PUElORk8oLi4uKSAgICAgICAg ICAgICAgICAgICAgLyogTk9USElORyAqLwotCi0jZGVmaW5lIERFQ09ERV9NQVRDSF9JTkZPX05P Uk1BTChUQUcsIE1BU0ssIE1BVENIKSBcCi0gICAgW1RBR10gPSB7IFwKLSAgICAgICAgLm1hc2sg PSBNQVNLLCBcCi0gICAgICAgIC5tYXRjaCA9IE1BVENILCBcCi0gICAgfSwKLQotI2RlZmluZSBE RUNPREVfTUFUQ0hfSU5GT19OVUxMKFRBRywgTUFTSywgTUFUQ0gpIFwKLSAgICBbVEFHXSA9IHsg Lm1hdGNoID0gfjAgfSwKLQotI2RlZmluZSBERUNPREVfTUFUQ0hfSU5GTyguLi4pIERFQ09ERV9N QVRDSF9JTkZPX05PUk1BTChfX1ZBX0FSR1NfXykKLSNkZWZpbmUgREVDT0RFX0xFR0FDWV9NQVRD SF9JTkZPKC4uLikgLyogTk9USElORyAqLwotCi1zdGF0aWMgY29uc3QgRGVjb2RlSVRhYmxlRW50 cnkgZGVjb2RlX2l0YWJsZVtYWF9MQVNUX09QQ09ERV0gPSB7Ci0jaW5jbHVkZSAiZGVjdHJlZV9n ZW5lcmF0ZWQuaC5pbmMiCi19OwotCi0jdW5kZWYgREVDT0RFX01BVENIX0lORk8KLSNkZWZpbmUg REVDT0RFX01BVENIX0lORk8oLi4uKSBERUNPREVfTUFUQ0hfSU5GT19OVUxMKF9fVkFfQVJHU19f KQotCi0jdW5kZWYgREVDT0RFX0xFR0FDWV9NQVRDSF9JTkZPCi0jZGVmaW5lIERFQ09ERV9MRUdB Q1lfTUFUQ0hfSU5GTyguLi4pIERFQ09ERV9NQVRDSF9JTkZPX05PUk1BTChfX1ZBX0FSR1NfXykK LQotc3RhdGljIGNvbnN0IERlY29kZUlUYWJsZUVudHJ5IGRlY29kZV9sZWdhY3lfaXRhYmxlW1hY X0xBU1RfT1BDT0RFXSA9IHsKLSNpbmNsdWRlICJkZWN0cmVlX2dlbmVyYXRlZC5oLmluYyIKLX07 Ci0KLSN1bmRlZiBERUNPREVfT1BJTkZPCi0jdW5kZWYgREVDT0RFX01BVENIX0lORk8KLSN1bmRl ZiBERUNPREVfTEVHQUNZX01BVENIX0lORk8KLSN1bmRlZiBERUNPREVfRU5EX1RBQkxFCi0jdW5k ZWYgSU5WQUxJRAotI3VuZGVmIFRFUk1JTkFMCi0jdW5kZWYgU1VCSU5TTlMKLSN1bmRlZiBFWFRT UEFDRQotI3VuZGVmIFRBQkxFX0xJTksKLSN1bmRlZiBERUNPREVfTkVXX1RBQkxFCi0jdW5kZWYg REVDT0RFX1NFUEFSQVRPUl9CSVRTCi0KLXZvaWQgZGVjb2RlX2luaXQodm9pZCkKLXsKLSAgICBk ZWNvZGVfZXh0X2luaXQoKTsKLX0KLQogdm9pZCBkZWNvZGVfc2VuZF9pbnNuX3RvKFBhY2tldCAq cGFja2V0LCBpbnQgc3RhcnQsIGludCBuZXdsb2MpCiB7CiAgICAgSW5zbiB0bXBpbnNuOwpAQCAt NTg3LDcgKzQxOCw2IEBAIGFwcGx5X2V4dGVuZGVyKFBhY2tldCAqcGt0LCBpbnQgaSwgdWludDMy X3QgZXh0ZW5kZXIpCiAgICAgdWludDMyX3QgYmFzZV9pbW1lZDsKIAogICAgIGltbWVkX251bSA9 IHBrdC0+aW5zbltpXS53aGljaF9leHRlbmRlZDsKLSAgICBnX2Fzc2VydChpbW1lZF9udW0gPT0g b3Bjb2RlX3doaWNoX2ltbWVkaWF0ZV9pc19leHRlbmRlZChwa3QtPmluc25baV0ub3Bjb2RlKSk7 CiAgICAgYmFzZV9pbW1lZCA9IHBrdC0+aW5zbltpXS5pbW1lZFtpbW1lZF9udW1dOwogCiAgICAg cGt0LT5pbnNuW2ldLmltbWVkW2ltbWVkX251bV0gPSBleHRlbmRlciB8IGZaWFROKDYsIDMyLCBi YXNlX2ltbWVkKTsKQEAgLTYzMCwxNzQgKzQ2MCw2IEBAIHN0YXRpYyBTbG90TWFzayBnZXRfdmFs aWRfc2xvdHMoY29uc3QgUGFja2V0ICpwa3QsIHVuc2lnbmVkIGludCBzbG90KQogICAgIH0KIH0K IAotI2RlZmluZSBERUNPREVfTkVXX1RBQkxFKFRBRywgU0laRSwgV0hBVE5PVCkgICAgIC8qIE5P VEhJTkcgKi8KLSNkZWZpbmUgVEFCTEVfTElOSyhUQUJMRSkgICAgICAgICAgICAgICAgICAgICAg ICAvKiBOT1RISU5HICovCi0jZGVmaW5lIFRFUk1JTkFMKFRBRywgRU5DKSAgICAgICAgICAgICAg ICAgICAgICAgLyogTk9USElORyAqLwotI2RlZmluZSBTVUJJTlNOUyhUQUcsIENMQVNTQSwgQ0xB U1NCLCBFTkMpICAgICAgIC8qIE5PVEhJTkcgKi8KLSNkZWZpbmUgRVhUU1BBQ0UoVEFHLCBFTkMp ICAgICAgICAgICAgICAgICAgICAgICAvKiBOT1RISU5HICovCi0jZGVmaW5lIElOVkFMSUQoKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTk9USElORyAqLwotI2RlZmluZSBERUNP REVfRU5EX1RBQkxFKC4uLikgICAgICAgICAgICAgICAgICAgIC8qIE5PVEhJTkcgKi8KLSNkZWZp bmUgREVDT0RFX01BVENIX0lORk8oLi4uKSAgICAgICAgICAgICAgICAgICAvKiBOT1RISU5HICov Ci0jZGVmaW5lIERFQ09ERV9MRUdBQ1lfTUFUQ0hfSU5GTyguLi4pICAgICAgICAgICAgLyogTk9U SElORyAqLwotCi0jZGVmaW5lIERFQ09ERV9SRUcoUkVHTk8sIFdJRFRILCBTVEFSVEJJVCkgXAot ICAgIGluc24tPnJlZ25vW1JFR05PXSA9ICgoZW5jb2RpbmcgPj4gU1RBUlRCSVQpICYgKCgxIDw8 IFdJRFRIKSAtIDEpKTsKLQotI2RlZmluZSBERUNPREVfSU1QTF9SRUcoUkVHTk8sIFZBTCkgXAot ICAgIGluc24tPnJlZ25vW1JFR05PXSA9IFZBTDsKLQotI2RlZmluZSBERUNPREVfSU1NKElNTU5P LCBXSURUSCwgU1RBUlRCSVQsIFZBTFNUQVJUKSBcCi0gICAgaW5zbi0+aW1tZWRbSU1NTk9dIHw9 ICgoKGVuY29kaW5nID4+IFNUQVJUQklUKSAmICgoMSA8PCBXSURUSCkgLSAxKSkpIDw8IFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgKFZBTFNUQVJUKTsKLQotI2RlZmluZSBERUNPREVfSU1N X1NYVChJTU1OTywgV0lEVEgpIFwKLSAgICBpbnNuLT5pbW1lZFtJTU1OT10gPSAoKCgoaW50MzJf dClpbnNuLT5pbW1lZFtJTU1OT10pIDw8ICgzMiAtIFdJRFRIKSkgPj4gXAotICAgICAgICAgICAg ICAgICAgICAgICAgICAoMzIgLSBXSURUSCkpOwotCi0jZGVmaW5lIERFQ09ERV9JTU1fTkVHKElN TU5PLCBXSURUSCkgXAotICAgIGluc24tPmltbWVkW0lNTU5PXSA9IC1pbnNuLT5pbW1lZFtJTU1O T107Ci0KLSNkZWZpbmUgREVDT0RFX0lNTV9TSElGVChJTU1OTywgU0hBTVQpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmICgoIWluc24tPmV4dGVuc2lvbl92YWxpZCkg fHwgXAotICAgICAgICAoaW5zbi0+d2hpY2hfZXh0ZW5kZWQgIT0gSU1NTk8pKSB7IFwKLSAgICAg ICAgaW5zbi0+aW1tZWRbSU1NTk9dIDw8PSBTSEFNVDsgXAotICAgIH0KLQotI2RlZmluZSBERUNP REVfT1BJTkZPKFRBRywgQkVIKSBcCi0gICAgY2FzZSBUQUc6IFwKLSAgICAgICAgeyBCRUggIH0g XAotICAgICAgICBicmVhazsgXAotCi0vKgotICogRmlsbCBpbiB0aGUgb3BlcmFuZHMgb2YgdGhl IGluc3RydWN0aW9uCi0gKiBkZWN0cmVlX2dlbmVyYXRlZC5oLmluYyBoYXMgYSBERUNPREVfT1BJ TkZPIGVudHJ5IGZvciBlYWNoIG9wY29kZQotICogRm9yIGV4YW1wbGUsCi0gKiAgICAgREVDT0RF X09QSU5GTyhBMl9hZGRpLAotICogICAgICAgICAgREVDT0RFX1JFRygwLDUsMCkKLSAqICAgICAg ICAgIERFQ09ERV9SRUcoMSw1LDE2KQotICogICAgICAgICAgREVDT0RFX0lNTSgwLDcsMjEsOSkK LSAqICAgICAgICAgIERFQ09ERV9JTU0oMCw5LDUsMCkKLSAqICAgICAgICAgIERFQ09ERV9JTU1f U1hUKDAsMTYpCi0gKiB3aXRoIHRoZSBtYWNyb3MgZGVmaW5lZCBhYm92ZSwgd2UnbGwgZmlsbCBp biBhIHN3aXRjaCBzdGF0ZW1lbnQKLSAqIHdoZXJlIGVhY2ggY2FzZSBpcyBhbiBvcGNvZGUgdGFn LgotICovCi1zdGF0aWMgdm9pZAotZGVjb2RlX29wKEluc24gKmluc24sIE9wY29kZSB0YWcsIHVp bnQzMl90IGVuY29kaW5nKQotewotICAgIGluc24tPmltbWVkWzBdID0gMDsKLSAgICBpbnNuLT5p bW1lZFsxXSA9IDA7Ci0gICAgaW5zbi0+b3Bjb2RlID0gdGFnOwotICAgIGlmIChpbnNuLT5leHRl bnNpb25fdmFsaWQpIHsKLSAgICAgICAgaW5zbi0+d2hpY2hfZXh0ZW5kZWQgPSBvcGNvZGVfd2hp Y2hfaW1tZWRpYXRlX2lzX2V4dGVuZGVkKHRhZyk7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0YWcp IHsKLSNpbmNsdWRlICJkZWN0cmVlX2dlbmVyYXRlZC5oLmluYyIKLSAgICBkZWZhdWx0OgotICAg ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpbnNuLT5nZW5lcmF0ZSA9IG9wY29kZV9nZW5wdHJb dGFnXTsKLQotICAgIGluc24tPmljbGFzcyA9IGljbGFzc19iaXRzKGVuY29kaW5nKTsKLX0KLQot I3VuZGVmIERFQ09ERV9SRUcKLSN1bmRlZiBERUNPREVfSU1QTF9SRUcKLSN1bmRlZiBERUNPREVf SU1NCi0jdW5kZWYgREVDT0RFX0lNTV9TSElGVAotI3VuZGVmIERFQ09ERV9PUElORk8KLSN1bmRl ZiBERUNPREVfTUFUQ0hfSU5GTwotI3VuZGVmIERFQ09ERV9MRUdBQ1lfTUFUQ0hfSU5GTwotI3Vu ZGVmIERFQ09ERV9FTkRfVEFCTEUKLSN1bmRlZiBJTlZBTElECi0jdW5kZWYgVEVSTUlOQUwKLSN1 bmRlZiBTVUJJTlNOUwotI3VuZGVmIEVYVFNQQUNFCi0jdW5kZWYgVEFCTEVfTElOSwotI3VuZGVm IERFQ09ERV9ORVdfVEFCTEUKLSN1bmRlZiBERUNPREVfU0VQQVJBVE9SX0JJVFMKLQotc3RhdGlj IHVuc2lnbmVkIGludAotZGVjb2RlX3N1Ymluc25fdGFibGV3YWxrKEluc24gKmluc24sIGNvbnN0 IERlY3RyZWVUYWJsZSAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZW5jb2RpbmcpCi17Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0gICAgT3Bjb2RlIG9wYzsKLSAgICBp ZiAodGFibGUtPmxvb2t1cF9mdW5jdGlvbikgewotICAgICAgICBpID0gdGFibGUtPmxvb2t1cF9m dW5jdGlvbih0YWJsZS0+c3RhcnRiaXQsIHRhYmxlLT53aWR0aCwgZW5jb2RpbmcpOwotICAgIH0g ZWxzZSB7Ci0gICAgICAgIGkgPSBleHRyYWN0MzIoZW5jb2RpbmcsIHRhYmxlLT5zdGFydGJpdCwg dGFibGUtPndpZHRoKTsKLSAgICB9Ci0gICAgaWYgKHRhYmxlLT50YWJsZVtpXS50eXBlID09IERF Q1RSRUVfVEFCTEVfTElOSykgewotICAgICAgICByZXR1cm4gZGVjb2RlX3N1Ymluc25fdGFibGV3 YWxrKGluc24sIHRhYmxlLT50YWJsZVtpXS50YWJsZV9saW5rLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKTsKLSAgICB9IGVsc2UgaWYgKHRhYmxlLT50 YWJsZVtpXS50eXBlID09IERFQ1RSRUVfVEVSTUlOQUwpIHsKLSAgICAgICAgb3BjID0gdGFibGUt PnRhYmxlW2ldLm9wY29kZTsKLSAgICAgICAgaWYgKChlbmNvZGluZyAmIGRlY29kZV9pdGFibGVb b3BjXS5tYXNrKSAhPSBkZWNvZGVfaXRhYmxlW29wY10ubWF0Y2gpIHsKLSAgICAgICAgICAgIHJl dHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGRlY29kZV9vcChpbnNuLCBvcGMsIGVuY29kaW5n KTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0g ICAgfQotfQotCi1zdGF0aWMgdW5zaWduZWQgaW50IGdldF9pbnNuX2EodWludDMyX3QgZW5jb2Rp bmcpCi17Ci0gICAgcmV0dXJuIGV4dHJhY3QzMihlbmNvZGluZywgMCwgMTMpOwotfQotCi1zdGF0 aWMgdW5zaWduZWQgaW50IGdldF9pbnNuX2IodWludDMyX3QgZW5jb2RpbmcpCi17Ci0gICAgcmV0 dXJuIGV4dHJhY3QzMihlbmNvZGluZywgMTYsIDEzKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGlu dAotZGVjb2RlX2luc25zX3RhYmxld2FsayhJbnNuICppbnNuLCBjb25zdCBEZWN0cmVlVGFibGUg KnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBlbmNvZGluZykKLXsKLSAg ICB1bnNpZ25lZCBpbnQgaTsKLSAgICB1bnNpZ25lZCBpbnQgYSwgYjsKLSAgICBPcGNvZGUgb3Bj OwotICAgIGlmICh0YWJsZS0+bG9va3VwX2Z1bmN0aW9uKSB7Ci0gICAgICAgIGkgPSB0YWJsZS0+ bG9va3VwX2Z1bmN0aW9uKHRhYmxlLT5zdGFydGJpdCwgdGFibGUtPndpZHRoLCBlbmNvZGluZyk7 Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaSA9IGV4dHJhY3QzMihlbmNvZGluZywgdGFibGUtPnN0 YXJ0Yml0LCB0YWJsZS0+d2lkdGgpOwotICAgIH0KLSAgICBpZiAodGFibGUtPnRhYmxlW2ldLnR5 cGUgPT0gREVDVFJFRV9UQUJMRV9MSU5LKSB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVfaW5zbnNf dGFibGV3YWxrKGluc24sIHRhYmxlLT50YWJsZVtpXS50YWJsZV9saW5rLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyk7Ci0gICAgfSBlbHNlIGlmICh0YWJs ZS0+dGFibGVbaV0udHlwZSA9PSBERUNUUkVFX1NVQklOU05TKSB7Ci0gICAgICAgIGEgPSBnZXRf aW5zbl9hKGVuY29kaW5nKTsKLSAgICAgICAgYiA9IGdldF9pbnNuX2IoZW5jb2RpbmcpOwotICAg ICAgICBiID0gZGVjb2RlX3N1Ymluc25fdGFibGV3YWxrKGluc24sIHRhYmxlLT50YWJsZVtpXS50 YWJsZV9saW5rX2IsIGIpOwotICAgICAgICBhID0gZGVjb2RlX3N1Ymluc25fdGFibGV3YWxrKGlu c24gKyAxLCB0YWJsZS0+dGFibGVbaV0udGFibGVfbGluaywgYSk7Ci0gICAgICAgIGlmICgoYSA9 PSAwKSB8fCAoYiA9PSAwKSkgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAg ICAgICAgcmV0dXJuIDI7Ci0gICAgfSBlbHNlIGlmICh0YWJsZS0+dGFibGVbaV0udHlwZSA9PSBE RUNUUkVFX1RFUk1JTkFMKSB7Ci0gICAgICAgIG9wYyA9IHRhYmxlLT50YWJsZVtpXS5vcGNvZGU7 Ci0gICAgICAgIGlmICgoZW5jb2RpbmcgJiBkZWNvZGVfaXRhYmxlW29wY10ubWFzaykgIT0gZGVj b2RlX2l0YWJsZVtvcGNdLm1hdGNoKSB7Ci0gICAgICAgICAgICBpZiAoKGVuY29kaW5nICYgZGVj b2RlX2xlZ2FjeV9pdGFibGVbb3BjXS5tYXNrKSAhPQotICAgICAgICAgICAgICAgIGRlY29kZV9s ZWdhY3lfaXRhYmxlW29wY10ubWF0Y2gpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAg ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBkZWNvZGVfb3AoaW5zbiwgb3BjLCBlbmNv ZGluZyk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0gZWxzZSBpZiAodGFibGUtPnRhYmxlW2ld LnR5cGUgPT0gREVDVFJFRV9FWFRTUEFDRSkgewotICAgICAgICAvKgotICAgICAgICAgKiBGb3Ig bm93LCBIVlggd2lsbCBiZSB0aGUgb25seSBjb3Byb2MKLSAgICAgICAgICovCi0gICAgICAgIHJl dHVybiBkZWNvZGVfaW5zbnNfdGFibGV3YWxrKGluc24sIGV4dF90cmVlc1tFWFRfSURYX21tdmVj XSwgZW5jb2RpbmcpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0K LQogLyoKICAqIFNlY3Rpb24gMTAuMyBvZiB0aGUgSGV4YWdvbiBWNzMgUHJvZ3JhbW1lcidzIFJl ZmVyZW5jZSBNYW51YWwKICAqCkBAIC04NTgsNyArNTIwLDYgQEAgc3RhdGljIHVpbnQxNl90IGdl dF9zbG90MV9zdWJpbnNuKHVpbnQzMl90IGVuY29kaW5nKQogc3RhdGljIHVuc2lnbmVkIGludAog ZGVjb2RlX2luc25zKERpc2FzQ29udGV4dCAqY3R4LCBJbnNuICppbnNuLCB1aW50MzJfdCBlbmNv ZGluZykKIHsKLSAgICBjb25zdCBEZWN0cmVlVGFibGUgKnRhYmxlOwogICAgIGlmIChwYXJzZV9i aXRzKGVuY29kaW5nKSAhPSAwKSB7CiAgICAgICAgIGlmIChkZWNvZGVfbm9ybWFsKGN0eCwgZW5j b2RpbmcpIHx8CiAgICAgICAgICAgICBkZWNvZGVfaHZ4KGN0eCwgZW5jb2RpbmcpKSB7CkBAIC04 NjYsOCArNTI3LDYgQEAgZGVjb2RlX2luc25zKERpc2FzQ29udGV4dCAqY3R4LCBJbnNuICppbnNu LCB1aW50MzJfdCBlbmNvZGluZykKICAgICAgICAgICAgIGluc24tPmljbGFzcyA9IGljbGFzc19i aXRzKGVuY29kaW5nKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAg IC8qIFN0YXJ0IHdpdGggUFAgdGFibGUgLSAzMiBiaXQgaW5zdHJ1Y3Rpb25zICovCi0gICAgICAg IHRhYmxlID0gJmRlY3RyZWVfdGFibGVfREVDT0RFX1JPT1RfMzI7CiAgICAgICAgIGdfYXNzZXJ0 X25vdF9yZWFjaGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdWludDMyX3QgaWNsYXNzID0g Z2V0X2R1cGxleF9pY2xhc3MoZW5jb2RpbmcpOwpAQCAtODg5LDExICs1NDgsOCBAQCBkZWNvZGVf aW5zbnMoRGlzYXNDb250ZXh0ICpjdHgsIEluc24gKmluc24sIHVpbnQzMl90IGVuY29kaW5nKQog ICAgICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAg ICAgIC8qIHN0YXJ0IHdpdGggRUUgdGFibGUgLSBkdXBsZXggaW5zdHJ1Y3Rpb25zICovCi0gICAg ICAgIHRhYmxlID0gJmRlY3RyZWVfdGFibGVfREVDT0RFX1JPT1RfRUU7CiAgICAgICAgIGdfYXNz ZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAgfQotICAgIHJldHVybiBkZWNvZGVfaW5zbnNfdGFibGV3 YWxrKGluc24sIHRhYmxlLCBlbmNvZGluZyk7CiB9CiAKIHN0YXRpYyB2b2lkIGRlY29kZV9hZGRf ZW5kbG9vcF9pbnNuKEluc24gKmluc24sIGludCBsb29wbnVtKQpkaWZmIC0tZ2l0IGEvdGFyZ2V0 L2hleGFnb24vZGVjdHJlZS5weSBiL3RhcmdldC9oZXhhZ29uL2RlY3RyZWUucHkKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNzU1CmluZGV4IDNiMzI5NDhhMDQuLjAwMDAwMDAwMDAKLS0tIGEvdGFyZ2V0 L2hleGFnb24vZGVjdHJlZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQwMyArMCwwIEBACi0jIS91 c3IvYmluL2VudiBweXRob24zCi0KLSMjCi0jIyAgQ29weXJpZ2h0KGMpIDIwMTktMjAyMyBRdWFs Y29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIyMKLSMj ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotIyMgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIyAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMjICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIyMKLSMjICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMjICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot IyMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSMjICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotIyMKLSMjICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotIyMgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0jIwotCi1pbXBvcnQgaW8KLWlt cG9ydCByZQotCi1pbXBvcnQgc3lzCi1pbXBvcnQgaXNldAotCi1lbmNzID0gewotICAgIHRhZzog IiIuam9pbihyZXZlcnNlZChpc2V0LmlzZXRbdGFnXVsiZW5jIl0ucmVwbGFjZSgiICIsICIiKSkp Ci0gICAgZm9yIHRhZyBpbiBpc2V0LnRhZ3MKLSAgICBpZiBpc2V0LmlzZXRbdGFnXVsiZW5jIl0g IT0gIk1JU1NJTkcgRU5DT0RJTkciCi19Ci0KLWVuY19jbGFzc2VzID0gc2V0KFtpc2V0LmlzZXRb dGFnXVsiZW5jX2NsYXNzIl0gZm9yIHRhZyBpbiBlbmNzLmtleXMoKV0pCi1zdWJpbnNuX2VuY19j bGFzc2VzID0gc2V0KAotICAgIFtlbmNfY2xhc3MgZm9yIGVuY19jbGFzcyBpbiBlbmNfY2xhc3Nl cyBpZiBlbmNfY2xhc3Muc3RhcnRzd2l0aCgiU1VCSU5TTl8iKV0KLSkKLWV4dF9lbmNfY2xhc3Nl cyA9IHNldCgKLSAgICBbCi0gICAgICAgIGVuY19jbGFzcwotICAgICAgICBmb3IgZW5jX2NsYXNz IGluIGVuY19jbGFzc2VzCi0gICAgICAgIGlmIGVuY19jbGFzcyBub3QgaW4gKCJOT1JNQUwiLCAi MTZCSVQiKSBhbmQgbm90IGVuY19jbGFzcy5zdGFydHN3aXRoKCJTVUJJTlNOXyIpCi0gICAgXQot KQotCi10cnk6Ci0gICAgc3ViaW5zbl9ncm91cGluZ3MgPSBpc2V0LnN1Ymluc25fZ3JvdXBpbmdz Ci1leGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgc3ViaW5zbl9ncm91cGluZ3MgPSB7fQotCi1m b3IgdGFnLCBzdWJpbnNuX2dyb3VwaW5nIGluIHN1Ymluc25fZ3JvdXBpbmdzLml0ZW1zKCk6Ci0g ICAgZW5jc1t0YWddID0gIiIuam9pbihyZXZlcnNlZChzdWJpbnNuX2dyb3VwaW5nWyJlbmMiXS5y ZXBsYWNlKCIgIiwgIiIpKSkKLQotZGVjdHJlZV9ub3JtYWwgPSB7ImxlYXZlcyI6IHNldCgpfQot ZGVjdHJlZV8xNmJpdCA9IHsibGVhdmVzIjogc2V0KCl9Ci1kZWN0cmVlX3N1Ymluc25fZ3JvdXBp bmdzID0geyJsZWF2ZXMiOiBzZXQoKX0KLWRlY3RyZWVfc3ViaW5zbnMgPSB7bmFtZTogeyJsZWF2 ZXMiOiBzZXQoKX0gZm9yIG5hbWUgaW4gc3ViaW5zbl9lbmNfY2xhc3Nlc30KLWRlY3RyZWVfZXh0 ZW5zaW9ucyA9IHtuYW1lOiB7ImxlYXZlcyI6IHNldCgpfSBmb3IgbmFtZSBpbiBleHRfZW5jX2Ns YXNzZXN9Ci0KLWZvciB0YWcgaW4gZW5jcy5rZXlzKCk6Ci0gICAgaWYgdGFnIGluIHN1Ymluc25f Z3JvdXBpbmdzOgotICAgICAgICBkZWN0cmVlX3N1Ymluc25fZ3JvdXBpbmdzWyJsZWF2ZXMiXS5h ZGQodGFnKQotICAgICAgICBjb250aW51ZQotICAgIGVuY19jbGFzcyA9IGlzZXQuaXNldFt0YWdd WyJlbmNfY2xhc3MiXQotICAgIGlmIGVuY19jbGFzcy5zdGFydHN3aXRoKCJTVUJJTlNOXyIpOgot ICAgICAgICBpZiBsZW4oZW5jc1t0YWddKSAhPSAzMjoKLSAgICAgICAgICAgIGVuY3NbdGFnXSA9 IGVuY3NbdGFnXSArICIwIiAqICgzMiAtIGxlbihlbmNzW3RhZ10pKQotICAgICAgICBkZWN0cmVl X3N1Ymluc25zW2VuY19jbGFzc11bImxlYXZlcyJdLmFkZCh0YWcpCi0gICAgZWxpZiBlbmNfY2xh c3MgPT0gIjE2QklUIjoKLSAgICAgICAgaWYgbGVuKGVuY3NbdGFnXSkgIT0gMTY6Ci0gICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1RhZyAie30iIGhhcyBlbmNf Y2xhc3MgInt9IiBhbmQgbm90IGFuIGVuY29kaW5nICcKLSAgICAgICAgICAgICAgICArICJ3aWR0 aCBvZiAxNiBiaXRzISIuZm9ybWF0KHRhZywgZW5jX2NsYXNzKQotICAgICAgICAgICAgKQotICAg ICAgICBkZWN0cmVlXzE2Yml0WyJsZWF2ZXMiXS5hZGQodGFnKQotICAgIGVsc2U6Ci0gICAgICAg IGlmIGxlbihlbmNzW3RhZ10pICE9IDMyOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAot ICAgICAgICAgICAgICAgICdUYWcgInt9IiBoYXMgZW5jX2NsYXNzICJ7fSIgYW5kIG5vdCBhbiBl bmNvZGluZyAnCi0gICAgICAgICAgICAgICAgKyAid2lkdGggb2YgMzIgYml0cyEiLmZvcm1hdCh0 YWcsIGVuY19jbGFzcykKLSAgICAgICAgICAgICkKLSAgICAgICAgaWYgZW5jX2NsYXNzID09ICJO T1JNQUwiOgotICAgICAgICAgICAgZGVjdHJlZV9ub3JtYWxbImxlYXZlcyJdLmFkZCh0YWcpCi0g ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkZWN0cmVlX2V4dGVuc2lvbnNbZW5jX2NsYXNzXVsi bGVhdmVzIl0uYWRkKHRhZykKLQotZmFrZXRhZ3MgPSBzZXQoKQotZm9yIHRhZywgZW5jIGluIGlz ZXQuZW5jX2V4dF9zcGFjZXMuaXRlbXMoKToKLSAgICBmYWtldGFncy5hZGQodGFnKQotICAgIGVu Y3NbdGFnXSA9ICIiLmpvaW4ocmV2ZXJzZWQoZW5jLnJlcGxhY2UoIiAiLCAiIikpKQotICAgIGRl Y3RyZWVfbm9ybWFsWyJsZWF2ZXMiXS5hZGQodGFnKQotCi1mYWtldGFncyB8PSBzZXQoc3ViaW5z bl9ncm91cGluZ3Mua2V5cygpKQotCi0KLWRlZiBldmVyeV9iaXRfY291bnRzKGJpdHNldCk6Ci0g ICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKG5leHQoaXRlcihiaXRzZXQpKSkpOgotICAgICAgICBp ZiBsZW4oc2V0KFtiaXRzWzppXSArIGJpdHNbaSArIDEgOl0gZm9yIGJpdHMgaW4gYml0c2V0XSkp ID09IGxlbihiaXRzZXQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIFRy dWUKLQotCi1kZWYgYXV0b19zZXBhcmF0ZShub2RlKToKLSAgICB0YWdzID0gbm9kZVsibGVhdmVz Il0KLSAgICBpZiBsZW4odGFncykgPD0gMToKLSAgICAgICAgcmV0dXJuCi0gICAgZW5jX3dpZHRo ID0gbGVuKGVuY3NbbmV4dChpdGVyKHRhZ3MpKV0pCi0gICAgb3Bjb2RlX2JpdF9mb3JfYWxsID0g WwotICAgICAgICBhbGwoW2VuY3NbdGFnXVtpXSBpbiAiMDEiIGZvciB0YWcgaW4gdGFnc10pIGZv ciBpIGluIHJhbmdlKGVuY193aWR0aCkKLSAgICBdCi0gICAgb3Bjb2RlX2JpdF9pc18wX2Zvcl9h bGwgPSBbCi0gICAgICAgIG9wY29kZV9iaXRfZm9yX2FsbFtpXSBhbmQgYWxsKFtlbmNzW3RhZ11b aV0gPT0gIjAiIGZvciB0YWcgaW4gdGFnc10pCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGVuY193 aWR0aCkKLSAgICBdCi0gICAgb3Bjb2RlX2JpdF9pc18xX2Zvcl9hbGwgPSBbCi0gICAgICAgIG9w Y29kZV9iaXRfZm9yX2FsbFtpXSBhbmQgYWxsKFtlbmNzW3RhZ11baV0gPT0gIjEiIGZvciB0YWcg aW4gdGFnc10pCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGVuY193aWR0aCkKLSAgICBdCi0gICAg ZGlmZmVyZW50aWF0b3Jfb3Bjb2RlX2JpdCA9IFsKLSAgICAgICAgb3Bjb2RlX2JpdF9mb3JfYWxs W2ldCi0gICAgICAgIGFuZCBub3QgKG9wY29kZV9iaXRfaXNfMF9mb3JfYWxsW2ldIG9yIG9wY29k ZV9iaXRfaXNfMV9mb3JfYWxsW2ldKQotICAgICAgICBmb3IgaSBpbiByYW5nZShlbmNfd2lkdGgp Ci0gICAgXQotICAgIGJlc3Rfd2lkdGggPSAwCi0gICAgZm9yIHdpZHRoIGluIHJhbmdlKDQsIDAs IC0xKToKLSAgICAgICAgZm9yIGxzYiBpbiByYW5nZShlbmNfd2lkdGggLSB3aWR0aCwgLTEsIC0x KToKLSAgICAgICAgICAgIGJpdHNldCA9IHNldChbZW5jc1t0YWddW2xzYiA6IGxzYiArIHdpZHRo XSBmb3IgdGFnIGluIHRhZ3NdKQotICAgICAgICAgICAgaWYgYWxsKGRpZmZlcmVudGlhdG9yX29w Y29kZV9iaXRbbHNiIDogbHNiICsgd2lkdGhdKSBhbmQgKAotICAgICAgICAgICAgICAgIGxlbihi aXRzZXQpID09IGxlbih0YWdzKSBvciBldmVyeV9iaXRfY291bnRzKGJpdHNldCkKLSAgICAgICAg ICAgICk6Ci0gICAgICAgICAgICAgICAgYmVzdF93aWR0aCA9IHdpZHRoCi0gICAgICAgICAgICAg ICAgYmVzdF9sc2IgPSBsc2IKLSAgICAgICAgICAgICAgICBjYXVnaHRfYWxsX3RhZ3MgPSBsZW4o Yml0c2V0KSA9PSBsZW4odGFncykKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBi ZXN0X3dpZHRoICE9IDA6Ci0gICAgICAgICAgICBicmVhawotICAgIGlmIGJlc3Rfd2lkdGggPT0g MDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgIkNvdWxkIG5vdCBmaW5k IGEgd2F5IHRvIGRpZmZlcmVudGlhdGUgdGhlIGVuY29kaW5ncyAiCi0gICAgICAgICAgICArICJv ZiB0aGUgZm9sbG93aW5nIHRhZ3M6XG57fSIuZm9ybWF0KCJcbiIuam9pbih0YWdzKSkKLSAgICAg ICAgKQotICAgIGlmIGNhdWdodF9hbGxfdGFnczoKLSAgICAgICAgZm9yIHdpZHRoIGluIHJhbmdl KDEsIGJlc3Rfd2lkdGgpOgotICAgICAgICAgICAgZm9yIGxzYiBpbiByYW5nZShlbmNfd2lkdGgg LSB3aWR0aCwgLTEsIC0xKToKLSAgICAgICAgICAgICAgICBiaXRzZXQgPSBzZXQoW2VuY3NbdGFn XVtsc2IgOiBsc2IgKyB3aWR0aF0gZm9yIHRhZyBpbiB0YWdzXSkKLSAgICAgICAgICAgICAgICBp ZiBhbGwoZGlmZmVyZW50aWF0b3Jfb3Bjb2RlX2JpdFtsc2IgOiBsc2IgKyB3aWR0aF0pIGFuZCBs ZW4oCi0gICAgICAgICAgICAgICAgICAgIGJpdHNldAotICAgICAgICAgICAgICAgICkgPT0gbGVu KHRhZ3MpOgotICAgICAgICAgICAgICAgICAgICBiZXN0X3dpZHRoID0gd2lkdGgKLSAgICAgICAg ICAgICAgICAgICAgYmVzdF9sc2IgPSBsc2IKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAg ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGJy ZWFrCi0gICAgbm9kZVsic2VwYXJhdG9yX2xzYiJdID0gYmVzdF9sc2IKLSAgICBub2RlWyJzZXBh cmF0b3Jfd2lkdGgiXSA9IGJlc3Rfd2lkdGgKLSAgICBub2RlWyJjaGlsZHJlbiJdID0gW10KLSAg ICBmb3IgdmFsdWUgaW4gcmFuZ2UoMioqYmVzdF93aWR0aCk6Ci0gICAgICAgIGNoaWxkID0ge30K LSAgICAgICAgYml0cyA9ICIiLmpvaW4ocmV2ZXJzZWQoIns6MHt9Yn0iLmZvcm1hdCh2YWx1ZSwg YmVzdF93aWR0aCkpKQotICAgICAgICBjaGlsZFsibGVhdmVzIl0gPSBzZXQoCi0gICAgICAgICAg ICBbdGFnIGZvciB0YWcgaW4gdGFncyBpZiBlbmNzW3RhZ11bYmVzdF9sc2IgOiBiZXN0X2xzYiAr IGJlc3Rfd2lkdGhdID09IGJpdHNdCi0gICAgICAgICkKLSAgICAgICAgbm9kZVsiY2hpbGRyZW4i XS5hcHBlbmQoY2hpbGQpCi0gICAgZm9yIGNoaWxkIGluIG5vZGVbImNoaWxkcmVuIl06Ci0gICAg ICAgIGF1dG9fc2VwYXJhdGUoY2hpbGQpCi0KLQotYXV0b19zZXBhcmF0ZShkZWN0cmVlX25vcm1h bCkKLWF1dG9fc2VwYXJhdGUoZGVjdHJlZV8xNmJpdCkKLWlmIHN1Ymluc25fZ3JvdXBpbmdzOgot ICAgIGF1dG9fc2VwYXJhdGUoZGVjdHJlZV9zdWJpbnNuX2dyb3VwaW5ncykKLWZvciBkZWN0cmVl X3N1Ymluc24gaW4gZGVjdHJlZV9zdWJpbnNucy52YWx1ZXMoKToKLSAgICBhdXRvX3NlcGFyYXRl KGRlY3RyZWVfc3ViaW5zbikKLWZvciBkZWN0cmVlX2V4dCBpbiBkZWN0cmVlX2V4dGVuc2lvbnMu dmFsdWVzKCk6Ci0gICAgYXV0b19zZXBhcmF0ZShkZWN0cmVlX2V4dCkKLQotZm9yIHRhZyBpbiBm YWtldGFnczoKLSAgICBkZWwgZW5jc1t0YWddCi0KLQotZGVmIHRhYmxlX25hbWUocGFyZW50cywg bm9kZSk6Ci0gICAgcGF0aCA9IHBhcmVudHMgKyBbbm9kZV0KLSAgICByb290ID0gcGF0aFswXQot ICAgIHRhZyA9IG5leHQoaXRlcihub2RlWyJsZWF2ZXMiXSkpCi0gICAgaWYgdGFnIGluIHN1Ymlu c25fZ3JvdXBpbmdzOgotICAgICAgICBlbmNfd2lkdGggPSBsZW4oc3ViaW5zbl9ncm91cGluZ3Nb dGFnXVsiZW5jIl0ucmVwbGFjZSgiICIsICIiKSkKLSAgICBlbHNlOgotICAgICAgICB0YWcgPSBu ZXh0KGl0ZXIobm9kZVsibGVhdmVzIl0gLSBmYWtldGFncykpCi0gICAgICAgIGVuY193aWR0aCA9 IGxlbihlbmNzW3RhZ10pCi0gICAgZGV0ZXJtaW5pbmdfYml0cyA9IFsiXyJdICogZW5jX3dpZHRo Ci0gICAgZm9yIHBhcmVudCwgY2hpbGQgaW4gemlwKHBhdGhbOi0xXSwgcGF0aFsxOl0pOgotICAg ICAgICBsc2IgPSBwYXJlbnRbInNlcGFyYXRvcl9sc2IiXQotICAgICAgICB3aWR0aCA9IHBhcmVu dFsic2VwYXJhdG9yX3dpZHRoIl0KLSAgICAgICAgdmFsdWUgPSBwYXJlbnRbImNoaWxkcmVuIl0u aW5kZXgoY2hpbGQpCi0gICAgICAgIGRldGVybWluaW5nX2JpdHNbbHNiIDogbHNiICsgd2lkdGhd ID0gbGlzdCgKLSAgICAgICAgICAgIHJldmVyc2VkKCJ7OjB7fWJ9Ii5mb3JtYXQodmFsdWUsIHdp ZHRoKSkKLSAgICAgICAgKQotICAgIGlmIHRhZyBpbiBzdWJpbnNuX2dyb3VwaW5nczoKLSAgICAg ICAgbmFtZSA9ICJERUNPREVfUk9PVF9FRSIKLSAgICBlbHNlOgotICAgICAgICBlbmNfY2xhc3Mg PSBpc2V0LmlzZXRbdGFnXVsiZW5jX2NsYXNzIl0KLSAgICAgICAgaWYgZW5jX2NsYXNzIGluIGV4 dF9lbmNfY2xhc3NlczoKLSAgICAgICAgICAgIG5hbWUgPSAiREVDT0RFX0VYVF97fSIuZm9ybWF0 KGVuY19jbGFzcykKLSAgICAgICAgZWxpZiBlbmNfY2xhc3MgaW4gc3ViaW5zbl9lbmNfY2xhc3Nl czoKLSAgICAgICAgICAgIG5hbWUgPSAiREVDT0RFX1NVQklOU05fe30iLmZvcm1hdChlbmNfY2xh c3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gIkRFQ09ERV9ST09UX3t9Ii5m b3JtYXQoZW5jX3dpZHRoKQotICAgIGlmIG5vZGUgIT0gcm9vdDoKLSAgICAgICAgbmFtZSArPSAi XyIgKyAiIi5qb2luKHJldmVyc2VkKGRldGVybWluaW5nX2JpdHMpKQotICAgIHJldHVybiBuYW1l Ci0KLQotZGVmIHByaW50X25vZGUoZiwgbm9kZSwgcGFyZW50cyk6Ci0gICAgaWYgbGVuKG5vZGVb ImxlYXZlcyJdKSA8PSAxOgotICAgICAgICByZXR1cm4KLSAgICBuYW1lID0gdGFibGVfbmFtZShw YXJlbnRzLCBub2RlKQotICAgIGxzYiA9IG5vZGVbInNlcGFyYXRvcl9sc2IiXQotICAgIHdpZHRo ID0gbm9kZVsic2VwYXJhdG9yX3dpZHRoIl0KLSAgICBwcmludCgKLSAgICAgICAgIkRFQ09ERV9O RVdfVEFCTEUoe30se30sREVDT0RFX1NFUEFSQVRPUl9CSVRTKHt9LHt9KSkiLmZvcm1hdCgKLSAg ICAgICAgICAgIG5hbWUsIDIqKndpZHRoLCBsc2IsIHdpZHRoCi0gICAgICAgICksCi0gICAgICAg IGZpbGU9ZiwKLSAgICApCi0gICAgZm9yIGNoaWxkIGluIG5vZGVbImNoaWxkcmVuIl06Ci0gICAg ICAgIGlmIGxlbihjaGlsZFsibGVhdmVzIl0pID09IDA6Ci0gICAgICAgICAgICBwcmludCgiSU5W QUxJRCgpIiwgZmlsZT1mKQotICAgICAgICBlbGlmIGxlbihjaGlsZFsibGVhdmVzIl0pID09IDE6 Ci0gICAgICAgICAgICAodGFnLCkgPSBjaGlsZFsibGVhdmVzIl0KLSAgICAgICAgICAgIGlmIHRh ZyBpbiBzdWJpbnNuX2dyb3VwaW5nczoKLSAgICAgICAgICAgICAgICBjbGFzc19hID0gc3ViaW5z bl9ncm91cGluZ3NbdGFnXVsiY2xhc3NfYSJdCi0gICAgICAgICAgICAgICAgY2xhc3NfYiA9IHN1 Ymluc25fZ3JvdXBpbmdzW3RhZ11bImNsYXNzX2IiXQotICAgICAgICAgICAgICAgIGVuYyA9IHN1 Ymluc25fZ3JvdXBpbmdzW3RhZ11bImVuYyJdLnJlcGxhY2UoIiAiLCAiIikKLSAgICAgICAgICAg ICAgICBpZiAiUkVTRVJWRUQiIGluIHRhZzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIklO VkFMSUQoKSIsIGZpbGU9ZikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg ICAgICBwcmludCgKLSAgICAgICAgICAgICAgICAgICAgICAgICdTVUJJTlNOUyh7fSx7fSx7fSwi e30iKScuZm9ybWF0KHRhZywgY2xhc3NfYSwgY2xhc3NfYiwgZW5jKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGU9ZiwKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZWxp ZiB0YWcgaW4gaXNldC5lbmNfZXh0X3NwYWNlczoKLSAgICAgICAgICAgICAgICBlbmMgPSBpc2V0 LmVuY19leHRfc3BhY2VzW3RhZ10ucmVwbGFjZSgiICIsICIiKQotICAgICAgICAgICAgICAgIHBy aW50KCdFWFRTUEFDRSh7fSwie30iKScuZm9ybWF0KHRhZywgZW5jKSwgZmlsZT1mKQotICAgICAg ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbmMgPSAiIi5qb2luKHJldmVyc2VkKGVuY3Nb dGFnXSkpCi0gICAgICAgICAgICAgICAgcHJpbnQoJ1RFUk1JTkFMKHt9LCJ7fSIpJy5mb3JtYXQo dGFnLCBlbmMpLCBmaWxlPWYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiVEFC TEVfTElOSyh7fSkiLmZvcm1hdCh0YWJsZV9uYW1lKHBhcmVudHMgKyBbbm9kZV0sIGNoaWxkKSks IGZpbGU9ZikKLSAgICBwcmludCgKLSAgICAgICAgIkRFQ09ERV9FTkRfVEFCTEUoe30se30sREVD T0RFX1NFUEFSQVRPUl9CSVRTKHt9LHt9KSkiLmZvcm1hdCgKLSAgICAgICAgICAgIG5hbWUsIDIq KndpZHRoLCBsc2IsIHdpZHRoCi0gICAgICAgICksCi0gICAgICAgIGZpbGU9ZiwKLSAgICApCi0g ICAgcHJpbnQoZmlsZT1mKQotICAgIHBhcmVudHMuYXBwZW5kKG5vZGUpCi0gICAgZm9yIGNoaWxk IGluIG5vZGVbImNoaWxkcmVuIl06Ci0gICAgICAgIHByaW50X25vZGUoZiwgY2hpbGQsIHBhcmVu dHMpCi0gICAgcGFyZW50cy5wb3AoKQotCi0KLWRlZiBwcmludF90cmVlKGYsIHRyZWUpOgotICAg IHByaW50X25vZGUoZiwgdHJlZSwgW10pCi0KLQotZGVmIHByaW50X21hdGNoX2luZm8oZik6Ci0g ICAgZm9yIHRhZyBpbiBzb3J0ZWQoZW5jcy5rZXlzKCksIGtleT1pc2V0LnRhZ3MuaW5kZXgpOgot ICAgICAgICBlbmMgPSAiIi5qb2luKHJldmVyc2VkKGVuY3NbdGFnXSkpCi0gICAgICAgIG1hc2sg PSBpbnQocmUuc3ViKHIiW14xXSIsIHIiMCIsIGVuYy5yZXBsYWNlKCIwIiwgIjEiKSksIDIpCi0g ICAgICAgIG1hdGNoID0gaW50KHJlLnN1YihyIlteMDFdIiwgciIwIiwgZW5jKSwgMikKLSAgICAg ICAgc3VmZml4ID0gIiIKLSAgICAgICAgcHJpbnQoCi0gICAgICAgICAgICAiREVDT0RFe31fTUFU Q0hfSU5GTyh7fSwweHs6eH1VLDB4ezp4fVUpIi5mb3JtYXQoc3VmZml4LCB0YWcsIG1hc2ssIG1h dGNoKSwKLSAgICAgICAgICAgIGZpbGU9ZiwKLSAgICAgICAgKQotCi0KLXJlZ3JlID0gcmUuY29t cGlsZShyIigoPzwhRFVQKVtNTk9SQ1BRWFNHVlpBXSkoW3N0dXZ3eHl6ZGVmZ10rKShbLl0/W0xs SGhdPykoXGQrUz8pIikKLWltbXJlID0gcmUuY29tcGlsZShyIlsjXShbclJzU3VVbV0pKFxkKyko PzpbOl0oXGQrKSk/IikKLQotCi1kZWYgb3JkZXJlZF91bmlxdWUobCk6Ci0gICAgcmV0dXJuIHNv cnRlZChzZXQobCksIGtleT1sLmluZGV4KQotCi0KLWltcGxpY2l0X3JlZ2lzdGVycyA9IHsiU1Ai OiAyOSwgIkZQIjogMzAsICJMUiI6IDMxfQotCi1udW1fcmVnaXN0ZXJzID0geyJSIjogMzIsICJW IjogMzJ9Ci0KLQotZGVmIHByaW50X29wX2luZm8oZik6Ci0gICAgZm9yIHRhZyBpbiBzb3J0ZWQo ZW5jcy5rZXlzKCksIGtleT1pc2V0LnRhZ3MuaW5kZXgpOgotICAgICAgICBlbmMgPSBlbmNzW3Rh Z10KLSAgICAgICAgcHJpbnQoZmlsZT1mKQotICAgICAgICBwcmludCgiREVDT0RFX09QSU5GTyh7 fSwiLmZvcm1hdCh0YWcpLCBmaWxlPWYpCi0gICAgICAgIHJlZ3MgPSBvcmRlcmVkX3VuaXF1ZShy ZWdyZS5maW5kYWxsKGlzZXQuaXNldFt0YWddWyJzeW50YXgiXSkpCi0gICAgICAgIGltbXMgPSBv cmRlcmVkX3VuaXF1ZShpbW1yZS5maW5kYWxsKGlzZXQuaXNldFt0YWddWyJzeW50YXgiXSkpCi0g ICAgICAgIHJlZ25vID0gMAotICAgICAgICBmb3IgcmVnIGluIHJlZ3M6Ci0gICAgICAgICAgICBy ZWdfdHlwZSA9IHJlZ1swXQotICAgICAgICAgICAgcmVnX2xldHRlciA9IHJlZ1sxXVswXQotICAg ICAgICAgICAgcmVnX251bV9jaG9pY2VzID0gaW50KHJlZ1szXS5yc3RyaXAoIlMiKSkKLSAgICAg ICAgICAgIHJlZ19tYXBwaW5nID0gcmVnWzBdICsgIiIuam9pbihbIl8iIGZvciBsZXR0ZXIgaW4g cmVnWzFdXSkgKyByZWdbM10KLSAgICAgICAgICAgIHJlZ19lbmNfZmllbGRzID0gcmUuZmluZGFs bChyZWdfbGV0dGVyICsgIisiLCBlbmMpCi0gICAgICAgICAgICBpZiBsZW4ocmVnX2VuY19maWVs ZHMpID09IDA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUYWcgInt9IiBtaXNz aW5nIHJlZ2lzdGVyIGZpZWxkIScuZm9ybWF0KHRhZykpCi0gICAgICAgICAgICBpZiBsZW4ocmVn X2VuY19maWVsZHMpID4gMToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RhZyAi e30iIGhhcyBzcGxpdCByZWdpc3RlciBmaWVsZCEnLmZvcm1hdCh0YWcpKQotICAgICAgICAgICAg cmVnX2VuY19maWVsZCA9IHJlZ19lbmNfZmllbGRzWzBdCi0gICAgICAgICAgICBpZiAyICoqIGxl bihyZWdfZW5jX2ZpZWxkKSAhPSByZWdfbnVtX2Nob2ljZXM6Ci0gICAgICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnVGFnICJ7fSIgaGFzIGluY29ycmVj dCByZWdpc3RlciBmaWVsZCB3aWR0aCEnLmZvcm1hdCh0YWcpCi0gICAgICAgICAgICAgICAgKQot ICAgICAgICAgICAgcHJpbnQoCi0gICAgICAgICAgICAgICAgIiAgICAgICAgREVDT0RFX1JFRyh7 fSx7fSx7fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmVnbm8sIGxlbihyZWdfZW5j X2ZpZWxkKSwgZW5jLmluZGV4KHJlZ19lbmNfZmllbGQpCi0gICAgICAgICAgICAgICAgKSwKLSAg ICAgICAgICAgICAgICBmaWxlPWYsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBpZiByZWdf dHlwZSBpbiBudW1fcmVnaXN0ZXJzIGFuZCByZWdfbnVtX2Nob2ljZXMgIT0gbnVtX3JlZ2lzdGVy c1tyZWdfdHlwZV06Ci0gICAgICAgICAgICAgICAgcHJpbnQoCi0gICAgICAgICAgICAgICAgICAg ICIgICAgICAgIERFQ09ERV9NQVBQRURfUkVHKHt9LHt9KSIuZm9ybWF0KHJlZ25vLCByZWdfbWFw cGluZyksCi0gICAgICAgICAgICAgICAgICAgIGZpbGU9ZiwKLSAgICAgICAgICAgICAgICApCi0g ICAgICAgICAgICByZWdubyArPSAxCi0KLSAgICAgICAgZGVmIGltcGxpY2l0X3JlZ2lzdGVyX2tl eShyZWcpOgotICAgICAgICAgICAgcmV0dXJuIGltcGxpY2l0X3JlZ2lzdGVyc1tyZWddCi0KLSAg ICAgICAgZm9yIHJlZyBpbiBzb3J0ZWQoCi0gICAgICAgICAgICBzZXQoCi0gICAgICAgICAgICAg ICAgWwotICAgICAgICAgICAgICAgICAgICByCi0gICAgICAgICAgICAgICAgICAgIGZvciByIGlu ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzZXQuaXNldFt0YWddWyJycmVncyJdLnNwbGl0 KCIsIikKLSAgICAgICAgICAgICAgICAgICAgICAgICsgaXNldC5pc2V0W3RhZ11bIndyZWdzIl0u c3BsaXQoIiwiKQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIGlm IHIgaW4gaW1wbGljaXRfcmVnaXN0ZXJzCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAg KSwKLSAgICAgICAgICAgIGtleT1pbXBsaWNpdF9yZWdpc3Rlcl9rZXksCi0gICAgICAgICk6Ci0g ICAgICAgICAgICBwcmludCgKLSAgICAgICAgICAgICAgICAiICAgICAgICBERUNPREVfSU1QTF9S RUcoe30se30pIi5mb3JtYXQocmVnbm8sIGltcGxpY2l0X3JlZ2lzdGVyc1tyZWddKSwKLSAgICAg ICAgICAgICAgICBmaWxlPWYsCi0gICAgICAgICAgICApCi0gICAgICAgICAgICByZWdubyArPSAx Ci0gICAgICAgIGlmIGltbXMgYW5kIGltbXNbMF1bMF0uaXN1cHBlcigpOgotICAgICAgICAgICAg aW1tcyA9IHJldmVyc2VkKGltbXMpCi0gICAgICAgIGZvciBpbW0gaW4gaW1tczoKLSAgICAgICAg ICAgIGlmIGltbVswXS5pc3VwcGVyKCk6Ci0gICAgICAgICAgICAgICAgaW1tbm8gPSAxCi0gICAg ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGltbW5vID0gMAotICAgICAgICAgICAgaW1t X3R5cGUgPSBpbW1bMF0KLSAgICAgICAgICAgIGltbV93aWR0aCA9IGludChpbW1bMV0pCi0gICAg ICAgICAgICBpbW1fc2hpZnQgPSBpbW1bMl0KLSAgICAgICAgICAgIGlmIGltbV9zaGlmdDoKLSAg ICAgICAgICAgICAgICBpbW1fc2hpZnQgPSBpbnQoaW1tX3NoaWZ0KQotICAgICAgICAgICAgZWxz ZToKLSAgICAgICAgICAgICAgICBpbW1fc2hpZnQgPSAwCi0gICAgICAgICAgICBpZiBpbW1fdHlw ZS5pc2xvd2VyKCk6Ci0gICAgICAgICAgICAgICAgaW1tX2xldHRlciA9ICJpIgotICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbW1fbGV0dGVyID0gIkkiCi0gICAgICAgICAgICBy ZW1haW5kZXIgPSBpbW1fd2lkdGgKLSAgICAgICAgICAgIGZvciBtIGluIHJldmVyc2VkKGxpc3Qo cmUuZmluZGl0ZXIoaW1tX2xldHRlciArICIrIiwgZW5jKSkpOgotICAgICAgICAgICAgICAgIHJl bWFpbmRlciAtPSBtLmVuZCgpIC0gbS5zdGFydCgpCi0gICAgICAgICAgICAgICAgcHJpbnQoCi0g ICAgICAgICAgICAgICAgICAgICIgICAgICAgIERFQ09ERV9JTU0oe30se30se30se30pIi5mb3Jt YXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbW1ubywgbS5lbmQoKSAtIG0uc3RhcnQoKSwg bS5zdGFydCgpLCByZW1haW5kZXIKLSAgICAgICAgICAgICAgICAgICAgKSwKLSAgICAgICAgICAg ICAgICAgICAgZmlsZT1mLAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGlmIHJlbWFp bmRlciAhPSAwOgotICAgICAgICAgICAgICAgIGlmIGltbVsyXToKLSAgICAgICAgICAgICAgICAg ICAgaW1tWzJdID0gIjoiICsgaW1tWzJdCi0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u KAotICAgICAgICAgICAgICAgICAgICAnVGFnICJ7fSIgaGFzIGFuIGluY29ycmVjdCBudW1iZXIg b2YgJwotICAgICAgICAgICAgICAgICAgICArICdlbmNvZGluZyBiaXRzIGZvciBpbW1lZGlhdGUg Int9IicuZm9ybWF0KHRhZywgIiIuam9pbihpbW0pKQotICAgICAgICAgICAgICAgICkKLSAgICAg ICAgICAgIGlmIGltbV90eXBlLmxvd2VyKCkgaW4gInNyIjoKLSAgICAgICAgICAgICAgICBwcmlu dCgiICAgICAgICBERUNPREVfSU1NX1NYVCh7fSx7fSkiLmZvcm1hdChpbW1ubywgaW1tX3dpZHRo KSwgZmlsZT1mKQotICAgICAgICAgICAgaWYgaW1tX3R5cGUubG93ZXIoKSA9PSAibiI6Ci0gICAg ICAgICAgICAgICAgcHJpbnQoIiAgICAgICAgREVDT0RFX0lNTV9ORUcoe30se30pIi5mb3JtYXQo aW1tbm8sIGltbV93aWR0aCksIGZpbGU9ZikKLSAgICAgICAgICAgIGlmIGltbV9zaGlmdDoKLSAg ICAgICAgICAgICAgICBwcmludCgKLSAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgREVDT0RF X0lNTV9TSElGVCh7fSx7fSkiLmZvcm1hdChpbW1ubywgaW1tX3NoaWZ0KSwgZmlsZT1mCi0gICAg ICAgICAgICAgICAgKQotICAgICAgICBwcmludCgiKSIsIGZpbGU9ZikKLQotCi1pZiBfX25hbWVf XyA9PSAiX19tYWluX18iOgotICAgIHdpdGggb3BlbihzeXMuYXJndlsxXSwgInciKSBhcyBmOgot ICAgICAgICBwcmludF90cmVlKGYsIGRlY3RyZWVfbm9ybWFsKQotICAgICAgICBwcmludF90cmVl KGYsIGRlY3RyZWVfMTZiaXQpCi0gICAgICAgIGlmIHN1Ymluc25fZ3JvdXBpbmdzOgotICAgICAg ICAgICAgcHJpbnRfdHJlZShmLCBkZWN0cmVlX3N1Ymluc25fZ3JvdXBpbmdzKQotICAgICAgICBm b3IgbmFtZSwgZGVjdHJlZV9zdWJpbnNuIGluIHNvcnRlZChkZWN0cmVlX3N1Ymluc25zLml0ZW1z KCkpOgotICAgICAgICAgICAgcHJpbnRfdHJlZShmLCBkZWN0cmVlX3N1Ymluc24pCi0gICAgICAg IGZvciBuYW1lLCBkZWN0cmVlX2V4dCBpbiBzb3J0ZWQoZGVjdHJlZV9leHRlbnNpb25zLml0ZW1z KCkpOgotICAgICAgICAgICAgcHJpbnRfdHJlZShmLCBkZWN0cmVlX2V4dCkKLSAgICAgICAgcHJp bnRfbWF0Y2hfaW5mbyhmKQotICAgICAgICBwcmludF9vcF9pbmZvKGYpCmRpZmYgLS1naXQgYS90 YXJnZXQvaGV4YWdvbi9nZW5fZGVjdHJlZV9pbXBvcnQuYyBiL3RhcmdldC9oZXhhZ29uL2dlbl9k ZWN0cmVlX2ltcG9ydC5jCmluZGV4IGVlMzU0Njc3ZmQuLjg3ZjIwYzE0ZjEgMTAwNjQ0Ci0tLSBh L3RhcmdldC9oZXhhZ29uL2dlbl9kZWN0cmVlX2ltcG9ydC5jCisrKyBiL3RhcmdldC9oZXhhZ29u L2dlbl9kZWN0cmVlX2ltcG9ydC5jCkBAIC01NiwyNCArNTYsNiBAQCBjb25zdCBjaGFyICogY29u c3Qgb3Bjb2RlX3N5bnRheFtYWF9MQVNUX09QQ09ERV0gPSB7CiAjdW5kZWYgRVhUSU5TTgogfTsK IAotY29uc3QgY2hhciAqIGNvbnN0IG9wY29kZV9ycmVnc1tdID0gewotI2RlZmluZSBSRUdJTkZP KFRBRywgUkVHSU5GTywgUlJFR1MsIFdSRUdTKSBSUkVHUywKLSNkZWZpbmUgSU1NSU5GTyhUQUcs IFNJR04sIFNJWkUsIFNIQU1ULCBTSUdOMiwgU0laRTIsIFNIQU1UMikgIC8qIG5vdGhpbmcgKi8K LSNpbmNsdWRlICJvcF9yZWdzX2dlbmVyYXRlZC5oLmluYyIKLSAgICBOVUxMCi0jdW5kZWYgUkVH SU5GTwotI3VuZGVmIElNTUlORk8KLX07Ci0KLWNvbnN0IGNoYXIgKiBjb25zdCBvcGNvZGVfd3Jl Z3NbXSA9IHsKLSNkZWZpbmUgUkVHSU5GTyhUQUcsIFJFR0lORk8sIFJSRUdTLCBXUkVHUykgV1JF R1MsCi0jZGVmaW5lIElNTUlORk8oVEFHLCBTSUdOLCBTSVpFLCBTSEFNVCwgU0lHTjIsIFNJWkUy LCBTSEFNVDIpICAvKiBub3RoaW5nICovCi0jaW5jbHVkZSAib3BfcmVnc19nZW5lcmF0ZWQuaC5p bmMiCi0gICAgTlVMTAotI3VuZGVmIFJFR0lORk8KLSN1bmRlZiBJTU1JTkZPCi19OwotCiBjb25z dCBPcGNvZGVFbmNvZGluZyBvcGNvZGVfZW5jb2RpbmdzW10gPSB7CiAjZGVmaW5lIERFRl9FTkMz MihUQUcsIEVOQ1NUUikgXAogICAgIFtUQUddID0geyAuZW5jb2RpbmcgPSBFTkNTVFIgfSwKQEAg LTEzMCw4ICsxMTIsNiBAQCBzdGF0aWMgdm9pZCBnZW5faXNldF90YWJsZShGSUxFICpvdXQpCiAg ICAgICAgIGZwcmludGYob3V0LCAiXHRcJyVzXCcgOiB7XG4iLCBvcGNvZGVfbmFtZXNbaV0pOwog ICAgICAgICBmcHJpbnRmKG91dCwgIlx0XHRcJ3RhZ1wnIDogXCclc1wnLFxuIiwgb3Bjb2RlX25h bWVzW2ldKTsKICAgICAgICAgZnByaW50ZihvdXQsICJcdFx0XCdzeW50YXhcJyA6IFwnJXNcJyxc biIsIG9wY29kZV9zeW50YXhbaV0pOwotICAgICAgICBmcHJpbnRmKG91dCwgIlx0XHRcJ3JyZWdz XCcgOiBcJyVzXCcsXG4iLCBvcGNvZGVfcnJlZ3NbaV0pOwotICAgICAgICBmcHJpbnRmKG91dCwg Ilx0XHRcJ3dyZWdzXCcgOiBcJyVzXCcsXG4iLCBvcGNvZGVfd3JlZ3NbaV0pOwogICAgICAgICBm cHJpbnRmKG91dCwgIlx0XHRcJ2VuY1wnIDogXCclc1wnLFxuIiwgZ2V0X29wY29kZV9lbmMoaSkp OwogICAgICAgICBmcHJpbnRmKG91dCwgIlx0XHRcJ2VuY19jbGFzc1wnIDogXCclc1wnLFxuIiwg Z2V0X29wY29kZV9lbmNfY2xhc3MoaSkpOwogICAgICAgICBmcHJpbnRmKG91dCwgIlx0fSxcbiIp OwpAQCAtMTUwLDMzICsxMzAsNiBAQCBzdGF0aWMgdm9pZCBnZW5fdGFnc19saXN0KEZJTEUgKm91 dCkKICAgICBmcHJpbnRmKG91dCwgIl07XG5cbiIpOwogfQogCi1zdGF0aWMgdm9pZCBnZW5fZW5j X2V4dF9zcGFjZXNfdGFibGUoRklMRSAqb3V0KQotewotICAgIGZwcmludGYob3V0LCAiZW5jX2V4 dF9zcGFjZXMgPSB7XG4iKTsKLSNkZWZpbmUgREVGX0VYVF9TUEFDRShTUEFDRUlELCBFTkNTVFIp IFwKLSAgICBmcHJpbnRmKG91dCwgIlx0XCclc1wnIDogXCclc1wnLFxuIiwgI1NQQUNFSUQsIEVO Q1NUUik7Ci0jaW5jbHVkZSAiaW1wb3J0ZWQvZW5jb2RlLmRlZiIKLSN1bmRlZiBERUZfRVhUX1NQ QUNFCi0gICAgZnByaW50ZihvdXQsICJ9O1xuXG4iKTsKLX0KLQotc3RhdGljIHZvaWQgZ2VuX3N1 Ymluc25fZ3JvdXBpbmdzX3RhYmxlKEZJTEUgKm91dCkKLXsKLSAgICBmcHJpbnRmKG91dCwgInN1 Ymluc25fZ3JvdXBpbmdzID0ge1xuIik7Ci0jZGVmaW5lIERFRl9QQUNLRUQzMihUQUcsIFRZUEVB LCBUWVBFQiwgRU5DU1RSKSBcCi0gICAgZG8geyBcCi0gICAgICAgIGZwcmludGYob3V0LCAiXHRc JyVzXCcgOiB7XG4iLCAjVEFHKTsgXAotICAgICAgICBmcHJpbnRmKG91dCwgIlx0XHRcJ25hbWVc JyA6IFwnJXNcJyxcbiIsICNUQUcpOyBcCi0gICAgICAgIGZwcmludGYob3V0LCAiXHRcdFwnY2xh c3NfYVwnIDogXCclc1wnLFxuIiwgI1RZUEVBKTsgXAotICAgICAgICBmcHJpbnRmKG91dCwgIlx0 XHRcJ2NsYXNzX2JcJyA6IFwnJXNcJyxcbiIsICNUWVBFQik7IFwKLSAgICAgICAgZnByaW50Zihv dXQsICJcdFx0XCdlbmNcJyA6IFwnJXNcJyxcbiIsIEVOQ1NUUik7IFwKLSAgICAgICAgZnByaW50 ZihvdXQsICJcdH0sXG4iKTsgXAotICAgIH0gd2hpbGUgKDApOwotI2luY2x1ZGUgImltcG9ydGVk L2VuY29kZS5kZWYiCi0jdW5kZWYgREVGX1BBQ0tFRDMyCi0gICAgZnByaW50ZihvdXQsICJ9O1xu XG4iKTsKLX0KLQogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBGSUxF ICpvdXRmaWxlOwpAQCAtMTkzLDggKzE0Niw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAKICAgICBnZW5faXNldF90YWJsZShvdXRmaWxlKTsKICAgICBnZW5fdGFnc19saXN0 KG91dGZpbGUpOwotICAgIGdlbl9lbmNfZXh0X3NwYWNlc190YWJsZShvdXRmaWxlKTsKLSAgICBn ZW5fc3ViaW5zbl9ncm91cGluZ3NfdGFibGUob3V0ZmlsZSk7CiAKICAgICBmY2xvc2Uob3V0Zmls ZSk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9tZXNvbi5idWls ZCBiL3RhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkCmluZGV4IDFiZDFlYmNiYTEuLmZiNDgwYWZj MDMgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL21lc29uLmJ1aWxkCisrKyBiL3RhcmdldC9o ZXhhZ29uL21lc29uLmJ1aWxkCkBAIC0xMjIsMTggKzEyMiw2IEBAIGhleGFnb25fc3MuYWRkKGlz ZXRfcHkpCiAKICMKICMgU3RlcCA0Ci0jIFdlIHVzZSB0aGUgZGVjdHJlZS5weSBzY3JpcHQgdG8g Z2VuZXJhdGUgdGhlIGRlY29kZSB0cmVlIGhlYWRlciBmaWxlCi0jCi1kZWN0cmVlX2dlbmVyYXRl ZCA9IGN1c3RvbV90YXJnZXQoCi0gICAgJ2RlY3RyZWVfZ2VuZXJhdGVkLmguaW5jJywKLSAgICBv dXRwdXQ6ICdkZWN0cmVlX2dlbmVyYXRlZC5oLmluYycsCi0gICAgZGVwZW5kczogW2lzZXRfcHld LAotICAgIGVudjogeydQWVRIT05QQVRIJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKX0sCi0g ICAgY29tbWFuZDogW3B5dGhvbiwgZmlsZXMoJ2RlY3RyZWUucHknKSwgJ0BPVVRQVVRAJ10sCi0p Ci1oZXhhZ29uX3NzLmFkZChkZWN0cmVlX2dlbmVyYXRlZCkKLQotIwogIyBHZW5lcmF0ZSB0aGUg aW5wdXQgdG8gdGhlIFFFTVUgZGVjb2RldHJlZS5weSBzY3JpcHQKICMKIG5vcm1hbF9kZWNvZGVf Z2VuZXJhdGVkID0gY3VzdG9tX3RhcmdldCgKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL29w Y29kZXMuYyBiL3RhcmdldC9oZXhhZ29uL29wY29kZXMuYwppbmRleCAzNWQ3OTBjZGQ1Li4xZjdm M2RlZjM4IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9vcGNvZGVzLmMKKysrIGIvdGFyZ2V0 L2hleGFnb24vb3Bjb2Rlcy5jCkBAIC0xMTEsMzMgKzExMSw0IEBAIHZvaWQgb3Bjb2RlX2luaXQo dm9pZCkKICNpbmNsdWRlICJvcF9hdHRyaWJzX2dlbmVyYXRlZC5oLmluYyIKICN1bmRlZiBPUF9B VFRSSUIKICN1bmRlZiBBVFRSSUJTCi0KLSAgICBkZWNvZGVfaW5pdCgpOwotfQotCi0KLSNkZWZp bmUgTkVFRExFICJJTU1FWFQoIgotCi1pbnQgb3Bjb2RlX3doaWNoX2ltbWVkaWF0ZV9pc19leHRl bmRlZChPcGNvZGUgb3Bjb2RlKQotewotICAgIGNvbnN0IGNoYXIgKnA7Ci0KLSAgICBnX2Fzc2Vy dChvcGNvZGUgPCBYWF9MQVNUX09QQ09ERSk7Ci0gICAgZ19hc3NlcnQoR0VUX0FUVFJJQihvcGNv ZGUsIEFfRVhURU5EQUJMRSkpOwotCi0gICAgcCA9IG9wY29kZV9zaG9ydF9zZW1hbnRpY3Nbb3Bj b2RlXTsKLSAgICBwID0gc3Ryc3RyKHAsIE5FRURMRSk7Ci0gICAgZ19hc3NlcnQocCk7Ci0gICAg cCArPSBzdHJsZW4oTkVFRExFKTsKLSAgICB3aGlsZSAoaXNzcGFjZSgqcCkpIHsKLSAgICAgICAg cCsrOwotICAgIH0KLSAgICAvKiBsb3dlciBpcyBhbHdheXMgaW1tIDAsIHVwcGVyIGFsd2F5cyBp bW0gMS4gKi8KLSAgICBpZiAoaXNsb3dlcigqcCkpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg fSBlbHNlIGlmIChpc3VwcGVyKCpwKSkgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9IGVsc2Ug ewotICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwotICAgIH0KIH0KZGlmZiAtLWdpdCBh L3RhcmdldC9oZXhhZ29uL29wY29kZXMuaCBiL3RhcmdldC9oZXhhZ29uL29wY29kZXMuaAppbmRl eCA2ZTkwZTAwZmUyLi5mYTdlMzIxOTUwIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9vcGNv ZGVzLmgKKysrIGIvdGFyZ2V0L2hleGFnb24vb3Bjb2Rlcy5oCkBAIC01Myw2ICs1Myw0IEBAIGV4 dGVybiBjb25zdCBPcGNvZGVFbmNvZGluZyBvcGNvZGVfZW5jb2RpbmdzW1hYX0xBU1RfT1BDT0RF XTsKIAogdm9pZCBvcGNvZGVfaW5pdCh2b2lkKTsKIAotaW50IG9wY29kZV93aGljaF9pbW1lZGlh dGVfaXNfZXh0ZW5kZWQoT3Bjb2RlIG9wY29kZSk7Ci0KICNlbmRpZgotLSAKMi4yNS4xCgo=