Received: by 2002:a05:7412:5112:b0:fa:6e18:a558 with SMTP id fm18csp1117903rdb; Wed, 24 Jan 2024 05:34:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IGg2A8CvwGqPfsRjxD+PSzW0i0I9zrhGHkKLTMC9AVeBXy33c3eSQRkEbGDKCeJGd5aOxwW X-Received: by 2002:a05:622a:22a9:b0:42a:5bfe:314a with SMTP id ay41-20020a05622a22a900b0042a5bfe314amr1518755qtb.47.1706103250700; Wed, 24 Jan 2024 05:34:10 -0800 (PST) Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id r6-20020a05622a034600b0042a48f2d01fsi5105958qtw.188.2024.01.24.05.34.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Jan 2024 05:34:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-37069-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@illinois.edu header.s=campusrelays header.b=EbBmHIpR; arc=fail (signature failed); spf=pass (google.com: domain of linux-kernel+bounces-37069-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-37069-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=illinois.edu 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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 54AF01C23356 for ; Wed, 24 Jan 2024 13:34:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7085C77F23; Wed, 24 Jan 2024 13:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=illinois.edu header.i=@illinois.edu header.b="EbBmHIpR" Received: from mx0a-00007101.pphosted.com (mx0a-00007101.pphosted.com [148.163.135.28]) (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 0003A8BE1; Wed, 24 Jan 2024 13:33:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.135.28 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706103238; cv=fail; b=h/ihw/eAXpBLqBBl2+BIiMcbxFea2c/aneV6ulpS31OjWJfHbh53okOUL9FlFxNuIQcYlO2kA404mQsT5V2wtq3g+B4UO4yA/4Ec55PR8HUBUzPPw0QGS9iqXOxyNa0DqU7W6Y/XIU1799lTIkWZAhD7WZy2CWnqRbUbz6R8gq8= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706103238; c=relaxed/simple; bh=C/vED/MaQL7gINrfdLo5C+G4K57bz6Tku9P0XHvXOos=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=YBgcarWTZftJO/8KZGwV9896WY4i9BRAIQZQJRuqnwLT9Rq3/kfLD6QXVqgh9meYU76+doFx8fNyulazy8RIEfVQEyq8W4cCWIeDb4g+I1NpYzIXEymq61VEbNS/Mdmp1und1WwrUuaLGnn1Ga2akalntPuuhMhbUko2BM5RIUQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=illinois.edu; spf=pass smtp.mailfrom=illinois.edu; dkim=pass (2048-bit key) header.d=illinois.edu header.i=@illinois.edu header.b=EbBmHIpR; arc=fail smtp.client-ip=148.163.135.28 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=illinois.edu Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=illinois.edu Received: from pps.filterd (m0166256.ppops.net [127.0.0.1]) by mx0a-00007101.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 40OBpFX8013211; Wed, 24 Jan 2024 13:33:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illinois.edu; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=campusrelays; bh=C/vED/MaQL7gINrfdLo5C+G4K57bz6Tku9P0XHvXOos=; b=EbBmHIpRIWamzKWK1O0vBHNJYUx5PZUMRargefF5n3y46NYsSB0GZER1T+aVSWONjmZ9 z0KRc3v/l9psGzO4qu02hrY7wPTjaroMdEgHTxy8eitq9JJSDbgX5D6jCe5TuXMiTJ3w K5TzWA99M9pvDhufnSRlOd6uQ4bD3Unkf9hzIAxttqC/uWgWwo6WemJIlYFokv90YrW9 U117ElmEXhDgewHfO9QExvjv5WJSFbZAStL69qk5TcfYT7RCxHM590q25XVbO8me+BkK yOu+cItEvHw51duBXH1GBIO6aWop+4lQTfw8OgWeCgnTEeJYZFkCkqCeHY3xE7BcdX0K QA== Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2041.outbound.protection.outlook.com [104.47.74.41]) by mx0a-00007101.pphosted.com (PPS) with ESMTPS id 3vtgs7pxb5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 24 Jan 2024 13:33:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T/kVXJnJxXqJf+4O3lpzrnYVSIx5TjNo8zemoBcUjzYXBPER2fqm6BF/bQDRA/k10PMVtK75jhwE1dDJ3bRNx034HKC/XvB2g0GAZNgS8I3pJOg18vFaLqmQUJ+G86MuIEnhyXd4Md+f69xdrawbHwIEmdpcaqgb0VlYNeK8O6RcKD2q1r8nxrZlwAwEB/+P90vVwebYQekSzvO7hXglJ4kvuDGbwkr9iiSucnEp0/lQZCvUfM3RPGzRsQ5ASA7HCQ3ipQkfNATPNUVYI2HZJdcX6VOhx/4zU0t+O5dwOCF/RoeajyPtX3lOd7Vp0zlklM3HC8AYgCL4ytR4F+3Y6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C/vED/MaQL7gINrfdLo5C+G4K57bz6Tku9P0XHvXOos=; b=lp9OU3FL3noaXzzR8b1GdxonZrcyLSIa56+ARTj7MdcXS7bETHCgvpU1ip595jtUl48DwuPyUDDy3mCjDc0NjNtxSga8K90dmZBDg44OGTI7U18RWltKZlJD/tgKlYnCU9MFqlFt/ULKP+NHZeBXC4/5O6wEJkL6KB883Ukd0jEMJKWbtKFnzh/UVbQCZGjK9K5v/LVg4ACpcFchA9C4ZjZyW+b43XGoEVmNWmyXEOe1+ZQwuhaJNlQirTlsczy/Hyil5GJP70t9XgKTGBvMD+w8EdL2hagLPlG7euj30BJ5CxFBdGYUM2huqY6ZsVhvb4Opn0H4AIEaXTqtOLKtOw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=illinois.edu; dmarc=pass action=none header.from=illinois.edu; dkim=pass header.d=illinois.edu; arc=none Received: from PH7PR11MB5768.namprd11.prod.outlook.com (2603:10b6:510:131::21) by CH3PR11MB8703.namprd11.prod.outlook.com (2603:10b6:610:1cd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Wed, 24 Jan 2024 13:33:32 +0000 Received: from PH7PR11MB5768.namprd11.prod.outlook.com ([fe80::3fae:5e3f:9709:dc2c]) by PH7PR11MB5768.namprd11.prod.outlook.com ([fe80::3fae:5e3f:9709:dc2c%7]) with mapi id 15.20.7228.022; Wed, 24 Jan 2024 13:33:32 +0000 From: "Yang, Chenyuan" To: Hans Verkuil , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: "jani.nikula@intel.com" , "syzkaller@googlegroups.com" , "mchehab@kernel.org" , "Zhao, Zijie" , "Zhang, Lingming" Subject: Re: [Linux Kernel Bugs] KASAN: slab-use-after-free Read in cec_queue_msg_fh and 4 other crashes in the cec device (`cec_ioctl`) Thread-Topic: [Linux Kernel Bugs] KASAN: slab-use-after-free Read in cec_queue_msg_fh and 4 other crashes in the cec device (`cec_ioctl`) Thread-Index: AQHaOS3lbHvq7Jnry0+S2folBlrDv7Dg7XiAgAfPboA= Date: Wed, 24 Jan 2024 13:33:32 +0000 Message-ID: <89ED2612-DFEA-448A-9637-3522B9E92B74@illinois.edu> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR11MB5768:EE_|CH3PR11MB8703:EE_ x-ms-office365-filtering-correlation-id: 66b2007b-eee6-4622-72cd-08dc1ce10ee3 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zOJPyfn3qo5yk8NDpoDKPNmBkjt+fJipR6oNNpBI7eFS7J26UfbAl7JDJVOpuRvNgeu80GGGJH2MWdjv3vqZ+zIEa0yJN7/pAGzI5Ree0XTuZqTDLXJiuCvGYCOSWlYyaVO0OgfYEt2Afaz6iaeGsTzuZlyIrBu5Y9gf0+OqMh26mhh7f/JO37dlbGh3749wpvYTuL0x4WTvTSq95PBwbOw8uPjfTPFyLFK3C3u6c4NSzxLjr2SvQIUk3ZEfit5ShGAeCnRqpxa+cZfQkayd6JAAwAtlq4UhXaeenfKYnJh9/JFuGgCd51BKd4//eqj6Ey242WJ3fc3Jf8cP39u10NAIGaNz62GwNIvoL0XTL9mtdJH+AbEBuABCSWmLtc3CM/eG8MtTPDHPtLLxzrPuFkH9y7li3Mr/RmnJzo0F9GWXGrLxwbon4NYo712bp9447Ibr16hwJCrtW/eHCKO+b6RAeyVmM8pedi950LJ1pJQyfv2IpFCiwb84HgzapJOYkpwPww0hqDBCDMSoeDpqLKlW92S1FKppsSeFReNZuZE6AW3htHzjWNw+G+IUjbdX5r6e0xjiTkYtJlBs62N7UmlCy1LwCAZ8ImCwDAo6kOj+gXlvpdAFM3iaHwCvHsr00bHrXdbisfWpmp1bD9H5q7Eapw/PBXJSCoS5VuhK2Kutv9A1JUVbl47T/JF3Bwn4jv7yJEVSCLujMQfONZsoJpjPQARXFf7OHnyq3jxJBN8ez7Yu1E3ltWX5Nszp8WTyG6jyElAgPo7rIHUIneRnRw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5768.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(136003)(346002)(39860400002)(396003)(230922051799003)(230173577357003)(230273577357003)(451199024)(186009)(64100799003)(1800799012)(83380400001)(75432002)(26005)(8676002)(8936002)(110136005)(2906002)(76116006)(316002)(5660300002)(30864003)(66946007)(66476007)(66556008)(66446008)(54906003)(86362001)(786003)(64756008)(38100700002)(478600001)(6486002)(966005)(6512007)(2616005)(4326008)(107886003)(71200400001)(122000001)(38070700009)(6506007)(41300700001)(36756003)(33656002)(53546011)(81973001)(88722005)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bHNHY1BCMHEyb2tqNzZEV3ExU2JrbzRIdEJOQUFIYytlWkJEMWZZSTBCV0gr?= =?utf-8?B?S0pac1E1SGhNV1l1WEphblI3eHpmQnZWaDNkQkQ1dmVqVHhYb3I2Y0tzOVhh?= =?utf-8?B?OFF2eGZtZVZHVTdzNTZRQUNpMXdBUG9LOGFFbUdXaHkrL3EvcVBxNDBuOUkz?= =?utf-8?B?UGw3UllDaC9DZ0hseEV1ZFpNOVNQMk5uRklSRmcyenJBd3dOd3JTTUo2MDVB?= =?utf-8?B?Tnd0dmtBa1pyeDQ2Q2ZSdExnRUhPek43YjkwU0NKK1R2OTVqTndVVUg0UlhV?= =?utf-8?B?SHRVWTFGMmNBZE83c0pBOGgwcUhkV0w5R0tkR0VQZmxPV0Y2WkVrQ3NhZnda?= =?utf-8?B?YXVHYTVGWnVxWWZKc0JFbm1LQWtOYm5wa2gvUWg1TVZ6cURPR2dQS0R1Vm05?= =?utf-8?B?QmdYdU1rOUVNMHV1Q3lERlN5Rk1HZHZVVUNhZGhTa2ZLSzlMY3Q4enNrWlg2?= =?utf-8?B?R09DWm1qS1RlN0c3RE1ob0RxSnZxQjBIaFk5aGJoRFRrUDNLQ1dpRHdzMW1V?= =?utf-8?B?Mnd6cDg5anhwQ0E5eGJHbHlHRE5DeG9YZlgzZlVnT2FjOURwVWhVR1luQmJS?= =?utf-8?B?c1gva29TNDI2UVBLTjN3MTRqWHpyaThqcGw5S2szT0pUYjJ4N3o2N0RhTmRk?= =?utf-8?B?eEdtQUt0R0c3d3MvbENCUXMwWDZYZHQ1RWdQUkdMZVNUUUZvZDF6VDRsMVdQ?= =?utf-8?B?Y1ZpYXRhVTN3dkdrbUJ0a0xYSnI4Wmk3RkRtVFl2cGx3SDNLSGlLZk9OdjAz?= =?utf-8?B?VDh3VTRZVmFjQnBXSkI4VW1jYnRLQlQyTlNua2h1K3lscDJETGplWmNUQ3dM?= =?utf-8?B?T1dESW1pSjQxY0dqMXpNb0RGVHB5ajVkQXlZOW50Mjg2OEd5YUNMRnFtNzBn?= =?utf-8?B?ZWUxZkN3TCs4VXVybWJldGNqOVg2L1NoYTM0azBMNnVsMGRwUFJUbHVicTF5?= =?utf-8?B?dVNodk5Cd1hDU045Q0tNbHZFeVJyYVl0MzMyc0h0Wmx0YlVPUlV5U1ROWG10?= =?utf-8?B?RTBUTzRubDdKWkVBNGgvVStUN0tlVGh6dnVwRTZYMHRRejA4RXlIM0hhNVJq?= =?utf-8?B?N29tTXh0U3M4OVc3cUltd1VIaERFdjhaZ1RVcDNXRWhwQ095UGRZaUZmOG5R?= =?utf-8?B?VXZxeFpLcS9HNW9aMTlCZ2s5a0NwcE53MXFOMEd5MTBJendjUXVXYkhjK2VW?= =?utf-8?B?SzVqaFBDTlZISW9uUkhqaThuMDNUOFhEV1dSMTNETitrM2puemptUGNzRVU3?= =?utf-8?B?ajFMVDdaMUNQNHlkVXE5Mk1uN0FBb1dCalQ4SmI3Y205QzFpRC8vZC9uK1hU?= =?utf-8?B?Q1FNNVMyVmdCaUVUOWxNNkZtdFRmUCsyYy9Yc3VYb2tOcEZ4bWl3S1pKMkNx?= =?utf-8?B?MFNTOVRhVkhLTGxsd0hXSFIrWm02ZlYxNlcwajZtOGZZUjlHY3F1Y1pzZXE0?= =?utf-8?B?TkFhRndMRWNpYTYvK3I3RE8vZW9Uam1CQXRSMkc3UytHbHJtWUxUdjZ5UExI?= =?utf-8?B?ZThuYWd1VllXOWZsNGh2VXVkSm5WZy9xL3BLanlsTS9IUkpPWFBXdzB5Uzlp?= =?utf-8?B?TlVPditLcVRJYkxQcW9IRFFVOUZwN243R0NsZWI3K0oyZGVubFBZZEQ1SmV5?= =?utf-8?B?Qy9FT3FoOGNqUlQ2MGUxQ29mUzdjRjlaWnVpSHdHVk9MOXJUVzJ1NFEyOGY1?= =?utf-8?B?Zk5IUkhERDArZG0vVzhHekFuY1RJVTNQeGRMeThncCtFK3prTUhuZDFUdDlx?= =?utf-8?B?bTNVVmQzZDVNN3ppT0Uzc0FvTVZOYjhaODFDc253RFN5dEpJSW93R0ltbGsw?= =?utf-8?B?MXpOWUtmMzdUMUN6NS9pUE5Bd2pROUI3RkVxZVhXVEpoU1dQYkRxQVQzUUIw?= =?utf-8?B?QXBDZ212bnBRa3BPRHVNeFZKaHlkYkY2VEowNFZqdzFDZ3FDMVBzVEZ1RTRI?= =?utf-8?B?VWhINHJnMEV6M1VEWS9yQnJrOUNIRm5Fb005MWpCZFJGTjhjL3p6RHJPc1pj?= =?utf-8?B?NlVaV0dqUzV4UUY2RDFXN0tVN0UzZDlzdmV2c1hxSnlrcUg0MHpWS1VpVVpK?= =?utf-8?B?SVptNS9HcHFDbnlrT3YydGdNaXUxdjlPN29XcWE0S1lUUDZhejlPZzJBdXU1?= =?utf-8?Q?UVtR5ZSO8/pmfvj/s46e1B2Lh?= Content-Type: text/plain; charset="utf-8" Content-ID: <94161B5B77E5C342BE62910E20EC1224@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: illinois.edu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5768.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 66b2007b-eee6-4622-72cd-08dc1ce10ee3 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2024 13:33:32.2575 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 44467e6f-462c-4ea2-823f-7800de5434e3 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: achR3UTxW+94zmJ/bP8g1PfTC6KAu96hZPaJptYef+nQqShA5hN87yZD+rbuGdi6tCztTVq0HuRyMc6Uw2BwqQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8703 X-Proofpoint-GUID: HF19sviEbe_9aWva-R5n7-h0e5b5XpfO X-Proofpoint-ORIG-GUID: HF19sviEbe_9aWva-R5n7-h0e5b5XpfO X-Spam-Details: rule=cautious_plus_nq_notspam policy=cautious_plus_nq score=0 mlxscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2401240098 X-Spam-Score: 0 X-Spam-OrigSender: cy54@illinois.edu X-Spam-Bar: SGkgSGFucywNCg0KVGhhbmtzIGZvciB5b3VyIHByb21wdCByZXNwb25zZSENCg0KQWZ0ZXIgYXBw bHlpbmcgdGhlIG5ldyBwYXRjaCwgdGhlIHN5c3RlbSBoYW5nIGlzc3VlIHBlcnNpc3RzLiBJIGFs c28gdGVzdGVkIHdpdGggdGhlIGxhdGVzdCBMaW51eCB2ZXJzaW9uLCBidXQgdGhlIHByb2JsZW0g cmVtYWlucy4gVGhlIGVycm9yIGRpc3BsYXllZCBpcyAnSU5GTzogdGFzayBzeXotZXhlY3V0b3Iz NzI6MTY3MzYgYmxvY2tlZCBmb3IgbW9yZSB0aGFuIDE0MyBzZWNvbmRzLicgQ291bGQgaXQgYmUg dGhhdCB0aGUgdGltZW91dCBzZXR0aW5nIGZvciB0aGUgQ0VDIGlzIHRvbyBleHRlbnNpdmUsIGNv bnRyaWJ1dGluZyB0byB0aGlzIGhhbmc/DQoNCkhlcmUgaXMgdGhlIHJlcG9ydCwgdHJhY2UgYW5k IHJlcHJvZHVjaWJsZSBwcm9ncmFtIGZvciB0aGUgaGFuZzoNCg0KYGBgDQpTeXprYWxsZXIgaGl0 ICdJTkZPOiB0YXNrIGh1bmcgaW4gY2VjX2NsYWltX2xvZ19hZGRycycgYnVnLg0KDQpJTkZPOiB0 YXNrIHN5ei1leGVjdXRvcjM3MjoxNjczNiBibG9ja2VkIGZvciBtb3JlIHRoYW4gMTQzIHNlY29u ZHMuDQogICAgICBOb3QgdGFpbnRlZCA2LjguMC1yYzEtMDAwMjktZzYxNWQzMDA2NDg4Ni1kaXJ0 eSAjMQ0KImVjaG8gMCA+IC9wcm9jL3N5cy9rZXJuZWwvaHVuZ190YXNrX3RpbWVvdXRfc2VjcyIg ZGlzYWJsZXMgdGhpcyBtZXNzYWdlLg0KdGFzazpzeXotZXhlY3V0b3IzNzIgc3RhdGU6RCBzdGFj azoyNzg3MiBwaWQ6MTY3MzYgdGdpZDoxNjczNCBwcGlkOjgwMzUgICBmbGFnczoweDAwMDA0MDA2 DQpDYWxsIFRyYWNlOg0KIDxUQVNLPg0KIGNvbnRleHRfc3dpdGNoIGtlcm5lbC9zY2hlZC9jb3Jl LmM6NTQwMCBbaW5saW5lXQ0KIF9fc2NoZWR1bGUrMHhkMjQvMHg1YjEwIGtlcm5lbC9zY2hlZC9j b3JlLmM6NjcyNw0KIF9fc2NoZWR1bGVfbG9vcCBrZXJuZWwvc2NoZWQvY29yZS5jOjY4MDIgW2lu bGluZV0NCiBzY2hlZHVsZSsweGU5LzB4MjcwIGtlcm5lbC9zY2hlZC9jb3JlLmM6NjgxNw0KIHNj aGVkdWxlX3RpbWVvdXQrMHgyNTAvMHgyOTAga2VybmVsL3RpbWUvdGltZXIuYzoyMTU5DQogZG9f d2FpdF9mb3JfY29tbW9uIGtlcm5lbC9zY2hlZC9jb21wbGV0aW9uLmM6OTUgW2lubGluZV0NCiBf X3dhaXRfZm9yX2NvbW1vbisweDFjZC8weDVkMCBrZXJuZWwvc2NoZWQvY29tcGxldGlvbi5jOjEx Ng0KIGNlY19jbGFpbV9sb2dfYWRkcnMrMHgxOTIvMHgyNjAgZHJpdmVycy9tZWRpYS9jZWMvY29y ZS9jZWMtYWRhcC5jOjE2MDYNCiBfX2NlY19zX2xvZ19hZGRycysweGRmYy8weDE2ZTAgZHJpdmVy cy9tZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5jOjE5MjANCiBjZWNfYWRhcF9zX2xvZ19hZGRycyBk cml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hcGkuYzoxODQgW2lubGluZV0NCiBjZWNfaW9jdGwr MHgxZTdjLzB4MjY5MCBkcml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hcGkuYzo1MjgNCiB2ZnNf aW9jdGwgZnMvaW9jdGwuYzo1MSBbaW5saW5lXQ0KIF9fZG9fc3lzX2lvY3RsIGZzL2lvY3RsLmM6 ODcxIFtpbmxpbmVdDQogX19zZV9zeXNfaW9jdGwgZnMvaW9jdGwuYzo4NTcgW2lubGluZV0NCiBf X3g2NF9zeXNfaW9jdGwrMHgxOWQvMHgyMTAgZnMvaW9jdGwuYzo4NTcNCiBkb19zeXNjYWxsX3g2 NCBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzo1MiBbaW5saW5lXQ0KIGRvX3N5c2NhbGxfNjQrMHhk Mi8weDI1MCBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzo4Mw0KIGVudHJ5X1NZU0NBTExfNjRfYWZ0 ZXJfaHdmcmFtZSsweDYzLzB4NmINClJJUDogMDAzMzoweDdmZWQ5ZDc4ZjIzZA0KUlNQOiAwMDJi OjAwMDA3ZmVkOWQ3MTIxOTggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAwMDAw MDAxMA0KUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJCWDogMDAwMDdmZWQ5ZDgyNDJmMCBSQ1g6IDAw MDA3ZmVkOWQ3OGYyM2QNClJEWDogMDAwMDAwMDAyMDAwMDEwMCBSU0k6IDAwMDAwMDAwYzA1YzYx MDQgUkRJOiAwMDAwMDAwMDAwMDAwMDA0DQpSQlA6IDAwMDA3ZmVkOWQ3ZWYwOGMgUjA4OiAwMDAw MDAwMDAwMDAwMDAwIFIwOTogMDAwMDAwMDAwMDAwMDAwMA0KUjEwOiAwMDAwMDAwMDAwMDAwMDAw IFIxMTogMDAwMDAwMDAwMDAwMDI0NiBSMTI6IDU1ODAzYTgyNTNhNjA1YzUNClIxMzogOTU2Y2Q1 YTc2M2FlMjVhZiBSMTQ6IDgxNThlMzRjOTVjMjk3NzggUjE1OiAwMDAwN2ZlZDlkODI0MmY4DQog PC9UQVNLPg0KDQpTaG93aW5nIGFsbCBsb2NrcyBoZWxkIGluIHRoZSBzeXN0ZW06DQoxIGxvY2sg aGVsZCBieSBraHVuZ3Rhc2tkLzI5Og0KICMwOiBmZmZmZmZmZjhjZmFiZjIwIChyY3VfcmVhZF9s b2NrKXsuLi4ufS17MToyfSwgYXQ6IHJjdV9sb2NrX2FjcXVpcmUgaW5jbHVkZS9saW51eC9yY3Vw ZGF0ZS5oOjI5OCBbaW5saW5lXQ0KICMwOiBmZmZmZmZmZjhjZmFiZjIwIChyY3VfcmVhZF9sb2Nr KXsuLi4ufS17MToyfSwgYXQ6IHJjdV9yZWFkX2xvY2sgaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5o Ojc1MCBbaW5saW5lXQ0KICMwOiBmZmZmZmZmZjhjZmFiZjIwIChyY3VfcmVhZF9sb2NrKXsuLi4u fS17MToyfSwgYXQ6IGRlYnVnX3Nob3dfYWxsX2xvY2tzKzB4NzUvMHgzNDAga2VybmVsL2xvY2tp bmcvbG9ja2RlcC5jOjY2MTQNCjMgbG9ja3MgaGVsZCBieSBzeXN0ZW1kLWpvdXJuYWwvNDUxMDoN CjEgbG9jayBoZWxkIGJ5IGluOmlta2xvZy83NTgwOg0KICMwOiBmZmZmODg4MDEzMmVmOWM4ICgm Zi0+Zl9wb3NfbG9jayl7Ky4rLn0tezM6M30sIGF0OiBfX2ZkZ2V0X3BvcysweGRiLzB4MTYwIGZz L2ZpbGUuYzoxMTkxDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KDQpOTUkgYmFja3RyYWNlIGZvciBjcHUgMQ0KQ1BVOiAxIFBJRDogMjkgQ29tbToga2h1 bmd0YXNrZCBOb3QgdGFpbnRlZCA2LjguMC1yYzEtMDAwMjktZzYxNWQzMDA2NDg4Ni1kaXJ0eSAj MQ0KSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5Niks IEJJT1MgMS4xNS4wLTEgMDQvMDEvMjAxNA0KQ2FsbCBUcmFjZToNCiA8VEFTSz4NCiBfX2R1bXBf c3RhY2sgbGliL2R1bXBfc3RhY2suYzo4OCBbaW5saW5lXQ0KIGR1bXBfc3RhY2tfbHZsKzB4ZDkv MHgxNTAgbGliL2R1bXBfc3RhY2suYzoxMDYNCiBubWlfY3B1X2JhY2t0cmFjZSsweDI5Yy8weDM1 MCBsaWIvbm1pX2JhY2t0cmFjZS5jOjExMw0KIG5taV90cmlnZ2VyX2NwdW1hc2tfYmFja3RyYWNl KzB4Mjk5LzB4MzAwIGxpYi9ubWlfYmFja3RyYWNlLmM6NjINCiB0cmlnZ2VyX2FsbF9jcHVfYmFj a3RyYWNlIGluY2x1ZGUvbGludXgvbm1pLmg6MTYwIFtpbmxpbmVdDQogY2hlY2tfaHVuZ191bmlu dGVycnVwdGlibGVfdGFza3Mga2VybmVsL2h1bmdfdGFzay5jOjIyMiBbaW5saW5lXQ0KIHdhdGNo ZG9nKzB4ZTdhLzB4MTEwMCBrZXJuZWwvaHVuZ190YXNrLmM6Mzc5DQoga3RocmVhZCsweDJjYy8w eDNiMCBrZXJuZWwva3RocmVhZC5jOjM4OA0KIHJldF9mcm9tX2ZvcmsrMHg0NS8weDgwIGFyY2gv eDg2L2tlcm5lbC9wcm9jZXNzLmM6MTQ3DQogcmV0X2Zyb21fZm9ya19hc20rMHgxMS8weDIwIGFy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlM6MjQyDQogPC9UQVNLPg0KU2VuZGluZyBOTUkgZnJvbSBD UFUgMSB0byBDUFVzIDA6DQpOTUkgYmFja3RyYWNlIGZvciBjcHUgMA0KQ1BVOiAwIFBJRDogNzU4 MyBDb21tOiByczptYWluIFE6UmVnIE5vdCB0YWludGVkIDYuOC4wLXJjMS0wMDAyOS1nNjE1ZDMw MDY0ODg2LWRpcnR5ICMxDQpIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlgg KyBQSUlYLCAxOTk2KSwgQklPUyAxLjE1LjAtMSAwNC8wMS8yMDE0DQpSSVA6IDAwMzM6MHg3ZjAy MzZlYTc2YWMNCkNvZGU6IDA4IDQ4IDhkIDRkIDA4IDQ4IDg5IGQwIDQ4IGQxIGU4IDQ4IDM5IDA0 IDI0IDcyIDNkIDQ0IDg5IGU2IDQ4IDg5IGVmIGU4IDQyIGZjIGZmIGZmIDQ4IDhiIDQ0IDI0IDc4 IDY0IDQ4IDJiIDA0IDI1IDI4IDAwIDAwIDAwIDwwZj4gODUgZTYgMDEgMDAgMDAgNDggODEgYzQg ODggMDAgMDAgMDAgNGMgODkgZWYgNWIgNWQgNDEgNWMgNDEgNWQNClJTUDogMDAyYjowMDAwN2Yw MjM1YmZmYWMwIEVGTEFHUzogMDAwMDAyNDYNClJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6IDAw MDAwMDAwMDAwMDAxMWYgUkNYOiAwMDAwNTYxZDdkMWY2ZTcwDQpSRFg6IDAwMDAwMDAwMDAwMDAx MWUgUlNJOiAwMDAwMDAwMDAwMDAwMDAwIFJESTogMDAwMDU2MWQ3ZDFmNmU4Yw0KUkJQOiAwMDAw NTYxZDdkMWY2ZTY4IFIwODogMDAwMDAwMDAwMDAwMDAwMSBSMDk6IDAwMDAwMDAwMDAwMDAwMGEN ClIxMDogMDAwMDAwMDAwMDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAwMDAwMDEgUjEyOiAwMDAwMDAw MDAwMDAwMDAwDQpSMTM6IDAwMDA1NjFkN2QxZjZjNTAgUjE0OiAwMDAwNTYxZDdkMWY2ZTk0IFIx NTogMDAwMDdmMDIzNWJmZmFmMA0KRlM6ICAwMDAwN2YwMjM1YzAwNzAwIEdTOiAgMDAwMDAwMDAw MDAwMDAwMA0KDQoNClN5emthbGxlciByZXByb2R1Y2VyOg0KIyB7VGhyZWFkZWQ6dHJ1ZSBSZXBl YXQ6dHJ1ZSBSZXBlYXRUaW1lczowIFByb2NzOjEgU2xvd2Rvd246MSBTYW5kYm94OiBTYW5kYm94 QXJnOjAgTGVhazpmYWxzZSBOZXRJbmplY3Rpb246ZmFsc2UgTmV0RGV2aWNlczpmYWxzZSBOZXRS ZXNldDpmYWxzZSBDZ3JvdXBzOmZhbHNlIEJpbmZtdE1pc2M6ZmFsc2UgQ2xvc2VGRHM6ZmFsc2Ug S0NTQU46ZmFsc2UgRGV2bGlua1BDSTpmYWxzZSBOaWNWRjpmYWxzZSBVU0I6ZmFsc2UgVmhjaUlu amVjdGlvbjpmYWxzZSBXaWZpOmZhbHNlIElFRUU4MDIxNTQ6ZmFsc2UgU3lzY3RsOmZhbHNlIFN3 YXA6ZmFsc2UgVXNlVG1wRGlyOmZhbHNlIEhhbmRsZVNlZ3Y6ZmFsc2UgUmVwcm86ZmFsc2UgVHJh Y2U6ZmFsc2UgTGVnYWN5T3B0aW9uczp7Q29sbGlkZTpmYWxzZSBGYXVsdDpmYWxzZSBGYXVsdENh bGw6MCBGYXVsdE50aDowfX0NCnIwID0gc3l6X29wZW5fZGV2JGNlY19sbG1fb3BlbigmKDB4N2Yw MDAwMDAwMjQwKSwgMHgwLCAweDApDQppb2N0bCRDRUNfQURBUF9TX0xPR19BRERSUyhyMCwgMHhj MDVjNjEwNCwgJigweDdmMDAwMDAwMDAwMCk9eyIxMTU3ZmJmYSIsIDB4NywgMHg1LCAweGQ0LCAw eGZmZmZmZmZkLCAweDUsICIwMjAwMDAwMDBhM2FjOGQzZjY1M2ZjNWJmYzYzYTkiLCAiOGMzNTAw IiwgIjAwMDBlNjAwIiwgIjUxOWE4NGYxIiwgWyIxZDEwMDAwMDAwZmZmZmZmZmZmZjAwIiwgImIy YzVkN2U3MDU2MWZiYzRjMzliNTkwOCIsICJkOWYwODY2ODU1MTQxNDkxMWE5MGMwMjIiLCAiNjgy MmM0YzEzMjJiNTQ3YjE3MzU5NTkyIl19KSAoYXN5bmMpDQpyMSA9IHN5el9vcGVuX2RldiRjZWNf bGxtX29wZW4oJigweDdmMDAwMDAwMDJjMCksIDB4MCwgMHgwKQ0KaW9jdGwkQ0VDX0FEQVBfU19M T0dfQUREUlMocjEsIDB4YzA1YzYxMDQsICYoMHg3ZjAwMDAwMDAxMDApPXsiNmIyZGJiYTAiLCAw eDAsIDB4NiwgMHg5LCAweDAsIDB4NSwgIjhiOWZjMGQ1ZjAyOWI3OGY4ZDMxZjY0YWM5N2Y5ZCIs ICIyOGYyMzJjMCIsICJlZmIyZmNmNSIsICI5NzU0MTk3MyIsIFsiNWM3MmIxNjM0MzMxN2IwYjIz ZTEwMTE2IiwgImU5YjZkMGNmYWE3Y2NhODg2ODRhNTg0ZCIsICI1ODZiOGU1N2E2YmUwZGEwYWUy ZjI3ZWIiLCAiY2RhNjM0ZDNkNTYwNjY3YmRhYzJlMDQ2Il19KSAoYXN5bmMpDQppb2N0bCRDRUNf QURBUF9TX0xPR19BRERSUyhyMSwgMHhjMDVjNjEwNCwgJigweDdmMDAwMDAwMDA4MCk9eyI1ZGY1 Njc2YSIsIDB4MCwgMHg4MSwgMHgwLCAweDAsIDB4MCwgIjc4OTdjMjk1NGNlMzU4ODFlMDgxMGM1 Mjk1YWQzNSIsICIyYmVjZmZkMCIsICJiMTk1ZjY4MyIsICJjOTY2NzkzMCIsIFsiYWYyNWFlNjNh N2Q1NmM5NTk4Nzc1MWMyIiwgImM1MDVhNjUzODIzYTgwNTVkZjY4MjEwNSIsICI3YmI2NDQ5NGVl MGRlNjg5MDE0NzZkNTUiLCAiZjE2ZjFiODk4OWE1ZTdhYmQ5MmRmNGE0Il19KQ0KDQoNCkMgcmVw cm9kdWNlcjoNCi8vIGF1dG9nZW5lcmF0ZWQgYnkgc3l6a2FsbGVyIChodHRwczovL2dpdGh1Yi5j b20vZ29vZ2xlL3N5emthbGxlcikNCg0KI2RlZmluZSBfR05VX1NPVVJDRSANCg0KI2luY2x1ZGUg PGRpcmVudC5oPg0KI2luY2x1ZGUgPGVuZGlhbi5oPg0KI2luY2x1ZGUgPGVycm5vLmg+DQojaW5j bHVkZSA8ZmNudGwuaD4NCiNpbmNsdWRlIDxwdGhyZWFkLmg+DQojaW5jbHVkZSA8c2lnbmFsLmg+ DQojaW5jbHVkZSA8c3RkYXJnLmg+DQojaW5jbHVkZSA8c3RkYm9vbC5oPg0KI2luY2x1ZGUgPHN0 ZGludC5oPg0KI2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5jbHVk ZSA8c3RyaW5nLmg+DQojaW5jbHVkZSA8c3lzL3ByY3RsLmg+DQojaW5jbHVkZSA8c3lzL3N0YXQu aD4NCiNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPg0KI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KI2lu Y2x1ZGUgPHN5cy93YWl0Lmg+DQojaW5jbHVkZSA8dGltZS5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5o Pg0KDQojaW5jbHVkZSA8bGludXgvZnV0ZXguaD4NCg0Kc3RhdGljIHZvaWQgc2xlZXBfbXModWlu dDY0X3QgbXMpDQp7DQoJdXNsZWVwKG1zICogMTAwMCk7DQp9DQoNCnN0YXRpYyB1aW50NjRfdCBj dXJyZW50X3RpbWVfbXModm9pZCkNCnsNCglzdHJ1Y3QgdGltZXNwZWMgdHM7DQoJaWYgKGNsb2Nr X2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpKQ0KCWV4aXQoMSk7DQoJcmV0dXJuICh1aW50 NjRfdCl0cy50dl9zZWMgKiAxMDAwICsgKHVpbnQ2NF90KXRzLnR2X25zZWMgLyAxMDAwMDAwOw0K fQ0KDQpzdGF0aWMgdm9pZCB0aHJlYWRfc3RhcnQodm9pZCogKCpmbikodm9pZCopLCB2b2lkKiBh cmcpDQp7DQoJcHRocmVhZF90IHRoOw0KCXB0aHJlYWRfYXR0cl90IGF0dHI7DQoJcHRocmVhZF9h dHRyX2luaXQoJmF0dHIpOw0KCXB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUoJmF0dHIsIDEyOCA8 PCAxMCk7DQoJaW50IGkgPSAwOw0KCWZvciAoOyBpIDwgMTAwOyBpKyspIHsNCgkJaWYgKHB0aHJl YWRfY3JlYXRlKCZ0aCwgJmF0dHIsIGZuLCBhcmcpID09IDApIHsNCgkJCXB0aHJlYWRfYXR0cl9k ZXN0cm95KCZhdHRyKTsNCgkJCXJldHVybjsNCgkJfQ0KCQlpZiAoZXJybm8gPT0gRUFHQUlOKSB7 DQoJCQl1c2xlZXAoNTApOw0KCQkJY29udGludWU7DQoJCX0NCgkJYnJlYWs7DQoJfQ0KCWV4aXQo MSk7DQp9DQoNCnR5cGVkZWYgc3RydWN0IHsNCglpbnQgc3RhdGU7DQp9IGV2ZW50X3Q7DQoNCnN0 YXRpYyB2b2lkIGV2ZW50X2luaXQoZXZlbnRfdCogZXYpDQp7DQoJZXYtPnN0YXRlID0gMDsNCn0N Cg0Kc3RhdGljIHZvaWQgZXZlbnRfcmVzZXQoZXZlbnRfdCogZXYpDQp7DQoJZXYtPnN0YXRlID0g MDsNCn0NCg0Kc3RhdGljIHZvaWQgZXZlbnRfc2V0KGV2ZW50X3QqIGV2KQ0Kew0KCWlmIChldi0+ c3RhdGUpDQoJZXhpdCgxKTsNCglfX2F0b21pY19zdG9yZV9uKCZldi0+c3RhdGUsIDEsIF9fQVRP TUlDX1JFTEVBU0UpOw0KCXN5c2NhbGwoU1lTX2Z1dGV4LCAmZXYtPnN0YXRlLCBGVVRFWF9XQUtF IHwgRlVURVhfUFJJVkFURV9GTEFHLCAxMDAwMDAwKTsNCn0NCg0Kc3RhdGljIHZvaWQgZXZlbnRf d2FpdChldmVudF90KiBldikNCnsNCgl3aGlsZSAoIV9fYXRvbWljX2xvYWRfbigmZXYtPnN0YXRl LCBfX0FUT01JQ19BQ1FVSVJFKSkNCgkJc3lzY2FsbChTWVNfZnV0ZXgsICZldi0+c3RhdGUsIEZV VEVYX1dBSVQgfCBGVVRFWF9QUklWQVRFX0ZMQUcsIDAsIDApOw0KfQ0KDQpzdGF0aWMgaW50IGV2 ZW50X2lzc2V0KGV2ZW50X3QqIGV2KQ0Kew0KCXJldHVybiBfX2F0b21pY19sb2FkX24oJmV2LT5z dGF0ZSwgX19BVE9NSUNfQUNRVUlSRSk7DQp9DQoNCnN0YXRpYyBpbnQgZXZlbnRfdGltZWR3YWl0 KGV2ZW50X3QqIGV2LCB1aW50NjRfdCB0aW1lb3V0KQ0Kew0KCXVpbnQ2NF90IHN0YXJ0ID0gY3Vy cmVudF90aW1lX21zKCk7DQoJdWludDY0X3Qgbm93ID0gc3RhcnQ7DQoJZm9yICg7Oykgew0KCQl1 aW50NjRfdCByZW1haW4gPSB0aW1lb3V0IC0gKG5vdyAtIHN0YXJ0KTsNCgkJc3RydWN0IHRpbWVz cGVjIHRzOw0KCQl0cy50dl9zZWMgPSByZW1haW4gLyAxMDAwOw0KCQl0cy50dl9uc2VjID0gKHJl bWFpbiAlIDEwMDApICogMTAwMCAqIDEwMDA7DQoJCXN5c2NhbGwoU1lTX2Z1dGV4LCAmZXYtPnN0 YXRlLCBGVVRFWF9XQUlUIHwgRlVURVhfUFJJVkFURV9GTEFHLCAwLCAmdHMpOw0KCQlpZiAoX19h dG9taWNfbG9hZF9uKCZldi0+c3RhdGUsIF9fQVRPTUlDX0FDUVVJUkUpKQ0KCQkJcmV0dXJuIDE7 DQoJCW5vdyA9IGN1cnJlbnRfdGltZV9tcygpOw0KCQlpZiAobm93IC0gc3RhcnQgPiB0aW1lb3V0 KQ0KCQkJcmV0dXJuIDA7DQoJfQ0KfQ0KDQpzdGF0aWMgYm9vbCB3cml0ZV9maWxlKGNvbnN0IGNo YXIqIGZpbGUsIGNvbnN0IGNoYXIqIHdoYXQsIC4uLikNCnsNCgljaGFyIGJ1ZlsxMDI0XTsNCgl2 YV9saXN0IGFyZ3M7DQoJdmFfc3RhcnQoYXJncywgd2hhdCk7DQoJdnNucHJpbnRmKGJ1Ziwgc2l6 ZW9mKGJ1ZiksIHdoYXQsIGFyZ3MpOw0KCXZhX2VuZChhcmdzKTsNCglidWZbc2l6ZW9mKGJ1Zikg LSAxXSA9IDA7DQoJaW50IGxlbiA9IHN0cmxlbihidWYpOw0KCWludCBmZCA9IG9wZW4oZmlsZSwg T19XUk9OTFkgfCBPX0NMT0VYRUMpOw0KCWlmIChmZCA9PSAtMSkNCgkJcmV0dXJuIGZhbHNlOw0K CWlmICh3cml0ZShmZCwgYnVmLCBsZW4pICE9IGxlbikgew0KCQlpbnQgZXJyID0gZXJybm87DQoJ CWNsb3NlKGZkKTsNCgkJZXJybm8gPSBlcnI7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJY2xvc2Uo ZmQpOw0KCXJldHVybiB0cnVlOw0KfQ0KDQpzdGF0aWMgbG9uZyBzeXpfb3Blbl9kZXYodm9sYXRp bGUgbG9uZyBhMCwgdm9sYXRpbGUgbG9uZyBhMSwgdm9sYXRpbGUgbG9uZyBhMikNCnsNCglpZiAo YTAgPT0gMHhjIHx8IGEwID09IDB4Yikgew0KCQljaGFyIGJ1ZlsxMjhdOw0KCQlzcHJpbnRmKGJ1 ZiwgIi9kZXYvJXMvJWQ6JWQiLCBhMCA9PSAweGMgPyAiY2hhciIgOiAiYmxvY2siLCAodWludDhf dClhMSwgKHVpbnQ4X3QpYTIpOw0KCQlyZXR1cm4gb3BlbihidWYsIE9fUkRXUiwgMCk7DQoJfSBl bHNlIHsNCgkJY2hhciBidWZbMTAyNF07DQoJCWNoYXIqIGhhc2g7DQoJCXN0cm5jcHkoYnVmLCAo Y2hhciopYTAsIHNpemVvZihidWYpIC0gMSk7DQoJCWJ1ZltzaXplb2YoYnVmKSAtIDFdID0gMDsN CgkJd2hpbGUgKChoYXNoID0gc3RyY2hyKGJ1ZiwgJyMnKSkpIHsNCgkJCSpoYXNoID0gJzAnICsg KGNoYXIpKGExICUgMTApOw0KCQkJYTEgLz0gMTA7DQoJCX0NCgkJcmV0dXJuIG9wZW4oYnVmLCBh MiwgMCk7DQoJfQ0KfQ0KDQpzdGF0aWMgdm9pZCBraWxsX2FuZF93YWl0KGludCBwaWQsIGludCog c3RhdHVzKQ0Kew0KCWtpbGwoLXBpZCwgU0lHS0lMTCk7DQoJa2lsbChwaWQsIFNJR0tJTEwpOw0K CWZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsNCgkJaWYgKHdhaXRwaWQoLTEsIHN0YXR1 cywgV05PSEFORyB8IF9fV0FMTCkgPT0gcGlkKQ0KCQkJcmV0dXJuOw0KCQl1c2xlZXAoMTAwMCk7 DQoJfQ0KCURJUiogZGlyID0gb3BlbmRpcigiL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zIik7DQoJ aWYgKGRpcikgew0KCQlmb3IgKDs7KSB7DQoJCQlzdHJ1Y3QgZGlyZW50KiBlbnQgPSByZWFkZGly KGRpcik7DQoJCQlpZiAoIWVudCkNCgkJCQlicmVhazsNCgkJCWlmIChzdHJjbXAoZW50LT5kX25h bWUsICIuIikgPT0gMCB8fCBzdHJjbXAoZW50LT5kX25hbWUsICIuLiIpID09IDApDQoJCQkJY29u dGludWU7DQoJCQljaGFyIGFib3J0WzMwMF07DQoJCQlzbnByaW50ZihhYm9ydCwgc2l6ZW9mKGFi b3J0KSwgIi9zeXMvZnMvZnVzZS9jb25uZWN0aW9ucy8lcy9hYm9ydCIsIGVudC0+ZF9uYW1lKTsN CgkJCWludCBmZCA9IG9wZW4oYWJvcnQsIE9fV1JPTkxZKTsNCgkJCWlmIChmZCA9PSAtMSkgew0K CQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQkJaWYgKHdyaXRlKGZkLCBhYm9ydCwgMSkgPCAwKSB7DQoJ CQl9DQoJCQljbG9zZShmZCk7DQoJCX0NCgkJY2xvc2VkaXIoZGlyKTsNCgl9IGVsc2Ugew0KCX0N Cgl3aGlsZSAod2FpdHBpZCgtMSwgc3RhdHVzLCBfX1dBTEwpICE9IHBpZCkgew0KCX0NCn0NCg0K c3RhdGljIHZvaWQgc2V0dXBfdGVzdCgpDQp7DQoJcHJjdGwoUFJfU0VUX1BERUFUSFNJRywgU0lH S0lMTCwgMCwgMCwgMCk7DQoJc2V0cGdycCgpOw0KCXdyaXRlX2ZpbGUoIi9wcm9jL3NlbGYvb29t X3Njb3JlX2FkaiIsICIxMDAwIik7DQp9DQoNCnN0cnVjdCB0aHJlYWRfdCB7DQoJaW50IGNyZWF0 ZWQsIGNhbGw7DQoJZXZlbnRfdCByZWFkeSwgZG9uZTsNCn07DQoNCnN0YXRpYyBzdHJ1Y3QgdGhy ZWFkX3QgdGhyZWFkc1sxNl07DQpzdGF0aWMgdm9pZCBleGVjdXRlX2NhbGwoaW50IGNhbGwpOw0K c3RhdGljIGludCBydW5uaW5nOw0KDQpzdGF0aWMgdm9pZCogdGhyKHZvaWQqIGFyZykNCnsNCglz dHJ1Y3QgdGhyZWFkX3QqIHRoID0gKHN0cnVjdCB0aHJlYWRfdCopYXJnOw0KCWZvciAoOzspIHsN CgkJZXZlbnRfd2FpdCgmdGgtPnJlYWR5KTsNCgkJZXZlbnRfcmVzZXQoJnRoLT5yZWFkeSk7DQoJ CWV4ZWN1dGVfY2FsbCh0aC0+Y2FsbCk7DQoJCV9fYXRvbWljX2ZldGNoX3N1YigmcnVubmluZywg MSwgX19BVE9NSUNfUkVMQVhFRCk7DQoJCWV2ZW50X3NldCgmdGgtPmRvbmUpOw0KCX0NCglyZXR1 cm4gMDsNCn0NCg0Kc3RhdGljIHZvaWQgZXhlY3V0ZV9vbmUodm9pZCkNCnsNCglpbnQgaSwgY2Fs bCwgdGhyZWFkOw0KCWZvciAoY2FsbCA9IDA7IGNhbGwgPCA1OyBjYWxsKyspIHsNCgkJZm9yICh0 aHJlYWQgPSAwOyB0aHJlYWQgPCAoaW50KShzaXplb2YodGhyZWFkcykgLyBzaXplb2YodGhyZWFk c1swXSkpOyB0aHJlYWQrKykgew0KCQkJc3RydWN0IHRocmVhZF90KiB0aCA9ICZ0aHJlYWRzW3Ro cmVhZF07DQoJCQlpZiAoIXRoLT5jcmVhdGVkKSB7DQoJCQkJdGgtPmNyZWF0ZWQgPSAxOw0KCQkJ CWV2ZW50X2luaXQoJnRoLT5yZWFkeSk7DQoJCQkJZXZlbnRfaW5pdCgmdGgtPmRvbmUpOw0KCQkJ CWV2ZW50X3NldCgmdGgtPmRvbmUpOw0KCQkJCXRocmVhZF9zdGFydCh0aHIsIHRoKTsNCgkJCX0N CgkJCWlmICghZXZlbnRfaXNzZXQoJnRoLT5kb25lKSkNCgkJCQljb250aW51ZTsNCgkJCWV2ZW50 X3Jlc2V0KCZ0aC0+ZG9uZSk7DQoJCQl0aC0+Y2FsbCA9IGNhbGw7DQoJCQlfX2F0b21pY19mZXRj aF9hZGQoJnJ1bm5pbmcsIDEsIF9fQVRPTUlDX1JFTEFYRUQpOw0KCQkJZXZlbnRfc2V0KCZ0aC0+ cmVhZHkpOw0KCQkJaWYgKGNhbGwgPT0gMSB8fCBjYWxsID09IDMpDQoJCQkJYnJlYWs7DQoJCQll dmVudF90aW1lZHdhaXQoJnRoLT5kb25lLCA1MCk7DQoJCQlicmVhazsNCgkJfQ0KCX0NCglmb3Ig KGkgPSAwOyBpIDwgMTAwICYmIF9fYXRvbWljX2xvYWRfbigmcnVubmluZywgX19BVE9NSUNfUkVM QVhFRCk7IGkrKykNCgkJc2xlZXBfbXMoMSk7DQp9DQoNCnN0YXRpYyB2b2lkIGV4ZWN1dGVfb25l KHZvaWQpOw0KDQojZGVmaW5lIFdBSVRfRkxBR1MgX19XQUxMDQoNCnN0YXRpYyB2b2lkIGxvb3Ao dm9pZCkNCnsNCglpbnQgaXRlciA9IDA7DQoJZm9yICg7OyBpdGVyKyspIHsNCgkJaW50IHBpZCA9 IGZvcmsoKTsNCgkJaWYgKHBpZCA8IDApDQoJZXhpdCgxKTsNCgkJaWYgKHBpZCA9PSAwKSB7DQoJ CQlzZXR1cF90ZXN0KCk7DQoJCQlleGVjdXRlX29uZSgpOw0KCQkJZXhpdCgwKTsNCgkJfQ0KCQlp bnQgc3RhdHVzID0gMDsNCgkJdWludDY0X3Qgc3RhcnQgPSBjdXJyZW50X3RpbWVfbXMoKTsNCgkJ Zm9yICg7Oykgew0KCQkJaWYgKHdhaXRwaWQoLTEsICZzdGF0dXMsIFdOT0hBTkcgfCBXQUlUX0ZM QUdTKSA9PSBwaWQpDQoJCQkJYnJlYWs7DQoJCQlzbGVlcF9tcygxKTsNCgkJCWlmIChjdXJyZW50 X3RpbWVfbXMoKSAtIHN0YXJ0IDwgNTAwMCkNCgkJCQljb250aW51ZTsNCgkJCWtpbGxfYW5kX3dh aXQocGlkLCAmc3RhdHVzKTsNCgkJCWJyZWFrOw0KCQl9DQoJfQ0KfQ0KDQp1aW50NjRfdCByWzJd ID0gezB4ZmZmZmZmZmZmZmZmZmZmZiwgMHhmZmZmZmZmZmZmZmZmZmZmfTsNCg0Kdm9pZCBleGVj dXRlX2NhbGwoaW50IGNhbGwpDQp7DQoJCWludHB0cl90IHJlcyA9IDA7DQoJc3dpdGNoIChjYWxs KSB7DQoJY2FzZSAwOg0KbWVtY3B5KCh2b2lkKikweDIwMDAwMjQwLCAiL2Rldi9jZWMjXDAwMCIs IDEwKTsNCgkJcmVzID0gLTE7DQpyZXMgPSBzeXpfb3Blbl9kZXYoLypkZXY9Ki8weDIwMDAwMjQw LCAvKmlkPSovMCwgLypmbGFncz0qLzApOw0KCQlpZiAocmVzICE9IC0xKQ0KCQkJCXJbMF0gPSBy ZXM7DQoJCWJyZWFrOw0KCWNhc2UgMToNCm1lbWNweSgodm9pZCopMHgyMDAwMDAwMCwgIlx4MTFc eDU3XHhmYlx4ZmEiLCA0KTsNCioodWludDE2X3QqKTB4MjAwMDAwMDQgPSA3Ow0KKih1aW50OF90 KikweDIwMDAwMDA2ID0gNTsNCioodWludDhfdCopMHgyMDAwMDAwNyA9IDB4ZDQ7DQoqKHVpbnQz Ml90KikweDIwMDAwMDA4ID0gMHhmZmZmZmZmZDsNCioodWludDMyX3QqKTB4MjAwMDAwMGMgPSA1 Ow0KbWVtY3B5KCh2b2lkKikweDIwMDAwMDEwLCAiXHgwMlx4MDBceDAwXHgwMFx4MGFceDNhXHhj OFx4ZDNceGY2XHg1M1x4ZmNceDViXHhmY1x4NjNceGE5IiwgMTUpOw0KbWVtY3B5KCh2b2lkKikw eDIwMDAwMDFmLCAiXHg4Y1x4MzVceDAwXHgwMCIsIDQpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAw MDIzLCAiXHgwMFx4MDBceGU2XHgwMCIsIDQpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMDI3LCAi XHg1MVx4OWFceDg0XHhmMSIsIDQpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMDJiLCAiXHgxZFx4 MTBceDAwXHgwMFx4MDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBceDAwIiwgMTIpOw0KbWVtY3B5 KCh2b2lkKikweDIwMDAwMDM3LCAiXHhiMlx4YzVceGQ3XHhlN1x4MDVceDYxXHhmYlx4YzRceGMz XHg5Ylx4NTlceDA4IiwgMTIpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMDQzLCAiXHhkOVx4ZjBc eDg2XHg2OFx4NTVceDE0XHgxNFx4OTFceDFhXHg5MFx4YzBceDIyIiwgMTIpOw0KbWVtY3B5KCh2 b2lkKikweDIwMDAwMDRmLCAiXHg2OFx4MjJceGM0XHhjMVx4MzJceDJiXHg1NFx4N2JceDE3XHgz NVx4OTVceDkyIiwgMTIpOw0KCQlzeXNjYWxsKF9fTlJfaW9jdGwsIC8qZmQ9Ki9yWzBdLCAvKmNt ZD0qLzB4YzA1YzYxMDQsIC8qYXJnPSovMHgyMDAwMDAwMHVsKTsNCgkJYnJlYWs7DQoJY2FzZSAy Og0KbWVtY3B5KCh2b2lkKikweDIwMDAwMmMwLCAiL2Rldi9jZWMjXDAwMCIsIDEwKTsNCgkJcmVz ID0gLTE7DQpyZXMgPSBzeXpfb3Blbl9kZXYoLypkZXY9Ki8weDIwMDAwMmMwLCAvKmlkPSovMCwg LypmbGFncz0qLzApOw0KCQlpZiAocmVzICE9IC0xKQ0KCQkJCXJbMV0gPSByZXM7DQoJCWJyZWFr Ow0KCWNhc2UgMzoNCm1lbWNweSgodm9pZCopMHgyMDAwMDEwMCwgIlx4NmJceDJkXHhiYlx4YTAi LCA0KTsNCioodWludDE2X3QqKTB4MjAwMDAxMDQgPSAwOw0KKih1aW50OF90KikweDIwMDAwMTA2 ID0gNjsNCioodWludDhfdCopMHgyMDAwMDEwNyA9IDk7DQoqKHVpbnQzMl90KikweDIwMDAwMTA4 ID0gMDsNCioodWludDMyX3QqKTB4MjAwMDAxMGMgPSA1Ow0KbWVtY3B5KCh2b2lkKikweDIwMDAw MTEwLCAiXHg4Ylx4OWZceGMwXHhkNVx4ZjBceDI5XHhiN1x4OGZceDhkXHgzMVx4ZjZceDRhXHhj OVx4N2ZceDlkIiwgMTUpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMTFmLCAiXHgyOFx4ZjJceDMy XHhjMCIsIDQpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMTIzLCAiXHhlZlx4YjJceGZjXHhmNSIs IDQpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMTI3LCAiXHg5N1x4NTRceDE5XHg3MyIsIDQpOw0K bWVtY3B5KCh2b2lkKikweDIwMDAwMTJiLCAiXHg1Y1x4NzJceGIxXHg2M1x4NDNceDMxXHg3Ylx4 MGJceDIzXHhlMVx4MDFceDE2IiwgMTIpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMTM3LCAiXHhl OVx4YjZceGQwXHhjZlx4YWFceDdjXHhjYVx4ODhceDY4XHg0YVx4NThceDRkIiwgMTIpOw0KbWVt Y3B5KCh2b2lkKikweDIwMDAwMTQzLCAiXHg1OFx4NmJceDhlXHg1N1x4YTZceGJlXHgwZFx4YTBc eGFlXHgyZlx4MjdceGViIiwgMTIpOw0KbWVtY3B5KCh2b2lkKikweDIwMDAwMTRmLCAiXHhjZFx4 YTZceDM0XHhkM1x4ZDVceDYwXHg2Nlx4N2JceGRhXHhjMlx4ZTBceDQ2IiwgMTIpOw0KCQlzeXNj YWxsKF9fTlJfaW9jdGwsIC8qZmQ9Ki9yWzFdLCAvKmNtZD0qLzB4YzA1YzYxMDQsIC8qYXJnPSov MHgyMDAwMDEwMHVsKTsNCgkJYnJlYWs7DQoJY2FzZSA0Og0KbWVtY3B5KCh2b2lkKikweDIwMDAw MDgwLCAiXHg1ZFx4ZjVceDY3XHg2YSIsIDQpOw0KKih1aW50MTZfdCopMHgyMDAwMDA4NCA9IDA7 DQoqKHVpbnQ4X3QqKTB4MjAwMDAwODYgPSAweDgxOw0KKih1aW50OF90KikweDIwMDAwMDg3ID0g MDsNCioodWludDMyX3QqKTB4MjAwMDAwODggPSAwOw0KKih1aW50MzJfdCopMHgyMDAwMDA4YyA9 IDA7DQptZW1jcHkoKHZvaWQqKTB4MjAwMDAwOTAsICJceDc4XHg5N1x4YzJceDk1XHg0Y1x4ZTNc eDU4XHg4MVx4ZTBceDgxXHgwY1x4NTJceDk1XHhhZFx4MzUiLCAxNSk7DQptZW1jcHkoKHZvaWQq KTB4MjAwMDAwOWYsICJceDJiXHhlY1x4ZmZceGQwIiwgNCk7DQptZW1jcHkoKHZvaWQqKTB4MjAw MDAwYTMsICJceGIxXHg5NVx4ZjZceDgzIiwgNCk7DQptZW1jcHkoKHZvaWQqKTB4MjAwMDAwYTcs ICJceGM5XHg2Nlx4NzlceDMwIiwgNCk7DQptZW1jcHkoKHZvaWQqKTB4MjAwMDAwYWIsICJceGFm XHgyNVx4YWVceDYzXHhhN1x4ZDVceDZjXHg5NVx4OThceDc3XHg1MVx4YzIiLCAxMik7DQptZW1j cHkoKHZvaWQqKTB4MjAwMDAwYjcsICJceGM1XHgwNVx4YTZceDUzXHg4Mlx4M2FceDgwXHg1NVx4 ZGZceDY4XHgyMVx4MDUiLCAxMik7DQptZW1jcHkoKHZvaWQqKTB4MjAwMDAwYzMsICJceDdiXHhi Nlx4NDRceDk0XHhlZVx4MGRceGU2XHg4OVx4MDFceDQ3XHg2ZFx4NTUiLCAxMik7DQptZW1jcHko KHZvaWQqKTB4MjAwMDAwY2YsICJceGYxXHg2Zlx4MWJceDg5XHg4OVx4YTVceGU3XHhhYlx4ZDlc eDJkXHhmNFx4YTQiLCAxMik7DQoJCXN5c2NhbGwoX19OUl9pb2N0bCwgLypmZD0qL3JbMV0sIC8q Y21kPSovMHhjMDVjNjEwNCwgLyphcmc9Ki8weDIwMDAwMDgwdWwpOw0KCQlicmVhazsNCgl9DQoN Cn0NCmludCBtYWluKHZvaWQpDQp7DQoJCXN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDFm ZmZmMDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsIC8qcHJvdD0qLzB1bCwgLypmbGFncz0qLzB4MzJ1 bCwgLypmZD0qLy0xLCAvKm9mZnNldD0qLzB1bCk7DQoJc3lzY2FsbChfX05SX21tYXAsIC8qYWRk cj0qLzB4MjAwMDAwMDB1bCwgLypsZW49Ki8weDEwMDAwMDB1bCwgLypwcm90PSovN3VsLCAvKmZs YWdzPSovMHgzMnVsLCAvKmZkPSovLTEsIC8qb2Zmc2V0PSovMHVsKTsNCglzeXNjYWxsKF9fTlJf bW1hcCwgLyphZGRyPSovMHgyMTAwMDAwMHVsLCAvKmxlbj0qLzB4MTAwMHVsLCAvKnByb3Q9Ki8w dWwsIC8qZmxhZ3M9Ki8weDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOw0KCQkJbG9v cCgpOw0KCXJldHVybiAwOw0KfQ0KYGBgDQoNCkJlc3QsDQpDaGVueXVhbg0KDQrvu79PbiAxLzE5 LzI0LCAyOjE3IEFNLCAiSGFucyBWZXJrdWlsIiA8aHZlcmt1aWwtY2lzY29AeHM0YWxsLm5sIDxt YWlsdG86aHZlcmt1aWwtY2lzY29AeHM0YWxsLm5sPj4gd3JvdGU6DQoNCg0KSGkgQ2hlbnl1YW4s DQoNCg0KT24gMjgvMTIvMjAyMyAwMzozMywgWWFuZywgQ2hlbnl1YW4gd3JvdGU6DQo+IEhlbGxv LA0KPiANCj4gDQo+IA0KPiBXZSBlbmNvdW50ZXJlZCA1IGRpZmZlcmVudCBjcmFzaGVzIGluIHRo ZSBjZWMgZGV2aWNlIGJ5IHVzaW5nIG91ciBnZW5lcmF0ZWQgc3lzY2FsbCBzcGVjaWZpY2F0aW9u IGZvciBpdCwgaGVyZSBhcmUgdGhlIGRlc2NyaXB0aW9ucyBvZiB0aGVzZSA1IGNyYXNoZXMgYW5k IHRoZSByZWxhdGVkIGZpbGVzIGFyZSBhdHRhY2hlZDoNCj4gDQo+IDEuIEtBU0FOOiBzbGFiLXVz ZS1hZnRlci1mcmVlIFJlYWQgaW4gY2VjX3F1ZXVlX21zZ19maCAoUmVwcm9kdWNpYmxlKQ0KPiAN Cj4gMi4gV0FSTklORzogT0RFQlVHIGJ1ZyBpbiBjZWNfdHJhbnNtaXRfbXNnX2ZoDQo+IA0KPiAz LiBXQVJOSU5HIGluIGNlY19kYXRhX2NhbmNlbA0KPiANCj4gNC4gSU5GTzogdGFzayBodW5nIGlu IGNlY19jbGFpbV9sb2dfYWRkcnMgKFJlcHJvZHVjaWJsZSkNCj4gDQo+IDUuIGdlbmVyYWwgcHJv dGVjdGlvbiBmYXVsdCBpbiBjZWNfdHJhbnNtaXRfZG9uZV90cw0KPiANCj4gDQo+IA0KPiBGb3Ig 4oCcS0FTQU46IHNsYWItdXNlLWFmdGVyLWZyZWUgUmVhZCBpbiBjZWNfcXVldWVfbXNnX2Zo4oCd LCB3ZSBhdHRhY2hlZCBhIHN5emthbGxlciBwcm9ncmFtIHRvIHJlcHJvZHVjZSBpdC4gVGhpcyBj cmFzaCBpcyBjYXVzZWQgYnkgYCBsaXN0X2FkZF90YWlsKCZlbnRyeS0+bGlzdCwgJmZoLT5tc2dz KTtgDQo+IChodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxp bi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFk YXAuYyA8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZWxpeGlyLmJvb3RsaW4u Y29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9kcml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hZGFw LmM+KkwyMjRfXztJdyEhRFozZmpnITlfTzRUbTdXMWRLVjhsWE9jREZVVG1JcUFkNmVVbXNmZlFn M2d3dnlweEJSM1dGdVFrSWxScjJ2QXNJcHdNdDdsdDg2VWx6ZE9UVl9qQmFWTzhwa0lpWnhaTWYz ZlZRJCA8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZWxpeGlyLmJvb3RsaW4u Y29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9kcml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hZGFw LmMgPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL2VsaXhpci5ib290bGluLmNv bS9saW51eC92Ni43LXJjNy9zb3VyY2UvZHJpdmVycy9tZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5j PipMMjI0X187SXchIURaM2ZqZyE5X080VG03VzFkS1Y4bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNn d3Z5cHhCUjNXRnVRa0lsUnIydkFzSXB3TXQ3bHQ4NlVsemRPVFZfakJhVk84cGtJaVp4Wk1mM2ZW USQgPiksIHdoaWNoIHJlYWRzIGENCj4gdmFyaWFibGUgZnJlZWQgYnkgYGtmcmVlKGZoKTtgICho dHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGlu dXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFwaS5jIDxodHRw czovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgv djYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFwaS5jPipMNjg0X187 SXchIURaM2ZqZyE5X080VG03VzFkS1Y4bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNnd3Z5cHhCUjNX RnVRa0lsUnIydkFzSXB3TXQ3bHQ4NlVsemRPVFZfakJhVk84cGtJaVp4VDB4YXhzWSQgDQo+IDxo dHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGlu dXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFwaS5jIDxodHRw czovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgv djYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFwaS5jPipMNjg0X187 SXchIURaM2ZqZyE5X080VG03VzFkS1Y4bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNnd3Z5cHhCUjNX RnVRa0lsUnIydkFzSXB3TXQ3bHQ4NlVsemRPVFZfakJhVk84cGtJaVp4VDB4YXhzWSQgPikuIFRo ZSByZXByb2R1Y2libGUgcHJvZ3JhbSBpcyBhIFN5emthbGxlciBwcm9ncmFtLCB3aGljaCBjYW4g YmUgZXhlY3V0ZWQgZm9sbG93aW5nIHRoaXMgZG9jdW1lbnQ6DQo+IGh0dHBzOi8vdXJsZGVmZW5z ZS5jb20vdjMvX19odHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emthbGxlci9ibG9iL21hc3Rl ci9kb2NzL2V4ZWN1dGluZ19zeXprYWxsZXJfcHJvZ3JhbXMubWRfXzshIURaM2ZqZyE5X080VG03 VzFkS1Y4bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNnd3Z5cHhCUjNXRnVRa0lsUnIydkFzSXB3TXQ3 bHQ4NlVsemRPVFZfakJhVk84cGtJaVp4MzJQd0NEcyQgPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20v djMvX19odHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL3N5emthbGxlci9ibG9iL21hc3Rlci9kb2Nz L2V4ZWN1dGluZ19zeXprYWxsZXJfcHJvZ3JhbXMubWRfXzshIURaM2ZqZyE5X080VG03VzFkS1Y4 bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNnd3Z5cHhCUjNXRnVRa0lsUnIydkFzSXB3TXQ3bHQ4NlVs emRPVFZfakJhVk84cGtJaVp4MzJQd0NEcyQ+IDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19f aHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIvYmxvYi9tYXN0ZXIvZG9jcy9leGVj dXRpbmdfc3l6a2FsbGVyX3Byb2dyYW1zLm1kX187ISFEWjNmamchOV9PNFRtN1cxZEtWOGxYT2NE RlVUbUlxQWQ2ZVVtc2ZmUWczZ3d2eXB4QlIzV0Z1UWtJbFJyMnZBc0lwd010N2x0ODZVbHpkT1RW X2pCYVZPOHBrSWlaeDMyUHdDRHMkIDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6 Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIvYmxvYi9tYXN0ZXIvZG9jcy9leGVjdXRpbmdf c3l6a2FsbGVyX3Byb2dyYW1zLm1kX187ISFEWjNmamchOV9PNFRtN1cxZEtWOGxYT2NERlVUbUlx QWQ2ZVVtc2ZmUWczZ3d2eXB4QlIzV0Z1UWtJbFJyMnZBc0lwd010N2x0ODZVbHpkT1RWX2pCYVZP OHBrSWlaeDMyUHdDRHMkPiA+Lg0KPiANCj4gDQo+IA0KPiBGb3Ig4oCcV0FSTklORzogT0RFQlVH IGJ1ZyBpbiBjZWNfdHJhbnNtaXRfbXNnX2Zo4oCdLCB1bmZvcnR1bmF0ZWx5IHdlIGZhaWxlZCB0 byByZXByb2R1Y2UgaXQgYnV0IHdlIGluZGVlZCB0cmlnZ2VyIHRoaXMgY3Jhc2ggYWxtb3N0IGV2 ZXJ5IHRpbWUgd2hlbiB3ZSBmdXp6IHRoZSBjZWMgZGV2aWNlIG9ubHkuIFdlIGF0dGFjaGVkIHRo ZSByZXBvcnQNCj4gYW5kIGxvZyBmb3IgdGhpcyBidWcuIEl0IHRyaWVzIGZyZWVpbmcgYW4gYWN0 aXZlIG9iamVjdCBieSB1c2luZyBga2ZyZWUoZGF0YSk7YCAoaHR0cHM6Ly91cmxkZWZlbnNlLmNv bS92My9fX2h0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9k cml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hZGFwLmMgPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20v djMvX19odHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni43LXJjNy9zb3VyY2UvZHJp dmVycy9tZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5jPipMOTMwX187SXchIURaM2ZqZyE5X080VG03 VzFkS1Y4bFhPY0RGVVRtSXFBZDZlVW1zZmZRZzNnd3Z5cHhCUjNXRnVRa0lsUnIydkFzSXB3TXQ3 bHQ4NlVsemRPVFZfakJhVk84cGtJaVp4aHdudXpGdyQgDQo+IDxodHRwczovL3VybGRlZmVuc2Uu Y29tL3YzL19faHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNl L2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFkYXAuYyA8aHR0cHM6Ly91cmxkZWZlbnNlLmNv bS92My9fX2h0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9k cml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hZGFwLmM+Kkw5MzBfXztJdyEhRFozZmpnITlfTzRU bTdXMWRLVjhsWE9jREZVVG1JcUFkNmVVbXNmZlFnM2d3dnlweEJSM1dGdVFrSWxScjJ2QXNJcHdN dDdsdDg2VWx6ZE9UVl9qQmFWTzhwa0lpWnhod251ekZ3JCA+KS4NCj4gDQo+IA0KPiANCj4gRm9y IOKAnFdBUk5JTkcgaW4gY2VjX2RhdGFfY2FuY2Vs4oCdLCBpdCBpcyBhbiBpbnRlcm5hbCB3YXJu aW5nIHVzZWQgaW4gY2VjX2RhdGFfY2FuY2VsIChodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19f aHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMv bWVkaWEvY2VjL2NvcmUvY2VjLWFkYXAuYyA8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0 dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9kcml2ZXJzL21l ZGlhL2NlYy9jb3JlL2NlYy1hZGFwLmM+KkwzNjVfXztJdyEhRFozZmpnITlfTzRUbTdXMWRLVjhs WE9jREZVVG1JcUFkNmVVbXNmZlFnM2d3dnlweEJSM1dGdVFrSWxScjJ2QXNJcHdNdDdsdDg2VWx6 ZE9UVl9qQmFWTzhwa0lpWnhKOUp3NGZVJCANCj4gPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMv X19odHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC92Ni43LXJjNy9zb3VyY2UvZHJpdmVy cy9tZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5jIDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19f aHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMv bWVkaWEvY2VjL2NvcmUvY2VjLWFkYXAuYz4qTDM2NV9fO0l3ISFEWjNmamchOV9PNFRtN1cxZEtW OGxYT2NERlVUbUlxQWQ2ZVVtc2ZmUWczZ3d2eXB4QlIzV0Z1UWtJbFJyMnZBc0lwd010N2x0ODZV bHpkT1RWX2pCYVZPOHBrSWlaeEo5Snc0ZlUkID4pLCB3aGljaCBjaGVja3Mgd2hldGhlciB0aGUg dHJhbnNtaXQgaXMgdGhlIGN1cnJlbnQgb3IgcGVuZGluZy4gVW5mb3J0dW5hdGVseSwgd2UgYWxz byBkb24ndCBoYXZlIHRoZQ0KPiByZXByb2R1Y2libGUgcHJvZ3JhbSBmb3IgdGhpcyBidWcsIGJ1 dCB3ZSBhdHRhY2ggdGhlIHJlcG9ydCBhbmQgbG9nLg0KPiANCj4gDQo+IA0KPiBGb3Ig4oCcSU5G TzogdGFzayBodW5nIGluIGNlY19jbGFpbV9sb2dfYWRkcnPigJ0sIHRoZSBrZXJuZWwgaGFuZ3Mg d2hlbiB0aGUgY2VjIGRldmljZSBgIHdhaXRfZm9yX2NvbXBsZXRpb24oJmFkYXAtPmNvbmZpZ19j b21wbGV0aW9uKTtgDQo+IChodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4 aXIuYm9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2Nv cmUvY2VjLWFkYXAuYyA8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZWxpeGly LmJvb3RsaW4uY29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9kcml2ZXJzL21lZGlhL2NlYy9jb3Jl L2NlYy1hZGFwLmM+KkwxNTc5X187SXchIURaM2ZqZyE5X080VG03VzFkS1Y4bFhPY0RGVVRtSXFB ZDZlVW1zZmZRZzNnd3Z5cHhCUjNXRnVRa0lsUnIydkFzSXB3TXQ3bHQ4NlVsemRPVFZfakJhVk84 cGtJaVp4S1A0NE9FMCQgPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL2VsaXhp ci5ib290bGluLmNvbS9saW51eC92Ni43LXJjNy9zb3VyY2UvZHJpdmVycy9tZWRpYS9jZWMvY29y ZS9jZWMtYWRhcC5jIDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUv Y2VjLWFkYXAuYz4qTDE1NzlfXztJdyEhRFozZmpnITlfTzRUbTdXMWRLVjhsWE9jREZVVG1JcUFk NmVVbXNmZlFnM2d3dnlweEJSM1dGdVFrSWxScjJ2QXNJcHdNdDdsdDg2VWx6ZE9UVl9qQmFWTzhw a0lpWnhLUDQ0T0UwJCA+KS4gV2UgaGF2ZSBhDQo+IHJlcHJvZHVjaWJsZSBDIHByb2dyYW0gZm9y IHRoaXMuDQo+IA0KPiANCj4gDQo+IEZvciDigJxnZW5lcmFsIHByb3RlY3Rpb24gZmF1bHQgaW4g Y2VjX3RyYW5zbWl0X2RvbmVfdHPigJ0sIHRoZSBjZWMgZGV2aWNlIHRyaWVzIGRlcmVmZW5jaW5n IGEgbm9uLWNhbm9uaWNhbCBhZGRyZXNzIDB4ZGZmZmZjMDAwMDAwMDBlMDogMDAwMCBbIzFdLCB3 aGljaCBpcyByZWxhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIGANCj4gY2VjX3RyYW5zbWl0X2F0dGVt cHRfZG9uZV90cyBgIChodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUv Y2VjLWFkYXAuYyA8aHR0cHM6Ly91cmxkZWZlbnNlLmNvbS92My9fX2h0dHBzOi8vZWxpeGlyLmJv b3RsaW4uY29tL2xpbnV4L3Y2LjctcmM3L3NvdXJjZS9kcml2ZXJzL21lZGlhL2NlYy9jb3JlL2Nl Yy1hZGFwLmM+Kkw2OTdfXztJdyEhRFozZmpnITlfTzRUbTdXMWRLVjhsWE9jREZVVG1JcUFkNmVV bXNmZlFnM2d3dnlweEJSM1dGdVFrSWxScjJ2QXNJcHdNdDdsdDg2VWx6ZE9UVl9qQmFWTzhwa0lp WnhHbkJGWnYwJCANCj4gPGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL2VsaXhp ci5ib290bGluLmNvbS9saW51eC92Ni43LXJjNy9zb3VyY2UvZHJpdmVycy9tZWRpYS9jZWMvY29y ZS9jZWMtYWRhcC5jIDxodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvdjYuNy1yYzcvc291cmNlL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUv Y2VjLWFkYXAuYz4qTDY5N19fO0l3ISFEWjNmamchOV9PNFRtN1cxZEtWOGxYT2NERlVUbUlxQWQ2 ZVVtc2ZmUWczZ3d2eXB4QlIzV0Z1UWtJbFJyMnZBc0lwd010N2x0ODZVbHpkT1RWX2pCYVZPOHBr SWlaeEduQkZadjAkID4pLiBJdCBzZWVtcyB0aGF0IHRoZSBhZGRyZXNzIG9mIGNlY19hZGFwdGVy IGlzIHRvdGFsbHkgd3JvbmcuIFdlIGRvIG5vdCBoYXZlIGEgcmVwcm9kdWNpYmxlIHByb2dyYW0g Zm9yIHRoaXMNCj4gYnVnLCBidXQgdGhlIGxvZyBhbmQgcmVwb3J0IGZvciBpdCBhcmUgYXR0YWNo ZWQuDQo+IA0KPiANCj4gDQo+IElmIHlvdSBoYXZlIGFueSBxdWVzdGlvbnMgb3IgcmVxdWlyZSBt b3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMuDQoNCg0KQ2Fu IHlvdSByZXRlc3Qgd2l0aCB0aGUgcGF0Y2ggYmVsb3c/IEknbSBmYWlybHkgY2VydGFpbiB0aGlz IHdpbGwgZml4IGlzc3VlcyAxIGFuZCAyLg0KSSBzdXNwZWN0IGF0IGxlYXN0IHNvbWUgb2YgdGhl IG90aGVycyBhcmUgcmVsYXRlZCB0byAxICYgMiwgYnV0IHNpbmNlIEkgY291bGQgbmV2ZXINCmdl dCB0aGUgcmVwcm9kdWNlcnMgd29ya2luZyByZWxpYWJseSwgSSBoYWQgYSBoYXJkIHRpbWUgZGV0 ZXJtaW5pbmcgaWYgdGhlcmUgYXJlIG1vcmUNCmJ1Z3Mgb3IgaWYgdGhpcyBwYXRjaCByZXNvbHZl cyBldmVyeXRoaW5nLg0KDQoNCllvdXIgaGVscCB0ZXN0aW5nIHRoaXMgcGF0Y2ggd2lsbCBiZSBh cHByZWNpYXRlZCENCg0KDQpSZWdhcmRzLA0KDQoNCkhhbnMNCg0KDQpTaWduZWQtb2ZmLWJ5OiBI YW5zIFZlcmt1aWwgPGh2ZXJrdWlsLWNpc2NvQHhzNGFsbC5ubCA8bWFpbHRvOmh2ZXJrdWlsLWNp c2NvQHhzNGFsbC5ubD4+DQotLS0NCmRyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFkYXAuYyB8 IDMgKy0tDQpkcml2ZXJzL21lZGlhL2NlYy9jb3JlL2NlYy1hcGkuYyB8IDMgKysrDQoyIGZpbGVz IGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCg0KDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5jIGIvZHJpdmVycy9tZWRpYS9jZWMv Y29yZS9jZWMtYWRhcC5jDQppbmRleCA1NzQxYWRmMDlhMmUuLjA3OWMzYjE0MmQ5MSAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFkYXAuYw0KKysrIGIvZHJpdmVycy9t ZWRpYS9jZWMvY29yZS9jZWMtYWRhcC5jDQpAQCAtOTM2LDggKzkzNiw3IEBAIGludCBjZWNfdHJh bnNtaXRfbXNnX2ZoKHN0cnVjdCBjZWNfYWRhcHRlciAqYWRhcCwgc3RydWN0IGNlY19tc2cgKm1z ZywNCiovDQptdXRleF91bmxvY2soJmFkYXAtPmxvY2spOw0Kd2FpdF9mb3JfY29tcGxldGlvbl9r aWxsYWJsZSgmZGF0YS0+Yyk7DQotIGlmICghZGF0YS0+Y29tcGxldGVkKQ0KLSBjYW5jZWxfZGVs YXllZF93b3JrX3N5bmMoJmRhdGEtPndvcmspOw0KKyBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JmRhdGEtPndvcmspOw0KbXV0ZXhfbG9jaygmYWRhcC0+bG9jayk7DQoNCg0KLyogQ2FuY2VsIHRo ZSB0cmFuc21pdCBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL2NlYy9jb3JlL2NlYy1hcGkuYyBiL2RyaXZlcnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFw aS5jDQppbmRleCA2N2RjNzllZjE3MDUuLmQ2NGJiNzE2ZjljNiAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvbWVkaWEvY2VjL2NvcmUvY2VjLWFwaS5jDQorKysgYi9kcml2ZXJzL21lZGlhL2NlYy9jb3Jl L2NlYy1hcGkuYw0KQEAgLTY2NCw2ICs2NjQsOCBAQCBzdGF0aWMgaW50IGNlY19yZWxlYXNlKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQ0KbGlzdF9kZWxfaW5pdCgmZGF0 YS0+eGZlcl9saXN0KTsNCn0NCm11dGV4X3VubG9jaygmYWRhcC0+bG9jayk7DQorDQorIG11dGV4 X2xvY2soJmZoLT5sb2NrKTsNCndoaWxlICghbGlzdF9lbXB0eSgmZmgtPm1zZ3MpKSB7DQpzdHJ1 Y3QgY2VjX21zZ19lbnRyeSAqZW50cnkgPQ0KbGlzdF9maXJzdF9lbnRyeSgmZmgtPm1zZ3MsIHN0 cnVjdCBjZWNfbXNnX2VudHJ5LCBsaXN0KTsNCkBAIC02ODEsNiArNjgzLDcgQEAgc3RhdGljIGlu dCBjZWNfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkNCmtm cmVlKGVudHJ5KTsNCn0NCn0NCisgbXV0ZXhfdW5sb2NrKCZmaC0+bG9jayk7DQprZnJlZShmaCk7 DQoNCg0KY2VjX3B1dF9kZXZpY2UoZGV2bm9kZSk7DQotLSANCjIuNDIuMA0KDQoNCg0KDQoNCg0K DQo=