Received: by 2002:a05:7412:d024:b0:f9:90c9:de9f with SMTP id bd36csp46083rdb; Wed, 20 Dec 2023 06:03:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IFJQfavsg+orzi4lgOXvRyaZ+Ni9k8fMNLmyYD3Do9g6lFLKvRq6O8rxtRKtcA0+xoX1haj X-Received: by 2002:a05:620a:b43:b0:77d:7a2b:2fd9 with SMTP id x3-20020a05620a0b4300b0077d7a2b2fd9mr3481367qkg.31.1703081015371; Wed, 20 Dec 2023 06:03:35 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1703081015; cv=pass; d=google.com; s=arc-20160816; b=OnibNXrwSYIypY0FaPj7NYkNTK9mYnHtDW5VygzVwKK5RAZzb5gWBJijsR1rGoL4UM Xo3r0+rtXzjWcT6+6VBJVpafbtthWEWevl8R4ocYJBUMGKJwidZ6i7D/igOoiY9nCtmu 2XcWUxRucLGj5j66iEIEYWBLZ7/0BDcEOaMRcrfPjp95KFuHecG5BUpimiYOUnhALbzL ijkY4CAfIY1ig2Zc9BvWPx7S4RI4p7EjIdb22NChfaRWkGHe4MB8BWAxIkUVZ5Xzsgmy sXJg7Vl+wfqqZubFbd+hdbTcTJkLpw967hnFCfCzEides0w2vfQ+9uhkwUAP/T9TEwU/ 9QZA== 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 :content-transfer-encoding:msip_labels:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:dkim-signature; bh=1dvSCwTwvscVVbnB3PwnoZapCgpvans2YD1GoYM09Jc=; fh=5rnpDWMpLd873f+vS7RDLaP8ojGBXuuNk645RTR8deY=; b=XmtPMBQieH8OcU1s+5tf7/2NUVdXHndrr0O7iXD3BpDFyLxxBSVlC28xVzLHh7Mjkz unBWTpq49GxtDox32i9d7rx43K8rZh0cJ9BBPS9+8NTooiGIvXBud/7z3mNftevO9IPb RvW4OUqua7uDuhLNtvhKnxrbgMDfXUZXDqBB4Rx991tURVO2od5TD8VxXPsTR2VtDTC2 Ab6K2oyF90EkTm/8cN/5Z7PgbDjbW1KCA9amKKfmxBrGII3FJvVfi7NOhwVz588wwgTB y8MI4FmI8LBmhQ0EiftXH+8lPPefSOeQQRlA/KVmD16NAvdjIW3/nxEH8+8Afh6+7xw8 0DFw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@tdk.com header.s=selector1 header.b=hXLR47yE; arc=pass (i=1 spf=pass spfdomain=tdk.com dkim=pass dkdomain=tdk.com dmarc=pass fromdomain=tdk.com); spf=pass (google.com: domain of linux-kernel+bounces-7022-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-7022-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=tdk.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id az20-20020a05620a171400b0077f2efdfb57si27757660qkb.448.2023.12.20.06.03.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Dec 2023 06:03:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-7022-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@tdk.com header.s=selector1 header.b=hXLR47yE; arc=pass (i=1 spf=pass spfdomain=tdk.com dkim=pass dkdomain=tdk.com dmarc=pass fromdomain=tdk.com); spf=pass (google.com: domain of linux-kernel+bounces-7022-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-7022-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=tdk.com 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 1B49D1C2456C for ; Wed, 20 Dec 2023 14:03:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4BD7B3A29A; Wed, 20 Dec 2023 14:02:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tdk.com header.i=@tdk.com header.b="hXLR47yE" X-Original-To: linux-kernel@vger.kernel.org Received: from mx0a-00549402.pphosted.com (mx0a-00549402.pphosted.com [205.220.166.134]) (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 DBD5638F83; Wed, 20 Dec 2023 14:02:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=tdk.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tdk.com Received: from pps.filterd (m0233778.ppops.net [127.0.0.1]) by mx0b-00549402.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 3BK3kXaS022720; Wed, 20 Dec 2023 13:29:57 GMT Received: from deu01-fr2-obe.outbound.protection.outlook.com (mail-fr2deu01lp2169.outbound.protection.outlook.com [104.47.11.169]) by mx0b-00549402.pphosted.com (PPS) with ESMTPS id 3v156u2yhu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Dec 2023 13:29:54 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FPDohKLvirfmbO9YEkZobG8n5S8SCsI02ql2O4u723EkZkr7uJFrqrXHpMfByknEvciDYm9UuWlSYW1IbQWUDUybcvtv/hxbrcIbHvXc5h/wg4T/Xg4cR2py5Y9yoD0dgBJxrWVJWlVvHNXIVQ1ZpN07zDxArD6P0I/ajHu4TH6ABopYPLrg42/OkZZM6jyqHJ6aqdRN2p0VwowsYlDkiX9kGhh28WUi+C85i0ax8ZUbmYiYRAb7K95RhCDdxAU9X+X73A/R2+ngSPL855Yn0YfqKzMq3HBRk/42/IOBPBbF6X7ZYc6nP3is9PgpgXN3vYqei9U+3ZklQjXIQL0ykQ== 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=1dvSCwTwvscVVbnB3PwnoZapCgpvans2YD1GoYM09Jc=; b=CCFJlVZL755j+ddEPi1rQGMWc2r4ksgSvpBdfHdAqKLU92eMOJjh5Q5EPWfVZ+4ZmDsg9WgQvSvVfFhdNAebZ7WRJj7nF40TvP+GxW3tgdBdfcVjefRfHEOYgQJc+VN20xpfE7srvjXkqr4mXOhkzM20tdfLxTxolq2dEd5d+SiPVQeew024qPpLj5tk6RD0QZf+o4CsawD0CcFBWbCeFOgH5E8c3Zb2D6c6NnduTlh6QczgeC0dEf/darLlXiD4JC5MLDrhHPKnIUoYrsbobTTuhBhcy22lXqFY+qanzCrxcfUGzBAlSax31sueOmo01rrOMrfrmCUfDbU7Gxe2vw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tdk.com; dmarc=pass action=none header.from=tdk.com; dkim=pass header.d=tdk.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tdk.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1dvSCwTwvscVVbnB3PwnoZapCgpvans2YD1GoYM09Jc=; b=hXLR47yE3k/GRaHbhS/2cn7PYHsbcMrhS31l2DXyl9d4gRgLaXHHUM4JAa4RLApdDZcDf2P70mOyNnJM8yNJJ0ajMVn+fDG/6MltoY6z1qOAh6/GOuJNQKYdeJTHNYcF5u0kmbEoMN2INJo5HsmW7mAM7G2mmGH013pc306JI6HYHuOs0ouJ5bWPelAJ5CKQdGCBkz8MhrsNt/+GC64SDqtEFJRN7kai+iU8nNK+qX3voxhQ6lZbcVepv5oS16f4Otvf7VH7OQw7axcWj1tPCpxtU6xrpm7uTplX++iou+G4AQdwyrxqcx3AymTlmQGWfApkHbj40vk1HypR/kWSFA== Received: from FR3P281MB1757.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:7c::11) by FRYP281MB2507.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:76::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.18; Wed, 20 Dec 2023 13:29:49 +0000 Received: from FR3P281MB1757.DEUP281.PROD.OUTLOOK.COM ([fe80::437a:5255:4944:171c]) by FR3P281MB1757.DEUP281.PROD.OUTLOOK.COM ([fe80::437a:5255:4944:171c%7]) with mapi id 15.20.7113.016; Wed, 20 Dec 2023 13:29:49 +0000 From: Jean-Baptiste Maneyrol To: Jonathan Cameron , Hiten Chauhan CC: "lars@metafoo.de" , "linux-iio@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH v3] Added tilt interrupt support in inv_icm42600 Thread-Topic: [PATCH v3] Added tilt interrupt support in inv_icm42600 Thread-Index: AQHaGWjkZ4DTrjk/rU6cfhT2oqz66bCDRNsTgAdj9wCAA1pf34ARi5yAgAAWNh6AAt33gIAMQ0MAgAOGowCAAA+tAQ== Date: Wed, 20 Dec 2023 13:29:49 +0000 Message-ID: References: <20231117151446.49738-1-hiten.chauhan@siliconsignals.io> <20231210112038.6c4613d3@jic23-huawei> <20231220122708.740c9ff9@jic23-huawei> In-Reply-To: <20231220122708.740c9ff9@jic23-huawei> Accept-Language: en-US, fr-FR Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: FR3P281MB1757:EE_|FRYP281MB2507:EE_ x-ms-office365-filtering-correlation-id: ec2abf09-b293-4163-11f9-08dc015fbdab x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 48won+OfWTb0UpZBg1ApHkRBP6h5xmsLfsEb8bxGjsz3B53sCCA+3aqwGt7+zfbbQqIwtIjBlkmAJdzOZfBT/cKoY5hKIfcWMfRIpnGRbDCiQJ5eflcmMxx69CajA/giVl6ORoWM6NkgnFoAQWTosVeuflgxdRr0+O9uZtt9kSNjvoeZ8Vlcq2vGh013DwwPLcPunzmPTtT6CuYJSRLoVaKiGG+J2JPEr9kdZux5UuRLeI8Zg/E/Q7UhGbWwdvYgtu9VVYRbNCgdYN0FzROgyt0qklShH+tlH0dDn9xlgFr4vwzn5LHDAYuvwZ1NN7eibUJXQTEEXw+EMPKg9s8n1k943mICAMI04POktUILq54o+ZpQVtLxmKMJpl36lX2wlpJJ8ATFc95pcdQQR7oNh4kmeIouxXj47AsCdSvK962lQ348fss7XwxsW3n/B/+JPQw1BdSKixDDgdMjykayJiI5XWc/89yHPMwGv7EDqhu0+5GkOTsYvznyu5a8Hp0AqpZqg4dvqqec1R5uP5X1f/xVEdO0jtjbDTqbYau6/cRQ/cqrTxT1UIXyXk4H3829Nanld9ZfVexo6K/tnvSeCete2c3bAzToWywnWOL21XoU18qrgSGRqWF6G9EhdTwTAQoPd4SdcFg4r5ySxDawNWLmbVLQorHStPQXPKkVgvq2MEMpWow5gPL/InX3MkPFjYfG0tKvaOxjK8JXz0+lWQYiiZchhKYuV3kOVAHZ6P4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:FR3P281MB1757.DEUP281.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(346002)(376002)(366004)(136003)(39860400002)(396003)(230173577357003)(230273577357003)(230922051799003)(186009)(64100799003)(1800799012)(451199024)(86362001)(7696005)(6506007)(9686003)(478600001)(53546011)(316002)(66476007)(66446008)(54906003)(52536014)(76116006)(66946007)(66556008)(64756008)(110136005)(122000001)(966005)(91956017)(83380400001)(71200400001)(38100700002)(33656002)(8676002)(2906002)(5660300002)(30864003)(8936002)(4326008)(38070700009)(3613699003)(55016003)(41300700001)(66899024)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?emJPd1RPclJSb3VVY0h4ckRraDI0aXkxTkVGOU1iVEpxMnVLQTl1Rk9LVm9v?= =?utf-8?B?eHR4M0ZlNXVGTlFCVDYzOS9xTjY4SGViQ3J0TFpxZFFMcEZHZXZDdjdyb0lF?= =?utf-8?B?ejNzbW1iaUd0N2Z6elZEOE9DUkdJZk42RS9NUzZ1bG9PeVd4YlVmekxhTHQy?= =?utf-8?B?bjZ1MHpDWkJzNnNJMndkSngyZ0xSYzdnM1FoUDNLTnNzeUgyVEtEVnQvQXpM?= =?utf-8?B?em13N0lVNW5KbnpGTkV0aElNeUY3bERmZHpucHcxUG5TSmI5WXVHV2ZHWkN2?= =?utf-8?B?cnlnQU85UGlmakZSZUlGSXJaUFdxd3VnZURJcFMyZThuVEF2ZEh3ME5ENEtR?= =?utf-8?B?YVhRUVd3WFBtZGc0U1ZQVzF5bGNEOWx3dlo3SzhlREFJSEgxWFVwRjVrMmw2?= =?utf-8?B?WUIvRWhBU2I2bmNhQkRsNVc0OEkvY0VnSWJCUEhBSmFPazFkejQ4Z3ltbDRX?= =?utf-8?B?bmZ5WTlVTUUxdG12TFFic3JwVmJYMHM5bkJpSEEyQUxvLy9HN29sa2EyeWwy?= =?utf-8?B?NDZqd2cvZjM4T05uNXpHbzlNNDBSaG5pajh2Y0F6bXpLT2l1TndWcjdwOFk0?= =?utf-8?B?YTlVbmZCZk5qVy9ZRlVCRERIWWJFcU4rUHdCc2ZhK2dDL0xaVEd3bDEzUVJs?= =?utf-8?B?SXRJWW9lMzNva2NKdW9DVytDcnRCSDRzM1YvVFY1OXdvdWlFalpaNlBteTVG?= =?utf-8?B?cFNpdVl1bUIxTjZ6RWlCMXZWL0dpenBZSlk5MVJESFp4aUN1MlJGcmgxcGR0?= =?utf-8?B?V2c4V0ZsbHpMY1RFU2VhdVBtMVBNa0hMZ01nU1hSYjJLM0N1SVY4ODQ0emFD?= =?utf-8?B?eGkxRG9CbjN1a0J0Y3RUdXVjY1NyUlJaYlIyaTBVUkJGTXpnY1Awdy9xNEdk?= =?utf-8?B?VmJnNTZLc2NrOFpBWGgzenBMNW5lRHNKU3MyOGxhRlo2Z1RzS2d4eUNRNHcx?= =?utf-8?B?dUtESU5tS1htWkUxWjkya0p0akJCSjVZcGlRY2dWaDdhcFlOVGszc2ZkMkVz?= =?utf-8?B?Y1IyM1Nkcjc4TnlGRTJlQ010UDd2UnprNTJvSnViNmdDby9waDB4bUFLU1Z6?= =?utf-8?B?T0taRDlabHFPNlNUT204UjlPMlJhTXlvOHQ2aGFiNkpzd0E5aWppTVB3bENK?= =?utf-8?B?SWdUa2tDSk9pVjFPQ09kVDh4NDJFWUxJTUxld20zcTBkMzRHZGllVFVPQWtP?= =?utf-8?B?UG8wMVJWVlh2VjNBZzdJMUVsYkNmZnBPNWxob1pIZ21nMjcybjk5bWJGa3p6?= =?utf-8?B?alBZeGFEc1MxeHUzUzZFUmRCeGt4WmdEcERpMXI3a1BjYXpRaXQwakI1dmFO?= =?utf-8?B?dG1PN2xrSzhlK3BvT040Z0VGWFd4QWxsdmVhbnJvSjdoZ0d2bXFWQVJGT0Vr?= =?utf-8?B?WElNZkg2dWVnSGl0Ly9YUjUzbkNrczZjME9qN2gvS0xsMHVxY3k4VDJscWRa?= =?utf-8?B?c0QweEhXSkwwVVdOUisyV2ptb3dKeDkyNnVtbWxrWDlmTVJUSVJDeXduQXFo?= =?utf-8?B?QzBmTWhELy8wMHN3eXJFRGpkUVowR2NFOGdXckVIdFpFakVKdXZwRWp6aVpz?= =?utf-8?B?VnZpam5DWWlib2ZXSTZXeUFQYkdPSVpKRjI3TGQyZUVqd0tkSk93TlA3WnlP?= =?utf-8?B?ODlHVWlsQXloaDFDZzQwSDFGZHcvdmp3TkdjVmdBS1FaNlRpaGR1cjI3eGZr?= =?utf-8?B?bVNlZHlYUy9xQmlzWUdlckJnWCs2QUNIYkpld1M5ckhFazhkU3VTMjNuUHhL?= =?utf-8?B?L0F0RDdNS20zNUszY0Ntay9iK2dseVpDT1VEY1Z3YkgxOHZncmdmZ0FDd0sv?= =?utf-8?B?V0pabFQwT21mTFZ2WmJ0TkVIYVhMbU5uMi9icDFqR0JQRWduM1NNSzMrV1V5?= =?utf-8?B?UmswMmlSM093VVhiazluRWRtQmR4VkZlckZyN1dwbjBueHVsV0N3Sis4Lzg1?= =?utf-8?B?aEcvSTgzRU52NVdPSEQzUE1HNXp4eTJuYUhESTFLcjByd09JQ3d1UHg3WWFY?= =?utf-8?B?S2VvbUM0RWpwZlh5V3VUTFE3TEd5SnBPbGRxWWZWbklpYWVDYkxuZ2gzS1pK?= =?utf-8?B?S3FWNmdlUXM2b2JMS1FxSlJ6bmhTM0dPSEJnc0N1bllpOEw1RWdnbzErd0xq?= =?utf-8?B?bnVuanBKRnBTOGlBN3ZTYytzSXNreVhwWVp5NUpRdFJNdEVtM1dQVW41aHMr?= =?utf-8?B?bW00ZWx2bTFxelBLWi9lY3FWbUx5VXZLd3g4K2w0bkV0ZEJxTVE1UGpqV2pD?= =?utf-8?B?WFN1d2Y5bVl2MFZDQTZRM1g3bVNBPT0=?= Content-Type: text/plain; charset="utf-8" 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: tdk.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: FR3P281MB1757.DEUP281.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: ec2abf09-b293-4163-11f9-08dc015fbdab X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Dec 2023 13:29:49.5151 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 7e452255-946f-4f17-800a-a0fb6835dc6c X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: EkC+mouxi8HiySUVHbJklNuvEalGgksb8THJzkbSzC6wpBLQZ3uJpnI1O86td7FlMJ0bKyRj83DEewvQadXX14R7vFoKfMrK6AdNQe0U99k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRYP281MB2507 X-Proofpoint-GUID: jPzq_UuaqC8COEY1F5comOXdOIlaZ-bW X-Proofpoint-ORIG-GUID: jPzq_UuaqC8COEY1F5comOXdOIlaZ-bW 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=2023-12-08_16,2023-12-07_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 phishscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 clxscore=1015 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2312200095 SGkgSm9uaGF0aGFuLCBIaXRlbiwKCkkgY2FuIGJlIG9mIHNvbWUgaGVscCB0byBleHBsYWluIHRo ZSBmZWF0dXJlLgoKVGhpcyBUaWx0IGZlYXR1cmUgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRo ZSBUSUxUX0RFVEVDVE9SIHNlbnNvciBmcm9tIEFuZHJvaWQgc3lzdGVtLiBUaGUgYW5nbGUgY29t cHV0ZWQgaXMgYmV0d2VlbiBncmF2aXR5IHZlY3RvcnMuIFRoZSAxc3Qgb25lIGlzIGNvbXB1dGVk IGFzIGEgcmVmZXJlbmNlIHdoZW4gdHVybmluZyB0aGUgZmVhdHVyZSBvbiwgYW5kIHRoZSAybmQg aXMgY29udGludW91c2x5IGV2YWx1YXRlZCBvbiBhIHRpbWUgZnJhbWUuIFdoZW4gdGhlIGFuZ2xl IGJldHdlZW4gdGhlc2UgMiBncmF2aXR5IHZlY3RvcnMgaXMgbGFyZ2UgZW5vdWdoLCBhIHRpbHQg ZXZlbnQgaXMgZ2VuZXJhdGVkLgoKSGVyZSBhcmUgdGhlIFRJTFRfREVURUNUT1Igc3BlY3MgZnJv bSBBbmRyb2lkIHN5c3RlbToKICAgIC8qKgogICAgICogV0FLRV9VUF9USUxUX0RFVEVDVE9SCiAg ICAgKiByZXBvcnRpbmctbW9kZTogc3BlY2lhbCAoc2V0RGVsYXkgaGFzIG5vIGltcGFjdCkKICAg ICAqCiAgICAgKiBBIHNlbnNvciBvZiB0aGlzIHR5cGUgZ2VuZXJhdGVzIGFuIGV2ZW50IGVhY2gg dGltZSBhIHRpbHQgZXZlbnQgaXMKICAgICAqIGRldGVjdGVkLiBBIHRpbHQgZXZlbnQgbXVzdCBi ZSBnZW5lcmF0ZWQgaWYgdGhlIGRpcmVjdGlvbiBvZiB0aGUKICAgICAqIDItc2Vjb25kcyB3aW5k b3cgYXZlcmFnZSBncmF2aXR5IGNoYW5nZWQgYnkgYXQgbGVhc3QgMzUgZGVncmVlcyBzaW5jZSB0 aGUKICAgICAqIGFjdGl2YXRpb24gb3IgdGhlIGxhc3QgdHJpZ2dlciBvZiB0aGUgc2Vuc29yLgog ICAgICoKICAgICAqICByZWZlcmVuY2VfZXN0aW1hdGVkX2dyYXZpdHkgPSBhdmVyYWdlIG9mIGFj Y2VsZXJvbWV0ZXIgbWVhc3VyZW1lbnRzIG92ZXIKICAgICAqICB0aGUgZmlyc3QgMSBzZWNvbmQg YWZ0ZXIgYWN0aXZhdGlvbiBvciB0aGUgZXN0aW1hdGVkIGdyYXZpdHkgYXQgdGhlIGxhc3QKICAg ICAqICB0cmlnZ2VyLgogICAgICoKICAgICAqICBjdXJyZW50X2VzdGltYXRlZF9ncmF2aXR5ID0g YXZlcmFnZSBvZiBhY2NlbGVyb21ldGVyIG1lYXN1cmVtZW50cyBvdmVyCiAgICAgKiAgdGhlIGxh c3QgMiBzZWNvbmRzLgogICAgICoKICAgICAqICB0cmlnZ2VyIHdoZW4KICAgICAqICAgICBhbmds ZShyZWZlcmVuY2VfZXN0aW1hdGVkX2dyYXZpdHksIGN1cnJlbnRfZXN0aW1hdGVkX2dyYXZpdHkp CiAgICAgKiAgICAgICA+IDM1IGRlZ3JlZXMKICAgICAqCiAgICAgKiBMYXJnZSBhY2NlbGVyYXRp b25zIHdpdGhvdXQgYSBjaGFuZ2UgaW4gcGhvbmUgb3JpZW50YXRpb24gbXVzdCBub3QKICAgICAq IHRyaWdnZXIgYSB0aWx0IGV2ZW50LgogICAgICogRm9yIGV4YW1wbGUsIGEgc2hhcnAgdHVybiBv ciBzdHJvbmcgYWNjZWxlcmF0aW9uIHdoaWxlIGRyaXZpbmcgYSBjYXIKICAgICAqIG11c3Qgbm90 IHRyaWdnZXIgYSB0aWx0IGV2ZW50LCBldmVuIHRob3VnaCB0aGUgYW5nbGUgb2YgdGhlIGF2ZXJh Z2UKICAgICAqIGFjY2VsZXJhdGlvbiBtaWdodCB2YXJ5IGJ5IG1vcmUgdGhhbiAzNSBkZWdyZWVz LgogICAgICoKICAgICAqIFR5cGljYWxseSwgdGhpcyBzZW5zb3IgaXMgaW1wbGVtZW50ZWQgd2l0 aCB0aGUgaGVscCBvZiBvbmx5IGFuCiAgICAgKiBhY2NlbGVyb21ldGVyLiBPdGhlciBzZW5zb3Jz IGNhbiBiZSB1c2VkIGFzIHdlbGwgaWYgdGhleSBkbyBub3QgaW5jcmVhc2UKICAgICAqIHRoZSBw b3dlciBjb25zdW1wdGlvbiBzaWduaWZpY2FudGx5LiBUaGlzIGlzIGEgbG93IHBvd2VyIHNlbnNv ciB0aGF0CiAgICAgKiBtdXN0IGFsbG93IHRoZSBBUCB0byBnbyBpbnRvIHN1c3BlbmQgbW9kZS4g RG8gbm90IGVtdWxhdGUgdGhpcyBzZW5zb3IKICAgICAqIGluIHRoZSBIQUwuCiAgICAgKiBMaWtl IG90aGVyIHdha2UgdXAgc2Vuc29ycywgdGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBhIGhvbGQg YSB3YWtlX2xvY2sKICAgICAqIHdpdGggYSB0aW1lb3V0IG9mIDIwMCBtcyB3aGlsZSByZXBvcnRp bmcgdGhpcyBldmVudC4gVGhlIG9ubHkgYWxsb3dlZAogICAgICogcmV0dXJuIHZhbHVlIGlzIDEu MC4KICAgICAqCiAgICAgKiBJbXBsZW1lbnQgb25seSB0aGUgd2FrZS11cCB2ZXJzaW9uIG9mIHRo aXMgc2Vuc29yLgogICAgICovCgoKSG9wZSBpdCBoZWxwcyB0byBiZXR0ZXIgdW5kZXJzdGFuZC4K ClRoYW5rcywKSkIKCgpGcm9tOiBKb25hdGhhbiBDYW1lcm9uIDxqaWMyM0BrZXJuZWwub3JnPgpT ZW50OiBXZWRuZXNkYXksIERlY2VtYmVyIDIwLCAyMDIzIDEzOjI3ClRvOiBIaXRlbiBDaGF1aGFu IDxoaXRlbi5jaGF1aGFuQHNpbGljb25zaWduYWxzLmlvPgpDYzogSmVhbi1CYXB0aXN0ZSBNYW5l eXJvbCA8SmVhbi1CYXB0aXN0ZS5NYW5leXJvbEB0ZGsuY29tPjsgbGFyc0BtZXRhZm9vLmRlIDxs YXJzQG1ldGFmb28uZGU+OyBsaW51eC1paW9Admdlci5rZXJuZWwub3JnIDxsaW51eC1paW9Admdl ci5rZXJuZWwub3JnPjsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyA8bGludXgta2VybmVs QHZnZXIua2VybmVsLm9yZz4KU3ViamVjdDogUmU6IFtQQVRDSCB2M10gQWRkZWQgdGlsdCBpbnRl cnJ1cHQgc3VwcG9ydCBpbiBpbnZfaWNtNDI2MDAgCsKgCk9uIE1vbiwgMTggRGVjIDIwMjMgMDY6 4oCKMzY64oCKMjggKzAwMDAgSGl0ZW4gQ2hhdWhhbiA8aGl0ZW4u4oCKY2hhdWhhbkDigIpzaWxp Y29uc2lnbmFscy7igIppbz4gd3JvdGU6ID4gSGkgSm9uYXRoYW4sID4gPiAxLiBBcyBwZXIgdGhl IGRhdGFzaGVldCBmb3IgdGlsdCBpbnRlcnJ1cHQsIHRoZXJlIGlzIG5vIGRpcmVjdGlvbiwgYW5n bGUsIG9yIGF4aXMuIFRpbHQgb25seSBnZXRzIHJlcG9ydGVkIGJleW9uZCAzNSogClpqUWNtUVJZ RnBmcHRCYW5uZXJTdGFydApUaGlzIE1lc3NhZ2UgSXMgRnJvbSBhbiBFeHRlcm5hbCBTZW5kZXIg ClRoaXMgbWVzc2FnZSBjYW1lIGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXphdGlvbi4gCsKgClpq UWNtUVJZRnBmcHRCYW5uZXJFbmQKT24gTW9uLCAxOCBEZWMgMjAyMyAwNjozNjoyOCArMDAwMApI aXRlbiBDaGF1aGFuIDxoaXRlbi5jaGF1aGFuQHNpbGljb25zaWduYWxzLmlvPiB3cm90ZToKCj4g SGkgSm9uYXRoYW4sCj4gCj4gICAxLiAgIEFzIHBlciB0aGUgZGF0YXNoZWV0IGZvciB0aWx0IGlu dGVycnVwdCwgdGhlcmUgaXMgbm8gZGlyZWN0aW9uLCBhbmdsZSwgb3IgYXhpcy4gVGlsdCBvbmx5 IGdldHMgcmVwb3J0ZWQgYmV5b25kIDM1KiBhbmdsZS4KClRoaXMgY2FuIHN0aWxsIGJlIGV4cG9z ZWQgYnkgcHJvdmlkaW5nIHRoZSB0aHJlc2hvbGQgcGFyYW1ldGVyIGJ1dCBtYWtpbmcgaXQKcmVh ZCBvbmx5LiBUaGlzIHNlZW1zIHRvIGJlIGF4aXMgZnJlZSB0aWx0IHdoaWNoIGlzIHVudXN1YWwg YW5kIGEgYml0IHRyaWNreQp0byBkZWZpbmUgYXMgd2Ugbm9ybWFsbHkgZGVmaW5lIHJvdGF0aW9u cyBhcm91bmQgYSBwYXJ0aWN1bGFyIGF4aXMuClNvIHdoYXRldmVyIHdlIGRvIGlzIGdvaW5nIHRv IGJlIHNvbWV0aGluZyB0aGF0IHVzZXJzcGFjZSB3b24ndCByZWFsbHkga25vdwpob3cgdG8gZGVh bCB3aXRoLiBPbmUgb3B0aW9uIGlzIHRvIGRvIHdoYXQgd2UgYWxsb3cgZm9yIHNpbmdsZSBheGlz CnJvdGF0aW9uIHNlbnNvcnMgYW5kIGhhdmUgaW5fcm90IGNoYW5uZWwgKG5vIG1vZGlmaWVyKSB0 aGVuIGRlZmluZXMgZXZlbnRzCmZvciB0aGF0LgoKR2l2ZW4gaG93IHBvb3JseSBkZWZpbmVkIHRo aXMgaXMgb24gdGhlIGRhdGFzaGVldCBJIHRoaW5rIHRoYXQncyB0aGUgYmVzdCB3ZSBjYW4gZG8u CgpUaWx0IGhhcyB0byBiZSByZWxhdGl2ZSB0byBzb21ldGhpbmcsIGJ1dCB0aGVyZSBpcyBubyBp bmZvcm1hdGlvbiBhcyB0byB3aGF0LiBJcyBpdApyZWxhdGl2ZSB0byBvcmllbnRhdGlvbiB3aGVu IHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQ/ICBJcyBpdCByZWxhdGl2ZSB0byBzb21lCnJlZmVyZW5j ZSBwbGFuZT8gIEkgY2FuJ3QgZmluZCBhbnkgaW5kaWNhdGlvbiBvZiB3aGljaC4KCkpvbmF0aGFu CgoKCgo+ICAgMi4gIEZvciB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHdoYXQgSSBjYW4gc3Vn Z2VzdCBpcywgdGhhdCB3aGVuIHRpbHQgZ2V0cyBkZXRlY3RlZCB3ZSBjYW4gc2hhcmUgYWNjZWxl cm9tZXRlciB4LHkseiBhcyBwZXIgdGhlb3J5KFBsZWFzZSBjb3JyZWN0IG1lIGhlcmUgaWYgSSBh bSB3cm9uZykKCgo+ICAgMy4gIEluIHN1Y2ggYSBjYXNlLCB3aGF0IGlzIHRoZSByZWNvbW1lbmRl ZCBkZXNpZ24/Cj4gCj4gVGhhbmtzICZSZWdhcmRzLAo+IEhpdGVuIENoYXVoYW4KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IEZyb206IEpvbmF0aGFuIENhbWVyb24gPGppYzIz QGtlcm5lbC5vcmc+Cj4gU2VudDogU3VuZGF5LCBEZWNlbWJlciAxMCwgMjAyMyA0OjUwIFBNCj4g VG86IEplYW4tQmFwdGlzdGUgTWFuZXlyb2wgPEplYW4tQmFwdGlzdGUuTWFuZXlyb2xAdGRrLmNv bT4KPiBDYzogSGl0ZW4gQ2hhdWhhbiA8aGl0ZW4uY2hhdWhhbkBzaWxpY29uc2lnbmFscy5pbz47 IGxhcnNAbWV0YWZvby5kZSA8bGFyc0BtZXRhZm9vLmRlPjsgbGludXgtaWlvQHZnZXIua2VybmVs Lm9yZyA8bGludXgtaWlvQHZnZXIua2VybmVsLm9yZz47IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5l bC5vcmcgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+Cj4gU3ViamVjdDogUmU6IFtQQVRD SCB2M10gQWRkZWQgdGlsdCBpbnRlcnJ1cHQgc3VwcG9ydCBpbiBpbnZfaWNtNDI2MDAKPiAKPiBP biBGcmksIDggRGVjIDIwMjMgMTU6Mzc6MzIgKzAwMDAKPiBKZWFuLUJhcHRpc3RlIE1hbmV5cm9s IDxKZWFuLUJhcHRpc3RlLk1hbmV5cm9sQHRkay5jb20+IHdyb3RlOgo+IAo+ID4gSGkgSGl0ZW4s Cj4gPgo+ID4geW91IGNhbiBkZWZpbmUgcHJvcGVydHkgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4g Y2hhbm5lbHMgYnkgZGVmaW5pbmcgdGhlbSBpbnNpZGUgaW5mb19tYXNrX3NoYXJlZF9ieV90eXBl IG9yIGluZm9fbWFza19zaGFyZWRfYnlfYWxsIGZpbGVkLiBBcyBkb25lIGZvciBzY2FsZSBvciBm b3Igc2FtcGxpbmdfZnJlcXVlbmN5Lgo+ID4KPiA+IFRoYW5rcywKPiA+IEpCCj4gPgo+ID4KPiA+ IEZyb206IEhpdGVuIENoYXVoYW4gPGhpdGVuLmNoYXVoYW5Ac2lsaWNvbnNpZ25hbHMuaW8+Cj4g PiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDgsIDIwMjMgMTU6MTQKPiA+IFRvOiBKZWFuLUJhcHRp c3RlIE1hbmV5cm9sIDxKZWFuLUJhcHRpc3RlLk1hbmV5cm9sQHRkay5jb20+OyBqaWMyM0BrZXJu ZWwub3JnIDxqaWMyM0BrZXJuZWwub3JnPjsgbGFyc0BtZXRhZm9vLmRlIDxsYXJzQG1ldGFmb28u ZGU+OyBsaW51eC1paW9Admdlci5rZXJuZWwub3JnIDxsaW51eC1paW9Admdlci5rZXJuZWwub3Jn PjsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyA8bGludXgta2VybmVsQHZnZXIua2VybmVs Lm9yZz4KPiA+IENjOiBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KPiA+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0ggdjNdIEFkZGVkIHRpbHQgaW50ZXJydXB0IHN1cHBvcnQgaW4gaW52X2lj bTQyNjAwCj4gPgo+ID4gSGkgSmVhbiwKPiA+Cj4gPiBBcyBwZXIgeW91ciBzdWdnZXN0aW9ucyAo dGhhbmtzIGZvciB0aGlzKSwgSSBoYXZlIGxvb2tlZCBpbnRvIGNyZWF0aW5nIGNoYW5uZWxzIGlu c3RlYWQgb2YgY3VzdG9tIHN5c2ZzIGVudHJpZXMuCj4gPgo+ID4gSSBoYXZlIGxvb2tlZCBpbnRv IGFuIGV4YW1wbGUgb2YgIm1tYTk1NTEuYyIuCj4gPgo+ID4gTm93LCBieSBjb21wYXJpbmcgdGhl IGRhdGFzaGVldCBvZiBtbWE5NTUxIGFuZCBpbnZfaWNtNDI2MDAsIGluIG1tYTk1NTEgdGhleSBw cm92aWRlIFgsIFksIGFuZCBaIHRpbHQgaW50ZXJydXB0IHJlZ2lzdGVycy4KPiA+IEJ1dCBpbiB0 aGUgY2FzZSBvZiBpbnZfaWNtNDI2MDAsIHRoZXJlIGlzIG9ubHkgb25lIHJlZ2lzdGVyIHRvIHJl Y2VpdmUgaW50ZXJydXB0IGZvciB0aWx0LiAgCj4gCj4gSnVzdCB0byBjaGVjay4gIENhbiB5b3Ug dGVsbCB3aGljaCBheGlzIHRoZSB0aWx0IGV2ZW50IHdhcyBvbiwgb3IgaXMgaXQgc2ltcGx5ICd0 aWx0ZWQgc29tZWhvdz8nIEZyb20gYSBsb29rCj4gYXQgdGhlIGRhdGFzaGVldCBpdHMgJ3RpbHRl ZCBieSAzNSBkZWdyZWVzIGluIHNvbWUgZGlyZWN0aW9uJwo+IFRoZXJlIGFyZSBhIGNvdXBsZSBv ZiB3YXlzIHdlIGNhbiByZXBvcnQgdGhpcyBjYXNlIGlmIHRoYXQncyB3aGF0IHlvdSBoYXZlLiAg VGhlcmUgaXMgYSBtb2RpZmllciBmb3IKPiBYX09SX1lfT1JfWiBhbmQgd2UgaGF2ZSBzZXZlcmFs IHVzZXJzIGFscmVhZHkuICBXaXRoIGhpbmRzaWdodCB0aGF0J3MgYSBiYWQgZGVzaWduIG9wdGlv biBhbmQgd2Ugc2hvdWxkIGhhdmUKPiBqdXN0IHJlcG9ydGVkIGl0IG9uIGVhY2ggYXhpcyBidXQg dGhlcmUgaXMgcHJlY2VkZW5jZSBmb3IgZG9pbmcgaXQgd2l0aCB0aGlzIG1vZGlmaWVyIHNvIHdl IGFyZSBzdHVjayB3aXRoIHRoYXQuCj4gTWF5YmUgd2Ugc2hvdWxkIGNvbnNpZGVyIGFkZGluZyBh biBleHBsaWNpdCBYX09SX1lfT1JfWiBDaGFubmVsIHRoYXQganVzdCBoYXMgZXZlbnRzLiBUaGUg cmlzayBpcyB0aGF0Cj4gZXhpc3RpbmcgdXNlcnNwYWNlIHNvZnR3YXJlIHdvbid0IGV4cGVjdCB0 aGF0IHNvIG1pZ2h0IG5vdCBrbm93IHdoYXQgdG8gZG8uCj4gCj4gRm9yIGV2ZW50IGNvbnRyb2xz LCBpdCdzIGZpbmUgaWYgb25lIGNvbnRyb2wgYWZmZWN0cyBtdWx0aXBsZSBldmVudHMuICBTbyBl bmFibGluZyB0aWx0X3ggbWF5IHdlbGwgZW5hYmxlIHRpbHRfeQo+IGFuZCB0aWx0X3ogYXMgd2Vs bC4gIFVzZXIgc3BhY2UgaXMgbWVhbnQgdG8gY29wZSB3aXRoIGdldHRpbmcgZXZlbnRzIGl0IGRp ZG4ndCBleHBsaWNpdGx5IHJlcXVlc3QuCj4gCj4gSm9uYXRoYW4KPiAKPiA+Cj4gPiBJdCBhcHBl YXJzIGhhcmR3YXJlIGxpbWl0YXRpb24gaW4gb3VyIGNhc2UsIHNvIGNhbiB5b3UgcGxlYXNlIHN1 Z2dlc3QgaGVyZSBob3cgd2UgY2FuIG92ZXJjb21lIHRoaXM/Cj4gPgo+ID4gQXBwcmVjaWF0ZSB5 b3VyIGZlZWRiYWNrLgo+ID4KPiA+IC0tCj4gPiBUaGFua3MgYW5kIFJlZ2FyZHMsCj4gPiBIaXRl biBDaGF1aGFuCj4gPgo+ID4KPiA+Cj4gPiBGcm9tOiBKZWFuLUJhcHRpc3RlIE1hbmV5cm9sIDxK ZWFuLUJhcHRpc3RlLk1hbmV5cm9sQHRkay5jb20+Cj4gPiBTZW50OiBNb25kYXksIE5vdmVtYmVy IDI3LCAyMDIzIDQ6MDggUE0KPiA+IFRvOiBIaXRlbiBDaGF1aGFuIDxoaXRlbi5jaGF1aGFuQHNp bGljb25zaWduYWxzLmlvPjsgamljMjNAa2VybmVsLm9yZyA8amljMjNAa2VybmVsLm9yZz47IGxh cnNAbWV0YWZvby5kZSA8bGFyc0BtZXRhZm9vLmRlPjsgbGludXgtaWlvQHZnZXIua2VybmVsLm9y ZyA8bGludXgtaWlvQHZnZXIua2VybmVsLm9yZz47IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v cmcgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+Cj4gPiBDYzoga2VybmVsIHRlc3Qgcm9i b3QgPGxrcEBpbnRlbC5jb20+Cj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzXSBBZGRlZCB0aWx0 IGludGVycnVwdCBzdXBwb3J0IGluIGludl9pY200MjYwMAo+ID4KPiA+IEhlbGxvIEhpdGVuLAo+ ID4KPiA+IHRoaXMgaXMgbW9yZSBjb21wbGV4IHRoYW4gdGhhdC4KPiA+Cj4gPiBGaXJzdCwgeW91 IG5lZWQgdG8gdXNlIHBtX3J1bnRpbWUgZnVuY3Rpb25zIHRvIGhhbmRsZSBjaGlwIG9uL29mZiBz dGF0ZSAoeW91IGNhbiBoYXZlIGEgbG9vayBpbnNpZGUgaW52X2ljbTQyNjAwX2FjY2VsLmMgZm9y IGRpcmVjdCByZWcgYWNjZXNzIGhvdyBpdCBpcyBkb25lKS4KPiA+Cj4gPiBZb3UgY2Fubm90IGRp cmVjdGx5IHdyaXRlIGluc2lkZSBQV1JfTUdNVDAgcmVnaXN0ZXIsIG90aGVyd2lzZSB5b3UgYXJl IG92ZXJ3cml0aW5nIHNlbnNvciBzdGF0ZXMuIEZvciBleGFtcGxlIHdpdGggeW91ciBjb2RlLCBp ZiB0aGUgY2hpcCBidWZmZXIgaXMgcnVubmluZyB3aXRoIGFjY2VsIGFuZCBneXJvIG9uLCB3aGVu IHR1cm5pbmcgdGhlIHRpbHQgb24gaXQgd2lsbCBwb3dlciBvZmYgZ3lybyBhbmQgbW92ZSBhY2Nl bCBpbiBsb3ctcG93ZXIgbW9kZS4gV2UgcmVhbGx5IGRvbid0IHdhbnQgdGhhdC4KPiA+Cj4gPiBX ZSBuZWVkIHRvIHRyYWNrIHRoZSBleGlzdGluZyBwb3dlciBzdGF0ZXMsIGFuZCBvbmx5IGRvIHRo ZSByZXF1aXJlZCBjaGFuZ2VzLiBGb3IgdGhhdCwgeW91IGNhbiB1c2UgaW52X2ljbTQyNjAwX3Nl dF9hY2NlbF9jb25mKCkgZm9yIHR1cm5pbmcgYWNjZWwgb24uIEJ1dCB5b3Ugd2lsbCBoYXZlIHRv IGFkZCBzdXBwb3J0IGFuZCBoYW5kbGUgY29ycmVjdGx5IHRoZSBJTlZfSUNNNDI2MDBfU0VOU09S X01PREVfTE9XX1BPV0VSIHNlbnNvciBtb2RlIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWx0ZXJpbmcg KElOVl9JQ000MjYwMF9GSUxURVJfQVZHXzFYIGNhbiBiZSBzdWZmaWNpZW50IGZvciB0aWx0KS4K PiA+Cj4gPiBUaGlzIGlzIHRoZSBtdWx0aXBsZXhpbmcgSSB3YXMgc3BlYWtpbmcgb2ZmLiBUaGF0 J3MgbW9yZSBjb21wbGV4IHRoYW4gaXQgZmlyc3Qgc2VlbXMuIElmIHBvd2VyIGlzIG5vdCB2ZXJ5 IGltcG9ydGFudCBmb3IgeW91LCB5b3UgY2FuIHNpbXBsaWZ5IHRoaW5ncyBieSBqdXN0IHNldHRp bmcgdGhlIGFjY2VsIHRvIGxvdy1ub2lzZSBtb2RlIHdoZW4gdHVybmluZyBpdCBvbiB3aXRoIGlu dl9pY200MjYwMF9zZXRfYWNjZWxfY29uZigpLgo+ID4KPiA+IEZvciB0ZXN0aW5nIHlvdXIgdGls dCBpbXBsZW1lbnRhdGlvbiwgeW91IG5lZWQgdG8gdHVybiBpdCBvbi9vZmYgd2hpbGUgZGF0YSBi dWZmZXIgaXMgb2ZmIGFuZCB3aGlsZSBkYXRhIGJ1ZmZlciBpcyBvbiwgYW5kIGNoZWNrIHRoYXQg aXQgZG9lc24ndCBpbXBhY3QgdGhlIGRhdGEgZmxvdyAoYWNjZWwgYW5kIGd5cm8gaGF2ZSB0byBz dGF5IHR1cm5lZCBvbiBpbiBsb3ctbm9pc2UgbW9kZSkuCj4gPgo+ID4gVGhhbmtzLgo+ID4KPiA+ IEJlc3QgcmVnYXJkcywKPiA+IEpCCj4gPgo+ID4gRnJvbTogSGl0ZW4gQ2hhdWhhbiA8aGl0ZW4u Y2hhdWhhbkBzaWxpY29uc2lnbmFscy5pbz4KPiA+IFNlbnQ6IFNhdHVyZGF5LCBOb3ZlbWJlciAy NSwgMjAyMyAwODowNQo+ID4gVG86IEplYW4tQmFwdGlzdGUgTWFuZXlyb2wgPEplYW4tQmFwdGlz dGUuTWFuZXlyb2xAdGRrLmNvbT47IGppYzIzQGtlcm5lbC5vcmcgPGppYzIzQGtlcm5lbC5vcmc+ OyBsYXJzQG1ldGFmb28uZGUgPGxhcnNAbWV0YWZvby5kZT47IGxpbnV4LWlpb0B2Z2VyLmtlcm5l bC5vcmcgPGxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmc+OyBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnIDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgo+ID4gQ2M6IGtlcm5lbCB0ZXN0 IHJvYm90IDxsa3BAaW50ZWwuY29tPgo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2M10gQWRkZWQg dGlsdCBpbnRlcnJ1cHQgc3VwcG9ydCBpbiBpbnZfaWNtNDI2MDAKPiA+Cj4gPiBIZWxsbyBKZWFu LCBUaGFua3MgZm9yIHlvdXIgc3VwcG9ydCwgRm9yIHRoZSBmaXJzdCBpc3N1ZSBjYW4gSSB1c2Ug InN0cnVjdCBpaW9fZXZlbnRfc3BlYyIgZm9yIHRpbHQgaW50ZXJydXB0IGluc3RlYWQgb2YgYSBj dXN0b20gc3lzZnMgZmlsZT8gSW4gdGhlIHNlY29uZCBpc3N1ZSBJIGhhdmUganVzdCBkaXNhYmxl ZCB0aWx0IHJlbGF0ZWQgcmVnaXN0ZXIgc28gd2hlbiBJIHR1cm4gdGlsdCBvZmYgb3RoZXIKPiA+ IFpqUWNtUVJZRnBmcHRCYW5uZXJTdGFydAo+ID4gVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0 ZXJuYWwgU2VuZGVyCj4gPiBUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBvcmdh bml6YXRpb24uCj4gPgo+ID4gWmpRY21RUllGcGZwdEJhbm5lckVuZAo+ID4gSGVsbG8gSmVhbiwK PiA+Cj4gPiBUaGFua3MgZm9yIHlvdXIgc3VwcG9ydCwKPiA+Cj4gPiBGb3IgdGhlIGZpcnN0IGlz c3VlIGNhbiBJIHVzZSAic3RydWN0IGlpb19ldmVudF9zcGVjIiBmb3IgdGlsdCBpbnRlcnJ1cHQg aW5zdGVhZCBvZiBhIGN1c3RvbSBzeXNmcyBmaWxlPwo+ID4KPiA+IEluIHRoZSBzZWNvbmQgaXNz dWUgSSBoYXZlIGp1c3QgZGlzYWJsZWQgdGlsdCByZWxhdGVkIHJlZ2lzdGVyIHNvIHdoZW4gSSB0 dXJuIHRpbHQgb2ZmIG90aGVyIGZ1bmN0aW9uYWxpdHkgb24gdGhlIGFjY2VsZXJvbWV0ZXIgd2ls bCB3b3JrIGZpbmUuIGNhbiB5b3UgcGxlYXNlIGNyb3NzLWNoZWNrPwo+ID4KPiA+IFRoYW5rcyAm IFJlZ2FyZHMsCj4gPiBIaXRlbiBDaGF1aGFuCj4gPgo+ID4gRnJvbTogSmVhbi1CYXB0aXN0ZSBN YW5leXJvbCA8SmVhbi1CYXB0aXN0ZS5NYW5leXJvbEB0ZGsuY29tPgo+ID4gU2VudDogTW9uZGF5 LCBOb3ZlbWJlciAyMCwgMjAyMyA3OjQ4IFBNCj4gPiBUbzogSGl0ZW4gQ2hhdWhhbiA8aGl0ZW4u Y2hhdWhhbkBzaWxpY29uc2lnbmFscy5pbz47IGppYzIzQGtlcm5lbC5vcmcgPGppYzIzQGtlcm5l bC5vcmc+OyBsYXJzQG1ldGFmb28uZGUgPGxhcnNAbWV0YWZvby5kZT47IGxpbnV4LWlpb0B2Z2Vy Lmtlcm5lbC5vcmcgPGxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmc+OyBsaW51eC1rZXJuZWxAdmdl ci5rZXJuZWwub3JnIDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgo+ID4gQ2M6IGtlcm5l bCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCB2M10g QWRkZWQgdGlsdCBpbnRlcnJ1cHQgc3VwcG9ydCBpbiBpbnZfaWNtNDI2MDAKPiA+Cj4gPiBIZWxs byBIaXRlbiwKPiA+Cj4gPiB0aGFua3MgZm9yIHlvdXIgcGF0Y2guCj4gPgo+ID4gSSBzZWUgZmly c3QgYSBiaWcgaXNzdWUgYXQgdGhlIHJvb3QuIFRpbHQgZXZlbnQgaXMgc29tZXRoaW5nIHRoYXQg c2hvdWxkIGJlIHJlcG9ydGVkIGFzIGFuIElJTyBldmVudCwgbm90IGluIGEgY3VzdG9tIHN5c2Zz IGZpbGUuIEpvbmF0aGFuIGNhbiBjb25maXJtIHRoaXMsIGJ1dCB0aGlzIGlzIG15IHVuZGVyc3Rh bmRpbmcuCj4gPgo+ID4gU2Vjb25kIGlzc3VlLCB0aGVyZSBpcyBubyBtdWx0aXBsZXhpbmcgYmV0 d2VlbiB0aGUgdGlsdCBhbmQgbm9ybWFsIGRhdGEgc2FtcGxpbmcuIE1lYW5pbmcgdHVybmluZyB0 aWx0IG9mZiB3aWxsIHN0b3AgdGhlIGRhdGEgb3V0cHV0IG9mIHRoZSBjaGlwIGlmIGl0IHdhcyBv bi4gQW5kIHR1cm5pbmcgZGF0YSBvdXRwdXQgb2ZmIHdpbGwgc3RvcCB0aWx0IGZ1bmN0aW9ubmFs aXR5LiBBbGwgdGhlc2UgdGhpbmdzIGhhdmUgdG8gYmUgbXVsdGlwbGV4ZWQgdG9nZXRoZXIgYW5k IGNoaXAgcG93ZXIgb2ZmL29uIG11c3QgYmUgY2VudHJhbGl6ZWQuCj4gPgo+ID4gVGhhbmtzIGZv ciB5b3VyIHdvcmsuCj4gPgo+ID4gQmVzdCByZWdhcmRzLAo+ID4gSkIKPiA+Cj4gPiBGcm9tOiBI aXRlbiBDaGF1aGFuIDxoaXRlbi5jaGF1aGFuQHNpbGljb25zaWduYWxzLmlvPgo+ID4gU2VudDog RnJpZGF5LCBOb3ZlbWJlciAxNywgMjAyMyAxNjoxNAo+ID4gVG86IEplYW4tQmFwdGlzdGUgTWFu ZXlyb2wgPEplYW4tQmFwdGlzdGUuTWFuZXlyb2xAdGRrLmNvbT47IGppYzIzQGtlcm5lbC5vcmcg PGppYzIzQGtlcm5lbC5vcmc+OyBsYXJzQG1ldGFmb28uZGUgPGxhcnNAbWV0YWZvby5kZT47IGxp bnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcgPGxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmc+OyBsaW51 eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgo+ ID4gQ2M6IEhpdGVuIENoYXVoYW4gPGhpdGVuLmNoYXVoYW5Ac2lsaWNvbnNpZ25hbHMuaW8+OyBr ZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KPiA+IFN1YmplY3Q6IFtQQVRDSCB2M10g QWRkZWQgdGlsdCBpbnRlcnJ1cHQgc3VwcG9ydCBpbiBpbnZfaWNtNDI2MDAKPiA+Cj4gPiBEZXNj cmlwdGlvbjogQWRkIG5ldyBkZXZpY2UgYXR0cmlidXRlIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBU aWx0IGludGVycnVwdCBmcm9tIGtlcm5lbCB1c2VyIHNwYWNlIFNpZ25lZC1vZmYtYnk6IEhpdGVu IENoYXVoYW4gPGhpdGVuLuKAimNoYXVoYW5A4oCKc2lsaWNvbnNpZ25hbHMu4oCKaW8+IFJlcG9y dGVkLWJ5OiBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQOKAimludGVsLuKAimNvbT4gQ2xvc2VzOiBb W2h0dHBzOuKAii8vdXJsZGVmZW5zZS7igIpjb20vdjMvX19odHRwczrigIovL2xvcmUu4oCKa2Vy bmVsLuKAim9yZy9vZS1rYnVpbGQtYWxsLzIwMjMxMTE3MDIzNS7igIpIYVZKbm1XYS1sa3BA4oCK aW50ZWwu4oCKY29tL19fOyEhRnRyaHRQc1dEaFo2dHchQWJxcWhfVXd5RXlkWjB4ZUl5N1lRd1BX Yl9rbkNNMmhzSkpXYXZvQXEzaWdlR2NjVjRSWkk4N0NUVl9fbFpnZkJqWnl0TmVzeDVjVWNfUlhz UDZtdTlsbXZVR1pnX3JHV2ckW2xvcmVbLuKAil1rZXJuZWxbLuKAil1vcmddXWh0dHBzOuKAii8v dXJsZGVmZW5zZS7igIpjb20vdjMvX19odHRwczrigIovL2xvcmUu4oCKa2VybmVsLuKAim9yZy9v ZS1rYnVpbGQtYWxsLzIwMjMxMTE3MDIzNS7igIpIYVZKbm1XYS1sa3BA4oCKaW50ZWwu4oCKY29t L19fOyEhRnRyaHRQc1dEaFo2dHchQWJxcWhfVXd5RXlkWjB4ZUl5N1lRd1BXYl9rbkNNMmhzSkpX YXZvQXEzaWdlR2NjVjRSWkk4N0NUVl9fbFpnZkJqWnl0TmVzeDVjVWNfUlhzUDZtdTlsbXZVR1pn X3JHV2ckW2xvcmVbLuKAil1rZXJuZWxbLuKAil1vcmddaHR0cHM64oCKLy91cmxkZWZlbnNlLuKA imNvbS92My9fX2h0dHBzOuKAii8vbG9yZS7igIprZXJuZWwu4oCKb3JnL29lLWtidWlsZC1hbGwv MjAyMzExMTcwMjM1LuKAikhhVkpubVdhLWxrcEDigIppbnRlbC7igIpjb20vX187ISFGdHJodFBz V0RoWjZ0dyFBYnFxaF9Vd3lFeWRaMHhlSXk3WVF3UFdiX2tuQ00yaHNKSldhdm9BcTNpZ2VHY2NW NFJaSTg3Q1RWX19sWmdmQmpaeXROZXN4NWNVY19SWHNQNm11OWxtdlVHWmdfckdXZyRbbG9yZVsu 4oCKXWtlcm5lbFsu4oCKXW9yZ11daHR0cHM64oCKLy91cmxkZWZlbnNlLuKAimNvbS92My9fX2h0 dHBzOuKAii8vbG9yZS7igIprZXJuZWwu4oCKb3JnL29lLWtidWlsZC1hbGwvMjAyMzExMTcwMjM1 LuKAikhhVkpubVdhLWxrcEDigIppbnRlbC7igIpjb20vX187ISFGdHJodFBzV0RoWjZ0dyFBYnFx aF9Vd3lFeWRaMHhlSXk3WVF3UFdiX2tuQ00yaHNKSldhdm9BcTNpZ2VHY2NWNFJaSTg3Q1RWX19s WmdmQmpaeXROZXN4NWNVY19SWHNQNm11OWxtdlVHWmdfckdXZyRbbG9yZVsu4oCKXWtlcm5lbFsu 4oCKXW9yZ10KPiA+IFpqUWNtUVJZRnBmcHRCYW5uZXJTdGFydAo+ID4gVGhpcyBNZXNzYWdlIElz IEZyb20gYW4gVW50cnVzdGVkIFNlbmRlcgo+ID4gWW91IGhhdmUgbm90IHByZXZpb3VzbHkgY29y cmVzcG9uZGVkIHdpdGggdGhpcyBzZW5kZXIuCj4gPgo+ID4gWmpRY21RUllGcGZwdEJhbm5lckVu ZAo+ID4gRGVzY3JpcHRpb246Cj4gPiBBZGQgbmV3IGRldmljZSBhdHRyaWJ1dGUgdG8gZW5hYmxl IGFuZCBkaXNhYmxlCj4gPiBUaWx0IGludGVycnVwdCBmcm9tIGtlcm5lbCB1c2VyIHNwYWNlCj4g Pgo+ID4gU2lnbmVkLW9mZi1ieTogSGl0ZW4gQ2hhdWhhbiA8aGl0ZW4uY2hhdWhhbkBzaWxpY29u c2lnbmFscy5pbz4KPiA+Cj4gPiBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgPGxrcEBp bnRlbC5jb20+Cj4gPiBDbG9zZXM6IGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczov L2xvcmUua2VybmVsLm9yZy9vZS1rYnVpbGQtYWxsLzIwMjMxMTE3MDIzNS5IYVZKbm1XYS1sa3BA aW50ZWwuY29tL19fOyEhRnRyaHRQc1dEaFo2dHchQWJxcWhfVXd5RXlkWjB4ZUl5N1lRd1BXYl9r bkNNMmhzSkpXYXZvQXEzaWdlR2NjVjRSWkk4N0NUVl9fbFpnZkJqWnl0TmVzeDVjVWNfUlhzUDZt dTlsbXZVR1pnX3JHV2ckW2xvcmVbLl1rZXJuZWxbLl1vcmddCj4+IC0tLQo+ID4gIGRyaXZlcnMv aWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwLmggICB8ICAyNCArKysrCj4gPiAgLi4u L2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jIHwgMTI5ICsrKysrKysr KysrKysrKysrKwo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKykKPiA+Cj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDAu aCBiL2RyaXZlcnMvaWlvL2ltdS9pbnZfaWNtNDI2MDAvaW52X2ljbTQyNjAwLmgKPiA+IGluZGV4 IDBlMjkwYzgwN2IwZi4uMzllZDM5ZTc3ZGViIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9paW8v aW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDAuaAo+ID4gKysrIGIvZHJpdmVycy9paW8vaW11 L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDAuaAo+ID4gQEAgLTE4Nyw2ICsxODcsOCBAQCBzdHJ1 Y3QgaW52X2ljbTQyNjAwX3N0YXRlIHsKPiA+ICAjZGVmaW5lIElOVl9JQ000MjYwMF9GSUZPX0NP TkZJR19TVE9QX09OX0ZVTEwgICAgICAgICAgIFwKPiA+ICAgICAgICAgICAgICAgICAgRklFTERf UFJFUChJTlZfSUNNNDI2MDBfRklGT19DT05GSUdfTUFTSywgMikKPiA+Cj4gPiArI2RlZmluZSBJ TlZfSUNNNDI2MDBfUkVHX01BU0sgICAgICAgIEdFTk1BU0soNywgMCkKPiA+ICsKPiA+ICAvKiBh bGwgc2Vuc29yIGRhdGEgYXJlIDE2IGJpdHMgKDIgcmVnaXN0ZXJzIHdpZGUpIGluIGJpZy1lbmRp YW4gKi8KPiA+ICAjZGVmaW5lIElOVl9JQ000MjYwMF9SRUdfVEVNUF9EQVRBICAgICAgICAgICAg ICAgICAgICAgIDB4MDAxRAo+ID4gICNkZWZpbmUgSU5WX0lDTTQyNjAwX1JFR19BQ0NFTF9EQVRB X1ggICAgICAgICAgICAgICAgICAgMHgwMDFGCj4gPiBAQCAtMjM5LDYgKzI0MSw3IEBAIHN0cnVj dCBpbnZfaWNtNDI2MDBfc3RhdGUgewo+ID4gICNkZWZpbmUgSU5WX0lDTTQyNjAwX1JFR19QV1Jf TUdNVDAgICAgICAgICAgICAgICAgICAgICAgMHgwMDRFCj4gPiAgI2RlZmluZSBJTlZfSUNNNDI2 MDBfUFdSX01HTVQwX1RFTVBfRElTICAgICAgICAgICAgICAgICBCSVQoNSkKPiA+ICAjZGVmaW5l IElOVl9JQ000MjYwMF9QV1JfTUdNVDBfSURMRSAgICAgICAgICAgICAgICAgICAgIEJJVCg0KQo+ ID4gKyNkZWZpbmUgSU5WX0lDTTQyNjAwX1BXUl9BQ0NFTF9NT0RFICAgICAgICAgICAgICAgICAg ICBCSVQoMSkKPiA+ICAjZGVmaW5lIElOVl9JQ000MjYwMF9QV1JfTUdNVDBfR1lSTyhfbW9kZSkg ICAgICAgICAgICAgIFwKPiA+ICAgICAgICAgICAgICAgICAgRklFTERfUFJFUChHRU5NQVNLKDMs IDIpLCAoX21vZGUpKQo+ID4gICNkZWZpbmUgSU5WX0lDTTQyNjAwX1BXUl9NR01UMF9BQ0NFTChf bW9kZSkgICAgICAgICAgICAgXAo+ID4gQEAgLTMwNiw2ICszMDksMjEgQEAgc3RydWN0IGludl9p Y200MjYwMF9zdGF0ZSB7Cj4gPiAgI2RlZmluZSBJTlZfSUNNNDI2MDBfV0hPQU1JX0lDTTQyNjIy ICAgICAgICAgICAgICAgICAgICAweDQ2Cj4gPiAgI2RlZmluZSBJTlZfSUNNNDI2MDBfV0hPQU1J X0lDTTQyNjMxICAgICAgICAgICAgICAgICAgICAweDVDCj4gPgo+ID4gKy8qIFJlZ2lzdGVyIGNv bmZpZ3MgZm9yIHRpbHQgaW50ZXJydXB0ICovCj4gPiArI2RlZmluZSBJTlZfSUNNNDI2MDVfUkVH X0FQRVhfQ09ORklHNCAgICAgICAgICAgICAgICAgIDB4NDA0Mwo+ID4gKyNkZWZpbmUgSU5WX0lD TTQyNjA1X0FQRVhfQ09ORklHNF9NQVNLICAgICAgICAgICAgICAgICBHRU5NQVNLKDcsIDApCj4g PiArCj4gPiArI2RlZmluZSBJTlZfSUNNNDI2MDVfUkVHX0FQRVhfQ09ORklHMCAgICAgICAgICAg ICAgICAgIDB4MDA1Ngo+ID4gKyNkZWZpbmUgSU5WX0lDTTQyNjA1X0FQRVhfQ09ORklHMF9USUxU X0VOQUJMRSAgICAgICAgICBCSVQoNCkKPiA+ICsjZGVmaW5lIElOVl9JQ000MjYwNV9BUEVYX0NP TkZJRzAgICAgICAgICAgICAgICAgICAgICAgQklUKDEpCj4gPiArCj4gPiArI2RlZmluZSBJTlZf SUNNNDI2MDVfUkVHX0lOVEZfQ09ORklHMSAgICAgICAgICAgICAgICAgICAweDQwNEQKPiA+ICsj ZGVmaW5lIElOVl9JQ000MjYwNV9JTlRGX0NPTkZJRzFfTUFTSyAgICAgICAgICAgICAgICAgIEdF Tk1BU0soNSwgMCkKPiA+ICsjZGVmaW5lIElOVl9JQ000MjYwNV9JTlRGX0NPTkZJRzFfVElMVF9E RVRfSU5UMV9FTiAgICAgIEJJVCgzKQo+ID4gKwo+ID4gKyNkZWZpbmUgSU5WX0lDTTQyNjA1X1JF R19JTlRfU1RBVFVTMyAgICAgICAgICAgICAgICAgICAweDAwMzgKPiA+ICsKPiA+ICsKPiA+ICAv KiBVc2VyIGJhbmsgMSAoTVNCIDB4MTApICovCj4gPiAgI2RlZmluZSBJTlZfSUNNNDI2MDBfUkVH X1NFTlNPUl9DT05GSUcwICAgICAgICAgICAgICAgICAweDEwMDMKPiA+ICAjZGVmaW5lIElOVl9J Q000MjYwMF9TRU5TT1JfQ09ORklHMF9aR19ESVNBQkxFICAgICAgICAgIEJJVCg1KQo+ID4gQEAg LTM2NCw2ICszODIsOCBAQCB0eXBlZGVmIGludCAoKmludl9pY200MjYwMF9idXNfc2V0dXApKHN0 cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKik7Cj4gPiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWdt YXBfY29uZmlnIGludl9pY200MjYwMF9yZWdtYXBfY29uZmlnOwo+ID4gIGV4dGVybiBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyBpbnZfaWNtNDI2MDBfcG1fb3BzOwo+ID4KPiA+ICtleHRlcm4gdWlu dDhfdCBpbnZfaWNtNDI2MDVfaW50X3JlZzsKPiA+ICsKPiA+ICBjb25zdCBzdHJ1Y3QgaWlvX21v dW50X21hdHJpeCAqCj4gPiAgaW52X2ljbTQyNjAwX2dldF9tb3VudF9tYXRyaXgoY29uc3Qgc3Ry dWN0IGlpb19kZXYgKmluZGlvX2RldiwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyAqY2hhbik7Cj4gPiBAQCAtMzk1LDQgKzQxNSw4 IEBAIHN0cnVjdCBpaW9fZGV2ICppbnZfaWNtNDI2MDBfYWNjZWxfaW5pdChzdHJ1Y3QgaW52X2lj bTQyNjAwX3N0YXRlICpzdCk7Cj4gPgo+ID4gIGludCBpbnZfaWNtNDI2MDBfYWNjZWxfcGFyc2Vf ZmlmbyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KTsKPiA+Cj4gPiAraW50IGludl9pY200MjYw NV9nZW5lcmF0ZV90aWx0X2ludGVycnVwdChzdHJ1Y3QgaW52X2ljbTQyNjAwX3N0YXRlICpzdCk7 Cj4gPiArCj4gPiAraW50IGludl9pY200MjYwNV9kaXNhYmxlX3RpbHRfaW50ZXJydXB0KHN0cnVj dCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0KTsKPiA+ICsKPiA+ICAjZW5kaWYKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jIGIv ZHJpdmVycy9paW8vaW11L2ludl9pY200MjYwMC9pbnZfaWNtNDI2MDBfYWNjZWwuYwo+ID4gaW5k ZXggYjFlNGZkZTI3ZDI1Li4zMTFmNmVhMDllNjQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2lp by9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jCj4gPiArKysgYi9kcml2ZXJz L2lpby9pbXUvaW52X2ljbTQyNjAwL2ludl9pY200MjYwMF9hY2NlbC5jCj4gPiBAQCAtNDcsNiAr NDcsOCBAQAo+ID4gICAgICAgICAgICAgICAgICAuZXh0X2luZm8gPSBfZXh0X2luZm8sICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ICAgICAgICAgIH0KPiA+Cj4gPiArdWlu dDhfdCBpbnZfaWNtNDI2MDVfaW50X3JlZzsKPiA+ICsKPiA+ICBlbnVtIGludl9pY200MjYwMF9h Y2NlbF9zY2FuIHsKPiA+ICAgICAgICAgIElOVl9JQ000MjYwMF9BQ0NFTF9TQ0FOX1gsCj4gPiAg ICAgICAgICBJTlZfSUNNNDI2MDBfQUNDRUxfU0NBTl9ZLAo+ID4gQEAgLTYwLDYgKzYyLDY4IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlY19leHRfaW5mbyBpbnZfaWNtNDI2MDBf YWNjZWxfZXh0X2luZm9zW10gPSB7Cj4gPiAgICAgICAgICB7fSwKPiA+ICB9Owo+ID4KPiA+ICtz dGF0aWMgc3NpemVfdCB0aWx0X2ludGVycnVwdF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IGludl9pY200MjYwMF9z dGF0ZSAqc3QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+ICsgICAgICAgdW5zaWduZWQgaW50 IHZhbDsKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gcmVnbWFw X3JlYWQoc3QtPm1hcCwgaW52X2ljbTQyNjA1X2ludF9yZWcsICZ2YWwpOwo+ID4gKwo+ID4gKyAg ICAgICBpZiAocmV0ICE9IDApCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsK PiA+ICsgICAgICAgc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICJSZWFkIHJlZyAleCB2YWx1ZSAl eFxuIiwgaW52X2ljbTQyNjA1X2ludF9yZWcsIHZhbCk7Cj4gPiArCj4gPiArICAgICAgIHJldHVy biBzdHJsZW4oYnVmKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHNzaXplX3QgdGlsdF9pbnRl cnJ1cHRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gKyAgICAgICAgICAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsCj4gPiArICAgICAgICAg ICAgICAgc2l6ZV90IGNvdW50KQo+ID4gK3sKPiA+ICsgICAgICAgc3RydWN0IGludl9pY200MjYw MF9zdGF0ZSAqc3QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+ICsgICAgICAgaW50IHJldDsK PiA+ICsgICAgICAgaW50IHZhbHVlOwo+ID4gKwo+ID4gKyAgICAgICBpZiAoIXN0KQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKwo+ID4gKyAgICAgICBpZiAoa3N0cnRv aW50KGJ1ZiwgMTAsICZ2YWx1ZSkpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4gPiArCj4gPiArICAgICAgIGludl9pY200MjYwNV9pbnRfcmVnID0gSU5WX0lDTTQyNjA1X1JF R19JTlRfU1RBVFVTMzsKPiA+ICsKPiA+ICsgICAgICAgc3dpdGNoICh2YWx1ZSkgewo+ID4gKyAg ICAgICBjYXNlIDE6Cj4gPiArICAgICAgICAgICAgICAgcmV0ID0gaW52X2ljbTQyNjA1X2dlbmVy YXRlX3RpbHRfaW50ZXJydXB0KHN0KTsKPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0ICE9IDAp Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsKPiA+ICsgICAgICAgICAg ICAgICBicmVhazsKPiA+ICsgICAgICAgY2FzZSAwOgo+ID4gKyAgICAgICAgICAgICAgIHJldCA9 IGludl9pY200MjYwNV9kaXNhYmxlX3RpbHRfaW50ZXJydXB0KHN0KTsKPiA+ICsgICAgICAgICAg ICAgICBpZiAocmV0ICE9IDApCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJ TzsKPiA+ICsgICAgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgZGVmYXVsdDoKPiA+ICsg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAg ICAgICByZXR1cm4gY291bnQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBERVZJQ0VfQVRUUl9S Vyh0aWx0X2ludGVycnVwdCk7Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmlj bTQyNjA1X2F0dHJzW10gPSB7Cj4gPiArICAgICAgICZkZXZfYXR0cl90aWx0X2ludGVycnVwdC5h dHRyLAo+ID4gKyAgICAgICBOVUxMLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaWNtNDI2MDVfYXR0cnNfZ3JvdXAgPSB7Cj4gPiArICAgICAg IC5hdHRycyA9IGljbTQyNjA1X2F0dHJzLAo+ID4gK307Cj4gPiArCj4gPiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGludl9pY200MjYwMF9hY2NlbF9jaGFubmVsc1tdID0gewo+ ID4gICAgICAgICAgSU5WX0lDTTQyNjAwX0FDQ0VMX0NIQU4oSUlPX01PRF9YLCBJTlZfSUNNNDI2 MDBfQUNDRUxfU0NBTl9YLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52 X2ljbTQyNjAwX2FjY2VsX2V4dF9pbmZvcyksCj4gPiBAQCAtNzAyLDYgKzc2Niw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaWlvX2luZm8gaW52X2ljbTQyNjAwX2FjY2VsX2luZm8gPSB7Cj4gPiAg ICAgICAgICAudXBkYXRlX3NjYW5fbW9kZSA9IGludl9pY200MjYwMF9hY2NlbF91cGRhdGVfc2Nh bl9tb2RlLAo+ID4gICAgICAgICAgLmh3Zmlmb19zZXRfd2F0ZXJtYXJrID0gaW52X2ljbTQyNjAw X2FjY2VsX2h3Zmlmb19zZXRfd2F0ZXJtYXJrLAo+ID4gICAgICAgICAgLmh3Zmlmb19mbHVzaF90 b19idWZmZXIgPSBpbnZfaWNtNDI2MDBfYWNjZWxfaHdmaWZvX2ZsdXNoLAo+ID4gKyAgICAgICAu YXR0cnMgPSAmaWNtNDI2MDVfYXR0cnNfZ3JvdXAsCj4gPiAgfTsKPiA+Cj4gPiAgc3RydWN0IGlp b19kZXYgKmludl9pY200MjYwMF9hY2NlbF9pbml0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUg KnN0KQo+ID4gQEAgLTc5MSwzICs4NTYsNjcgQEAgaW50IGludl9pY200MjYwMF9hY2NlbF9wYXJz ZV9maWZvKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpCj4gPgo+ID4gICAgICAgICAgcmV0dXJu IDA7Cj4gPiAgfQo+ID4gKwo+ID4gK2ludCBpbnZfaWNtNDI2MDVfZ2VuZXJhdGVfdGlsdF9pbnRl cnJ1cHQoc3RydWN0IGludl9pY200MjYwMF9zdGF0ZSAqc3QpCj4gPiArewo+ID4gKyAgICAgICBp bnQgcmV0Owo+ID4gKyAgICAgICBpbnQgdmFsOwo+ID4gKyAgICAgICBjaGFyIHNsZWVwID0gMTA7 Cj4gPiArCj4gPiArICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhzdC0+bWFwLCBJTlZf SUNNNDI2MDVfUkVHX0FQRVhfQ09ORklHNCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElOVl9JQ000MjYwNV9BUEVYX0NPTkZJRzRfTUFTSywgMCk7Cj4gPiArICAgICAgIGlm IChyZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsgICAgICAg dmFsID0gSU5WX0lDTTQyNjAwX1BXUl9BQ0NFTF9NT0RFOwo+ID4gKyAgICAgICByZXQgPSByZWdt YXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjAwX1JFR19QV1JfTUdNVDAsIHZhbCk7Cj4gPiAr ICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsKPiA+ ICsgICAgICAgdmFsID0gSU5WX0lDTTQyNjA1X0FQRVhfQ09ORklHMDsKPiA+ICsgICAgICAgcmV0 ID0gcmVnbWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwNV9SRUdfQVBFWF9DT05GSUcwLCB2 YWwpOwo+ID4gKyAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gPiArCj4gPiArICAgICAgIHZhbCA9IElOVl9JQ000MjYwMF9TSUdOQUxfUEFUSF9SRVNFVF9E TVBfTUVNX1JFU0VUOwo+ID4gKyAgICAgICByZXQgPSByZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5W X0lDTTQyNjAwX1JFR19TSUdOQUxfUEFUSF9SRVNFVCwgdmFsKTsKPiA+ICsgICAgICAgaWYgKHJl dCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ID4gKyAgICAgICBtc2xl ZXAoc2xlZXApOwo+ID4gKwo+ID4gKyAgICAgICB2YWwgPSBJTlZfSUNNNDI2MDBfU0lHTkFMX1BB VEhfUkVTRVRfRE1QX0lOSVRfRU47Cj4gPiArICAgICAgIHJldCA9IHJlZ21hcF93cml0ZShzdC0+ bWFwLCBJTlZfSUNNNDI2MDBfUkVHX1NJR05BTF9QQVRIX1JFU0VULCB2YWwpOwo+ID4gKyAgICAg ICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAg ICAgIHZhbCA9IElOVl9JQ000MjYwNV9BUEVYX0NPTkZJRzBfVElMVF9FTkFCTEUgfAo+ID4gKyAg ICAgICAgICAgICBJTlZfSUNNNDI2MDVfQVBFWF9DT05GSUcwOwo+ID4gKyAgICAgICByZXQgPSBy ZWdtYXBfd3JpdGUoc3QtPm1hcCwgSU5WX0lDTTQyNjA1X1JFR19BUEVYX0NPTkZJRzAsIHZhbCk7 Cj4gPiArICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ ICsKPiA+ICsgICAgICAgcmV0ID0gcmVnbWFwX3VwZGF0ZV9iaXRzKHN0LT5tYXAsIElOVl9JQ000 MjYwNV9SRUdfSU5URl9DT05GSUcxLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU5WX0lDTTQyNjA1X0lOVEZfQ09ORklHMV9NQVNLLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSU5WX0lDTTQyNjA1X0lOVEZfQ09ORklHMV9USUxUX0RFVF9JTlQxX0VO KTsKPiA+ICsgICAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ID4gKwo+ID4gKyAgICAgICByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiAraW50IGludl9pY200 MjYwNV9kaXNhYmxlX3RpbHRfaW50ZXJydXB0KHN0cnVjdCBpbnZfaWNtNDI2MDBfc3RhdGUgKnN0 KQo+ID4gK3sKPiA+ICsgICAgICAgaW50IHJldDsKPiA+ICsKPiA+ICsgICAgICAgcmV0ID0gcmVn bWFwX3dyaXRlKHN0LT5tYXAsIElOVl9JQ000MjYwNV9SRUdfQVBFWF9DT05GSUcwLCAwKTsKPiA+ ICsgICAgICAgaWYgKHJldCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gKwo+ ID4gKyAgICAgICByZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoc3QtPm1hcCwgSU5WX0lDTTQyNjA1 X1JFR19JTlRGX0NPTkZJRzEsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBJTlZfSUNNNDI2 MDVfSU5URl9DT05GSUcxX01BU0ssIDApOwo+ID4gKyAgICAgICBpZiAocmV0KQo+ID4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArCj4gPiArICAgICAgIHJldHVybiAwOwo+ID4gK30K PiA+Cj4gPiBiYXNlLWNvbW1pdDogYjg1ZWE5NWQwODY0NzFhZmI0YWQwNjIwMTJhNGQ3M2NkMzI4 ZmE4NiAgCj4gCgo=