From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50699C4743E for ; Tue, 8 Jun 2021 07:55:08 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CCF3761208 for ; Tue, 8 Jun 2021 07:55:07 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CCF3761208 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=epam.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.138308.256063 (Exim 4.92) (envelope-from ) id 1lqWZI-0006KG-UK; Tue, 08 Jun 2021 07:54:36 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 138308.256063; Tue, 08 Jun 2021 07:54:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lqWZI-0006K8-Py; Tue, 08 Jun 2021 07:54:36 +0000 Received: by outflank-mailman (input) for mailman id 138308; Tue, 08 Jun 2021 07:54:35 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1lqWZG-0006K2-Qp for xen-devel@lists.xenproject.org; Tue, 08 Jun 2021 07:54:35 +0000 Received: from mx0b-0039f301.pphosted.com (unknown [148.163.137.242]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 361bb396-ac1b-4b57-9e14-0a842cbd736b; Tue, 08 Jun 2021 07:54:32 +0000 (UTC) Received: from pps.filterd (m0174683.ppops.net [127.0.0.1]) by mx0b-0039f301.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 1587bOlh028129; Tue, 8 Jun 2021 07:54:31 GMT Received: from eur04-he1-obe.outbound.protection.outlook.com (mail-he1eur04lp2052.outbound.protection.outlook.com [104.47.13.52]) by mx0b-0039f301.pphosted.com with ESMTP id 39239w09vj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 08 Jun 2021 07:54:30 +0000 Received: from AM0PR03MB6324.eurprd03.prod.outlook.com (2603:10a6:20b:153::17) by AM0PR0302MB3282.eurprd03.prod.outlook.com (2603:10a6:208:8::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.25; Tue, 8 Jun 2021 07:54:28 +0000 Received: from AM0PR03MB6324.eurprd03.prod.outlook.com ([fe80::b459:9e8c:964b:a3d1]) by AM0PR03MB6324.eurprd03.prod.outlook.com ([fe80::b459:9e8c:964b:a3d1%6]) with mapi id 15.20.4195.030; Tue, 8 Jun 2021 07:54:28 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 361bb396-ac1b-4b57-9e14-0a842cbd736b ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QVABjeNs7Wl+EM7YmLOY0jnw7fPAyLXEgCp/v2YFAKN+5VwIo/eTCjRQrGzG2CUtrkWA1xMHVtRYbh8lKY/dBpTv7qEJPmMwveNaovHpqIWKjp4r2+7A0zOQtM73hXnRVdy5jK9pODSLs/UZ0gutW1or4KFzb+H7EXZOKfT8eCwE14Ml/bxYLnslktqkYR2kj/IeGL7HV9Eox1StJ25DS3AxAVspOulszoArWZvzTwG5nHLnvd26pIsqFP6QqcU+G2Vhib8lTzXqhMuqXd3RmA71c0bVeUC9EBYT+w5nXRR7ii8IFPQ1Nrspp7FnmUD4IJ8RnosS0zHSzoZ4nAWTsw== 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-SenderADCheck; bh=kR/jysLeRkeymkeB4J0TLElkAod7ZqYUHiN8fdPr6lk=; b=lmfRuyefytzhPCkAXuJh0wIvxzTjBG2fZ2A2T0KU54iocDpNJ9tfDLVoqJelmt06a+iOKHKBRsJze6/+fS3XjWqZ0/rAEepoTkQJnArVikZlxb4zPe4N5mkgzkMjWqB1QYvy3DHed4NB7ag9B9bMBJLZ76CwizYr/DdklBF86pTcm0eLC+CHCZLOCHjqfxz3yd6ee/FtPyaZDh57L6a717JyBtK0estuTT3W8hTsnT3HbSvJBNEso1nkERHjixixNivRj357YsnWWAK24rJp7OZH5YHlTi8P9c/RrIGiUsqHNT3tfPvAwewXd5Bs5w/lz9Nqi+1OWWNJ0von9h78Qg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kR/jysLeRkeymkeB4J0TLElkAod7ZqYUHiN8fdPr6lk=; b=QjEE3oVTnrmwknFpkbGvYTtEqQ7OcJYLSzxdWcKkOYyXseaJzJR7cZPaZdVopWBwbpLICeIeOcwUvAP92ukdRjnWMqejHKbuAc2uPjsQtM3oC50VNrMXsWdZOrr12NNysF7IMq/+6YOUcHjTVStxHVZHOM72pQ6eLoNO6F3GzllmHi3CxYy96tju0GutOokHjuO54V0qqBVNzrXG6EmvO8u0fnlccEKZKx8UNP5PDzNDXLRN+b+1LL26YzeqTSYn6jXZqLZfRoWFqr2+eCzJ5KnKyb85q23IcpZXSCMTkY58Kh68kYdQdr/mzwGlccblWS536/WK5rFmMY8mTTIl7Q== From: Oleksandr Andrushchenko To: "xen-devel@lists.xenproject.org" CC: "wei.liu2@citrix.com" , "konrad.wilk@oracle.com" , "jgross@suse.com" , Ian Jackson Subject: Re: [PATCH 2/2] libgnttab: Add support for Linux dma-buf offset Thread-Topic: [PATCH 2/2] libgnttab: Add support for Linux dma-buf offset Thread-Index: AQHWLoWvWdjq7ozlqkeaZNP0F/2zoKl++MQAgAQkQQCBiPzxgA== Date: Tue, 8 Jun 2021 07:54:28 +0000 Message-ID: <5611ca93-815e-00b6-f958-e1149b27e0b8@epam.com> References: <20200520090425.28558-1-andr2000@gmail.com> <20200520090425.28558-3-andr2000@gmail.com> <24433.65344.748102.591216@mariner.uk.xensource.com> <9e64a880-02ce-e04b-8e36-eb63fbfbd975@epam.com> In-Reply-To: <9e64a880-02ce-e04b-8e36-eb63fbfbd975@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: lists.xenproject.org; dkim=none (message not signed) header.d=none;lists.xenproject.org; dmarc=none action=none header.from=epam.com; x-originating-ip: [185.199.97.5] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7135f859-4d9e-45dd-f977-08d92a52a492 x-ms-traffictypediagnostic: AM0PR0302MB3282: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 24N0kepzc/t0VRUO8BC6Jd96V7OgzBzBZsjfYcKTrgco9SYBsHY/PjWGwho4628hRMmcOBrjZktByg2KPHU+sqkqlmteL9wR6z83GJzMYKZyp3Xuta85odjTDgZ+W+J/uVnbx30GJWT7v+bTSWgihXMZJdaPPDqpOMQvaCBIRD1gBE+HyirG42cC2EjrInA5+J/53eOz4s3iHx+Ua7LMrqRbj7DZxEE73ZBvFYfKloHSj7obGsnb+YnJu8XG1mSSeqqhJagNJijL9vdqo88FudesOj/rYj5KJw358q0mx+1L0ooTRZOXSPltRmkNsonEBnAFBkWsJm1GJK2hCB/YzaYuc0DnH/jIpi5dn8xArJvudG7v58C87KJ11QrLUXMizlqNTFZArKMCu20aVo1x9y3um+334ZxpH7HhPdSj0PBalLYK40qyFsrRnWb5ZFzppKHPQEkayPRzTB4+aN/M6El8AEN6Wl42QklsH0nXqpQvM+gYMEESV10NTWPCg8zngvLz27IL8auEjPcBwBq84vLKDni9cYLPmtHSl4kdtN3Wsy9JkSp79+u+RgXNxRM919qmPZBqOZUDs97veh8n4uGj9aYgOmikvolTH5/zMEb7Ath2JfEwvIIuES+bfmlnoiJ0v+oNJWqp8trTQ0Aj08JTmkazTAPqGD3qyeMYF2IdbnXNC3Sa6BiE8pyQPcqu4soTI/iltug48a/PZtEpCcIIlqXNuj91tTLWTfxhFOvZvMg6B51JEuMBsm/zf0nh+MxI28MNtIIy7J6y3dWbuQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR03MB6324.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(366004)(136003)(39860400002)(396003)(376002)(6486002)(8936002)(66446008)(966005)(2616005)(6512007)(6506007)(478600001)(66556008)(4326008)(64756008)(36756003)(8676002)(66476007)(5660300002)(2906002)(86362001)(6916009)(54906003)(83380400001)(76116006)(30864003)(66946007)(186003)(31686004)(122000001)(38100700002)(26005)(316002)(31696002)(71200400001)(53546011)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?V2lyUExHalVVdmdONU94NGM0SWQrbTBRbjB3QnNrUWVDTHhyRGFxaThrRDU0?= =?utf-8?B?NzNBa3krUURrU1pHdTE3bWtiUHdRZjVhbEZ0akxVWDN6NFk2NXpORktuTWs4?= =?utf-8?B?QmpmSUZ3ZFdGV3ZvamVsYTFWUzg4SnNDbzFFSzRhQ29FQk0yakN5S1ROWDVY?= =?utf-8?B?RGJWa3EvRmNkUzh6SFZmYmFyclNDN2NTbWppS1dyUnU2cXJLN0l3Y3Q0ankw?= =?utf-8?B?dHh4RkFLcS9RWitrenVVQ0ZQL0ZBNmJTdERzT1h3cnI2bVZ5VnJqTng3blNr?= =?utf-8?B?STVKY0pCQVZrK0ZBeUdkSUtwUWFCVlNoRXpUK3NhZ1d3RXZPSlhxRWludHFO?= =?utf-8?B?ZHdKVUZML2NnL2hzWFByM2h5M3IyOW5aakc5MnFwbXcxaHZiUHM5RGRVYkpQ?= =?utf-8?B?Q1pZYTlDTVhDaXJtbm55Q25BMzBKWm90MEpKM08reEdUelYyMDZGa0xhUDQx?= =?utf-8?B?dVo1WG1samttZ3I4eksyUC9FMytCQzhjS0lYTGVKM2FiUXpmZ2JRa2FkcmdI?= =?utf-8?B?ZlJ5aVdxaExIVGY5cVErc3FVOEpMZ3paWGlPclQxekJXTUZCbWkrZTBFc1pX?= =?utf-8?B?anNQRDJQSEFoY1A1Q3c2bkMzWE1qNDV6VVVYYnZBSERBOEZsTDdLMUMvUUc0?= =?utf-8?B?OUF5WDQwdS9hK290dEpDc01wUWU0cERzbVU2WVhsSVZ0RDN1byt2TnBWZFBP?= =?utf-8?B?Z2s5dlpnOTlaeklmMVlZZUZDbE5hTkRTTWZVYktDTUJsaUxyUEdGbVVRcFV3?= =?utf-8?B?emQ0Rk9xanZOTlpLd0t5dXdETXp4Zi9leXNILzZtdGVxSERyRGs1Wkk2U3gy?= =?utf-8?B?UEE1T1ppbTBheVdBRHlQU2hmMngrRTYxVDR2clRVdGMxcEJ0TCsxL2haU3BU?= =?utf-8?B?eGF3ZmZtY1piUFpncFBTeEc2WUtrRFRiQWpkN00yQjJQQ1NjamNtM29qdS9U?= =?utf-8?B?R2ZvanlQQjZIaWVlR0dYcWU5QVBSSnp2aGRIb1hOclJOZkw4YkRka0RGcTJj?= =?utf-8?B?Wnh5QUJiNEUvZzFXYk0rMkxmYzVha3BYZjZ5OU1qdkZQWFBQelNQZHdvTEdC?= =?utf-8?B?anRraGlCQzZORENXai9oRjVGS3dIM2luQ0creW5WVmhibFVOekk1T3VGdHJs?= =?utf-8?B?ZVJhVVBubStRSFA1L2JmSWdzdVNjdG1ZVmh0N2pnU3VEb2IzanJaeXBmTkV2?= =?utf-8?B?QjRtRGlHOUVrOUhNTXdON2hjdmRVa2E2NGhFNmNiRlQ2Wkl6ZWJKQ0RRYjZy?= =?utf-8?B?ejQzbEh6Slp4TkFkbXVybFdBWkZ4RVczZDlhd3Ezdng0OVBoSDRUaVVweCs4?= =?utf-8?B?cHJacC93QktjVUJKb2pDT0NXR0Vlb3BFbk5RVG5WQ0V3QytlSXNoQnJTZzZz?= =?utf-8?B?dzZDT1hONnVIQVEvb2FMSzRlMWRqTi94ZkprRTBJY3pPTjJhYTVEZEJvUVYz?= =?utf-8?B?RmdpNDV0SmdYd3pnazNOU2pjaVg3dnNoVHE4NW9xcHV0U0lySkpKaG1SY2RY?= =?utf-8?B?REF4VG9Oa3dycFBCV21hYmw1NFRPWG9NYWM1akh4S1VFbVptdGtCWTB2bEFY?= =?utf-8?B?RU9JMDZMa0oxYkE2SW5TaS9US1RiVlVJTVZxcDFJWDc0UFhPOC9NYjl6QzVv?= =?utf-8?B?SDd5YXFTakpkTEZPRjRVbGQ5TGlDbXd1enlBYmZDcHRNQ1IzSEtsTEhodFZs?= =?utf-8?B?bUxvZ3o4T3BXUkk3djJEYnNRRFFoeklKSys4Z2VVdTFsWlpRVS9wNTFTVDJ2?= =?utf-8?Q?b9Wm+3CdpbpwzGCfm8MzI7DR44TCu3VjxKXWLA/?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM0PR03MB6324.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7135f859-4d9e-45dd-f977-08d92a52a492 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jun 2021 07:54:28.5759 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yWvrMZkkUKc8BMnX6IEws8aGlWykQwvWMm/QLczy7VOA5vumTTstCeB63Ru0UuWNh8leSueGF9o6xhmouA/DHoSVfEx4l+VXRn4fT8IH8uPNsFjrwwN79qQuo3d57vqS X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0302MB3282 X-Proofpoint-ORIG-GUID: kN0F02AScaHWR0mxry0l1Dt5IbvlpEHV X-Proofpoint-GUID: kN0F02AScaHWR0mxry0l1Dt5IbvlpEHV X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1011 spamscore=0 bulkscore=0 malwarescore=0 mlxscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 lowpriorityscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2104190000 definitions=main-2106080051 SGVsbG8sIGFsbCENCg0KSSB3b3VsZCBsaWtlIHRvIGJyaW5nIGJhY2sgdGhpcyBvbGQgdGhyZWFk IGFzIGl0IHNlZW1zIGl0IGhhcyBzdHVjayBsb25nIA0KdGltZSBhZ28NCg0Kd2l0aG91dCBjbGVh ciBOQWNrIG9yIEFjay4gSSBkaWRuJ3QgcmViYXNlIHRoZSBjaGFuZ2VzIGJlY2F1c2UgdGhlIA0K Y2hhbmdlIGl0c2VsZg0KDQpyZXF1aXJlcyBhbnN3ZXJzIG9uIHRoZSB3YXkgd2Ugc2hvdWxkIGdv IGhlcmU6IG5ldyBpb2N0bCAoc2VlbXMgdG8gYmUgDQpiZXR0ZXIpIG9yDQoNCmV4dGVuc2lvbiBv ZiB0aGUgZXhpc3Rpbmcgb25lIChub3Qgc28gZ3JlYXQpDQoNClRoYW5rIHlvdSBpbiBhZHZhbmNl LA0KDQpPbGVrc2FuZHINCg0KT24gMDEuMTAuMjAgMDk6MzUsIE9sZWtzYW5kciBBbmRydXNoY2hl bmtvIHdyb3RlOg0KPiBIaSwNCj4NCj4gT24gOS8yOC8yMCA2OjIwIFBNLCBJYW4gSmFja3NvbiB3 cm90ZToNCj4+IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdyaXRlcyAoIltQQVRDSCAyLzJdIGxp YmdudHRhYjogQWRkIHN1cHBvcnQgZm9yIExpbnV4IGRtYS1idWYgb2Zmc2V0Iik6DQo+Pj4gRnJv bTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0u Y29tPg0KPj4+DQo+Pj4gQWRkIHZlcnNpb24gMiBvZiB0aGUgZG1hLWJ1ZiBpb2N0bHMgd2hpY2gg YWRkcyBkYXRhX29mcyBwYXJhbWV0ZXIuDQo+Pj4NCj4+PiBkbWEtYnVmIGlzIGJhY2tlZCBieSBh IHNjYXR0ZXItZ2F0aGVyIHRhYmxlIGFuZCBoYXMgb2Zmc2V0IHBhcmFtZXRlcg0KPj4+IHdoaWNo IHRlbGxzIHdoZXJlIHRoZSBhY3R1YWwgZGF0YSBzdGFydHMuIFJlbGV2YW50IGlvY3RscyBhcmUg ZXh0ZW5kZWQNCj4+PiB0byBzdXBwb3J0IHRoYXQgb2Zmc2V0Og0KPj4+ICAgICAtIHdoZW4gZG1h LWJ1ZiBpcyBjcmVhdGVkIChleHBvcnRlZCkgZnJvbSBncmFudCByZWZlcmVuY2VzIHRoZW4NCj4+ PiAgICAgICBkYXRhX29mcyBpcyB1c2VkIHRvIHNldCB0aGUgb2Zmc2V0IGZpZWxkIGluIHRoZSBz Y2F0dGVyIGxpc3QNCj4+PiAgICAgICBvZiB0aGUgbmV3IGRtYS1idWYNCj4+PiAgICAgLSB3aGVu IGRtYS1idWYgaXMgaW1wb3J0ZWQgYW5kIGdyYW50IHJlZmVyZW5jZXMgcHJvdmlkZWQgdGhlbg0K Pj4+ICAgICAgIGRhdGFfb2ZzIGlzIHVzZWQgdG8gcmVwb3J0IHRoYXQgb2Zmc2V0IHRvIHVzZXIt c3BhY2UNCj4+IFRoYW5rcy4gIEknbSBub3QgYSBETUEgZXhwZXJ0LCBidXQgSSB0aGluayB0aGlz IGlzIHByb2JhYmx5IGdvaW5nIGluDQo+PiByb3VnaGx5IHRoZSByaWdodCBkaXJlY3Rpb24uICBJ IHdpbGwgcHJvYmFibHkgd2FudCBhIHJldmlldyBmcm9tIGEgRE1BDQo+PiBleHBlcnQgdG9vLCBi dXQgbGV0IG1lIGdldCBvbiB3aXRoIG15IHF1ZXN0aW9uczoNCj4+DQo+PiBXaGVuIHlvdSBzYXkg InRoZSBwcm90b2NvbCBjaGFuZ2VzIGFyZSBhbHJlYWR5IGFjY2VwdGVkIiBJIHRoaW5rIHlvdQ0K Pj4gbWVhbiB0aGUgTGludXggaW9jdGwgY2hhbmdlcyA/ICBJZiBub3QsIHdoYXQgKmRvKiB5b3Ug bWVhbiA/DQo+IEkgbWVhbiB0aGF0IHRoZSByZWxldmFudCBwcm90b2NvbCBjaGFuZ2VzIGFyZSBh bHJlYWR5IHBhcnQgb2YgYm90aCBYZW4gWzFdDQo+DQo+IGFuZCBMaW51eCB0cmVlcyBbMl0uIFdo YXQgaXMgbWlzc2luZyBpcyBpb2N0bCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUga2VybmVsIGFuZA0K Pg0KPiBpdHMgc3VwcG9ydCBpbiBYZW4nIHRvb2xzLiBUaGlzIGlzIHdoeSBJIGhhdmUgbWFya2Vk IHRoZSBwYXRjaCBhcyBSRkMgaW4gb3JkZXINCj4NCj4gdG8gZ2V0IHNvbWUgdmlldyBvbiB0aGUg bWF0dGVyIGZyb20gWGVuIGNvbW11bml0eS4gT25jZSB3ZSBhZ3JlZSBvbiB0aGUNCj4NCj4gbmFt aW5nLCBzdHJ1Y3R1cmUgZXRjLiBJJ2xsIHNlbmQgcGF0Y2hlcyBmb3IgYm90aCBYZW4gYW5kIExp bnV4DQo+DQo+Pj4gKy8qDQo+Pj4gKyAqIFZlcnNpb24gMiBvZiB0aGUgaW9jdGxzIGFkZHMgQGRh dGFfb2ZzIHBhcmFtZXRlci4NCj4+PiArICoNCj4+PiArICogZG1hLWJ1ZiBpcyBiYWNrZWQgYnkg YSBzY2F0dGVyLWdhdGhlciB0YWJsZSBhbmQgaGFzIG9mZnNldA0KPj4+ICsgKiBwYXJhbWV0ZXIg d2hpY2ggdGVsbHMgd2hlcmUgdGhlIGFjdHVhbCBkYXRhIHN0YXJ0cy4NCj4+PiArICogUmVsZXZh bnQgaW9jdGxzIGFyZSBleHRlbmRlZCB0byBzdXBwb3J0IHRoYXQgb2Zmc2V0Og0KPj4+ICsgKiAg IC0gd2hlbiBkbWEtYnVmIGlzIGNyZWF0ZWQgKGV4cG9ydGVkKSBmcm9tIGdyYW50IHJlZmVyZW5j ZXMgdGhlbg0KPj4+ICsgKiAgICAgQGRhdGFfb2ZzIGlzIHVzZWQgdG8gc2V0IHRoZSBvZmZzZXQg ZmllbGQgaW4gdGhlIHNjYXR0ZXIgbGlzdA0KPj4+ICsgKiAgICAgb2YgdGhlIG5ldyBkbWEtYnVm DQo+Pj4gKyAqICAgLSB3aGVuIGRtYS1idWYgaXMgaW1wb3J0ZWQgYW5kIGdyYW50IHJlZmVyZW5j ZXMgYXJlIHByb3ZpZGVkIHRoZW4NCj4+PiArICogICAgIEBkYXRhX29mcyBpcyB1c2VkIHRvIHJl cG9ydCB0aGF0IG9mZnNldCB0byB1c2VyLXNwYWNlDQo+Pj4gKyAqLw0KPj4+ICsjZGVmaW5lIElP Q1RMX0dOVERFVl9ETUFCVUZfRVhQX0ZST01fUkVGU19WMiBcDQo+Pj4gKyAgICBfSU9DKF9JT0Nf Tk9ORSwgJ0cnLCAxMywgXA0KPj4gSSB0aGluayB0aGlzIHdhcyBjb3BpZWQgZnJvbSBhIExpbnV4 IGhlYWRlciBmaWxlID8gIElmIHNvIHBsZWFzZSBxdW90ZQ0KPj4gdGhlIHByZWNpc2UgZmlsZSBh bmQgcmV2aXNpb24gaW4gdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiBUaGlzIGlzIG5vdCB1cHN0cmVh bSB5ZXQsIHBsZWFzZSBzZWUgZXhwbGFuYXRpb24gYWJvdmUNCj4+ICAgICBBbmQgYmUgc3VyZSB0 bw0KPj4gY29weSB0aGUgY29weXJpZ2h0IGluZm9ybXRhaW9uIGFwcHJvcHJpYXRlbHkuDQo+Pg0K Pj4+ICtpbnQgb3NkZXBfZ250dGFiX2RtYWJ1Zl9leHBfZnJvbV9yZWZzX3YyKHhlbmdudHRhYl9o YW5kbGUgKnhndCwgdWludDMyX3QgZG9taWQsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IGNvdW50LA0KPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpy ZWZzLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICpkbWFidWZfZmQsIHVpbnQzMl90IGRhdGFfb2ZzKQ0KPj4+ICt7DQo+Pj4gKyAgICBhYm9y dCgpOw0KPj4gSSdtIHByZXR0eSBzdXJlIHRoaXMgaXMgd3JvbmcuDQo+IEZpcnN0IG9mIGFsbCwg TGludXggZG1hLWJ1ZnMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIExpbnV4LCBzbyBuZWl0aGVyIEZy ZWVCU0Qgbm9yIE1pbmktT1MNCj4NCj4gd2lsbCBoYXZlIHRoYXQuIElmIHlvdSBhcmUgcmVmZXJy aW5nIHRvICJhYm9ydCgpIiBoZXJlLCBzbyBJIGFtIGp1c3QgYWxpZ25pbmcgdG8gd2hhdCBwcmV2 aW91c2x5DQo+DQo+IHdhcyB0aGVyZSwgZS5nLiBhbGwgbm9uLXJlbGV2YW50IGRtYS1idWYgT1Mg c3BlY2lmaWNzIHdlcmUgaW1wbGVtZW50ZWQgbGlrZSB0aGF0Lg0KPg0KPj4gVGhpcyBsZWFkcyBt ZSB0byBhc2sgYWJvdXQgY29tcGF0aWJpbGl0eSwgYm90aCBhY3Jvc3MgdmVyc2lvbnMgb2YgdGhl DQo+PiB2YXJpb3VzIGNvbXBvbmVudHMsIGFuZCBBUEkgY29tcGF0aWJpbGl0eSBhY3Jvc3MgZGlm ZmVyZW50IHBsYXRmb3Jtcy4NCj4+DQo+PiBsaWJ4ZW5nbnR0YWIgaXMgc3VwcG9zZWQgdG8gaGF2 ZSBhIHN0YWJsZSBBUEkgYW5kIEFCSS4gIFRoaXMgbWVhbnMNCj4+IHRoYXQgb2xkIHByb2dyYW1z IHNob3VsZCB3b3JrIHdpdGggdGhlIG5ldyBsaWJyYXJ5IC0gd2hpY2ggSSB0aGluayB5b3UNCj4+ IGhhdmUgYWNoaWV2ZWQuDQo+IFllcw0KPj4gQnV0IEkgdGhpbmsgaXQgYWxzbyBtZWFucyB0aGF0 IGl0IHNob3VsZCB3b3JrIHdpdGggbmV3IHByb2dyYW1zLCBhbmQNCj4+IHRoZSBuZXcgbGlicmFy eSwgb24gb2xkIGtlcm5lbHMuICBXaGF0IGlzIHlvdXIgY29tcGF0aWJpbGl0eSBzdG9yeQ0KPj4g aGVyZSA/ICBXaGF0IGlzIHRoZSBpbnRlbmRlZCBtb2RlIG9mIHVzZSBieSBhbiBhcHBsaWNhdGlv biA/DQo+IFdlbGwsIHRoaXMgaXMgYSB0b3VnaCBzdG9yeS4gSWYgd2UgaGF2ZSBuZXcgc29mdHdh cmUgYW5kIG5ldyBsaWJyYXJ5LCBidXQgb2xkDQo+DQo+IGtlcm5lbCBpdCBtZWFucyB0aGF0IHRo ZSBvZmZzZXQgd2UgYXJlIHRyeWluZyB0byBnZXQgd2l0aCB0aGUgbmV3IGlvY3RsIHdpbGwgYmUN Cj4NCj4gdW5hdmFpbGFibGUgdG8gdGhhdCBuZXcgc29mdHdhcmUuIEluIG1vc3QgY2FzZXMgd2Ug Y2FuIHVzZSBvZmZzZXQgb2YgMCwgYnV0IHNvbWUNCj4NCj4gcGxhdGZvcm1zIChpTVg4KSB1c2Ug b2Zmc2V0IG9mIDY0LiBTbywgd2UgY2FuIHdvcmthcm91bmQgdGhhdCBmb3IgbW9zdCg/KSBwbGF0 Zm9ybXMNCj4NCj4gYnkgcmVwb3J0aW5nIG9mZnNldCAwLCBidXQgc29tZSBwbGF0Zm9ybXMgd2ls bCBmYWlsLiBJIGFtIG5vdCBzdXJlIGlmIHRoaXMgaXMgZ29vZCB0byBzdGF0ZSB0aGF0DQo+DQo+ IHRoaXMgY29tYmluYXRpb24gb2Ygc29mdHdhcmUgKGFzIGRlc2NyaWJlZCBhYm92ZSkgIndpbGwg bW9zdGx5IHdvcmsiIG9yIGp1c3QgbGV0DQo+DQo+IHRoZSBzeXN0ZW0gZmFpbCBhdCBydW4tdGlt ZSwgYnkgbGV0dGluZyBMaW51eCByZXR1cm4gRU5PVFNVUFAgZm9yIHRoZSBuZXcgaW9jdGwuDQo+ DQo+IEJ5IGZhaWwgSSBtZWFuIHRoYXQgdGhlIGRpc3BsYXkgYmFja2VuZCBtYXkgZGVjaWRlIGlm IHRvIHVzZSB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgaW9jdGwNCj4NCj4gd2l0aG91dCB0 aGUgb2Zmc2V0IGZpZWxkLg0KPg0KPj4gQW5kIHRoZSBzYW1lIGFwcGxpY2F0aW9uIGNvZGUgc2hv dWxkIGJlIHVzZWFibGUsIHNvIGZhciBhcyBwb3NzaWJsZSwNCj4+IGFjcm9zcyBkaWZmZXJlbnQg cGxhYXRmb3JtcyB0aGF0IHN1cHBvcnQgWGVuLg0KPj4NCj4+IFdoYXQgZmFsbGJhY2sgd291bGQg YmUgcG9zc2libGUgZm9yIGFwcGxpY2F0aW9uIGRvIGlmIHRoZSB2MiBmdW5jdGlvbg0KPj4gaXMg bm90IGF2YWlsYWJsZSA/ICBJIHRoaW5rIHRoYXQgZmFsbGJhY2sgYWN0aW9uIG5lZWRzIHRvIGJl DQo+PiBzZWxlY3RhYmxlIGF0IHJ1bnRpbWUsIHRvIHN1cHBvcnQgbmV3IHVzZXJzcGFjZSBvbiBv bGQga2VybmVscy4NCj4gV2VsbCwgYXMgSSBzYWlkIGJlZm9yZSwgZm9yIHRoZSBwbGF0Zm9ybXMg d2l0aCBvZmZzZXQgMCB3ZSBhcmUgImZpbmUiIGlnbm9yaW5nIHRoZSBvZmZzZXQgYW5kDQo+DQo+ IHVzaW5nIHYxIG9mIHRoZSBpb2N0bCB3aXRob3V0IHRoZSBvZmZzZXQgZmllbGQuIEZvciB0aGUg cGxhdGZvcm1zIHdpdGggbm9uLXplcm8gb2Zmc2V0IGl0IHJlc3VsdHMNCj4NCj4gYXQgbGVhc3Qg aW4gc2xpZ2h0IHNjcmVlbiBkaXN0b3J0aW9uIGFuZCB0aGV5IGRvIG5lZWQgdjIgb2YgdGhlIGlv Y3RsDQo+DQo+PiBXaGF0IGFyY2hpdGVjdHVyZXMgaXMgdGhlIG5ldyBMaW51eCBpb2N0bCBhdmFp bGFibGUgb24gPw0KPiB4ODYvQVJNDQo+Pj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvZ250dGFi L2luY2x1ZGUveGVuZ250dGFiLmggYi90b29scy9saWJzL2dudHRhYi9pbmNsdWRlL3hlbmdudHRh Yi5oDQo+Pj4gaW5kZXggMTExZmM4OGNhZWIzLi4wOTU2YmQ5MWUwZGYgMTAwNjQ0DQo+Pj4gLS0t IGEvdG9vbHMvbGlicy9nbnR0YWIvaW5jbHVkZS94ZW5nbnR0YWIuaA0KPj4+ICsrKyBiL3Rvb2xz L2xpYnMvZ250dGFiL2luY2x1ZGUveGVuZ250dGFiLmgNCj4+PiBAQCAtMzIyLDEyICszMjIsMTkg QEAgaW50IHhlbmdudHRhYl9ncmFudF9jb3B5KHhlbmdudHRhYl9oYW5kbGUgKnhndCwNCj4+PiAg ICAgKiBSZXR1cm5zIDAgaWYgZG1hLWJ1ZiB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYW5kIHRo ZSBjb3JyZXNwb25kaW5nDQo+Pj4gICAgICogZG1hLWJ1ZidzIGZpbGUgZGVzY3JpcHRvciBpcyBy ZXR1cm5lZCBpbiBAZmQuDQo+Pj4gICAgICoNCj4+PiArDQo+Pj4gKyAqIFZlcnNpb24gMiBhbHNv IGFjY2VwdHMgQGRhdGFfb2ZzIG9mZnNldCBvZiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyLg0KPj4+ ICsgKg0KPj4+ICAgICAqIFsxXSBodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9l bGl4aXIuYm9vdGxpbi5jb20vbGludXgvbGF0ZXN0L3NvdXJjZS9Eb2N1bWVudGF0aW9uL2RyaXZl ci1hcGkvZG1hLWJ1Zi5yc3RfXzshIUdGXzI5ZGJjUUlVQlBBIWlhN2dzRDVvOXZQdGdRem0zcFVZ bWNQRWFVbWFPRFpSVWt5bmlxNzR2TkRaa2J6OXpHYnFlLXpDVWVzSEhGMy1ja1JXTHVJQktnJCBb ZWxpeGlyWy5dYm9vdGxpblsuXWNvbV0NCj4+PiAgICAgKi8NCj4+PiAgICBpbnQgeGVuZ250dGFi X2RtYWJ1Zl9leHBfZnJvbV9yZWZzKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9t aWQsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBm bGFncywgdWludDMyX3QgY291bnQsDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1aW50MzJfdCAqcmVmcywgdWludDMyX3QgKmZkKTsNCj4+PiAgICANCj4+ PiAraW50IHhlbmdudHRhYl9kbWFidWZfZXhwX2Zyb21fcmVmc192Mih4ZW5nbnR0YWJfaGFuZGxl ICp4Z3QsIHVpbnQzMl90IGRvbWlkLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGZsYWdzLCB1aW50MzJfdCBjb3VudCwNCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqcmVmcywgdWludDMy X3QgKmZkLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGRhdGFfb2ZzKTsNCj4+IEkgdGhpbmsgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtZWFu aW5nIG9mIEBkYXRhX29mcyBtdXN0IGJlIGluIHRoZQ0KPj4gZG9jIGNvbW1lbnQuICBJbmRlZWQs IHRoYXQgc2hvdWxkIGJlIHRoZSBwcmltYXJ5IGxvY2F0aW9uLg0KPiBTdXJlDQo+PiBDb252ZXJz ZWx5IHRoZXJlIGlzIG5vIG5lZWQgdG8gZHVwbGljYXRlIGluZm9ybWF0aW9uIGJldHdlZW4gdGhl IHBhdGNoDQo+PiBjb250ZW50cywgYW5kIHRoZSBjb21taXQgbWVzc2FnZS4NCj4gSXQncyBqdXN0 IGEgbWUgdGhhdCBhbHdheXMgd2FudHMgdGhlIGRvYyBhdCBoYW5keSBsb2NhdGlvbiBzbyBJIGRv bid0IG5lZWQgdG8gZGlnIGZvcg0KPg0KPiB0aGUgY29tbWl0IG1lc3NhZ2VzPyBCdXQgYXQgdGhl IHNhbWUgdGltZSB0aGUgY29tbWl0IG1lc3NhZ2Ugc2hvdWxkIGFsbG93IG9uZQ0KPg0KPiBxdWlj a2x5IHVuZGVyc3RhbmQgd2hhdCdzIGluIHRoZXJlLiBTbywgSSB3b3VsZCBwcmVmZXIgdG8gaGF2 ZSBtb3JlIGRlc2NyaXB0aW9uIGluIHRoZQ0KPg0KPiBwYXRjaCB0aGVuDQo+DQo+PiBJcyBfdjIg cmVhbGx5IHRoZSBiZXN0IG5hbWUgZm9yIHRoaXMgPyAgQXJlIHdlIGxpa2VseSB0byB3YW50IHRv DQo+PiBleHRlbmQgdGhpcyBhZ2FpbiBpbiBmdXR1cmUgPyAgUGVyaGFwcyBpdCBzaG91bGQgYmUg Y2FsbGVkIC4uLl9vZmZzZXQNCj4+IG9yIHNvbWV0aGluZyA/ICBQbGVhc2UgdGhpbmsgYWJvdXQg dGhpcyBhbmQgdGVsbCBtZSB5b3VyIG9waW5pb24uDQo+IEkgZG9uJ3QgYWN0dWFsbHkgbGlrZSB2 Mi4gTmVpdGhlciBJIGNhbiBwcm9kdWNlIGFueXRoaW5nIG1vcmUgY3V0ZSA7KQ0KPg0KPiBPbiB0 aGUgb3RoZXIgaGFuZCBpdCBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZCB0aGF0IHYyIGlzIGFjdHVh bGx5IGV4dGVuZHMvcmVtb3Zlcy9jaGFuZ2VzDQo+DQo+IHNvbWV0aGluZyB0aGF0IHdhcyBoZXJl IGJlZm9yZS4gU2F5LCBpZiB5b3UgaGF2ZSAyIGlvY3RscyB5eXkgYW5kIGRkZCB5b3UgbmVlZCB0 byBjb21wYXJlDQo+DQo+IHRoZSB0d28gdG8gdW5kZXJzdGFuZCB3aGF0IGlzIG1vcmUgcmVsZXZh bnQgYXQgdGhlIG1vbWVudC4gSGF2aW5nIGV4cGxpY2l0IHZlcnNpb24gaW4gdGhlDQo+DQo+IG5h bWUgbGVhdmVzIG5vIGRvdWJ0IGFib3V0IHdoYXQgaXMgbmV3ZXIuDQo+DQo+Pj4gK2ludCBvc2Rl cF9nbnR0YWJfZG1hYnVmX2V4cF9mcm9tX3JlZnNfdjIoeGVuZ250dGFiX2hhbmRsZSAqeGd0LCB1 aW50MzJfdCBkb21pZCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCBmbGFncywgdWludDMyX3QgY291bnQsDQo+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnJlZnMsDQo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmRtYWJ1Zl9m ZCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBkYXRhX29mcykNCj4+PiArew0KPj4+ICsgICAgc3RydWN0IGlvY3RsX2dudGRldl9kbWFidWZf ZXhwX2Zyb21fcmVmc192MiAqZnJvbV9yZWZzX3YyID0gTlVMTDsNCj4+PiArICAgIGludCByYyA9 IC0xOw0KPj4+ICsNCj4+PiArICAgIGlmICggIWNvdW50ICkNCj4+PiArICAgIHsNCj4+PiArICAg ICAgICBlcnJubyA9IEVJTlZBTDsNCj4+PiArICAgICAgICBnb3RvIG91dDsNCj4+PiArICAgIH0N Cj4+PiArDQo+Pj4gKyAgICBmcm9tX3JlZnNfdjIgPSBtYWxsb2Moc2l6ZW9mKCpmcm9tX3JlZnNf djIpICsNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnQgLSAxKSAqIHNpemVv Zihmcm9tX3JlZnNfdjItPnJlZnNbMF0pKTsNCj4+PiArICAgIGlmICggIWZyb21fcmVmc192MiAp DQo+Pj4gKyAgICB7DQo+Pj4gKyAgICAgICAgZXJybm8gPSBFTk9NRU07DQo+Pj4gKyAgICAgICAg Z290byBvdXQ7DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICsgICAgZnJvbV9yZWZzX3YyLT5mbGFn cyA9IGZsYWdzOw0KPj4+ICsgICAgZnJvbV9yZWZzX3YyLT5jb3VudCA9IGNvdW50Ow0KPj4+ICsg ICAgZnJvbV9yZWZzX3YyLT5kb21pZCA9IGRvbWlkOw0KPj4+ICsgICAgZnJvbV9yZWZzX3YyLT5k YXRhX29mcyA9IGRhdGFfb2ZzOw0KPj4+ICsNCj4+PiArICAgIG1lbWNweShmcm9tX3JlZnNfdjIt PnJlZnMsIHJlZnMsIGNvdW50ICogc2l6ZW9mKGZyb21fcmVmc192Mi0+cmVmc1swXSkpOw0KPj4+ ICsNCj4+PiArICAgIGlmICggKHJjID0gaW9jdGwoeGd0LT5mZCwgSU9DVExfR05UREVWX0RNQUJV Rl9FWFBfRlJPTV9SRUZTX1YyLA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICBmcm9tX3JlZnNf djIpKSApDQo+Pj4gKyAgICB7DQo+Pj4gKyAgICAgICAgR1RFUlJPUih4Z3QtPmxvZ2dlciwgImlv Y3RsIERNQUJVRl9FWFBfRlJPTV9SRUZTX1YyIGZhaWxlZCIpOw0KPj4+ICsgICAgICAgIGdvdG8g b3V0Ow0KPj4+ICsgICAgfQ0KPj4gVGhpcyBzZWVtcyBqdXN0IGEgZmFpcmx5IG9idmlvdXMgd3Jh cHBlciBmb3IgdGhpcyBpb2N0bC4gIEkgdGhpbmsgaXQNCj4+IHdvdWxkIGJlIGJlc3QgZm9yIG1l IHRvIHJldmlldyB0aGlzIGluIGRldGFpbCB3aXRoIHJlZmVyZW5jZSB0byB0aGUNCj4+IGlvY3Rs IGRvY3VtZW50YXRpb24gKHdoaWNoIHlvdSBoZWxwZnVsbHkgcmVmZXIgdG8gLSB0aGFuayB5b3Uh KSBhZnRlcg0KPj4gSSBzZWUgdGhlIGFuc3dlcnMgdG8gbXkgb3RoZXIgcXVlc3Rpb25zLg0KPiBX ZWxsLCBJIGhhdmUgbGl0dGxlIHRvIGFkZCBhcyB0aGUgb25seSBjaGFuZ2UgYW5kIHRoZSByZWFz b24gaXMgdGhhdCBzY2F0dGVyLWdhdGhlciB0YWJsZSdzDQo+DQo+IG9mZnNldCBtdXN0IGJlIGhv bm9yZWQgd2hpY2ggd2FzIG5vdCBhIHByb2JsZW0gdW50aWwgd2UgZmFjZWQgaU1YOCBwbGF0Zm9y bSB3aGljaCBoYXMNCj4NCj4gdGhhdCBvZmZzZXQgbm9uLXplcm8uIEZyYW5rbHksIGxvdHMgb2Yg c29mdHdhcmUgYXNzdW1lcyBpdCBpcyB6ZXJvLi4uDQo+DQo+Pj4gK2ludCBvc2RlcF9nbnR0YWJf ZG1hYnVmX2ltcF90b19yZWZzX3YyKHhlbmdudHRhYl9oYW5kbGUgKnhndCwgdWludDMyX3QgZG9t aWQsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGZkLCB1aW50MzJfdCBjb3VudCwNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgKnJlZnMsDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90ICpkYXRhX29mcykNCj4+PiArew0KPj4gVGhpcyBmdW5jdGlv biBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIG9uZS4gIEknbSB1bmNvbWZvcnRhYmxl DQo+PiB3aXRoIHRoZSBkdXBsaWNhdGlvbiwgYnV0IEkgc2VlIHRoYXQNCj4+ICAgICAgb3NkZXBf Z250dGFiX2RtYWJ1Zl97aW1wX3RvLGV4cF9mcm9tfV9yZWZzDQo+PiBhcmUgdmVyeSBkdXBsaWNh dGl2ZSBhbHJlYWR5LCBzbyBJIGFtIGFsc28gc29tZXdoYXQgdW5jb21mb3J0YWJsZSB3aXRoDQo+ PiBhc2tpbmcgeW91IHRvIGNsZWFuIHRoaXMgdXAgd2l0aCByZWZhY3RvcmluZy4gIEJ1dCBwZXJo YXBzIGlmIHlvdSBmZWx0DQo+PiBsaWtlIHRoaW5raW5nIGFib3V0IGNvbWJpb25pbmcgc29tZSBv ZiB0aGlzLCB0aGF0IG1pZ2h0IGJlIG5pY2UuDQo+IEkgaGF0ZSBoYXZpbmcgY29kZSBkdXBsaWNh dGlvbiBhcyB3ZWxsOiBsZXNzIGNvZGUgbGVzcyBtYWludGVuYW5jZS4gQnV0IGluIHRoaXMgY2Fz ZQ0KPg0KPiB0aGUgY29tbW9uIGNvZGUgbWFrZXMgdGhhdCBmdW5jdGlvbiBmdWxsIG9mICJpZiJz IHNvIGZpbmFsbHkgSSBnYXZlIHVwIGFuZCBtYWtlIGEgY29weS1wYXN0ZS4NCj4NCj4gTm8gc3Ry b25nIG9waW5pb24gaGVyZTogaWYgeW91IHRoaW5rICJpZiJzIGFyZSBzdGlsbCBiZXR0ZXIgSSds bCByZXdvcmsgdGhhdA0KPg0KPj4gV2hhdCBkbyBteSBjby1tYWludGFpbmVycyB0aGluayA/DQo+ Pg0KPj4NCj4+IFJlZ2FyZHMsDQo+PiBJYW4uDQo+IFRoYW5rIHlvdSBmb3IgdGhlIHJldmlldyBh bmQgeW91ciB0aW1lLA0KPg0KPiBPbGVrc2FuZHINCj4NCj4gWzFdIGh0dHBzOi8veGVuYml0cy54 ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Y29tbWl0O2g9YzI3YTE4NDIyNWVhYjU0ZDIwNDM1 YzhjYWI1YWQwZWYzODRkYzJjMA0KPg0KPiBbMl0gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIv c2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2NvbW1pdC8/aWQ9NmY5MjMz N2I2YmZmYjNkOWU1MDkwMjRkNmVmNWMzZjJiMTEyNzU3ZA0KPg==