Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp1067233lqe; Sun, 7 Apr 2024 18:01:49 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUH9+saa/hNEcFdlasg/JvRQI6xD5dnhPOMOGQKJx6gBgA5dnBThSAuZsSpRWY3xy/yYN0Uuxqsb1T7+Yv/YM+4++OvWgDaX4bGW7KFVQ== X-Google-Smtp-Source: AGHT+IHY/uB75FYigGpNDZLYF7pJdu8L48EMhPxbZaluwDojBEZ5jOA9a6tPCzFd6aVsTzhJQgys X-Received: by 2002:a17:902:f70a:b0:1e3:c610:597d with SMTP id h10-20020a170902f70a00b001e3c610597dmr7741348plo.60.1712538108567; Sun, 07 Apr 2024 18:01:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712538108; cv=pass; d=google.com; s=arc-20160816; b=yP2zaz354GZL4zCb3NxKU8dtDxOn0o8wqwX8983ObTHIcH7YhZcmZgl33ny61c5wzZ OI/Q0PNhDIX5Dl0+XXVS7pCw83AzsjuhtSb2bBqXox4K2Ub3ZmDiUt3VXnRSmBbxZn0y yF7yj3+OD0vkTxNsOxbrkA2XJslo63+oZohTaxxC6gimlCcZ/D2OoFAKWoZP8R2rvNXu H+CEjqPXJ7gdC/mHB/DKq37cxUdgc0LqQMxpfedpj8ZV+4yljDXfoQNa6YXNztP4lQXq btAJXNr0R5vlBNwFeGn6TbVbLJ4083nB00xvp6pwiKaFDD696VJCXtCRmfFbqGKExPHl XYBg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=aDeQrU8XA3tKSjTVi7RKH9t7EGnD0yqxSwrkyTW15ro=; fh=D+5CiPchbZfs3ul2RG1eSZvQcihakPHdtKvrsIUzY+g=; b=aBIrL5WcWRvALrhQOVfng9iRAcoNioEdHtri4Iias/NAu0fZon+jtb0ZZgqM8+uoHV TmfWnvEUJeyg41cPo22lAIqgO5qhOZYR+OzR+57ddDc3ztSjleLHQgItDlv0zGdkcD+S kciFOfmaeSVXxKw5QEGY/uW4kbNIX+O6HAWL3DZVrnrXaqDHoouvybMUEarQXWjkF2jE 8Vpgc95YLOibYY1204xkZsKgqoQbpafL3mx+VKhL5+NDD7HI0gatl/3ykjbdcu5doptF eJIgrtHm1Axdn52UfaEAGOwNkjPiCebrO1ZzzbShx2wKnXNyIrJt4jiJJxjbyh6DcKNg JimQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-134684-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-134684-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id j10-20020a170902f24a00b001e2c57c87cdsi5009798plc.206.2024.04.07.18.01.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Apr 2024 18:01:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-134684-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-134684-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-134684-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 0D0EF281445 for ; Mon, 8 Apr 2024 01:01:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C7043811; Mon, 8 Apr 2024 01:01:43 +0000 (UTC) Received: from out28-50.mail.aliyun.com (out28-50.mail.aliyun.com [115.124.28.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8489E7F8; Mon, 8 Apr 2024 01:01:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.28.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712538101; cv=none; b=aAyfubgMnrleqelMVNjZ753DU5XnrY167tLClQG0pJbgBzzGb2d5iJAeB8H4ZMiAK1ROQCiE4Xnv08auVCEU52YgHl+Cn8WugPlE9NHhTo49hB5yicVOc2Q7Art4Km0y2KbIEcZp/MWwxFSrc0nsQK6dso61WvEnrZ/O+4V1dMs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712538101; c=relaxed/simple; bh=aDeQrU8XA3tKSjTVi7RKH9t7EGnD0yqxSwrkyTW15ro=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=TO6klIyDmGdpsicolF5kui54HtLSFB3WVlDd5Px+XKRMUNf3NiEDfEFIZsamLrOGPbSZSJiL41L/CArqYeOuF4yWSJ1XL2nGgGXH/BSYuKVYnmveLXMdz3MsxAl2bYw9MBRMSKNIWNS5xaVlpcSqPuW/BjAz4h16Mg4n2BzknP4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=115.124.28.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.1063756|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.153011-0.00124748-0.845741;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047208;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=3;RT=3;SR=0;TI=W4_0.2.3_v5_212514A5_1712537680782_o7001c760; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5_212514A5_1712537680782_o7001c760]) at Mon, 08 Apr 2024 08:56:15 +0800 Date: Mon, 08 Apr 2024 08:56:15 +0800 From: "Ubisectech Sirius" To: "linux-kernel" , "linux-trace-kernel" Cc: "phillip" Reply-To: "Ubisectech Sirius" Message-ID: <87f5c007-b8a5-41ae-8b57-431e924c5915.bugreport@ubisectech.com> Subject: =?UTF-8?B?VUJTQU4gYXJyYXktaW5kZXgtb3V0LW9mLWJvdW5kcyBpbiByZWFkX2Jsb2NrbGlzdA==?= X-Mailer: [Alimail-Mailagent][W4_0.2.3][v5][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.2.3_v5_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMy4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_83369_7feb7058c700_661340af_73448c" This is a multi-part message in MIME format. ------=ALIBOUNDARY_83369_7feb7058c700_661340af_73448c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8uCldlIGFyZSBVYmlzZWN0ZWNoIFNpcml1cyBUZWFtLCB0aGUgdnVsbmVyYWJpbGl0eSBs YWIgb2YgQ2hpbmEgVmFsaWFudFNlYy4gUmVjZW50bHksIG91ciB0ZWFtIGhhcyBkaXNjb3ZlcmVk IGEgaXNzdWUgaW4gTGludXgga2VybmVsIDYuOC4gQXR0YWNoZWQgdG8gdGhlIGVtYWlsIHdlcmUg YSBQb0MgZmlsZSBvZiB0aGUgaXNzdWUuCgpTdGFjayBkdW1wOgotLS0tLS0tLS0tLS1bIGN1dCBo ZXJlIF0tLS0tLS0tLS0tLS0KVUJTQU46IGFycmF5LWluZGV4LW91dC1vZi1ib3VuZHMgaW4gZnMv c3F1YXNoZnMvZmlsZS5jOjI1NjozNAppbmRleCA0Mjk0OTY3Mjk1IGlzIG91dCBvZiByYW5nZSBm b3IgdHlwZSAnbWV0YV9lbnRyeSBbMTI3XScKQ1BVOiAxIFBJRDogMTY5MjcgQ29tbTogc3l6LWV4 ZWN1dG9yLjAgTm90IHRhaW50ZWQgNi44LjAgIzEKSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFy ZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5NiksIEJJT1MgMS4xNS4wLTEgMDQvMDEvMjAxNApDYWxs IFRyYWNlOgogPFRBU0s+CiBfX2R1bXBfc3RhY2sgbGliL2R1bXBfc3RhY2suYzo4OCBbaW5saW5l XQogZHVtcF9zdGFja19sdmwrMHgxMzYvMHgxNTAgbGliL2R1bXBfc3RhY2suYzoxMDYKIHVic2Fu X2VwaWxvZ3VlIGxpYi91YnNhbi5jOjIxNyBbaW5saW5lXQogX191YnNhbl9oYW5kbGVfb3V0X29m X2JvdW5kcysweGQ1LzB4MTMwIGxpYi91YnNhbi5jOjM0NwogZmlsbF9tZXRhX2luZGV4IGZzL3Nx dWFzaGZzL2ZpbGUuYzoyNTYgW2lubGluZV0KIHJlYWRfYmxvY2tsaXN0KzB4MTc1ZS8weDE3OTAg ZnMvc3F1YXNoZnMvZmlsZS5jOjMzMwogc3F1YXNoZnNfcmVhZGFoZWFkKzB4MTRmYS8weDIyZDAg ZnMvc3F1YXNoZnMvZmlsZS5jOjU5MQogcmVhZF9wYWdlcysweDFhMi8weGQ3MCBtbS9yZWFkYWhl YWQuYzoxNjAKIHBhZ2VfY2FjaGVfcmFfdW5ib3VuZGVkKzB4NDc3LzB4NWYwIG1tL3JlYWRhaGVh ZC5jOjI2OQogZG9fcGFnZV9jYWNoZV9yYSBtbS9yZWFkYWhlYWQuYzoyOTkgW2lubGluZV0KIHBh Z2VfY2FjaGVfcmFfb3JkZXIrMHg3NzIvMHhhMDAgbW0vcmVhZGFoZWFkLmM6NTQ0CiBkb19zeW5j X21tYXBfcmVhZGFoZWFkIG1tL2ZpbGVtYXAuYzozMTUzIFtpbmxpbmVdCiBmaWxlbWFwX2ZhdWx0 KzB4MTY5MS8weDMzOTAgbW0vZmlsZW1hcC5jOjMyNDUKIF9fZG9fZmF1bHQrMHgxMDgvMHg0OTAg bW0vbWVtb3J5LmM6NDM5NgogZG9fcmVhZF9mYXVsdCBtbS9tZW1vcnkuYzo0NzU4IFtpbmxpbmVd CiBkb19mYXVsdCBtbS9tZW1vcnkuYzo0ODg4IFtpbmxpbmVdCiBkb19wdGVfbWlzc2luZyBtbS9t ZW1vcnkuYzozNzQ1IFtpbmxpbmVdCiBoYW5kbGVfcHRlX2ZhdWx0IG1tL21lbW9yeS5jOjUxNjQg W2lubGluZV0KIF9faGFuZGxlX21tX2ZhdWx0KzB4MzQwYS8weDQ4YjAgbW0vbWVtb3J5LmM6NTMw NQogaGFuZGxlX21tX2ZhdWx0KzB4M2MyLzB4YTQwIG1tL21lbW9yeS5jOjU0NzAKIGRvX3VzZXJf YWRkcl9mYXVsdCsweDJlZC8weDEwMTAgYXJjaC94ODYvbW0vZmF1bHQuYzoxMzU1CiBoYW5kbGVf cGFnZV9mYXVsdCBhcmNoL3g4Ni9tbS9mYXVsdC5jOjE0OTggW2lubGluZV0KIGV4Y19wYWdlX2Zh dWx0KzB4OTkvMHgxODAgYXJjaC94ODYvbW0vZmF1bHQuYzoxNTU0CiBhc21fZXhjX3BhZ2VfZmF1 bHQrMHgyNi8weDMwIGFyY2gveDg2L2luY2x1ZGUvYXNtL2lkdGVudHJ5Lmg6NTcwClJJUDogMDAz MzoweDdmODQ0NmEyODIwMgpDb2RlOiA0OCA2MyBjMyA1YiBjMyAwZiAxZiAwMCBmMyAwZiAxZSBm YSA0OCA4OSA3YyAyNCBmMCA0OCA4OSA3NCAyNCBlOCA0OCA4OSA1NCAyNCBlMCA0OCA4YiA0YyAy NCBmMCA0OCA4YiA1NCAyNCBlOCA0OCA4YiA3NCAyNCBlMCA8OGI+IDQxIDQwIDIzIDgxIDAwIDAx IDAwIDAwIGYzIDBmIDZmIDA2IGMxIGUwIDA2IDQ4IDAxIGQwIDBmIDExIDAwClJTUDogMDAyYjow MDAwN2Y4NDQ3NzU1MDE4IEVGTEFHUzogMDAwMTAyMTIKUkFYOiAwMDAwN2Y4NDQ2YTI4MWUwIFJC WDogMDAwMDdmODQ0NmJjYmY4MCBSQ1g6IDAwMDAwMDAwMjBmZjAwMDAKUkRYOiAwMDAwMDAwMDAw MDAwMDAwIFJTSTogMDAwMDAwMDAyMDAwMDAwMCBSREk6IDAwMDAwMDAwMjBmZjAwMDAKUkJQOiAw MDAwN2Y4NDQ2YWYxNGE2IFIwODogMDAwMDAwMDAwMDAwMDAwMCBSMDk6IDAwMDAwMDAwMDAwMDAw MDAKUjEwOiAwMDAwMDAwMDIwZmYwMDAwIFIxMTogMDAwMDAwMDAyMDAwMDAwMCBSMTI6IDAwMDAw MDAwMDAwMDAwMDAKUjEzOiAwMDAwMDAwMDAwMDAwMDBiIFIxNDogMDAwMDdmODQ0NmJjYmY4MCBS MTU6IDAwMDA3Zjg0NDc3MzUwMDAKIDwvVEFTSz4KLS0tWyBlbmQgdHJhY2UgXS0tLQoKVGhhbmsg eW91IGZvciB0YWtpbmcgdGhlIHRpbWUgdG8gcmVhZCB0aGlzIGVtYWlsIGFuZCB3ZSBsb29rIGZv cndhcmQgdG8gd29ya2luZyB3aXRoIHlvdSBmdXJ0aGVyLgoKCgoKCgoKCgoK ------=ALIBOUNDARY_83369_7feb7058c700_661340af_73448c Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGVuZGlhbi5oPgojaW5j bHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzY2hlZC5oPgojaW5j bHVkZSA8c2V0am1wLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4K I2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNpbmNsdWRlIDxzdGRpby5o PgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN5cy9p b2N0bC5oPgojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1ZGUgPHN5cy9tb3VudC5oPgojaW5j bHVkZSA8c3lzL3ByY3RsLmg+CiNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KI2luY2x1ZGUgPHN5 cy9zdGF0Lmg+CiNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4K I2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2luY2x1ZGUgPHVu aXN0ZC5oPgoKI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4KI2luY2x1ZGUgPGxpbnV4L2xv b3AuaD4KCiNpZm5kZWYgX19OUl9tZW1mZF9jcmVhdGUKI2RlZmluZSBfX05SX21lbWZkX2NyZWF0 ZSAzMTkKI2VuZGlmCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHByb2NpZDsKCnN0YXRpYyBi b29sIHdyaXRlX2ZpbGUoY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogd2hhdCwgLi4uKQp7 CiAgY2hhciBidWZbMTAyNF07CiAgdmFfbGlzdCBhcmdzOwogIHZhX3N0YXJ0KGFyZ3MsIHdoYXQp OwogIHZzbnByaW50ZihidWYsIHNpemVvZihidWYpLCB3aGF0LCBhcmdzKTsKICB2YV9lbmQoYXJn cyk7CiAgYnVmW3NpemVvZihidWYpIC0gMV0gPSAwOwogIGludCBsZW4gPSBzdHJsZW4oYnVmKTsK ICBpbnQgZmQgPSBvcGVuKGZpbGUsIE9fV1JPTkxZIHwgT19DTE9FWEVDKTsKICBpZiAoZmQgPT0g LTEpCiAgICByZXR1cm4gZmFsc2U7CiAgaWYgKHdyaXRlKGZkLCBidWYsIGxlbikgIT0gbGVuKSB7 CiAgICBpbnQgZXJyID0gZXJybm87CiAgICBjbG9zZShmZCk7CiAgICBlcnJubyA9IGVycjsKICAg IHJldHVybiBmYWxzZTsKICB9CiAgY2xvc2UoZmQpOwogIHJldHVybiB0cnVlOwp9CgojZGVmaW5l IFNJWkVPRl9JT19VUklOR19TUUUgNjQKI2RlZmluZSBTSVpFT0ZfSU9fVVJJTkdfQ1FFIDE2CiNk ZWZpbmUgU1FfSEVBRF9PRkZTRVQgMAojZGVmaW5lIFNRX1RBSUxfT0ZGU0VUIDY0CiNkZWZpbmUg U1FfUklOR19NQVNLX09GRlNFVCAyNTYKI2RlZmluZSBTUV9SSU5HX0VOVFJJRVNfT0ZGU0VUIDI2 NAojZGVmaW5lIFNRX0ZMQUdTX09GRlNFVCAyNzYKI2RlZmluZSBTUV9EUk9QUEVEX09GRlNFVCAy NzIKI2RlZmluZSBDUV9IRUFEX09GRlNFVCAxMjgKI2RlZmluZSBDUV9UQUlMX09GRlNFVCAxOTIK I2RlZmluZSBDUV9SSU5HX01BU0tfT0ZGU0VUIDI2MAojZGVmaW5lIENRX1JJTkdfRU5UUklFU19P RkZTRVQgMjY4CiNkZWZpbmUgQ1FfUklOR19PVkVSRkxPV19PRkZTRVQgMjg0CiNkZWZpbmUgQ1Ff RkxBR1NfT0ZGU0VUIDI4MAojZGVmaW5lIENRX0NRRVNfT0ZGU0VUIDMyMAoKc3RhdGljIGxvbmcg c3l6X2lvX3VyaW5nX3N1Ym1pdCh2b2xhdGlsZSBsb25nIGEwLCB2b2xhdGlsZSBsb25nIGExLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGxvbmcgYTIpCnsKICBjaGFy KiByaW5nX3B0ciA9IChjaGFyKilhMDsKICBjaGFyKiBzcWVzX3B0ciA9IChjaGFyKilhMTsKICBj aGFyKiBzcWUgPSAoY2hhciopYTI7CiAgdWludDMyX3Qgc3FfcmluZ19tYXNrID0gKih1aW50MzJf dCopKHJpbmdfcHRyICsgU1FfUklOR19NQVNLX09GRlNFVCk7CiAgdWludDMyX3QqIHNxX3RhaWxf cHRyID0gKHVpbnQzMl90KikocmluZ19wdHIgKyBTUV9UQUlMX09GRlNFVCk7CiAgdWludDMyX3Qg c3FfdGFpbCA9ICpzcV90YWlsX3B0ciAmIHNxX3JpbmdfbWFzazsKICBjaGFyKiBzcWVfZGVzdCA9 IHNxZXNfcHRyICsgc3FfdGFpbCAqIFNJWkVPRl9JT19VUklOR19TUUU7CiAgbWVtY3B5KHNxZV9k ZXN0LCBzcWUsIFNJWkVPRl9JT19VUklOR19TUUUpOwogIHVpbnQzMl90IHNxX3RhaWxfbmV4dCA9 ICpzcV90YWlsX3B0ciArIDE7CiAgX19hdG9taWNfc3RvcmVfbihzcV90YWlsX3B0ciwgc3FfdGFp bF9uZXh0LCBfX0FUT01JQ19SRUxFQVNFKTsKICByZXR1cm4gMDsKfQoKLy8lIFRoaXMgY29kZSBp cyBkZXJpdmVkIGZyb20gcHVmZi57YyxofSwgZm91bmQgaW4gdGhlIHpsaWIgZGV2ZWxvcG1lbnQu IFRoZQovLyUgb3JpZ2luYWwgZmlsZXMgY29tZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0 IG5vdGljZToKCi8vJSBDb3B5cmlnaHQgKEMpIDIwMDItMjAxMyBNYXJrIEFkbGVyLCBhbGwgcmln aHRzIHJlc2VydmVkCi8vJSB2ZXJzaW9uIDIuMywgMjEgSmFuIDIwMTMKLy8lIFRoaXMgc29mdHdh cmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8v JSB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvciBiZSBoZWxkIGxpYWJsZSBm b3IgYW55IGRhbWFnZXMKLy8lIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUu Ci8vJSBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJl IGZvciBhbnkgcHVycG9zZSwKLy8lIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywg YW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8lIGZyZWVseSwgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8lIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBz b2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vJSAgICBj bGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhp cyBzb2Z0d2FyZQovLyUgICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUg cHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vJSAgICBhcHByZWNpYXRlZCBidXQgaXMg bm90IHJlcXVpcmVkLgovLyUgMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFp bmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8lICAgIG1pc3JlcHJlc2VudGVk IGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8lIDMuIFRoaXMgbm90aWNlIG1heSBu b3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCi8v JSBNYXJrIEFkbGVyICAgIG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHUKCi8vJSBCRUdJTiBDT0RF IERFUklWRUQgRlJPTSBwdWZmLntjLGh9CgojZGVmaW5lIE1BWEJJVFMgMTUKI2RlZmluZSBNQVhM Q09ERVMgMjg2CiNkZWZpbmUgTUFYRENPREVTIDMwCiNkZWZpbmUgTUFYQ09ERVMgKE1BWExDT0RF UyArIE1BWERDT0RFUykKI2RlZmluZSBGSVhMQ09ERVMgMjg4CgpzdHJ1Y3QgcHVmZl9zdGF0ZSB7 CiAgdW5zaWduZWQgY2hhciogb3V0OwogIHVuc2lnbmVkIGxvbmcgb3V0bGVuOwogIHVuc2lnbmVk IGxvbmcgb3V0Y250OwogIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluOwogIHVuc2lnbmVkIGxvbmcg aW5sZW47CiAgdW5zaWduZWQgbG9uZyBpbmNudDsKICBpbnQgYml0YnVmOwogIGludCBiaXRjbnQ7 CiAgam1wX2J1ZiBlbnY7Cn07CnN0YXRpYyBpbnQgcHVmZl9iaXRzKHN0cnVjdCBwdWZmX3N0YXRl KiBzLCBpbnQgbmVlZCkKewogIGxvbmcgdmFsID0gcy0+Yml0YnVmOwogIHdoaWxlIChzLT5iaXRj bnQgPCBuZWVkKSB7CiAgICBpZiAocy0+aW5jbnQgPT0gcy0+aW5sZW4pCiAgICAgIGxvbmdqbXAo cy0+ZW52LCAxKTsKICAgIHZhbCB8PSAobG9uZykocy0+aW5bcy0+aW5jbnQrK10pIDw8IHMtPmJp dGNudDsKICAgIHMtPmJpdGNudCArPSA4OwogIH0KICBzLT5iaXRidWYgPSAoaW50KSh2YWwgPj4g bmVlZCk7CiAgcy0+Yml0Y250IC09IG5lZWQ7CiAgcmV0dXJuIChpbnQpKHZhbCAmICgoMUwgPDwg bmVlZCkgLSAxKSk7Cn0Kc3RhdGljIGludCBwdWZmX3N0b3JlZChzdHJ1Y3QgcHVmZl9zdGF0ZSog cykKewogIHMtPmJpdGJ1ZiA9IDA7CiAgcy0+Yml0Y250ID0gMDsKICBpZiAocy0+aW5jbnQgKyA0 ID4gcy0+aW5sZW4pCiAgICByZXR1cm4gMjsKICB1bnNpZ25lZCBsZW4gPSBzLT5pbltzLT5pbmNu dCsrXTsKICBsZW4gfD0gcy0+aW5bcy0+aW5jbnQrK10gPDwgODsKICBpZiAocy0+aW5bcy0+aW5j bnQrK10gIT0gKH5sZW4gJiAweGZmKSB8fAogICAgICBzLT5pbltzLT5pbmNudCsrXSAhPSAoKH5s ZW4gPj4gOCkgJiAweGZmKSkKICAgIHJldHVybiAtMjsKICBpZiAocy0+aW5jbnQgKyBsZW4gPiBz LT5pbmxlbikKICAgIHJldHVybiAyOwogIGlmIChzLT5vdXRjbnQgKyBsZW4gPiBzLT5vdXRsZW4p CiAgICByZXR1cm4gMTsKICBmb3IgKDsgbGVuLS07IHMtPm91dGNudCsrLCBzLT5pbmNudCsrKSB7 CiAgICBpZiAocy0+aW5bcy0+aW5jbnRdKQogICAgICBzLT5vdXRbcy0+b3V0Y250XSA9IHMtPmlu W3MtPmluY250XTsKICB9CiAgcmV0dXJuIDA7Cn0Kc3RydWN0IHB1ZmZfaHVmZm1hbiB7CiAgc2hv cnQqIGNvdW50OwogIHNob3J0KiBzeW1ib2w7Cn07CnN0YXRpYyBpbnQgcHVmZl9kZWNvZGUoc3Ry dWN0IHB1ZmZfc3RhdGUqIHMsIGNvbnN0IHN0cnVjdCBwdWZmX2h1ZmZtYW4qIGgpCnsKICBpbnQg Zmlyc3QgPSAwOwogIGludCBpbmRleCA9IDA7CiAgaW50IGJpdGJ1ZiA9IHMtPmJpdGJ1ZjsKICBp bnQgbGVmdCA9IHMtPmJpdGNudDsKICBpbnQgY29kZSA9IGZpcnN0ID0gaW5kZXggPSAwOwogIGlu dCBsZW4gPSAxOwogIHNob3J0KiBuZXh0ID0gaC0+Y291bnQgKyAxOwogIHdoaWxlICgxKSB7CiAg ICB3aGlsZSAobGVmdC0tKSB7CiAgICAgIGNvZGUgfD0gYml0YnVmICYgMTsKICAgICAgYml0YnVm ID4+PSAxOwogICAgICBpbnQgY291bnQgPSAqbmV4dCsrOwogICAgICBpZiAoY29kZSAtIGNvdW50 IDwgZmlyc3QpIHsKICAgICAgICBzLT5iaXRidWYgPSBiaXRidWY7CiAgICAgICAgcy0+Yml0Y250 ID0gKHMtPmJpdGNudCAtIGxlbikgJiA3OwogICAgICAgIHJldHVybiBoLT5zeW1ib2xbaW5kZXgg KyAoY29kZSAtIGZpcnN0KV07CiAgICAgIH0KICAgICAgaW5kZXggKz0gY291bnQ7CiAgICAgIGZp cnN0ICs9IGNvdW50OwogICAgICBmaXJzdCA8PD0gMTsKICAgICAgY29kZSA8PD0gMTsKICAgICAg bGVuKys7CiAgICB9CiAgICBsZWZ0ID0gKE1BWEJJVFMgKyAxKSAtIGxlbjsKICAgIGlmIChsZWZ0 ID09IDApCiAgICAgIGJyZWFrOwogICAgaWYgKHMtPmluY250ID09IHMtPmlubGVuKQogICAgICBs b25nam1wKHMtPmVudiwgMSk7CiAgICBiaXRidWYgPSBzLT5pbltzLT5pbmNudCsrXTsKICAgIGlm IChsZWZ0ID4gOCkKICAgICAgbGVmdCA9IDg7CiAgfQogIHJldHVybiAtMTA7Cn0Kc3RhdGljIGlu dCBwdWZmX2NvbnN0cnVjdChzdHJ1Y3QgcHVmZl9odWZmbWFuKiBoLCBjb25zdCBzaG9ydCogbGVu Z3RoLCBpbnQgbikKewogIGludCBsZW47CiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsg bGVuKyspCiAgICBoLT5jb3VudFtsZW5dID0gMDsKICBpbnQgc3ltYm9sOwogIGZvciAoc3ltYm9s ID0gMDsgc3ltYm9sIDwgbjsgc3ltYm9sKyspCiAgICAoaC0+Y291bnRbbGVuZ3RoW3N5bWJvbF1d KSsrOwogIGlmIChoLT5jb3VudFswXSA9PSBuKQogICAgcmV0dXJuIDA7CiAgaW50IGxlZnQgPSAx OwogIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7CiAgICBsZWZ0IDw8PSAx OwogICAgbGVmdCAtPSBoLT5jb3VudFtsZW5dOwogICAgaWYgKGxlZnQgPCAwKQogICAgICByZXR1 cm4gbGVmdDsKICB9CiAgc2hvcnQgb2Zmc1tNQVhCSVRTICsgMV07CiAgb2Zmc1sxXSA9IDA7CiAg Zm9yIChsZW4gPSAxOyBsZW4gPCBNQVhCSVRTOyBsZW4rKykKICAgIG9mZnNbbGVuICsgMV0gPSBv ZmZzW2xlbl0gKyBoLT5jb3VudFtsZW5dOwogIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgbjsg c3ltYm9sKyspCiAgICBpZiAobGVuZ3RoW3N5bWJvbF0gIT0gMCkKICAgICAgaC0+c3ltYm9sW29m ZnNbbGVuZ3RoW3N5bWJvbF1dKytdID0gc3ltYm9sOwogIHJldHVybiBsZWZ0Owp9CnN0YXRpYyBp bnQgcHVmZl9jb2RlcyhzdHJ1Y3QgcHVmZl9zdGF0ZSogcywgY29uc3Qgc3RydWN0IHB1ZmZfaHVm Zm1hbiogbGVuY29kZSwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBwdWZmX2h1 ZmZtYW4qIGRpc3Rjb2RlKQp7CiAgc3RhdGljIGNvbnN0IHNob3J0IGxlbnNbMjldID0gezMsICA0 LCAgNSwgIDYsICAgNywgICA4LCAgIDksICAgMTAsICAxMSwgMTMsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDE1LCAxNywgMTksIDIzLCAgMjcsICAzMSwgIDM1LCAgNDMsICA1MSwg NTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LCA4MywgOTksIDExNSwgMTMx LCAxNjMsIDE5NSwgMjI3LCAyNTh9OwogIHN0YXRpYyBjb25zdCBzaG9ydCBsZXh0WzI5XSA9IHsw LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAyLCAyLCAyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAyLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1 LCAwfTsKICBzdGF0aWMgY29uc3Qgc2hvcnQgZGlzdHNbMzBdID0gewogICAgICAxLCAgICAyLCAg ICAzLCAgICA0LCAgICA1LCAgICA3LCAgICA5LCAgICAxMywgICAgMTcsICAgIDI1LAogICAgICAz MywgICA0OSwgICA2NSwgICA5NywgICAxMjksICAxOTMsICAyNTcsICAzODUsICAgNTEzLCAgIDc2 OSwKICAgICAgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSwgODE5MywgMTIyODks IDE2Mzg1LCAyNDU3N307CiAgc3RhdGljIGNvbnN0IHNob3J0IGRleHRbMzBdID0gezAsIDAsIDAs ICAwLCAgMSwgIDEsICAyLCAgMiwgIDMsICAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA0LCA0LCA1LCAgNSwgIDYsICA2LCAgNywgIDcsICA4LCAgOCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOSwgOSwgMTAsIDEwLCAxMSwgMTEsIDEyLCAxMiwgMTMsIDEzfTsK ICBpbnQgc3ltYm9sOwogIGRvIHsKICAgIHN5bWJvbCA9IHB1ZmZfZGVjb2RlKHMsIGxlbmNvZGUp OwogICAgaWYgKHN5bWJvbCA8IDApCiAgICAgIHJldHVybiBzeW1ib2w7CiAgICBpZiAoc3ltYm9s IDwgMjU2KSB7CiAgICAgIGlmIChzLT5vdXRjbnQgPT0gcy0+b3V0bGVuKQogICAgICAgIHJldHVy biAxOwogICAgICBpZiAoc3ltYm9sKQogICAgICAgIHMtPm91dFtzLT5vdXRjbnRdID0gc3ltYm9s OwogICAgICBzLT5vdXRjbnQrKzsKICAgIH0gZWxzZSBpZiAoc3ltYm9sID4gMjU2KSB7CiAgICAg IHN5bWJvbCAtPSAyNTc7CiAgICAgIGlmIChzeW1ib2wgPj0gMjkpCiAgICAgICAgcmV0dXJuIC0x MDsKICAgICAgaW50IGxlbiA9IGxlbnNbc3ltYm9sXSArIHB1ZmZfYml0cyhzLCBsZXh0W3N5bWJv bF0pOwogICAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCBkaXN0Y29kZSk7CiAgICAgIGlmIChz eW1ib2wgPCAwKQogICAgICAgIHJldHVybiBzeW1ib2w7CiAgICAgIHVuc2lnbmVkIGRpc3QgPSBk aXN0c1tzeW1ib2xdICsgcHVmZl9iaXRzKHMsIGRleHRbc3ltYm9sXSk7CiAgICAgIGlmIChkaXN0 ID4gcy0+b3V0Y250KQogICAgICAgIHJldHVybiAtMTE7CiAgICAgIGlmIChzLT5vdXRjbnQgKyBs ZW4gPiBzLT5vdXRsZW4pCiAgICAgICAgcmV0dXJuIDE7CiAgICAgIHdoaWxlIChsZW4tLSkgewog ICAgICAgIGlmIChkaXN0IDw9IHMtPm91dGNudCAmJiBzLT5vdXRbcy0+b3V0Y250IC0gZGlzdF0p CiAgICAgICAgICBzLT5vdXRbcy0+b3V0Y250XSA9IHMtPm91dFtzLT5vdXRjbnQgLSBkaXN0XTsK ICAgICAgICBzLT5vdXRjbnQrKzsKICAgICAgfQogICAgfQogIH0gd2hpbGUgKHN5bWJvbCAhPSAy NTYpOwogIHJldHVybiAwOwp9CnN0YXRpYyBpbnQgcHVmZl9maXhlZChzdHJ1Y3QgcHVmZl9zdGF0 ZSogcykKewogIHN0YXRpYyBpbnQgdmlyZ2luID0gMTsKICBzdGF0aWMgc2hvcnQgbGVuY250W01B WEJJVFMgKyAxXSwgbGVuc3ltW0ZJWExDT0RFU107CiAgc3RhdGljIHNob3J0IGRpc3RjbnRbTUFY QklUUyArIDFdLCBkaXN0c3ltW01BWERDT0RFU107CiAgc3RhdGljIHN0cnVjdCBwdWZmX2h1ZmZt YW4gbGVuY29kZSwgZGlzdGNvZGU7CiAgaWYgKHZpcmdpbikgewogICAgbGVuY29kZS5jb3VudCA9 IGxlbmNudDsKICAgIGxlbmNvZGUuc3ltYm9sID0gbGVuc3ltOwogICAgZGlzdGNvZGUuY291bnQg PSBkaXN0Y250OwogICAgZGlzdGNvZGUuc3ltYm9sID0gZGlzdHN5bTsKICAgIHNob3J0IGxlbmd0 aHNbRklYTENPREVTXTsKICAgIGludCBzeW1ib2w7CiAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJv bCA8IDE0NDsgc3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDg7CiAgICBmb3IgKDsg c3ltYm9sIDwgMjU2OyBzeW1ib2wrKykKICAgICAgbGVuZ3Roc1tzeW1ib2xdID0gOTsKICAgIGZv ciAoOyBzeW1ib2wgPCAyODA7IHN5bWJvbCsrKQogICAgICBsZW5ndGhzW3N5bWJvbF0gPSA3Owog ICAgZm9yICg7IHN5bWJvbCA8IEZJWExDT0RFUzsgc3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3lt Ym9sXSA9IDg7CiAgICBwdWZmX2NvbnN0cnVjdCgmbGVuY29kZSwgbGVuZ3RocywgRklYTENPREVT KTsKICAgIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgTUFYRENPREVTOyBzeW1ib2wrKykKICAg ICAgbGVuZ3Roc1tzeW1ib2xdID0gNTsKICAgIHB1ZmZfY29uc3RydWN0KCZkaXN0Y29kZSwgbGVu Z3RocywgTUFYRENPREVTKTsKICAgIHZpcmdpbiA9IDA7CiAgfQogIHJldHVybiBwdWZmX2NvZGVz KHMsICZsZW5jb2RlLCAmZGlzdGNvZGUpOwp9CnN0YXRpYyBpbnQgcHVmZl9keW5hbWljKHN0cnVj dCBwdWZmX3N0YXRlKiBzKQp7CiAgc3RhdGljIGNvbnN0IHNob3J0IG9yZGVyWzE5XSA9IHsxNiwg MTcsIDE4LCAwLCA4LCAgNywgOSwgIDYsIDEwLCA1LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMTEsIDQsICAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNX07CiAgaW50IG5sZW4gPSBw dWZmX2JpdHMocywgNSkgKyAyNTc7CiAgaW50IG5kaXN0ID0gcHVmZl9iaXRzKHMsIDUpICsgMTsK ICBpbnQgbmNvZGUgPSBwdWZmX2JpdHMocywgNCkgKyA0OwogIGlmIChubGVuID4gTUFYTENPREVT IHx8IG5kaXN0ID4gTUFYRENPREVTKQogICAgcmV0dXJuIC0zOwogIHNob3J0IGxlbmd0aHNbTUFY Q09ERVNdOwogIGludCBpbmRleDsKICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBuY29kZTsgaW5k ZXgrKykKICAgIGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IHB1ZmZfYml0cyhzLCAzKTsKICBmb3Ig KDsgaW5kZXggPCAxOTsgaW5kZXgrKykKICAgIGxlbmd0aHNbb3JkZXJbaW5kZXhdXSA9IDA7CiAg c2hvcnQgbGVuY250W01BWEJJVFMgKyAxXSwgbGVuc3ltW01BWExDT0RFU107CiAgc3RydWN0IHB1 ZmZfaHVmZm1hbiBsZW5jb2RlID0ge2xlbmNudCwgbGVuc3ltfTsKICBpbnQgZXJyID0gcHVmZl9j b25zdHJ1Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIDE5KTsKICBpZiAoZXJyICE9IDApCiAgICByZXR1 cm4gLTQ7CiAgaW5kZXggPSAwOwogIHdoaWxlIChpbmRleCA8IG5sZW4gKyBuZGlzdCkgewogICAg aW50IHN5bWJvbDsKICAgIGludCBsZW47CiAgICBzeW1ib2wgPSBwdWZmX2RlY29kZShzLCAmbGVu Y29kZSk7CiAgICBpZiAoc3ltYm9sIDwgMCkKICAgICAgcmV0dXJuIHN5bWJvbDsKICAgIGlmIChz eW1ib2wgPCAxNikKICAgICAgbGVuZ3Roc1tpbmRleCsrXSA9IHN5bWJvbDsKICAgIGVsc2Ugewog ICAgICBsZW4gPSAwOwogICAgICBpZiAoc3ltYm9sID09IDE2KSB7CiAgICAgICAgaWYgKGluZGV4 ID09IDApCiAgICAgICAgICByZXR1cm4gLTU7CiAgICAgICAgbGVuID0gbGVuZ3Roc1tpbmRleCAt IDFdOwogICAgICAgIHN5bWJvbCA9IDMgKyBwdWZmX2JpdHMocywgMik7CiAgICAgIH0gZWxzZSBp ZiAoc3ltYm9sID09IDE3KQogICAgICAgIHN5bWJvbCA9IDMgKyBwdWZmX2JpdHMocywgMyk7CiAg ICAgIGVsc2UKICAgICAgICBzeW1ib2wgPSAxMSArIHB1ZmZfYml0cyhzLCA3KTsKICAgICAgaWYg KGluZGV4ICsgc3ltYm9sID4gbmxlbiArIG5kaXN0KQogICAgICAgIHJldHVybiAtNjsKICAgICAg d2hpbGUgKHN5bWJvbC0tKQogICAgICAgIGxlbmd0aHNbaW5kZXgrK10gPSBsZW47CiAgICB9CiAg fQogIGlmIChsZW5ndGhzWzI1Nl0gPT0gMCkKICAgIHJldHVybiAtOTsKICBlcnIgPSBwdWZmX2Nv bnN0cnVjdCgmbGVuY29kZSwgbGVuZ3Rocywgbmxlbik7CiAgaWYgKGVyciAmJiAoZXJyIDwgMCB8 fCBubGVuICE9IGxlbmNvZGUuY291bnRbMF0gKyBsZW5jb2RlLmNvdW50WzFdKSkKICAgIHJldHVy biAtNzsKICBzaG9ydCBkaXN0Y250W01BWEJJVFMgKyAxXSwgZGlzdHN5bVtNQVhEQ09ERVNdOwog IHN0cnVjdCBwdWZmX2h1ZmZtYW4gZGlzdGNvZGUgPSB7ZGlzdGNudCwgZGlzdHN5bX07CiAgZXJy ID0gcHVmZl9jb25zdHJ1Y3QoJmRpc3Rjb2RlLCBsZW5ndGhzICsgbmxlbiwgbmRpc3QpOwogIGlm IChlcnIgJiYgKGVyciA8IDAgfHwgbmRpc3QgIT0gZGlzdGNvZGUuY291bnRbMF0gKyBkaXN0Y29k ZS5jb3VudFsxXSkpCiAgICByZXR1cm4gLTg7CiAgcmV0dXJuIHB1ZmZfY29kZXMocywgJmxlbmNv ZGUsICZkaXN0Y29kZSk7Cn0Kc3RhdGljIGludCBwdWZmKHVuc2lnbmVkIGNoYXIqIGRlc3QsIHVu c2lnbmVkIGxvbmcqIGRlc3RsZW4sCiAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy KiBzb3VyY2UsIHVuc2lnbmVkIGxvbmcgc291cmNlbGVuKQp7CiAgc3RydWN0IHB1ZmZfc3RhdGUg cyA9IHsKICAgICAgLm91dCA9IGRlc3QsCiAgICAgIC5vdXRsZW4gPSAqZGVzdGxlbiwKICAgICAg Lm91dGNudCA9IDAsCiAgICAgIC5pbiA9IHNvdXJjZSwKICAgICAgLmlubGVuID0gc291cmNlbGVu LAogICAgICAuaW5jbnQgPSAwLAogICAgICAuYml0YnVmID0gMCwKICAgICAgLmJpdGNudCA9IDAs CiAgfTsKICBpbnQgZXJyOwogIGlmIChzZXRqbXAocy5lbnYpICE9IDApCiAgICBlcnIgPSAyOwog IGVsc2UgewogICAgaW50IGxhc3Q7CiAgICBkbyB7CiAgICAgIGxhc3QgPSBwdWZmX2JpdHMoJnMs IDEpOwogICAgICBpbnQgdHlwZSA9IHB1ZmZfYml0cygmcywgMik7CiAgICAgIGVyciA9IHR5cGUg PT0gMCA/IHB1ZmZfc3RvcmVkKCZzKQogICAgICAgICAgICAgICAgICAgICAgOiAodHlwZSA9PSAx ID8gcHVmZl9maXhlZCgmcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICh0 eXBlID09IDIgPyBwdWZmX2R5bmFtaWMoJnMpIDogLTEpKTsKICAgICAgaWYgKGVyciAhPSAwKQog ICAgICAgIGJyZWFrOwogICAgfSB3aGlsZSAoIWxhc3QpOwogIH0KICAqZGVzdGxlbiA9IHMub3V0 Y250OwogIHJldHVybiBlcnI7Cn0KCi8vJSBFTkQgQ09ERSBERVJJVkVEIEZST00gcHVmZi57Yyxo fQoKI2RlZmluZSBaTElCX0hFQURFUl9XSURUSCAyCgpzdGF0aWMgaW50IHB1ZmZfemxpYl90b19m aWxlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHNvdXJjZWxlbiwgaW50IGRlc3RfZmQpCnsKICBpZiAoc291cmNl bGVuIDwgWkxJQl9IRUFERVJfV0lEVEgpCiAgICByZXR1cm4gMDsKICBzb3VyY2UgKz0gWkxJQl9I RUFERVJfV0lEVEg7CiAgc291cmNlbGVuIC09IFpMSUJfSEVBREVSX1dJRFRIOwogIGNvbnN0IHVu c2lnbmVkIGxvbmcgbWF4X2Rlc3RsZW4gPSAxMzIgPDwgMjA7CiAgdm9pZCogcmV0ID0gbW1hcCgw LCBtYXhfZGVzdGxlbiwgUFJPVF9XUklURSB8IFBST1RfUkVBRCwKICAgICAgICAgICAgICAgICAg IE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKICBpZiAocmV0ID09IE1BUF9GQUlMRUQp CiAgICByZXR1cm4gLTE7CiAgdW5zaWduZWQgY2hhciogZGVzdCA9ICh1bnNpZ25lZCBjaGFyKily ZXQ7CiAgdW5zaWduZWQgbG9uZyBkZXN0bGVuID0gbWF4X2Rlc3RsZW47CiAgaW50IGVyciA9IHB1 ZmYoZGVzdCwgJmRlc3RsZW4sIHNvdXJjZSwgc291cmNlbGVuKTsKICBpZiAoZXJyKSB7CiAgICBt dW5tYXAoZGVzdCwgbWF4X2Rlc3RsZW4pOwogICAgZXJybm8gPSAtZXJyOwogICAgcmV0dXJuIC0x OwogIH0KICBpZiAod3JpdGUoZGVzdF9mZCwgZGVzdCwgZGVzdGxlbikgIT0gKHNzaXplX3QpZGVz dGxlbikgewogICAgbXVubWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKICAgIHJldHVybiAtMTsKICB9 CiAgcmV0dXJuIG11bm1hcChkZXN0LCBtYXhfZGVzdGxlbik7Cn0KCnN0YXRpYyBpbnQgc2V0dXBf bG9vcF9kZXZpY2UodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxvb3BuYW1lLCBpbnQqIGxvb3Bm ZF9wKQp7CiAgaW50IGVyciA9IDAsIGxvb3BmZCA9IC0xOwogIGludCBtZW1mZCA9IHN5c2NhbGwo X19OUl9tZW1mZF9jcmVhdGUsICJzeXprYWxsZXIiLCAwKTsKICBpZiAobWVtZmQgPT0gLTEpIHsK ICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcjsKICB9CiAgaWYgKHB1ZmZfemxpYl90b19m aWxlKGRhdGEsIHNpemUsIG1lbWZkKSkgewogICAgZXJyID0gZXJybm87CiAgICBnb3RvIGVycm9y X2Nsb3NlX21lbWZkOwogIH0KICBsb29wZmQgPSBvcGVuKGxvb3BuYW1lLCBPX1JEV1IpOwogIGlm IChsb29wZmQgPT0gLTEpIHsKICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcl9jbG9zZV9t ZW1mZDsKICB9CiAgaWYgKGlvY3RsKGxvb3BmZCwgTE9PUF9TRVRfRkQsIG1lbWZkKSkgewogICAg aWYgKGVycm5vICE9IEVCVVNZKSB7CiAgICAgIGVyciA9IGVycm5vOwogICAgICBnb3RvIGVycm9y X2Nsb3NlX2xvb3A7CiAgICB9CiAgICBpb2N0bChsb29wZmQsIExPT1BfQ0xSX0ZELCAwKTsKICAg IHVzbGVlcCgxMDAwKTsKICAgIGlmIChpb2N0bChsb29wZmQsIExPT1BfU0VUX0ZELCBtZW1mZCkp IHsKICAgICAgZXJyID0gZXJybm87CiAgICAgIGdvdG8gZXJyb3JfY2xvc2VfbG9vcDsKICAgIH0K ICB9CiAgY2xvc2UobWVtZmQpOwogICpsb29wZmRfcCA9IGxvb3BmZDsKICByZXR1cm4gMDsKCmVy cm9yX2Nsb3NlX2xvb3A6CiAgY2xvc2UobG9vcGZkKTsKZXJyb3JfY2xvc2VfbWVtZmQ6CiAgY2xv c2UobWVtZmQpOwplcnJvcjoKICBlcnJubyA9IGVycjsKICByZXR1cm4gLTE7Cn0KCnN0YXRpYyB2 b2lkIHJlc2V0X2xvb3BfZGV2aWNlKGNvbnN0IGNoYXIqIGxvb3BuYW1lKQp7CiAgaW50IGxvb3Bm ZCA9IG9wZW4obG9vcG5hbWUsIE9fUkRXUik7CiAgaWYgKGxvb3BmZCA9PSAtMSkgewogICAgcmV0 dXJuOwogIH0KICBpZiAoaW9jdGwobG9vcGZkLCBMT09QX0NMUl9GRCwgMCkpIHsKICB9CiAgY2xv c2UobG9vcGZkKTsKfQoKc3RhdGljIGxvbmcgc3l6X21vdW50X2ltYWdlKHZvbGF0aWxlIGxvbmcg ZnNhcmcsIHZvbGF0aWxlIGxvbmcgZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9s YXRpbGUgbG9uZyBmbGFncywgdm9sYXRpbGUgbG9uZyBvcHRzYXJnLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9sYXRpbGUgbG9uZyBjaGFuZ2VfZGlyLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyBzaXplLCB2b2xhdGlsZSBsb25nIGltYWdl KQp7CiAgdW5zaWduZWQgY2hhciogZGF0YSA9ICh1bnNpZ25lZCBjaGFyKilpbWFnZTsKICBpbnQg cmVzID0gLTEsIGVyciA9IDAsIG5lZWRfbG9vcF9kZXZpY2UgPSAhIXNpemU7CiAgY2hhciogbW91 bnRfb3B0cyA9IChjaGFyKilvcHRzYXJnOwogIGNoYXIqIHRhcmdldCA9IChjaGFyKilkaXI7CiAg Y2hhciogZnMgPSAoY2hhciopZnNhcmc7CiAgY2hhciogc291cmNlID0gTlVMTDsKICBjaGFyIGxv b3BuYW1lWzY0XTsKICBpZiAobmVlZF9sb29wX2RldmljZSkgewogICAgaW50IGxvb3BmZDsKICAg IG1lbXNldChsb29wbmFtZSwgMCwgc2l6ZW9mKGxvb3BuYW1lKSk7CiAgICBzbnByaW50Zihsb29w bmFtZSwgc2l6ZW9mKGxvb3BuYW1lKSwgIi9kZXYvbG9vcCVsbHUiLCBwcm9jaWQpOwogICAgaWYg KHNldHVwX2xvb3BfZGV2aWNlKGRhdGEsIHNpemUsIGxvb3BuYW1lLCAmbG9vcGZkKSA9PSAtMSkK ICAgICAgcmV0dXJuIC0xOwogICAgY2xvc2UobG9vcGZkKTsKICAgIHNvdXJjZSA9IGxvb3BuYW1l OwogIH0KICBta2Rpcih0YXJnZXQsIDA3NzcpOwogIGNoYXIgb3B0c1syNTZdOwogIG1lbXNldChv cHRzLCAwLCBzaXplb2Yob3B0cykpOwogIGlmIChzdHJsZW4obW91bnRfb3B0cykgPiAoc2l6ZW9m KG9wdHMpIC0gMzIpKSB7CiAgfQogIHN0cm5jcHkob3B0cywgbW91bnRfb3B0cywgc2l6ZW9mKG9w dHMpIC0gMzIpOwogIGlmIChzdHJjbXAoZnMsICJpc285NjYwIikgPT0gMCkgewogICAgZmxhZ3Mg fD0gTVNfUkRPTkxZOwogIH0gZWxzZSBpZiAoc3RybmNtcChmcywgImV4dCIsIDMpID09IDApIHsK ICAgIGJvb2wgaGFzX3JlbW91bnRfcm8gPSBmYWxzZTsKICAgIGNoYXIqIHJlbW91bnRfcm9fc3Rh cnQgPSBzdHJzdHIob3B0cywgImVycm9ycz1yZW1vdW50LXJvIik7CiAgICBpZiAocmVtb3VudF9y b19zdGFydCAhPSBOVUxMKSB7CiAgICAgIGNoYXIgYWZ0ZXIgPSAqKHJlbW91bnRfcm9fc3RhcnQg KyBzdHJsZW4oImVycm9ycz1yZW1vdW50LXJvIikpOwogICAgICBjaGFyIGJlZm9yZSA9IHJlbW91 bnRfcm9fc3RhcnQgPT0gb3B0cyA/ICdcMCcgOiAqKHJlbW91bnRfcm9fc3RhcnQgLSAxKTsKICAg ICAgaGFzX3JlbW91bnRfcm8gPSAoKGJlZm9yZSA9PSAnXDAnIHx8IGJlZm9yZSA9PSAnLCcpICYm CiAgICAgICAgICAgICAgICAgICAgICAgIChhZnRlciA9PSAnXDAnIHx8IGFmdGVyID09ICcsJykp OwogICAgfQogICAgaWYgKHN0cnN0cihvcHRzLCAiZXJyb3JzPXBhbmljIikgfHwgIWhhc19yZW1v dW50X3JvKQogICAgICBzdHJjYXQob3B0cywgIixlcnJvcnM9Y29udGludWUiKTsKICB9IGVsc2Ug aWYgKHN0cmNtcChmcywgInhmcyIpID09IDApIHsKICAgIHN0cmNhdChvcHRzLCAiLG5vdXVpZCIp OwogIH0KICByZXMgPSBtb3VudChzb3VyY2UsIHRhcmdldCwgZnMsIGZsYWdzLCBvcHRzKTsKICBp ZiAocmVzID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3JfY2xlYXJfbG9v cDsKICB9CiAgcmVzID0gb3Blbih0YXJnZXQsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOwogIGlm IChyZXMgPT0gLTEpIHsKICAgIGVyciA9IGVycm5vOwogICAgZ290byBlcnJvcl9jbGVhcl9sb29w OwogIH0KICBpZiAoY2hhbmdlX2RpcikgewogICAgcmVzID0gY2hkaXIodGFyZ2V0KTsKICAgIGlm IChyZXMgPT0gLTEpIHsKICAgICAgZXJyID0gZXJybm87CiAgICB9CiAgfQoKZXJyb3JfY2xlYXJf bG9vcDoKICBpZiAobmVlZF9sb29wX2RldmljZSkKICAgIHJlc2V0X2xvb3BfZGV2aWNlKGxvb3Bu YW1lKTsKICBlcnJubyA9IGVycjsKICByZXR1cm4gcmVzOwp9CgpzdGF0aWMgdm9pZCBzZXR1cF9j b21tb24oKQp7CiAgaWYgKG1vdW50KDAsICIvc3lzL2ZzL2Z1c2UvY29ubmVjdGlvbnMiLCAiZnVz ZWN0bCIsIDAsIDApKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBzZXR1cF9iaW5kZXJmcygpCnsKICBp ZiAobWtkaXIoIi9kZXYvYmluZGVyZnMiLCAwNzc3KSkgewogIH0KICBpZiAobW91bnQoImJpbmRl ciIsICIvZGV2L2JpbmRlcmZzIiwgImJpbmRlciIsIDAsIE5VTEwpKSB7CiAgfQogIGlmIChzeW1s aW5rKCIvZGV2L2JpbmRlcmZzIiwgIi4vYmluZGVyZnMiKSkgewogIH0KfQoKc3RhdGljIHZvaWQg bG9vcCgpOwoKc3RhdGljIHZvaWQgc2FuZGJveF9jb21tb24oKQp7CiAgcHJjdGwoUFJfU0VUX1BE RUFUSFNJRywgU0lHS0lMTCwgMCwgMCwgMCk7CiAgc2V0c2lkKCk7CiAgc3RydWN0IHJsaW1pdCBy bGltOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4ID0gKDIwMCA8PCAyMCk7CiAgc2V0 cmxpbWl0KFJMSU1JVF9BUywgJnJsaW0pOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4 ID0gMzIgPDwgMjA7CiAgc2V0cmxpbWl0KFJMSU1JVF9NRU1MT0NLLCAmcmxpbSk7CiAgcmxpbS5y bGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAxMzYgPDwgMjA7CiAgc2V0cmxpbWl0KFJMSU1JVF9G U0laRSwgJnJsaW0pOwogIHJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4ID0gMSA8PCAyMDsK ICBzZXRybGltaXQoUkxJTUlUX1NUQUNLLCAmcmxpbSk7CiAgcmxpbS5ybGltX2N1ciA9IHJsaW0u cmxpbV9tYXggPSAxMjggPDwgMjA7CiAgc2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAmcmxpbSk7CiAg cmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAyNTY7CiAgc2V0cmxpbWl0KFJMSU1JVF9O T0ZJTEUsICZybGltKTsKICBpZiAodW5zaGFyZShDTE9ORV9ORVdOUykpIHsKICB9CiAgaWYgKG1v dW50KE5VTEwsICIvIiwgTlVMTCwgTVNfUkVDIHwgTVNfUFJJVkFURSwgTlVMTCkpIHsKICB9CiAg aWYgKHVuc2hhcmUoQ0xPTkVfTkVXSVBDKSkgewogIH0KICBpZiAodW5zaGFyZSgweDAyMDAwMDAw KSkgewogIH0KICBpZiAodW5zaGFyZShDTE9ORV9ORVdVVFMpKSB7CiAgfQogIGlmICh1bnNoYXJl KENMT05FX1NZU1ZTRU0pKSB7CiAgfQogIHR5cGVkZWYgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIq IG5hbWU7CiAgICBjb25zdCBjaGFyKiB2YWx1ZTsKICB9IHN5c2N0bF90OwogIHN0YXRpYyBjb25z dCBzeXNjdGxfdCBzeXNjdGxzW10gPSB7CiAgICAgIHsiL3Byb2Mvc3lzL2tlcm5lbC9zaG1tYXgi LCAiMTY3NzcyMTYifSwKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL3NobWFsbCIsICI1MzY4NzA5 MTIifSwKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL3NobW1uaSIsICIxMDI0In0sCiAgICAgIHsi L3Byb2Mvc3lzL2tlcm5lbC9tc2dtYXgiLCAiODE5MiJ9LAogICAgICB7Ii9wcm9jL3N5cy9rZXJu ZWwvbXNnbW5pIiwgIjEwMjQifSwKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL21zZ21uYiIsICIx MDI0In0sCiAgICAgIHsiL3Byb2Mvc3lzL2tlcm5lbC9zZW0iLCAiMTAyNCAxMDQ4NTc2IDUwMCAx MDI0In0sCiAgfTsKICB1bnNpZ25lZCBpOwogIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc3lzY3Rs cykgLyBzaXplb2Yoc3lzY3Rsc1swXSk7IGkrKykKICAgIHdyaXRlX2ZpbGUoc3lzY3Rsc1tpXS5u YW1lLCBzeXNjdGxzW2ldLnZhbHVlKTsKfQoKc3RhdGljIGludCB3YWl0X2Zvcl9sb29wKGludCBw aWQpCnsKICBpZiAocGlkIDwgMCkKICAgIGV4aXQoMSk7CiAgaW50IHN0YXR1cyA9IDA7CiAgd2hp bGUgKHdhaXRwaWQoLTEsICZzdGF0dXMsIF9fV0FMTCkgIT0gcGlkKSB7CiAgfQogIHJldHVybiBX RVhJVFNUQVRVUyhzdGF0dXMpOwp9CgpzdGF0aWMgdm9pZCBkcm9wX2NhcHModm9pZCkKewogIHN0 cnVjdCBfX3VzZXJfY2FwX2hlYWRlcl9zdHJ1Y3QgY2FwX2hkciA9IHt9OwogIHN0cnVjdCBfX3Vz ZXJfY2FwX2RhdGFfc3RydWN0IGNhcF9kYXRhWzJdID0ge307CiAgY2FwX2hkci52ZXJzaW9uID0g X0xJTlVYX0NBUEFCSUxJVFlfVkVSU0lPTl8zOwogIGNhcF9oZHIucGlkID0gZ2V0cGlkKCk7CiAg aWYgKHN5c2NhbGwoU1lTX2NhcGdldCwgJmNhcF9oZHIsICZjYXBfZGF0YSkpCiAgICBleGl0KDEp OwogIGNvbnN0IGludCBkcm9wID0gKDEgPDwgQ0FQX1NZU19QVFJBQ0UpIHwgKDEgPDwgQ0FQX1NZ U19OSUNFKTsKICBjYXBfZGF0YVswXS5lZmZlY3RpdmUgJj0gfmRyb3A7CiAgY2FwX2RhdGFbMF0u cGVybWl0dGVkICY9IH5kcm9wOwogIGNhcF9kYXRhWzBdLmluaGVyaXRhYmxlICY9IH5kcm9wOwog IGlmIChzeXNjYWxsKFNZU19jYXBzZXQsICZjYXBfaGRyLCAmY2FwX2RhdGEpKQogICAgZXhpdCgx KTsKfQoKc3RhdGljIGludCBkb19zYW5kYm94X25vbmUodm9pZCkKewogIGlmICh1bnNoYXJlKENM T05FX05FV1BJRCkpIHsKICB9CiAgaW50IHBpZCA9IGZvcmsoKTsKICBpZiAocGlkICE9IDApCiAg ICByZXR1cm4gd2FpdF9mb3JfbG9vcChwaWQpOwogIHNldHVwX2NvbW1vbigpOwogIHNhbmRib3hf Y29tbW9uKCk7CiAgZHJvcF9jYXBzKCk7CiAgaWYgKHVuc2hhcmUoQ0xPTkVfTkVXTkVUKSkgewog IH0KICB3cml0ZV9maWxlKCIvcHJvYy9zeXMvbmV0L2lwdjQvcGluZ19ncm91cF9yYW5nZSIsICIw IDY1NTM1Iik7CiAgc2V0dXBfYmluZGVyZnMoKTsKICBsb29wKCk7CiAgZXhpdCgxKTsKfQoKdWlu dDY0X3QgclszXSA9IHsweGZmZmZmZmZmZmZmZmZmZmYsIDB4ZmZmZmZmZmZmZmZmZmZmZiwgMHgw fTsKCnZvaWQgbG9vcCh2b2lkKQp7CiAgaW50cHRyX3QgcmVzID0gMDsKICBtZW1jcHkoKHZvaWQq KTB4MjAwMDAwODAsICJzcXVhc2hmc1wwMDAiLCA5KTsKICBtZW1jcHkoKHZvaWQqKTB4MjAwMDAw YzAsICIuL2ZpbGUxXDAwMCIsIDgpOwogIG1lbWNweSgKICAgICAgKHZvaWQqKTB4MjAwMDA1MDAs CiAgICAgICJceDc4XHg5Y1x4ZWNceDU1XHhjZFx4OGFceDEzXHg0MVx4MTBceGZlXHg2YVx4ZDJc eDQ5XHg3Nlx4ZDBceGMzXHg5ZVx4YmQiCiAgICAgICJceGJhXHhiOFx4N2JceGQxXHg0Y1x4NjZc eDQxXHg3Y1x4MDNceDdkXHgwMFx4MWZceGMwXHgyMVx4M2JceGJiXHgyZVx4ZjYiCiAgICAgICJc eGZhXHg5M1x4MDlceDY4XHhjMlx4MWVceGM2XHg1M1x4MmVceDgyXHhlMlx4NGJceDA0XHg3Y1x4 MGFceDBmXHg4Mlx4MGYiCiAgICAgICJceGUwXHg0MVx4YzRceDYzXHgzY1x4MjhceGU4XHgyMVx4 NWVceDg0XHg4MFx4NDRceGJhXHhiYlx4YTZceGQzXHhkMVx4OTgiCiAgICAgICJceDRjXHg5Mlx4 ODVceDVjXHhmYVx4ODNceGExXHg3ZVx4ZmFceGFiXHhlYVx4ZWFceGVhXHg5ZVx4ZWVceGZiXHhk OVx4OTMiCiAgICAgICJceGFjXHgwZVx4ZTBceGY3XHhlOFx4YmNceDg1XHg1ZFx4NjhceDEwXHgy ZVx4ZTNceDMzXHgxMVx4MDRceDgwXHg3ZFx4MzIiCiAgICAgICJceGJlXHg3MVx4Y2RceGM4XHg5 Zlx4MmNceDI3XHg4Y1x4YWZceGMyXHhkOFx4NGRceGY2XHhlZlx4MThceDgxXHgyZlx4NmMiCiAg ICAgICJceDY3XHhkZFx4ZGVceDg3XHgxN1x4NDZceGVkXHgzZFx4NDhceGE0XHg0Y1x4ZGJceDU5 XHg3N1x4ODlceDQyXHgwNFx4MmMiCiAgICAgICJceGUzXHhjY1x4MjhceGE1XHg0OFx4ZWJceDJi XHg4NFx4ODVceDFjXHhkNVx4MDVceGI1XHhiY1x4ZDlceDIxXHg2ZVx4MGIiCiAgICAgICJceDU2 XHg5Y1x4ZWJceDI1XHg4N1x4MjVceDUyXHgyMlx4ZGZceGEwXHhlNlx4NTdceDMzXHgxZVx4YjVc eGMxXHhmZlx4NzAiCiAgICAgICJceDJhXHhlYlx4NTVceGI4XHhiNlx4NDJceGFiXHg2ZFx4ZWFc eGM1XHgyYVx4ZGZceGNhXHg5MVx4MmJceGE1XHhiYlx4NTEiCiAgICAgICJceGM1XHg2Mlx4NGVc eDc1XHhlM1x4OWFceDlkXHgxM1x4NDVceDI1XHhhMlx4M2VceGJkXHgzNlx4ZGJceGI5XHg5NVx4 ZjYiCiAgICAgICJceDJlXHg1M1x4ZTZceDFjXHhiZlx4ZmZceDJhXHhiNFx4OTBceDEzXHhhY1x4 MzJceDNiXHgyY1x4YjJceGRiXHhjZlx4MDMiCiAgICAgICJceDk4XHgxM1x4ZmZceDcxXHg3NFx4 ZGVceDUyXHg5N1x4ZGFceDNkXHhiZVx4YzVceDk0XHhlZlx4YzhceDdjXHhjNVx4MmYiCiAgICAg ICJceGExXHgzOVx4Y2FceDc4XHhlN1x4NzBceGFlXHgwOFx4MjBceDA3XHhhOFx4ODJceDA5XHgx NVx4MWNceGExXHg2Zlx4NGIiCiAgICAgICJceDYwXHgxZlx4NDBceGEzXHg3M1x4ZjZceGI4XHg5 MVx4NzVceDdiXHhkN1x4NGZceGNmXHg5Mlx4OTNceGY0XHgyNFx4N2QiCiAgICAgICJceDE4XHhj N1x4ODdceDM3XHhhM1x4ZjdceDk3XHg0Y1x4NDZceDk5XHg0Nlx4OGRceGUzXHg1M1x4OTlceDQ2 XHg4NFx4MWYiCiAgICAgICJceDM2XHgzY1x4NTBceDhhXHg5OFx4NTZceGE5XHhmZVx4ZDNceGQw XHg4ZVx4M2JceDAzXHgwNlx4YjlceDZiXHg5MFx4NTMiCiAgICAgICJceDFhXHgzM1x4MjlceDc0 XHg3Mlx4ZDdceDM0XHhjM1x4ZGNceGRlXHgwN1x4NTdceDlkXHhjMFx4MTBceDA4XHg5Y1x4ZDgi CiAgICAgICJceDQyXHg0ZVx4ZjNceGJlXHhiNVx4MzlceGVhXHhlY1x4NTNceGFkXHhiOFx4OGJc eDZiXHhmYVx4NzJceDdmXHg5YVx4YWIiCiAgICAgICJceGUxXHg5OFx4YmRceDdiXHg1MFx4ZDlc eDc2XHhhMFx4OTZceGM2XHg1NFx4YTFceDhkXHhhNlx4NzBceGVhXHgwNFx4YzYiCiAgICAgICJc eDk2XHg3NVx4YTNceGY1XHg0OFx4MWVceGY1XHg0MVx4NTBceGVmXHhjYlx4NzFceDI4XHhkM1x4 NjhceDAwXHg4MVx4YTAiCiAgICAgICJceDA4XHgxYlx4YTJceDZhXHg4ZFx4ZDhceDM1XHgwZVx4 NmZceGQ5XHhlNVx4ZjdceDU5XHhlZVx4YjFceGJjXHhjM1x4NzIiCiAgICAgICJceGMwXHg3Mlx4 YzhceGIyXHg3OFx4YmJceGRlXHhmMFx4NWJceDI0XHg3NFx4ODZceGVmXHg2Y1x4MWRceGU0XHg0 MFx4NGQiCiAgICAgICJceGI3XHhiY1x4YWRceDFmXHhhZlx4NjdceDQ5XHhhN1x4ZDNceDZlXHgy YVx4OWZceGQ2XHg2Mlx4ZWJceDhiXHg3N1x4ZWQiCiAgICAgICJceGNjXHgwMVx4Y2ZceDVhXHhi Y1x4ODZceDU0XHg1NFx4NTJceGZmXHg3Ylx4YWZceDAwXHhmY1x4OWFceGUzXHhmM1x4ZjAiCiAg ICAgICJceGYwXHhmMFx4ZjBceGYwXHhmMFx4ZjBceGQ4XHgzYVx4ZmVceDA0XHgwMFx4MDBceGZm XHhmZlx4ZWRceDk4XHg0OSIKICAgICAgIlx4MWQiLAogICAgICA0ODYpOwogIHN5el9tb3VudF9p bWFnZSgvKmZzPSovMHgyMDAwMDA4MCwgLypkaXI9Ki8weDIwMDAwMGMwLAogICAgICAgICAgICAg ICAgICAvKmZsYWdzPU1TX0lfVkVSU0lPTnxNU19OT1NVSUR8TVNfTk9ERVYqLyAweDgwMDAwNiwK ICAgICAgICAgICAgICAgICAgLypvcHRzPSovMHgyMDAwMDAwMCwgLypjaGRpcj0qLzEsIC8qc2l6 ZT0qLzB4MWU2LAogICAgICAgICAgICAgICAgICAvKmltZz0qLzB4MjAwMDA1MDApOwogIG1lbWNw eSgodm9pZCopMHgyMDAwMDEwMCwgIi4vZmlsZTFcMDAwIiwgOCk7CiAgcmVzID0gc3lzY2FsbChf X05SX29wZW5hdCwgLypmZD0qLzB4ZmZmZmZmOWMsIC8qZmlsZT0qLzB4MjAwMDAxMDB1bCwKICAg ICAgICAgICAgICAgIC8qZmxhZ3M9T19TWU5DfE9fTk9DVFRZfE9fTk9BVElNRXxGQVNZTkN8T19B UFBFTkQqLyAweDE0MzUwMHVsLAogICAgICAgICAgICAgICAgLyptb2RlPSovMHVsKTsKICBpZiAo cmVzICE9IC0xKQogICAgclswXSA9IHJlczsKICByZXMgPSBzeXNjYWxsKF9fTlJfZHVwMiwgLypv bGRmZD0qL3JbMF0sIC8qbmV3ZmQ9Ki9yWzBdKTsKICBpZiAocmVzICE9IC0xKQogICAgclsxXSA9 IHJlczsKICByZXMgPSBzeXNjYWxsKF9fTlJfbW1hcCwgLyphZGRyPSovMHgyMGZmMDAwMHVsLCAv Kmxlbj0qLzB4MTAwMDB1bCwKICAgICAgICAgICAgICAgIC8qcHJvdD1QUk9UX1NFTXxQUk9UX1JF QUQqLyA5dWwsCiAgICAgICAgICAgICAgICAvKmZsYWdzPU1BUF9GSVhFRHxNQVBfUFJJVkFURSov IDB4MTJ1bCwgLypmZD0qL3JbMV0sCiAgICAgICAgICAgICAgICAvKm9mZnNldD0qLzB4ODAwMDAw MHVsKTsKICBpZiAocmVzICE9IC0xKQogICAgclsyXSA9IHJlczsKICBzeXpfaW9fdXJpbmdfc3Vi bWl0KC8qcmluZ19wdHI9Ki9yWzJdLCAvKnNxZXNfcHRyPSovMCwgLypzcWU9Ki8wKTsKfQppbnQg bWFpbih2b2lkKQp7CiAgc3lzY2FsbChfX05SX21tYXAsIC8qYWRkcj0qLzB4MWZmZmYwMDB1bCwg LypsZW49Ki8weDEwMDB1bCwgLypwcm90PSovMHVsLAogICAgICAgICAgLypmbGFncz1NQVBfRklY RUR8TUFQX0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypmZD0qLy0xLAogICAgICAg ICAgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDIwMDAw MDAwdWwsIC8qbGVuPSovMHgxMDAwMDAwdWwsCiAgICAgICAgICAvKnByb3Q9UFJPVF9XUklURXxQ Uk9UX1JFQUR8UFJPVF9FWEVDKi8gN3VsLAogICAgICAgICAgLypmbGFncz1NQVBfRklYRUR8TUFQ X0FOT05ZTU9VU3xNQVBfUFJJVkFURSovIDB4MzJ1bCwgLypmZD0qLy0xLAogICAgICAgICAgLypv ZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDIxMDAwMDAwdWws IC8qbGVuPSovMHgxMDAwdWwsIC8qcHJvdD0qLzB1bCwKICAgICAgICAgIC8qZmxhZ3M9TUFQX0ZJ WEVEfE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZBVEUqLyAweDMydWwsIC8qZmQ9Ki8tMSwKICAgICAg ICAgIC8qb2Zmc2V0PSovMHVsKTsKICBkb19zYW5kYm94X25vbmUoKTsKICByZXR1cm4gMDsKfQo= ------=ALIBOUNDARY_83369_7feb7058c700_661340af_73448c--