From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 154D4C433F5 for ; Fri, 31 Dec 2021 02:06:34 +0000 (UTC) Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238]) by mx.groups.io with SMTP id smtpd.web10.6906.1640916392767617366 for ; Thu, 30 Dec 2021 18:06:33 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@windriver.com header.s=pps06212021 header.b=BOHb/rbT; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: windriver.com, ip: 205.220.178.238, mailfrom: prvs=89997616bd=qi.chen@windriver.com) Received: from pps.filterd (m0250812.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1BV1qB9H029599 for ; Fri, 31 Dec 2021 02:06:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=subject : to : references : from : message-id : date : in-reply-to : content-type : content-transfer-encoding : mime-version; s=PPS06212021; bh=jQlLmk08Q4iCL2Vua2HZ+B/Ejmv6Umizkot33gVJlmg=; b=BOHb/rbTqwlUfAAF3qCbi3NndypMLj75n9sgUcFFjME8Q5FnYKo7hbTfsGaN1OgxExRg y3xF2khnH2OUJtuXvfYeK5xBksorshLqj+dBykV38Ms2NWZTg5cS5MuWZvwlI7Otu+8s FY0K/nL7EEu/Sqec/Xedv563h+s1heR4Gz6zcjkQjgoOK6WQdt/iKLYQExNuUT80g5qm XHMcmESY9SBU2QBkMsQ/T7ZzYJuUZsok5n5rIVxwGDgrYuBz7R9Bz1X8PfFs6xru8aBK qIpFGqYllOs6G+Gx2OSR3EFoIBiDkd5YYsBS1Z+HpliaY1V0Sj/cEJDcsHa49OaGWdDL Eg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3d8yayrpeu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 31 Dec 2021 02:06:30 +0000 Received: from m0250812.ppops.net (m0250812.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 1BV26Tfh020699 for ; Fri, 31 Dec 2021 02:06:29 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2043.outbound.protection.outlook.com [104.47.57.43]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 3d8yayrpes-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 31 Dec 2021 02:06:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aixC+ce8aNj1L2DY7hJclozk7EdV9GmSt4/Zm8BnjAWR/AdXj2wBZ6Jq/w0VqTdUpTqbhgQ27crWCFx7k7lqunhSxjItqxwEMkYm7AB9STxKA2vN//nv+CMKyEuA4RIiZn0CmgGug/hLyQm/eZ6lYrRDrS6Ma95fiBpgzf8gW9OCn7FrEbqike8KBc4yswz/E36/pOz7crusuRcZ7RWFO36NpWJuEKxZM1IH2fzyNxb01A/bez/4z4LwPW65ZGr/hEOmwag0w6AC7CMesZM4XlyRlmp5jwBE0tIzksy+Z+65BgxY61ED+rpdB0grWF3sCrmhy99yk73EOMFPvqF6iQ== 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=jQlLmk08Q4iCL2Vua2HZ+B/Ejmv6Umizkot33gVJlmg=; b=ko3M/A71FeusqpoKH1389b/nao/gmByFuvOlgdOXMHJmmAOF23RgUbfnD08PdNmah3T2IDeGSmOGKJ/1kowWxgHeKeFOtl8Gps9q2pYjk+DLyDqZ8T4QE09nLoP0V4is7p0jiLJEpwfV7hL6FRzdHl7XVgZjc4d1vzec+Q2WDli4GDoXrCf5zvxMM/CuhZaSgKLPJhukgUrJBzrei62QcLL3pJw8z/WNi5YsqMnEtySpZ0UqCaJUHyqH7La2Tcdoghti3T4JQCinV5CcWiJRv9OtgeYzdaJjs3b0U3HHEHsSM8gLZZxpq2qDPk73PiWJe9eHqg4Q0odOyoO4t9olAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from CO6PR11MB5602.namprd11.prod.outlook.com (2603:10b6:303:13a::5) by CO6PR11MB5633.namprd11.prod.outlook.com (2603:10b6:303:13c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.16; Fri, 31 Dec 2021 02:06:26 +0000 Received: from CO6PR11MB5602.namprd11.prod.outlook.com ([fe80::897:5724:dc05:ee5c]) by CO6PR11MB5602.namprd11.prod.outlook.com ([fe80::897:5724:dc05:ee5c%5]) with mapi id 15.20.4844.014; Fri, 31 Dec 2021 02:06:26 +0000 Subject: Re: [OE-core][hardknott][PATCH V3] busybox: backport patches to fix CVEs To: "Mittal, Anuj" , "openembedded-core@lists.openembedded.org" References: <20211229014449.119943-1-Qi.Chen@windriver.com> From: ChenQi Message-ID: <44ba683a-712c-6ecb-e356-51553df34f13@windriver.com> Date: Fri, 31 Dec 2021 10:06:18 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US X-ClientProxiedBy: HK2PR03CA0059.apcprd03.prod.outlook.com (2603:1096:202:17::29) To CO6PR11MB5602.namprd11.prod.outlook.com (2603:10b6:303:13a::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5d58e385-88d6-4551-5bcf-08d9cc0225d0 X-MS-TrafficTypeDiagnostic: CO6PR11MB5633:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2803; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o6uraa3nHne/v9fZn1F2MAJ9d0VGd7QLvMCxRPEDU1viFyulhPRfT6yZGglLKTHuNf0YqTH1tALRGQU63D4hYwGpBgFTXT51zjk53H7GvagexFtOrt6PpyZ7eEWmdyTyZynuw9XZm3Fb9FSoOsGxyYXXmgizOa0v6zYIwme4BRovoAwcjU4zj89z8ledexAEh4DA4cCDAF6nxDsKA5+3cjZdag9EHt+4M4T/C8oPKmGXs8r35iZ8A4K2GKy872Y2QMdAlo505U9w+G06m83dSvSr5OmB7GG9V3Yu7+cGrh2j/HSbVfM3HEMzc/lHjijwoa2K5RXQDI52x3GaS9a00yjKVwmO1M8n92vvczceXNxHdaRuepN8r44w1TXYJiS/noU/QFt9HwHD8Fj9z1w1AVYAjZY3rJmQN5AKZES7QrdoiRF95vCyV8fGgUzsDN+ScBGfSYGWwr8oKx9YNQJjsgJyg3CW8/JOgeAj9xvhkA7MEnCM/VG0etNfkH5JOvHCcOG+SH4jsvZyGf2+oBgTAci0kHJ1A39g4BSK5bPufEzBMP6IjeDO+IwyS6LP0UmS/uvNYogGQhnBzCACaNCccOSGMA4PMyQVlAF33n0V+mRYjbp/4cfTD0MSLbfdbubMbimCAOIaiPMOM7q9/fohoYOLRiuTmoGT2InQpQYt8Y2xuXEImm3DKDzT/te+shATqDladBMbxTi2Sd8+Rbp7iPV+yloAMKLMc2oa7JwgaXovmSlbntDFRcoMKna6TZ1y7j7yoJ9ko6Htp1sMebrqZsP8vsGXcFIuuy2UmDSFwWNk8cipxMKET5+okDcPvyl87kvSJfosUP7p7ydMV33+FF+9vux+92w3E1465fsbwO2GYNG7L0X2w1AIZS5HtoCDvC2A4Ze7CG2me1TXgy2ptw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR11MB5602.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(52116002)(4001150100001)(6506007)(2616005)(966005)(53546011)(508600001)(26005)(2906002)(31686004)(186003)(86362001)(83380400001)(36756003)(316002)(110136005)(31696002)(30864003)(38100700002)(6512007)(38350700002)(66946007)(66476007)(66556008)(6486002)(8936002)(6666004)(8676002)(5660300002)(43740500002)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NDJ1Y0pJbldUcVZuT2IzTTVpZThvUlZjZzBOQXlFK3p2MVRkcEJDbDZxbzk3?= =?utf-8?B?dEJiUjNRVFk4VWxXT2JJS1QybG4xMkJBREJQK0cvai9LNmQ5SzRkRDVpcU5y?= =?utf-8?B?NDJQeXpDL1d4TjBsdXpOUGRpMnh5cWN5MXhVbE9DZDZxNFQrU2krR0hVVGJz?= =?utf-8?B?TjZuL1pUQ3dmZ2t0eUJWZXVjd1ZmNm9WUHRFUUhWWXFEVXRWRjhabkV1Um9X?= =?utf-8?B?eWt5dURrNk54M3lyRDc3NllDckVuM0gyRVBhdUFIOG11VW1YZGRCMDM1cDFU?= =?utf-8?B?RHlHKzVYbVlEYzh5QjdDOCtUQk1jZVdrMXFrZVRPNTJZdnNxeDUzS1N5WjYr?= =?utf-8?B?UGZHZEhrN1NWZ0FDdmxTYUlsSTFsSTFoMUVibHJla0FMeVk5OGpKcG5oMFRi?= =?utf-8?B?M0xXbGJOYU1xaVQ1YW8zZ2g3enROWmFjQkhDVWl0cGZlb203QWZwSXcyUjVt?= =?utf-8?B?OVRkbVVqRnVsT2NkdHRvY0hpMldKbWRCdE1BbUgvVi9OQi90S2VIRXIzK29C?= =?utf-8?B?WVBncUE1L3dhdFB4dlBqc0N5anNRZmFPQlpMS2pIRjJHMEF1cmROVEhsSkpK?= =?utf-8?B?VEdNNEhvOElKQm05NFFHU3ZtK05VYXUxcWtVcTlrZkNLQkpIdUpFSW80alpO?= =?utf-8?B?c2FSTy8xVVZTUUFvdjAzbVJmMmZsdHNHMXowQjkvR1lhZnowYmhZemlyUWNu?= =?utf-8?B?TnRQMjlNaEM4VnIwMWRtelJqQ3BXN0dCRkpqRXhPRC9tSWk0ME5lT1FpaE9k?= =?utf-8?B?MmdJdGJhem14YThrdE80a1JiV1VqZ0xpYzVyVHlxM0JzOFdTeE5COEpGL3pR?= =?utf-8?B?WDI1cWFyMjFERWt0a3lTa3ZYUFRGMEpaUUw1UjEvL3VSVmhjUmYwSVhDVDRu?= =?utf-8?B?THcxUTl3VVVFcUNvcVpEWWxSSVV6QmtEM2FKY1pQOURyNHdybVllMktadWI3?= =?utf-8?B?YTYwQUM2dlJ6eEhvdk40RzFNbFpCSm13TjdaQ0gxVXJVdXVEVmFBeEtMRGpl?= =?utf-8?B?d3dTZVE5Vkg5ejJZS25CZ0o3QzRUa1FoYVUvMU5abml6MHNrbUZrUzJCMDN2?= =?utf-8?B?TUppUHVxbVpYcXUxMVVYV0FjTzR0SlZpS0NZUlVQeHJhMkMwZDM0TWZSckdC?= =?utf-8?B?RE8xUzBucTM2Y05ZZ3pxRDQzRkg4c0pOTGlEdm05Rlo5ZXpwVW9ZWHFlb29L?= =?utf-8?B?RXE3TTVhV1AxaVVtRE5uTjBNbFVyR0gzd3hMYkkyK2dndnlBbS9LQlNiMHNW?= =?utf-8?B?RDl1KzJCaEdNYUkvdXBCb09FaFBrNUovdlpwZHJzNVlQeTlmQTlSTlNZQU05?= =?utf-8?B?cnMvSGJhVDR2RDlaV0R0ajdPb1BPVWRoS2VHMFMyVXk3NERPa2svMWtmSk03?= =?utf-8?B?LzQ2WGY3aFFqS2NrbG9TWjJISlVJVXZpU3JFVFJseG1EY09EUlMwVVFjVEY0?= =?utf-8?B?ZEpqMTZRd1hvVzM0YjArZHg3bVdPdTc3Qm1QUHErb0krNElQU2VtclI1bGRk?= =?utf-8?B?Z0JGcTlleHpGL2hBbTRmekxaMXk5Zzl3blJEU1BBZUxrOTMzOTNPQjh4SDhZ?= =?utf-8?B?dVJXc0V0bW43QkwvdVlSWWhYTCttdWlaOFZXeVM0S3RlZVhJNTMya1ZMSVg1?= =?utf-8?B?SVVEbUE5MDU0SmpJK0w1YVFraXVocm5HVUp3M3hPdVVlSU0raElyRlpmdHl6?= =?utf-8?B?dG1vSjBGSlNTMkRDYXhuSlpNa0w4Y001UmN3dlR0TEU2NkJpTlBWOEtvWXhF?= =?utf-8?B?cUxoZGhqaEY4M2s2U3VpS2RFWmhqQys2dEZPekpVUmRKemFLTmJLenFhS211?= =?utf-8?B?b3JDclR5Mlk3UHRxbUg5cmdLNk1qN1BBQnl4S0tMM0hVazc5Lzk3bXFRdTht?= =?utf-8?B?UGhoSG9FRVdDR0xwVFU3OFdKaTVDdTFEZlZwUXlCMXMwMEdjMGtkbmk2bU9G?= =?utf-8?B?WWQ0L0Z4aGdSNll0QU4ra3dSMzZJQ2NLS29EQldtZUpUckdUeDZCYXEwNnQ4?= =?utf-8?B?bisweTZYSjh0aHIzV1pDcExNWWNZQk9oTHBTeVVaOW9SRnhqSWNpMTIwYTBI?= =?utf-8?B?QVVmMW92ZjBrVklaUHlvQXNCeFhnQU9WU2RCYUdyL1l4MEx6T1lHaWw5YXlF?= =?utf-8?B?UXJIaDdBcHh1QmZMNXk4YnpRTXBIeGFlSWgyTXJCUDZMc3NxZzBlazlVNVhS?= =?utf-8?Q?2763DttHFAHCUjc3mMI7fjk=3D?= X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d58e385-88d6-4551-5bcf-08d9cc0225d0 X-MS-Exchange-CrossTenant-AuthSource: CO6PR11MB5602.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Dec 2021 02:06:26.1360 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sjz06WVqFQaRT9AHauv9Tro1Ok45bl/nPWqNA5xAPZngIqEiXbd1KebrpRrHkJpo6Bf4abESh0V8uvyzT3mMaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR11MB5633 X-Proofpoint-ORIG-GUID: jSNGtLVrBQek2sigcLIYx6Xqi3a4QlOu X-Proofpoint-GUID: GT_GPp6RXcgIqN-OhsC_2dAkk_h1KtuL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2021-12-30_09,2021-12-30_02,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=999 phishscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2112310009 Content-Transfer-Encoding: base64 X-MIME-Autoconverted: from 8bit to base64 by mx0a-0064b401.pphosted.com id 1BV1qB9H029599 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 31 Dec 2021 02:06:34 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/160083 T24gMTIvMzAvMjEgMTE6MDMgUE0sIE1pdHRhbCwgQW51aiB3cm90ZToNCj4gT24gVHVlLCAy MDIxLTEyLTI4IGF0IDE3OjQ0IC0wODAwLCBDaGVuIFFpIHdyb3RlOg0KPj4gQmFja3BvcnQg cGF0Y2hlcyB0byBmaXggdGhlIGZvbGxvd2luZyBDVkVzOg0KPj4gQ1ZFLTIwMjEtNDIzNzMN Cj4+IENWRS0yMDIxLTQyMzc4DQo+PiBDVkUtMjAyMS00MjM3OQ0KPj4gQ1ZFLTIwMjEtNDIz ODANCj4+IENWRS0yMDIxLTQyMzgxDQo+PiBDVkUtMjAyMS00MjM4Mg0KPj4gQ1ZFLTIwMjEt NDIzODMNCj4+IENWRS0yMDIxLTQyMzg0DQo+PiBDVkUtMjAyMS00MjM4NQ0KPj4gQ1ZFLTIw MjEtNDIzODYNCj4gVGhpcyBpcyBjYXVzaW5nIHRoZXNlIHB0ZXN0cyB0byBmYWlsOg0KPg0K PiAnYnVzeWJveCc6IFsnYXdrX2JyZWFrJywgJ2F3a19jb250aW51ZSddLA0KPg0KPiBQbGVh c2Ugc2VlOg0KPg0KPiBxZW11eDg2LTY0Og0KPiBodHRwczovL2F1dG9idWlsZGVyLnlvY3Rv cHJvamVjdC5vcmcvdHlwaG9vbi8jL2J1aWxkZXJzLzgxL2J1aWxkcy8yOTQ3DQo+DQo+IHFl bXVhcm02NDoNCj4gaHR0cHM6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnL3R5cGhv b24vIy9idWlsZGVycy84Mi9idWlsZHMvMjY3NA0KPg0KPiBUaGFua3MsDQo+DQo+IEFudWoN Cg0KU29ycnkuIEkgZGlkbid0IHJlYWxpemUgdGhhdCBydW4tcHRlc3Qgd291bGQgc3RpbGwg Z2l2ZSBhIDAgZXhpdCBzdGF0dXMgDQp3aGVuIHNvbWUgdGVzdHMgZmFpbGVkLiBJJ2xsIHJl LXdvcmsgb24gdGhpcyBwYXRjaC4NCg0KUmVnYXJkcywNCg0KUWkNCg0KDQo+PiBTaWduZWQt b2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+DQo+PiAtLS0NCj4+ICDC oC4uLi9idXN5Ym94L2J1c3lib3gvMDAwMS1hd2stZml4LUNWRXMucGF0Y2jCoMKgIHwgMzE0 Mg0KPj4gKysrKysrKysrKysrKysrKysNCj4+ICDCoC4uLi8wMDAyLW1hbi1maXgtc2VnZmF1 bHQtaW4tbWFuLTEucGF0Y2jCoMKgwqDCoMKgIHzCoMKgIDMwICsNCj4+ICDCoG1ldGEvcmVj aXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMzLjIuYmLCoMKgIHzCoMKgwqAgMiArDQo+ PiAgwqAzIGZpbGVzIGNoYW5nZWQsIDMxNzQgaW5zZXJ0aW9ucygrKQ0KPj4gIMKgY3JlYXRl IG1vZGUgMTAwNjQ0IG1ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWF3 ay1maXgtDQo+PiBDVkVzLnBhdGNoDQo+PiAgwqBjcmVhdGUgbW9kZSAxMDA2NDQgbWV0YS9y ZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDItbWFuLWZpeC0NCj4+IHNlZ2ZhdWx0 LWluLW1hbi0xLnBhdGNoDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1jb3Jl L2J1c3lib3gvYnVzeWJveC8wMDAxLWF3ay1maXgtDQo+PiBDVkVzLnBhdGNoIGIvbWV0YS9y ZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtYXdrLWZpeC0NCj4+IENWRXMucGF0 Y2gNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwLi45Yjcw NzljYmU5DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9tZXRhL3JlY2lwZXMtY29yZS9i dXN5Ym94L2J1c3lib3gvMDAwMS1hd2stZml4LUNWRXMucGF0Y2gNCj4+IEBAIC0wLDAgKzEs MzE0MiBAQA0KPj4gK0Zyb20gMGIzMTM5NDNlZTVjNjYxMWQzMmM1NWMzZDE2MDg0ZDA0YTRj MmE2ZCBNb24gU2VwIDE3IDAwOjAwOjAwDQo+PiAyMDAxDQo+PiArRnJvbTogQ2hlbiBRaSA8 UWkuQ2hlbkB3aW5kcml2ZXIuY29tPg0KPj4gK0RhdGU6IE1vbiwgMjcgRGVjIDIwMjEgMjE6 MjU6MzMgLTA4MDANCj4+ICtTdWJqZWN0OiBbUEFUQ0hdIGF3azogZml4IENWRXMNCj4+ICsN Cj4+ICtUaGUgYXdrIENWRXMgaXMgaGFyZCB0byBiZSBzZXBhcmF0ZWQsIHRodXMgd2UgdXNl IHRoZSBmb2xsb3dpbmcNCj4+IG1ldGhvZA0KPj4gK3RvIGZvcm1hdCB0aGUgY3VycmVudCBw YXRjaC4NCj4+ICtnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IDFfMzNfMS4uMV8zNF8xIC0t IGVkaXRvcnMvYXdrLmMgfCBnaXQgYW0gLQ0KPj4gMw0KPj4gKw0KPj4gK0NWRTogQ1ZFLTIw MjEtNDIzNzgNCj4+ICtDVkU6IENWRS0yMDIxLTQyMzc5DQo+PiArQ1ZFOiBDVkUtMjAyMS00 MjM4MA0KPj4gK0NWRTogQ1ZFLTIwMjEtNDIzODENCj4+ICtDVkU6IENWRS0yMDIxLTQyMzgy DQo+PiArQ1ZFOiBDVkUtMjAyMS00MjM4Mw0KPj4gK0NWRTogQ1ZFLTIwMjEtNDIzODQNCj4+ ICtDVkU6IENWRS0yMDIxLTQyMzg1DQo+PiArQ1ZFOiBDVkUtMjAyMS00MjM4Ng0KPj4gKw0K Pj4gK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQNCj4+ICsNCj4+ICtTaWduZWQtb2ZmLWJ5 OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+DQo+PiArLS0tDQo+PiArIGVkaXRv cnMvYXdrLmMgfCAyMDYwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0NCj4+IC0tLQ0KPj4gKyAxIGZpbGUgY2hhbmdlZCwgMTIwNCBpbnNlcnRpb25z KCspLCA4NTYgZGVsZXRpb25zKC0pDQo+PiArDQo+PiArZGlmZiAtLWdpdCBhL2VkaXRvcnMv YXdrLmMgYi9lZGl0b3JzL2F3ay5jDQo+PiAraW5kZXggMmMxNWY5ZTRlLi5mNjMxNGFjNzIg MTAwNjQ0DQo+PiArLS0tIGEvZWRpdG9ycy9hd2suYw0KPj4gKysrKyBiL2VkaXRvcnMvYXdr LmMNCj4+ICtAQCAtNjYsNiArNjYsOCBAQA0KPj4gKyAjZW5kaWYNCj4+ICsgI2lmbmRlZiBk ZWJ1Z19wcmludGZfcGFyc2UNCj4+ICsgIyBkZWZpbmUgZGVidWdfcHJpbnRmX3BhcnNlKC4u LikgKGZwcmludGYoc3RkZXJyLCBfX1ZBX0FSR1NfXykpDQo+PiArKyNlbHNlDQo+PiArKyMg ZGVmaW5lIGRlYnVnX3BhcnNlX3ByaW50X3RjKC4uLikgKCh2b2lkKTApDQo+PiArICNlbmRp Zg0KPj4gKw0KPj4gKw0KPj4gK0BAIC05MSw3ICs5Myw2IEBAIGVudW0gew0KPj4gKyB9Ow0K Pj4gKw0KPj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBNQVhWQVJGTVTCoMKgwqDCoMKgwqAg MjQwDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoE1JTk5WQkxPQ0vCoMKgwqDCoMKgIDY0 DQo+PiArDQo+PiArIC8qIHZhcmlhYmxlIGZsYWdzICovDQo+PiArICNkZWZpbmXCoMKgwqDC oMKgwqDCoFZGX05VTUJFUsKgwqDCoMKgwqDCoCAweDAwMDHCoMKgLyogMSA9IHByaW1hcnkg dHlwZSBpcyBudW1iZXINCj4+ICovDQo+PiArQEAgLTEwMSw3ICsxMDIsNyBAQCBlbnVtIHsN Cj4+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKgVkZfVVNFUsKgwqDCoMKgwqDCoMKgwqAgMHgw MjAwwqDCoC8qIDEgPSB1c2VyIGlucHV0IChtYXkgYmUNCj4+IG51bWVyaWMgc3RyaW5nKSAq Lw0KPj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBWRl9TUEVDSUFMwqDCoMKgwqDCoCAweDA0 MDDCoMKgLyogMSA9IHJlcXVpcmVzIGV4dHJhDQo+PiBoYW5kbGluZyB3aGVuIGNoYW5nZWQg Ki8NCj4+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKgVkZfV0FMS8KgwqDCoMKgwqDCoMKgwqAg MHgwODAwwqDCoC8qIDEgPSB2YXJpYWJsZSBoYXMgYWxsb2MnZA0KPj4geC53YWxrZXIgbGlz dCAqLw0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBWRl9GU1RSwqDCoMKgwqDCoMKgwqDC oCAweDEwMDDCoMKgLyogMSA9IHZhcjo6c3RyaW5nIHBvaW50cyB0bw0KPj4gZnN0cmluZyBi dWZmZXIgKi8NCj4+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVkZfRlNUUsKgwqDCoMKgwqDC oMKgwqAgMHgxMDAwwqDCoC8qIDEgPSBkb24ndCBmcmVlKCkNCj4+IHZhcjo6c3RyaW5nIChu b3QgbWFsbG9jZWQsIG9yIGlzIG93bmVkIGJ5IHNvbWV0aGluZyBlbHNlKSAqLw0KPj4gKyAj ZGVmaW5lwqDCoMKgwqDCoMKgwqBWRl9DSElMRMKgwqDCoMKgwqDCoMKgIDB4MjAwMMKgwqAv KiAxID0gZnVuY3Rpb24gYXJnOyB4LnBhcmVudA0KPj4gcG9pbnRzIHRvIHNvdXJjZSAqLw0K Pj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBWRl9ESVJUWcKgwqDCoMKgwqDCoMKgIDB4NDAw MMKgwqAvKiAxID0gdmFyaWFibGUgd2FzIHNldA0KPj4gZXhwbGljaXRseSAqLw0KPj4gKw0K Pj4gK0BAIC0xMTgsOCArMTE5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgd2Fsa2VyX2xpc3Qgew0K Pj4gKyAvKiBWYXJpYWJsZSAqLw0KPj4gKyB0eXBlZGVmIHN0cnVjdCB2YXJfcyB7DQo+PiAr wqDCoMKgwqDCoMKgwqB1bnNpZ25lZCB0eXBlO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyog ZmxhZ3MgKi8NCj4+ICstwqDCoMKgwqDCoMKgZG91YmxlIG51bWJlcjsNCj4+ICvCoMKgwqDC oMKgwqDCoGNoYXIgKnN0cmluZzsNCj4+ICsrwqDCoMKgwqDCoMKgZG91YmxlIG51bWJlcjsN Cj4+ICvCoMKgwqDCoMKgwqDCoHVuaW9uIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpbnQgYWlkeDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGZ1bmMg YXJnIGlkeCAoZm9yDQo+PiBjb21waWxhdGlvbiBzdGFnZSkgKi8NCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGhhc2hfcyAqYXJyYXk7wqAgLyogYXJyYXkg cHRyICovDQo+PiArQEAgLTEzOCw2ICsxMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBjaGFpbl9z IHsNCj4+ICsgLyogRnVuY3Rpb24gKi8NCj4+ICsgdHlwZWRlZiBzdHJ1Y3QgZnVuY19zIHsN Cj4+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIG5hcmdzOw0KPj4gKyvCoMKgwqDCoMKgwqBz bWFsbGludCBkZWZpbmVkOw0KPj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNoYWluX3MgYm9k eTsNCj4+ICsgfSBmdW5jOw0KPj4gKw0KPj4gK0BAIC0xNzcsNyArMTc5LDcgQEAgdHlwZWRl ZiBzdHJ1Y3Qgbm9kZV9zIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qgbm9kZV9zICpuOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZh ciAqdjsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgYWlkeDsNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKm5ld19wcm9nbmFtZTsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKm5ld19wcm9nbmFt ZTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZWdleF90ICpyZTsNCj4+ ICvCoMKgwqDCoMKgwqDCoH0gbDsNCj4+ICvCoMKgwqDCoMKgwqDCoHVuaW9uIHsNCj4+ICtA QCAtMTkwLDkxICsxOTIsMTIwIEBAIHR5cGVkZWYgc3RydWN0IG5vZGVfcyB7DQo+PiArwqDC oMKgwqDCoMKgwqB9IGE7DQo+PiArIH0gbm9kZTsNCj4+ICsNCj4+ICstLyogQmxvY2sgb2Yg dGVtcG9yYXJ5IHZhcmlhYmxlcyAqLw0KPj4gKy10eXBlZGVmIHN0cnVjdCBudmJsb2NrX3Mg ew0KPj4gKy3CoMKgwqDCoMKgwqBpbnQgc2l6ZTsNCj4+ICstwqDCoMKgwqDCoMKgdmFyICpw b3M7DQo+PiArLcKgwqDCoMKgwqDCoHN0cnVjdCBudmJsb2NrX3MgKnByZXY7DQo+PiArLcKg wqDCoMKgwqDCoHN0cnVjdCBudmJsb2NrX3MgKm5leHQ7DQo+PiArLcKgwqDCoMKgwqDCoHZh ciBudltdOw0KPj4gKy19IG52YmxvY2s7DQo+PiArLQ0KPj4gKyB0eXBlZGVmIHN0cnVjdCB0 c3BsaXR0ZXJfcyB7DQo+PiArwqDCoMKgwqDCoMKgwqBub2RlIG47DQo+PiArwqDCoMKgwqDC oMKgwqByZWdleF90IHJlWzJdOw0KPj4gKyB9IHRzcGxpdHRlcjsNCj4+ICsNCj4+ICsgLyog c2ltcGxlIHRva2VuIGNsYXNzZXMgKi8NCj4+ICstLyogT3JkZXIgYW5kIGhleCB2YWx1ZXMg YXJlIHZlcnkgaW1wb3J0YW50ISEhwqAgU2VlIG5leHRfdG9rZW4oKSAqLw0KPj4gKy0jZGVm aW5lwqDCoMKgwqDCoMKgwqBUQ19TRVFTVEFSVMKgwqDCoMKgwqAoMSA8PCAwKcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogKCAqLw0KPj4gKy0jZGVmaW5lwqDCoMKgwqDC oMKgwqBUQ19TRVFURVJNwqDCoMKgwqDCoMKgKDEgPDwgMSnCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qICkgKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfUkVH RVhQwqDCoMKgwqDCoMKgwqAoMSA8PCAyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogLy4uLi8gKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfT1VUUkRSwqDC oMKgwqDCoMKgwqAoMSA8PCAzKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog fCA+ID4+ICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1VPUFBPU1TCoMKgwqDC oMKgwqAoMSA8PCA0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdW5hcnkN Cj4+IHBvc3RmaXggb3BlcmF0b3IgKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENf VU9QUFJFMcKgwqDCoMKgwqDCoCgxIDw8IDUpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiB1bmFyeQ0KPj4gcHJlZml4IG9wZXJhdG9yICovDQo+PiArLSNkZWZpbmXCoMKg wqDCoMKgwqDCoFRDX0JJTk9QWMKgwqDCoMKgwqDCoMKgKDEgPDwgNinCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIHR3by1vcG5kDQo+PiBvcGVyYXRvciAqLw0KPj4gKy0j ZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19JTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoMSA8PCA3 KQ0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19DT01NQcKgwqDCoMKgwqDCoMKgwqAo MSA8PCA4KQ0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19QSVBFwqDCoMKgwqDCoMKg wqDCoMKgKDEgPDwgOSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGlucHV0 DQo+PiByZWRpcmVjdGlvbiBwaXBlICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRD X1VPUFBSRTLCoMKgwqDCoMKgwqAoMSA8PCAxMCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiB1bmFyeQ0KPj4gcHJlZml4IG9wZXJhdG9yICovDQo+PiArLSNkZWZpbmXCoMKg wqDCoMKgwqDCoFRDX0FSUlRFUk3CoMKgwqDCoMKgwqAoMSA8PCAxMSnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAvKiBdICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRD X0dSUFNUQVJUwqDCoMKgwqDCoCgxIDw8IDEyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIHsgKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfR1JQVEVSTcKgwqDC oMKgwqDCoCgxIDw8IDEzKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIH0gKi8N Cj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfU0VNSUNPTMKgwqDCoMKgwqDCoCgxIDw8 IDE0KQ0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19ORVdMSU5FwqDCoMKgwqDCoMKg KDEgPDwgMTUpDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NUQVRYwqDCoMKgwqDC oMKgwqDCoCgxIDw8IDE2KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGN0bA0K Pj4gc3RhdGVtZW50IChmb3IsIG5leHQuLi4pICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKg wqDCoFRDX1dISUxFwqDCoMKgwqDCoMKgwqDCoCgxIDw8IDE3KQ0KPj4gKy0jZGVmaW5lwqDC oMKgwqDCoMKgwqBUQ19FTFNFwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMTgpDQo+PiArLSNk ZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0JVSUxUSU7CoMKgwqDCoMKgwqAoMSA8PCAxOSkNCj4+ ICsrLyogb3JkZXIgYW5kIGhleCB2YWx1ZXMgYXJlIHZlcnkgaW1wb3J0YW50ISEhwqAgU2Vl IG5leHRfdG9rZW4oKSAqLw0KPj4gKysjZGVmaW5lIFRDX0xQQVJFTsKgwqDCoMKgwqDCoCAo MSA8PCAwKcKgwqDCoMKgwqDCoMKgIC8qICggKi8NCj4+ICsrI2RlZmluZSBUQ19SUEFSRU7C oMKgwqDCoMKgwqAgKDEgPDwgMSnCoMKgwqDCoMKgwqDCoCAvKiApICovDQo+PiArKyNkZWZp bmUgVENfUkVHRVhQwqDCoMKgwqDCoMKgICgxIDw8IDIpwqDCoMKgwqDCoMKgwqAgLyogLy4u Li8gKi8NCj4+ICsrI2RlZmluZSBUQ19PVVRSRFLCoMKgwqDCoMKgwqAgKDEgPDwgMynCoMKg wqDCoMKgwqDCoCAvKiB8ID4gPj4gKi8NCj4+ICsrI2RlZmluZSBUQ19VT1BQT1NUwqDCoMKg wqDCoCAoMSA8PCA0KcKgwqDCoMKgwqDCoMKgIC8qIHVuYXJ5IHBvc3RmaXggb3BlcmF0b3IN Cj4+ICsrIC0tICovDQo+PiArKyNkZWZpbmUgVENfVU9QUFJFMcKgwqDCoMKgwqAgKDEgPDwg NSnCoMKgwqDCoMKgwqDCoCAvKiB1bmFyeSBwcmVmaXggb3BlcmF0b3IgKysNCj4+IC0tICQg Ki8NCj4+ICsrI2RlZmluZSBUQ19CSU5PUFjCoMKgwqDCoMKgwqAgKDEgPDwgNinCoMKgwqDC oMKgwqDCoCAvKiB0d28tb3BuZCBvcGVyYXRvciAqLw0KPj4gKysjZGVmaW5lIFRDX0lOwqDC oMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgNynCoMKgwqDCoMKgwqDCoCAvKiAnaW4nICovDQo+ PiArKyNkZWZpbmUgVENfQ09NTUHCoMKgwqDCoMKgwqDCoCAoMSA8PCA4KcKgwqDCoMKgwqDC oMKgIC8qICwgKi8NCj4+ICsrI2RlZmluZSBUQ19QSVBFwqDCoMKgwqDCoMKgwqDCoCAoMSA8 PCA5KcKgwqDCoMKgwqDCoMKgIC8qIGlucHV0IHJlZGlyZWN0aW9uIHBpcGUgfA0KPj4gKi8N Cj4+ICsrI2RlZmluZSBUQ19VT1BQUkUywqDCoMKgwqDCoCAoMSA8PCAxMCnCoMKgwqDCoMKg wqAgLyogdW5hcnkgcHJlZml4IG9wZXJhdG9yICsNCj4+IC0gISAqLw0KPj4gKysjZGVmaW5l IFRDX0FSUlRFUk3CoMKgwqDCoMKgICgxIDw8IDExKcKgwqDCoMKgwqDCoCAvKiBdICovDQo+ PiArKyNkZWZpbmUgVENfTEJSQUNFwqDCoMKgwqDCoMKgICgxIDw8IDEyKcKgwqDCoMKgwqDC oCAvKiB7ICovDQo+PiArKyNkZWZpbmUgVENfUkJSQUNFwqDCoMKgwqDCoMKgICgxIDw8IDEz KcKgwqDCoMKgwqDCoCAvKiB9ICovDQo+PiArKyNkZWZpbmUgVENfU0VNSUNPTMKgwqDCoMKg wqAgKDEgPDwgMTQpwqDCoMKgwqDCoMKgIC8qIDsgKi8NCj4+ICsrI2RlZmluZSBUQ19ORVdM SU5FwqDCoMKgwqDCoCAoMSA8PCAxNSkNCj4+ICsrI2RlZmluZSBUQ19TVEFUWMKgwqDCoMKg wqDCoMKgICgxIDw8IDE2KcKgwqDCoMKgwqDCoCAvKiBjdGwgc3RhdGVtZW50IChmb3IsDQo+ PiBuZXh0Li4uKSAqLw0KPj4gKysjZGVmaW5lIFRDX1dISUxFwqDCoMKgwqDCoMKgwqAgKDEg PDwgMTcpwqDCoMKgwqDCoMKgIC8qICd3aGlsZScgKi8NCj4+ICsrI2RlZmluZSBUQ19FTFNF wqDCoMKgwqDCoMKgwqDCoCAoMSA8PCAxOCnCoMKgwqDCoMKgwqAgLyogJ2Vsc2UnICovDQo+ PiArKyNkZWZpbmUgVENfQlVJTFRJTsKgwqDCoMKgwqAgKDEgPDwgMTkpDQo+PiArIC8qIFRo aXMgY29zdHMgfjUwIGJ5dGVzIG9mIGNvZGUuDQo+PiArwqAgKiBBIHNlcGFyYXRlIGNsYXNz IHRvIHN1cHBvcnQgZGVwcmVjYXRlZCAibGVuZ3RoIiBmb3JtLiBJZiB3ZQ0KPj4gZG9uJ3Qg bmVlZCB0aGF0DQo+PiArwqAgKiAoaS5lLiBpZiB3ZSBkZW1hbmQgdGhhdCBvbmx5ICJsZW5n dGgoKSIgd2l0aCAoKSBpcyB2YWxpZCksIHRoZW4NCj4+IFRDX0xFTkdUSA0KPj4gK8KgICog Y2FuIGJlIG1lcmdlZCB3aXRoIFRDX0JVSUxUSU46DQo+PiArwqAgKi8NCj4+ICstI2RlZmlu ZcKgwqDCoMKgwqDCoMKgVENfTEVOR1RIwqDCoMKgwqDCoMKgwqAoMSA8PCAyMCkNCj4+ICst I2RlZmluZcKgwqDCoMKgwqDCoMKgVENfR0VUTElORcKgwqDCoMKgwqDCoCgxIDw8IDIxKQ0K Pj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19GVU5DREVDTMKgwqDCoMKgwqAoMSA8PCAy MinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiAnZnVuY3Rpb24nDQo+PiAnZnVu YycgKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfQkVHSU7CoMKgwqDCoMKgwqDC oMKgKDEgPDwgMjMpDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0VORMKgwqDCoMKg wqDCoMKgwqDCoMKgKDEgPDwgMjQpDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0VP RsKgwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMjUpDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKg wqDCoFRDX1ZBUklBQkxFwqDCoMKgwqDCoCgxIDw8IDI2KQ0KPj4gKy0jZGVmaW5lwqDCoMKg wqDCoMKgwqBUQ19BUlJBWcKgwqDCoMKgwqDCoMKgwqAoMSA8PCAyNykNCj4+ICstI2RlZmlu ZcKgwqDCoMKgwqDCoMKgVENfRlVOQ1RJT07CoMKgwqDCoMKgKDEgPDwgMjgpDQo+PiArLSNk ZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1NUUklOR8KgwqDCoMKgwqDCoMKgKDEgPDwgMjkpDQo+ PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX05VTUJFUsKgwqDCoMKgwqDCoMKgKDEgPDwg MzApDQo+PiArLQ0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19VT1BQUkXCoCAoVENf VU9QUFJFMSB8IFRDX1VPUFBSRTIpDQo+PiArLQ0KPj4gKy0vKiBjb21iaW5lZCB0b2tlbiBj bGFzc2VzICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX0JJTk9QwqDCoCAoVENf QklOT1BYIHwgVENfQ09NTUEgfCBUQ19QSVBFIHwgVENfSU4pDQo+PiArLS8vI2RlZmluZcKg wqDCoMKgwqBUQ19VTkFSWU9QIChUQ19VT1BQUkUgfCBUQ19VT1BQT1NUKQ0KPj4gKy0jZGVm aW5lwqDCoMKgwqDCoMKgwqBUQ19PUEVSQU5EIChUQ19WQVJJQUJMRSB8IFRDX0FSUkFZIHwg VENfRlVOQ1RJT04gXA0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCBUQ19CVUlMVElOIHwgVENfTEVOR1RIIHwgVENfR0VUTElORSBcDQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX1NFUVNUQVJUIHwgVENfU1RS SU5HIHwgVENfTlVNQkVSKQ0KPj4gKy0NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENf U1RBVEVNTlQgKFRDX1NUQVRYIHwgVENfV0hJTEUpDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKg wqDCoFRDX09QVEVSTcKgIChUQ19TRU1JQ09MIHwgVENfTkVXTElORSkNCj4+ICsrI2RlZmlu ZSBUQ19MRU5HVEjCoMKgwqDCoMKgwqAgKDEgPDwgMjApwqDCoMKgwqDCoMKgIC8qICdsZW5n dGgnICovDQo+PiArKyNkZWZpbmUgVENfR0VUTElORcKgwqDCoMKgwqAgKDEgPDwgMjEpwqDC oMKgwqDCoMKgIC8qICdnZXRsaW5lJyAqLw0KPj4gKysjZGVmaW5lIFRDX0ZVTkNERUNMwqDC oMKgwqAgKDEgPDwgMjIpwqDCoMKgwqDCoMKgIC8qICdmdW5jdGlvbicgJ2Z1bmMnICovDQo+ PiArKyNkZWZpbmUgVENfQkVHSU7CoMKgwqDCoMKgwqDCoCAoMSA8PCAyMynCoMKgwqDCoMKg wqAgLyogJ0JFR0lOJyAqLw0KPj4gKysjZGVmaW5lIFRDX0VORMKgwqDCoMKgwqDCoMKgwqDC oCAoMSA8PCAyNCnCoMKgwqDCoMKgwqAgLyogJ0VORCcgKi8NCj4+ICsrI2RlZmluZSBUQ19F T0bCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMjUpDQo+PiArKyNkZWZpbmUgVENfVkFSSUFC TEXCoMKgwqDCoCAoMSA8PCAyNinCoMKgwqDCoMKgwqAgLyogbmFtZSAqLw0KPj4gKysjZGVm aW5lIFRDX0FSUkFZwqDCoMKgwqDCoMKgwqAgKDEgPDwgMjcpwqDCoMKgwqDCoMKgIC8qIG5h bWVbICovDQo+PiArKyNkZWZpbmUgVENfRlVOQ1RJT07CoMKgwqDCoCAoMSA8PCAyOCnCoMKg wqDCoMKgwqAgLyogbmFtZSggKi8NCj4+ICsrI2RlZmluZSBUQ19TVFJJTkfCoMKgwqDCoMKg wqAgKDEgPDwgMjkpwqDCoMKgwqDCoMKgIC8qICIuLi4iICovDQo+PiArKyNkZWZpbmUgVENf TlVNQkVSwqDCoMKgwqDCoMKgICgxIDw8IDMwKQ0KPj4gKysNCj4+ICsrI2lmbmRlZiBkZWJ1 Z19wYXJzZV9wcmludF90Yw0KPj4gKytzdGF0aWMgdm9pZCBkZWJ1Z19wYXJzZV9wcmludF90 Yyh1aW50MzJfdCBuKQ0KPj4gKyt7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfTFBB UkVOwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBMUEFSRU4iwqAgKTsNCj4+ICsrwqDCoMKg wqDCoMKgaWYgKG4gJiBUQ19SUEFSRU7CoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFJQQVJF TiLCoCApOw0KPj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1JFR0VYUMKgICkgZGVidWdf cHJpbnRmX3BhcnNlKCIgUkVHRVhQIsKgICk7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuICYg VENfT1VUUkRSwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBPVVRSRFIiwqAgKTsNCj4+ICsr wqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19VT1BQT1NUICkgZGVidWdfcHJpbnRmX3BhcnNlKCIg VU9QUE9TVCIgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19VT1BQUkUxICkgZGVi dWdfcHJpbnRmX3BhcnNlKCIgVU9QUFJFMSIgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4g JiBUQ19CSU5PUFjCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEJJTk9QWCLCoCApOw0KPj4g KyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX0lOwqDCoMKgwqDCoCApIGRlYnVnX3ByaW50Zl9w YXJzZSgiIElOIsKgwqDCoMKgwqAgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19D T01NQcKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBDT01NQSLCoMKgICk7DQo+PiArK8Kg wqDCoMKgwqDCoGlmIChuICYgVENfUElQRcKgwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgi IFBJUEUiwqDCoMKgICk7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfVU9QUFJFMiAp IGRlYnVnX3ByaW50Zl9wYXJzZSgiIFVPUFBSRTIiICk7DQo+PiArK8KgwqDCoMKgwqDCoGlm IChuICYgVENfQVJSVEVSTSApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEFSUlRFUk0iICk7DQo+ PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfTEJSQUNFwqAgKSBkZWJ1Z19wcmludGZfcGFy c2UoIiBMQlJBQ0UiwqAgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19SQlJBQ0XC oCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFJCUkFDRSLCoCApOw0KPj4gKyvCoMKgwqDCoMKg wqBpZiAobiAmIFRDX1NFTUlDT0wgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBTRU1JQ09MIiAp Ow0KPj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX05FV0xJTkUgKSBkZWJ1Z19wcmludGZf cGFyc2UoIiBORVdMSU5FIiApOw0KPj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1NUQVRY wqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFNUQVRYIsKgwqAgKTsNCj4+ICsrwqDCoMKg wqDCoMKgaWYgKG4gJiBUQ19XSElMRcKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBXSElM RSLCoMKgICk7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfRUxTRcKgwqDCoCApIGRl YnVnX3ByaW50Zl9wYXJzZSgiIEVMU0UiwqDCoMKgICk7DQo+PiArK8KgwqDCoMKgwqDCoGlm IChuICYgVENfQlVJTFRJTiApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEJVSUxUSU4iICk7DQo+ PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfTEVOR1RIwqAgKSBkZWJ1Z19wcmludGZfcGFy c2UoIiBMRU5HVEgiwqAgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19HRVRMSU5F ICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgR0VUTElORSIgKTsNCj4+ICsrwqDCoMKgwqDCoMKg aWYgKG4gJiBUQ19GVU5DREVDTCkgZGVidWdfcHJpbnRmX3BhcnNlKCIgRlVOQ0RFQ0wiKTsN Cj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19CRUdJTsKgwqAgKSBkZWJ1Z19wcmludGZf cGFyc2UoIiBCRUdJTiLCoMKgICk7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuICYgVENfRU5E wqDCoMKgwqAgKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBFTkQiwqDCoMKgwqAgKTsNCj4+ICsr wqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19FT0bCoMKgwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJz ZSgiIEVPRiLCoMKgwqDCoCApOw0KPj4gKyvCoMKgwqDCoMKgwqBpZiAobiAmIFRDX1ZBUklB QkxFKSBkZWJ1Z19wcmludGZfcGFyc2UoIiBWQVJJQUJMRSIpOw0KPj4gKyvCoMKgwqDCoMKg wqBpZiAobiAmIFRDX0FSUkFZwqDCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIEFSUkFZIsKg wqAgKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19GVU5DVElPTikgZGVidWdfcHJp bnRmX3BhcnNlKCIgRlVOQ1RJT04iKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKG4gJiBUQ19T VFJJTkfCoCApIGRlYnVnX3ByaW50Zl9wYXJzZSgiIFNUUklORyLCoCApOw0KPj4gKyvCoMKg wqDCoMKgwqBpZiAobiAmIFRDX05VTUJFUsKgICkgZGVidWdfcHJpbnRmX3BhcnNlKCIgTlVN QkVSIsKgICk7DQo+PiArK30NCj4+ICsrI2VuZGlmDQo+PiArKw0KPj4gKysvKiBjb21iaW5l ZCB0b2tlbiBjbGFzc2VzICgidG9rZW4gW2NsYXNzXSBzZXRzIikgKi8NCj4+ICsrI2RlZmlu ZcKgwqDCoMKgwqDCoMKgVFNfVU9QUFJFwqDCoCAoVENfVU9QUFJFMSB8IFRDX1VPUFBSRTIp DQo+PiArKw0KPj4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19CSU5PUMKgwqDCoCAoVENf QklOT1BYIHwgVENfQ09NTUEgfCBUQ19QSVBFIHwgVENfSU4pDQo+PiArKy8vI2RlZmluZSBU U19VTkFSWU9QIChUU19VT1BQUkUgfCBUQ19VT1BQT1NUKQ0KPj4gKysjZGVmaW5lwqDCoMKg wqDCoMKgwqBUU19PUEVSQU5EwqAgKFRDX1ZBUklBQkxFIHwgVENfQVJSQVkgfCBUQ19GVU5D VElPTiBcDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg VENfQlVJTFRJTiB8IFRDX0xFTkdUSCB8IFRDX0dFVExJTkUgXA0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IFRDX0xQQVJFTiB8IFRDX1NUUklORyB8 IFRDX05VTUJFUikNCj4+ICsrDQo+PiArKyNkZWZpbmXCoMKgwqDCoMKgwqDCoFRTX0xWQUxV RcKgwqAgKFRDX1ZBUklBQkxFIHwgVENfQVJSQVkpDQo+PiArKyNkZWZpbmXCoMKgwqDCoMKg wqDCoFRTX1NUQVRFTU5UIChUQ19TVEFUWCB8IFRDX1dISUxFKQ0KPj4gKw0KPj4gKyAvKiB3 b3JkIHRva2VucywgY2Fubm90IG1lYW4gc29tZXRoaW5nIGVsc2UgaWYgbm90IGV4cGVjdGVk ICovDQo+PiArLSNkZWZpbmXCoMKgwqDCoMKgwqDCoFRDX1dPUkTCoMKgwqAgKFRDX0lOIHwg VENfU1RBVEVNTlQgfCBUQ19FTFNFIFwNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgVENfQlVJTFRJTiB8IFRDX0xFTkdUSCB8IFRDX0dFVExJTkUgXA0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19GVU5DREVD TCB8IFRDX0JFR0lOIHwgVENfRU5EKQ0KPj4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBUU19X T1JEwqDCoMKgwqAgKFRDX0lOIHwgVFNfU1RBVEVNTlQgfCBUQ19FTFNFIFwNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19CVUlMVElOIHwgVENf TEVOR1RIIHwgVENfR0VUTElORSBcDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgVENfRlVOQ0RFQ0wgfCBUQ19CRUdJTiB8IFRDX0VORCkNCj4+ICsN Cj4+ICsgLyogZGlzY2FyZCBuZXdsaW5lcyBhZnRlciB0aGVzZSAqLw0KPj4gKy0jZGVmaW5l wqDCoMKgwqDCoMKgwqBUQ19OT1RFUk3CoCAoVENfQ09NTUEgfCBUQ19HUlBTVEFSVCB8IFRD X0dSUFRFUk0gXA0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCBUQ19CSU5PUCB8IFRDX09QVEVSTSkNCj4+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNf Tk9URVJNwqDCoCAoVFNfQklOT1AgfCBUQ19DT01NQSB8IFRDX0xCUkFDRSB8DQo+PiBUQ19S QlJBQ0UgXA0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IFRDX1NFTUlDT0wgfCBUQ19ORVdMSU5FKQ0KPj4gKw0KPj4gKyAvKiB3aGF0IGNhbiBleHBy ZXNzaW9uIGJlZ2luIHdpdGggKi8NCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfT1BT RVHCoMKgIChUQ19PUEVSQU5EIHwgVENfVU9QUFJFIHwgVENfUkVHRVhQKQ0KPj4gKysjZGVm aW5lwqDCoMKgwqDCoMKgwqBUU19PUFNFUcKgwqDCoCAoVFNfT1BFUkFORCB8IFRTX1VPUFBS RSB8IFRDX1JFR0VYUCkNCj4+ICsgLyogd2hhdCBjYW4gZ3JvdXAgYmVnaW4gd2l0aCAqLw0K Pj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBUQ19HUlBTRVHCoCAoVENfT1BTRVEgfCBUQ19P UFRFUk0gfCBUQ19TVEFURU1OVCB8DQo+PiBUQ19HUlBTVEFSVCkNCj4+ICsrI2RlZmluZcKg wqDCoMKgwqDCoMKgVFNfR1JQU0VRwqDCoCAoVFNfT1BTRVEgfCBUU19TVEFURU1OVCBcDQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgVENfU0VNSUNP TCB8IFRDX05FV0xJTkUgfCBUQ19MQlJBQ0UpDQo+PiArDQo+PiArLS8qIGlmIHByZXZpb3Vz IHRva2VuIGNsYXNzIGlzIENPTkNBVDEgYW5kIG5leHQgaXMgQ09OQ0FUMiwNCj4+IGNvbmNh dGVuYXRpb24gKi8NCj4+ICsrLyogaWYgcHJldmlvdXMgdG9rZW4gY2xhc3MgaXMgQ09OQ0FU X0wgYW5kIG5leHQgaXMgQ09OQ0FUX1IsDQo+PiBjb25jYXRlbmF0aW9uICovDQo+PiArIC8q IG9wZXJhdG9yIGlzIGluc2VydGVkIGJldHdlZW4gdGhlbSAqLw0KPj4gKy0jZGVmaW5lwqDC oMKgwqDCoMKgwqBUQ19DT05DQVQxIChUQ19WQVJJQUJMRSB8IFRDX0FSUlRFUk0gfCBUQ19T RVFURVJNIFwNCj4+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfQ09OQ0FUX0wgKFRDX1ZB UklBQkxFIHwgVENfQVJSVEVSTSB8IFRDX1JQQVJFTiBcDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBUQ19TVFJJTkcgfCBUQ19OVU1CRVIgfCBUQ19V T1BQT1NUIFwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 IFRDX0xFTkdUSCkNCj4+ICstI2RlZmluZcKgwqDCoMKgwqDCoMKgVENfQ09OQ0FUMiAoVENf T1BFUkFORCB8IFRDX1VPUFBSRSkNCj4+ICsrI2RlZmluZcKgwqDCoMKgwqDCoMKgVFNfQ09O Q0FUX1IgKFRTX09QRVJBTkQgfCBUU19VT1BQUkUpDQo+PiArDQo+PiArICNkZWZpbmXCoMKg wqDCoMKgwqDCoE9GX1JFUzHCoMKgwqDCoCAweDAxMDAwMA0KPj4gKyAjZGVmaW5lwqDCoMKg wqDCoMKgwqBPRl9SRVMywqDCoMKgwqAgMHgwMjAwMDANCj4+ICtAQCAtMjg0LDEzICszMTUs MTIgQEAgdHlwZWRlZiBzdHJ1Y3QgdHNwbGl0dGVyX3Mgew0KPj4gKyAjZGVmaW5lwqDCoMKg wqDCoMKgwqBPRl9DSEVDS0VEwqAgMHgyMDAwMDANCj4+ICsgI2RlZmluZcKgwqDCoMKgwqDC oMKgT0ZfUkVRVUlSRUQgMHg0MDAwMDANCj4+ICsNCj4+ICstDQo+PiArIC8qIGNvbWJpbmVk IG9wZXJhdG9yIGZsYWdzICovDQo+PiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoHh4wqDCoMKg wqDCoMKgMA0KPj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqB4VsKgwqDCoMKgwqDCoE9GX1JF UzINCj4+ICsgI2RlZmluZcKgwqDCoMKgwqDCoMKgeFPCoMKgwqDCoMKgwqAoT0ZfUkVTMiB8 IE9GX1NUUjIpDQo+PiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoFZ4wqDCoMKgwqDCoMKgT0Zf UkVTMQ0KPj4gKy0jZGVmaW5lwqDCoMKgwqDCoMKgwqBSeMKgwqDCoMKgwqDCoChPRl9SRVMx IHwgT0ZfTlVNMSB8IE9GX1JFUVVJUkVEKQ0KPj4gKysjZGVmaW5lwqDCoMKgwqDCoMKgwqBS eMKgwqDCoMKgwqDCoE9GX1JFUVVJUkVEDQo+PiArICNkZWZpbmXCoMKgwqDCoMKgwqDCoFZW wqDCoMKgwqDCoMKgKE9GX1JFUzEgfCBPRl9SRVMyKQ0KPj4gKyAjZGVmaW5lwqDCoMKgwqDC oMKgwqBOeMKgwqDCoMKgwqDCoChPRl9SRVMxIHwgT0ZfTlVNMSkNCj4+ICsgI2RlZmluZcKg wqDCoMKgwqDCoMKgTlbCoMKgwqDCoMKgwqAoT0ZfUkVTMSB8IE9GX05VTTEgfCBPRl9SRVMy KQ0KPj4gK0BAIC0zMDIsOCArMzMyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgdHNwbGl0dGVyX3Mg ew0KPj4gKyAjZGVmaW5lwqDCoMKgwqDCoMKgwqBPUE5NQVNLwqDCoCAweDAwN0YNCj4+ICsN Cj4+ICsgLyogb3BlcmF0b3IgcHJpb3JpdHkgaXMgYSBoaWdoZXN0IGJ5dGUgKGV2ZW46IHIt PmwsIG9kZDogbC0+cg0KPj4gZ3JvdXBpbmcpDQo+PiArLSAqIEZvciBidWlsdGlucyBpdCBo YXMgZGlmZmVyZW50IG1lYW5pbmc6IG4gbiBzMyBzMiBzMSB2MyB2MiB2MSwNCj4+ICstICog biAtIG1pbi4gbnVtYmVyIG9mIGFyZ3MsIHZOIC0gcmVzb2x2ZSBOdGggYXJnIHRvIHZhciwg c04gLQ0KPj4gcmVzb2x2ZSB0byBzdHJpbmcNCj4+ICsrICogKGZvciBidWlsdGlucyBpdCBo YXMgZGlmZmVyZW50IG1lYW5pbmcpDQo+PiArwqAgKi8NCj4+ICsgI3VuZGVmIFANCj4+ICsg I3VuZGVmIFBSSU1BU0sNCj4+ICtAQCAtMzEzLDEwICszNDIsOCBAQCB0eXBlZGVmIHN0cnVj dCB0c3BsaXR0ZXJfcyB7DQo+PiArICNkZWZpbmUgUFJJTUFTSzLCoCAweDdFMDAwMDAwDQo+ PiArDQo+PiArIC8qIE9wZXJhdGlvbiBjbGFzc2VzICovDQo+PiArLQ0KPj4gKyAjZGVmaW5l wqDCoMKgwqDCoMKgwqBTSElGVF9USUxfVEhJU8KgwqAweDA2MDANCj4+ICsgI2RlZmluZcKg wqDCoMKgwqDCoMKgUkVDVVJfRlJPTV9USElTwqAweDEwMDANCj4+ICstDQo+PiArIGVudW0g ew0KPj4gK8KgwqDCoMKgwqDCoMKgT0NfREVMRVRFID0gMHgwMTAwLMKgwqDCoMKgIE9DX0VY RUMgPSAweDAyMDAswqDCoMKgwqDCoMKgIE9DX05FV1NPVVJDRQ0KPj4gPSAweDAzMDAsDQo+ PiArwqDCoMKgwqDCoMKgwqBPQ19QUklOVCA9IDB4MDQwMCzCoMKgwqDCoMKgIE9DX1BSSU5U RiA9IDB4MDUwMCzCoMKgwqDCoCBPQ19XQUxLSU5JVCA9DQo+PiAweDA2MDAsDQo+PiArQEAg LTM1OCw4ICszODUsOCBAQCBlbnVtIHsNCj4+ICsgI2RlZmluZSBOVENDwqDCoMKgICdcMzc3 Jw0KPj4gKw0KPj4gKyBzdGF0aWMgY29uc3QgY2hhciB0b2tlbmxpc3RbXSBBTElHTjEgPQ0K Pj4gKy3CoMKgwqDCoMKgwqAiXDEoIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoNCj4+IFRDX1NFUVNUQVJUICovDQo+PiArLcKgwqDCoMKgwqDCoCJcMSkiwqDCoMKg wqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4gVENfU0VRVEVSTSAqLw0KPj4g KyvCoMKgwqDCoMKgwqAiXDEoIsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyoNCj4+IFRDX0xQQVJFTiAqLw0KPj4gKyvCoMKgwqDCoMKgwqAiXDEpIsKgwqDCoMKgwqDC oMKgwqAgTlRDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4+IFRDX1JQQVJFTiAqLw0KPj4gK8KgwqDC oMKgwqDCoMKgIlwxLyLCoMKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+ PiBUQ19SRUdFWFAgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCJcMj4+IsKgwqDCoMKgwqDCoMKg ICJcMT4iwqDCoMKgwqDCoMKgwqDCoCAiXDF8IsKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKg wqDCoMKgIC8qDQo+PiBUQ19PVVRSRFIgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCJcMisrIsKg wqDCoMKgwqDCoMKgICJcMi0tIsKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4+IFRDX1VPUFBPU1QgKi8NCj4+ICtAQCAt Mzc2LDggKzQwMyw4IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtdIEFMSUdOMSA9 DQo+PiArwqDCoMKgwqDCoMKgwqAiXDF8IsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLyoNCj4+IFRDX1BJUEUgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCJcMSsiwqDCoMKg wqDCoMKgwqDCoCAiXDEtIsKgwqDCoMKgwqDCoMKgwqAgIlwxISLCoMKgwqDCoMKgwqAgTlRD wqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4gVENfVU9QUFJFMiAqLw0KPj4gK8KgwqDCoMKgwqDC oMKgIlwxXSLCoMKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+PiBUQ19B UlJURVJNICovDQo+PiArLcKgwqDCoMKgwqDCoCJcMXsiwqDCoMKgwqDCoMKgwqDCoCBOVEPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKg0KPj4gVENfR1JQU1RBUlQgKi8NCj4+ICstwqDCoMKgwqDCoMKg IlwxfSLCoMKgwqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+PiBUQ19HUlBU RVJNICovDQo+PiArK8KgwqDCoMKgwqDCoCJcMXsiwqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKg0KPj4gVENfTEJSQUNFICovDQo+PiArK8KgwqDCoMKgwqDCoCJcMX0i wqDCoMKgwqDCoMKgwqDCoCBOVEPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPj4gVENfUkJSQUNFICov DQo+PiArwqDCoMKgwqDCoMKgwqAiXDE7IsKgwqDCoMKgwqDCoMKgwqAgTlRDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLyoNCj4+IFRDX1NFTUlDT0wgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCJcMVxuIsKg wqDCoMKgwqDCoMKgIE5UQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+PiBUQ19ORVdMSU5FICovDQo+ PiArwqDCoMKgwqDCoMKgwqAiXDJpZiLCoMKgwqDCoMKgwqDCoCAiXDJkbyLCoMKgwqDCoMKg wqDCoCAiXDNmb3IiwqDCoMKgwqAgIlw1YnJlYWsiwqDCoCAvKg0KPj4gVENfU1RBVFggKi8N Cj4+ICtAQCAtMzkxLDcgKzQxOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRva2VubGlzdFtd IEFMSUdOMSA9DQo+PiArwqDCoMKgwqDCoMKgwqAiXDVjbG9zZSLCoMKgwqDCoCAiXDZzeXN0 ZW0iwqDCoMKgICJcNmZmbHVzaCLCoCAiXDVhdGFuMiINCj4+ICvCoMKgwqDCoMKgwqDCoCJc M2NvcyLCoMKgwqDCoMKgwqAgIlwzZXhwIsKgwqDCoMKgwqDCoCAiXDNpbnQiwqDCoMKgwqAg IlwzbG9nIg0KPj4gK8KgwqDCoMKgwqDCoMKgIlw0cmFuZCLCoMKgwqDCoMKgICJcM3NpbiLC oMKgwqDCoMKgwqAgIlw0c3FydCLCoMKgwqAgIlw1c3JhbmQiDQo+PiArLcKgwqDCoMKgwqDC oCJcNmdlbnN1YiLCoMKgwqAgIlw0Z3N1YiLCoMKgwqDCoMKgICJcNWluZGV4IsKgwqDCoC8q ICJcNmxlbmd0aCIgd2FzDQo+PiBoZXJlICovDQo+PiArK8KgwqDCoMKgwqDCoCJcNmdlbnN1 YiLCoMKgwqAgIlw0Z3N1YiLCoMKgwqDCoMKgICJcNWluZGV4IsKgwqAgLyogIlw2bGVuZ3Ro IiB3YXMNCj4+IGhlcmUgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoCJcNW1hdGNoIsKgwqDCoMKg ICJcNXNwbGl0IsKgwqDCoMKgICJcN3NwcmludGYiICJcM3N1YiINCj4+ICvCoMKgwqDCoMKg wqDCoCJcNnN1YnN0ciLCoMKgwqAgIlw3c3lzdGltZSLCoMKgICJcMTBzdHJmdGltZSIgIlw2 bWt0aW1lIg0KPj4gK8KgwqDCoMKgwqDCoMKgIlw3dG9sb3dlciLCoMKgICJcN3RvdXBwZXIi wqDCoCBOVEMNCj4+ICtAQCAtNDAzLDI1ICs0MzAsMzIgQEAgc3RhdGljIGNvbnN0IGNoYXIg dG9rZW5saXN0W10gQUxJR04xID0NCj4+ICvCoMKgwqDCoMKgwqDCoC8qIGNvbXBpbGVyIGFk ZHMgdHJhaWxpbmcgIlwwIiAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgOw0KPj4gKw0KPj4gKy0j ZGVmaW5lIE9DX0LCoCBPQ19CVUlMVElODQo+PiArLQ0KPj4gKyBzdGF0aWMgY29uc3QgdWlu dDMyX3QgdG9rZW5pbmZvW10gQUxJR040ID0gew0KPj4gK8KgwqDCoMKgwqDCoMKgMCwNCj4+ ICvCoMKgwqDCoMKgwqDCoDAsDQo+PiArLcKgwqDCoMKgwqDCoE9DX1JFR0VYUCwNCj4+ICsr I2RlZmluZSBUSV9SRUdFWFAgT0NfUkVHRVhQDQo+PiArK8KgwqDCoMKgwqDCoFRJX1JFR0VY UCwNCj4+ICvCoMKgwqDCoMKgwqDCoHhTfCdhJyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHhTfCd3JyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhT fCd8JywNCj4+ICvCoMKgwqDCoMKgwqDCoE9DX1VOQVJZfHhWfFAoOSl8J3AnLMKgwqDCoCBP Q19VTkFSWXx4VnxQKDkpfCdtJywNCj4+ICstwqDCoMKgwqDCoMKgT0NfVU5BUll8eFZ8UCg5 KXwnUCcswqDCoMKgIE9DX1VOQVJZfHhWfFAoOSl8J00nLA0KPj4gT0NfRklFTER8eFZ8UCg1 KSwNCj4+ICsrI2RlZmluZSBUSV9QUkVJTkMgKE9DX1VOQVJZfHhWfFAoOSl8J1AnKQ0KPj4g KysjZGVmaW5lIFRJX1BSRURFQyAoT0NfVU5BUll8eFZ8UCg5KXwnTScpDQo+PiArK8KgwqDC oMKgwqDCoFRJX1BSRUlOQyzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRJX1BSRURF QywNCj4+IE9DX0ZJRUxEfHhWfFAoNSksDQo+PiArwqDCoMKgwqDCoMKgwqBPQ19DT01QQVJF fFZWfFAoMzkpfDUswqDCoCBPQ19NT1ZFfFZWfFAoNzQpLA0KPj4gT0NfUkVQTEFDRXxOVnxQ KDc0KXwnKycsIE9DX1JFUExBQ0V8TlZ8UCg3NCl8Jy0nLA0KPj4gK8KgwqDCoMKgwqDCoMKg T0NfUkVQTEFDRXxOVnxQKDc0KXwnKicsIE9DX1JFUExBQ0V8TlZ8UCg3NCl8Jy8nLA0KPj4g T0NfUkVQTEFDRXxOVnxQKDc0KXwnJScsIE9DX1JFUExBQ0V8TlZ8UCg3NCl8JyYnLA0KPj4g K8KgwqDCoMKgwqDCoMKgT0NfQklOQVJZfE5WfFAoMjkpfCcrJyzCoCBPQ19CSU5BUll8TlZ8 UCgyOSl8Jy0nLA0KPj4gT0NfUkVQTEFDRXxOVnxQKDc0KXwnJicsIE9DX0JJTkFSWXxOVnxQ KDE1KXwnJicsDQo+PiArwqDCoMKgwqDCoMKgwqBPQ19CSU5BUll8TlZ8UCgyNSl8Jy8nLMKg IE9DX0JJTkFSWXxOVnxQKDI1KXwnJScsDQo+PiBPQ19CSU5BUll8TlZ8UCgxNSl8JyYnLMKg IE9DX0JJTkFSWXxOVnxQKDI1KXwnKicsDQo+PiArwqDCoMKgwqDCoMKgwqBPQ19DT01QQVJF fFZWfFAoMzkpfDQswqDCoCBPQ19DT01QQVJFfFZWfFAoMzkpfDMsDQo+PiBPQ19DT01QQVJF fFZWfFAoMzkpfDAswqDCoCBPQ19DT01QQVJFfFZWfFAoMzkpfDEsDQo+PiArLcKgwqDCoMKg wqDCoE9DX0NPTVBBUkV8VlZ8UCgzOSl8MizCoMKgIE9DX01BVENIfFN4fFAoNDUpfCchJywN Cj4+IE9DX01BVENIfFN4fFAoNDUpfCd+JyzCoMKgIE9DX0xBTkR8Vnh8UCg1NSksDQo+PiAr LcKgwqDCoMKgwqDCoE9DX0xPUnxWeHxQKDU5KSzCoMKgwqDCoMKgwqDCoMKgIE9DX1RFUk5B Ull8Vnh8UCg2NCl8Jz8nLA0KPj4gT0NfQ09MT058eHh8UCg2Nyl8JzonLA0KPj4gKy3CoMKg wqDCoMKgwqBPQ19JTnxTVnxQKDQ5KSwgLyogVENfSU4gKi8NCj4+ICstwqDCoMKgwqDCoMKg T0NfQ09NTUF8U1N8UCg4MCksDQo+PiArLcKgwqDCoMKgwqDCoE9DX1BHRVRMSU5FfFNWfFAo MzcpLA0KPj4gKysjZGVmaW5lIFRJX0xFU1PCoMKgwqDCoCAoT0NfQ09NUEFSRXxWVnxQKDM5 KXwyKQ0KPj4gKyvCoMKgwqDCoMKgwqBUSV9MRVNTLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIE9DX01BVENIfFN4fFAoNDUpfCchJywNCj4+IE9DX01BVENIfFN4fFAoNDUp fCd+JyzCoMKgIE9DX0xBTkR8Vnh8UCg1NSksDQo+PiArKyNkZWZpbmUgVElfVEVSTkFSWcKg IChPQ19URVJOQVJZfFZ4fFAoNjQpfCc/JykNCj4+ICsrI2RlZmluZSBUSV9DT0xPTsKgwqDC oCAoT0NfQ09MT058eHh8UCg2Nyl8JzonKQ0KPj4gKyvCoMKgwqDCoMKgwqBPQ19MT1J8Vnh8 UCg1OSkswqDCoMKgwqDCoMKgwqDCoCBUSV9URVJOQVJZLMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFRJX0NPTE9OLA0KPj4gKysjZGVmaW5lIFRJX0lOwqDCoMKgwqDCoMKgIChPQ19J TnxTVnxQKDQ5KSkNCj4+ICsrwqDCoMKgwqDCoMKgVElfSU4sDQo+PiArKyNkZWZpbmUgVElf Q09NTUHCoMKgwqAgKE9DX0NPTU1BfFNTfFAoODApKQ0KPj4gKyvCoMKgwqDCoMKgwqBUSV9D T01NQSwNCj4+ICsrI2RlZmluZSBUSV9QR0VUTElORSAoT0NfUEdFVExJTkV8U1Z8UCgzNykp DQo+PiArK8KgwqDCoMKgwqDCoFRJX1BHRVRMSU5FLA0KPj4gK8KgwqDCoMKgwqDCoMKgT0Nf VU5BUll8eFZ8UCgxOSl8JysnLMKgwqAgT0NfVU5BUll8eFZ8UCgxOSl8Jy0nLA0KPj4gT0Nf VU5BUll8eFZ8UCgxOSl8JyEnLA0KPj4gK8KgwqDCoMKgwqDCoMKgMCwgLyogXSAqLw0KPj4g K8KgwqDCoMKgwqDCoMKgMCwNCj4+ICtAQCAtNDM0LDIwICs0NjgsNDUgQEAgc3RhdGljIGNv bnN0IHVpbnQzMl90IHRva2VuaW5mb1tdIEFMSUdONCA9IHsNCj4+ICvCoMKgwqDCoMKgwqDC oE9DX1JFVFVSTnxWeCwgT0NfRVhJVHxOeCwNCj4+ICvCoMKgwqDCoMKgwqDCoFNUX1dISUxF LA0KPj4gK8KgwqDCoMKgwqDCoMKgMCwgLyogZWxzZSAqLw0KPj4gKy3CoMKgwqDCoMKgwqBP Q19CfEJfYW58UCgweDgzKSwgT0NfQnxCX2NvfFAoMHg0MSksIE9DX0J8Ql9sc3xQKDB4ODMp LA0KPj4gT0NfQnxCX29yfFAoMHg4MyksDQo+PiArLcKgwqDCoMKgwqDCoE9DX0J8Ql9yc3xQ KDB4ODMpLCBPQ19CfEJfeG98UCgweDgzKSwNCj4+ICstwqDCoMKgwqDCoMKgT0NfRkJMVElO fFN4fEZfY2wsIE9DX0ZCTFRJTnxTeHxGX3N5LCBPQ19GQkxUSU58U3h8Rl9mZiwNCj4+IE9D X0J8Ql9hMnxQKDB4ODMpLA0KPj4gKy3CoMKgwqDCoMKgwqBPQ19GQkxUSU58Tnh8Rl9jbywg T0NfRkJMVElOfE54fEZfZXgsIE9DX0ZCTFRJTnxOeHxGX2luLA0KPj4gT0NfRkJMVElOfE54 fEZfbGcsDQo+PiArLcKgwqDCoMKgwqDCoE9DX0ZCTFRJTnxGX3JuLMKgwqDCoCBPQ19GQkxU SU58Tnh8Rl9zaSwgT0NfRkJMVElOfE54fEZfc3EsDQo+PiBPQ19GQkxUSU58Tnh8Rl9zciwN Cj4+ICstwqDCoMKgwqDCoMKgT0NfQnxCX2dlfFAoMHhkNiksIE9DX0J8Ql9nc3xQKDB4YjYp LCBPQ19CfEJfaXh8UCgweDliKSwgLyoNCj4+IE9DX0ZCTFRJTnxTeHxGX2xlLCB3YXMgaGVy ZSAqLw0KPj4gKy3CoMKgwqDCoMKgwqBPQ19CfEJfbWF8UCgweDg5KSwgT0NfQnxCX3NwfFAo MHg4YiksIE9DX1NQUklOVEYsDQo+PiBPQ19CfEJfc3V8UCgweGI2KSwNCj4+ICstwqDCoMKg wqDCoMKgT0NfQnxCX3NzfFAoMHg4ZiksIE9DX0ZCTFRJTnxGX3RpLMKgwqDCoCBPQ19CfEJf dGl8UCgweDBiKSwNCj4+IE9DX0J8Ql9tdHxQKDB4MGIpLA0KPj4gKy3CoMKgwqDCoMKgwqBP Q19CfEJfbG98UCgweDQ5KSwgT0NfQnxCX3VwfFAoMHg0OSksDQo+PiArLcKgwqDCoMKgwqDC oE9DX0ZCTFRJTnxTeHxGX2xlLCAvKiBUQ19MRU5HVEggKi8NCj4+ICstwqDCoMKgwqDCoMKg T0NfR0VUTElORXxTVnxQKDApLA0KPj4gKy3CoMKgwqDCoMKgwqAwLMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDAsDQo+PiArLcKgwqDCoMKgwqDCoDAsDQo+PiArLcKgwqDC oMKgwqDCoDAgLyogVENfRU5EICovDQo+PiArKy8vIE9DX0IncyBhcmUgYnVpbHRpbnMgd2l0 aCBlbmZvcmNlZCBtaW5pbXVtIG51bWJlciBvZiBhcmd1bWVudHMNCj4+ICh0d28gdXBwZXIg Yml0cykuDQo+PiArKy8vwqAgSGlnaGVzdCBieXRlIGJpdCBwYXR0ZXJuOiBubiBzM3MyczEg djN2MnYxDQo+PiArKy8vwqAgbm4gLSBtaW4uIG51bWJlciBvZiBhcmdzLCBzTiAtIHJlc29s dmUgTnRoIGFyZyB0byBzdHJpbmcsIHZOIC0NCj4+IHJlc29sdmUgdG8gdmFyDQo+PiArKy8v IE9DX0YncyBhcmUgYnVpbHRpbnMgd2l0aCB6ZXJvIG9yIG9uZSBhcmd1bWVudC4NCj4+ICsr Ly/CoCB8Unh8IGVuZm9yY2VzIHRoYXQgYXJnIGlzIHByZXNlbnQgZm9yOiBzeXN0ZW0sIGNs b3NlLCBjb3MsIHNpbiwNCj4+IGV4cCwgaW50LCBsb2csIHNxcnQNCj4+ICsrLy/CoCBDaGVj ayBmb3Igbm8gYXJncyBpcyBwcmVzZW50IGluIGJ1aWx0aW5zJyBjb2RlIChub3QgaW4gdGhp cw0KPj4gdGFibGUpOiByYW5kLCBzeXN0aW1lDQo+PiArKy8vwqAgSGF2ZSBvbmUgX29wdGlv bmFsXyBhcmc6IGZmbHVzaCwgc3JhbmQsIGxlbmd0aA0KPj4gKysjZGVmaW5lIE9DX0LCoMKg IE9DX0JVSUxUSU4NCj4+ICsrI2RlZmluZSBPQ19GwqDCoCBPQ19GQkxUSU4NCj4+ICsrI2Rl ZmluZSBBMcKgwqDCoMKgIFAoMHg0MCkgLypvbmUgYXJnKi8NCj4+ICsrI2RlZmluZSBBMsKg wqDCoMKgIFAoMHg4MCkgLyp0d28gYXJncyovDQo+PiArKyNkZWZpbmUgQTPCoMKgwqDCoCBQ KDB4YzApIC8qdGhyZWUgYXJncyovDQo+PiArKyNkZWZpbmUgX192wqDCoMKgIFAoMSkNCj4+ ICsrI2RlZmluZSBfdnbCoMKgwqAgUCgzKQ0KPj4gKysjZGVmaW5lIF9fc19fdiBQKDkpDQo+ PiArKyNkZWZpbmUgX19zX3Z2IFAoMHgwYikNCj4+ICsrI2RlZmluZSBfX3N2dnYgUCgweDBm KQ0KPj4gKysjZGVmaW5lIF9zc192diBQKDB4MWIpDQo+PiArKyNkZWZpbmUgX3NfdnZfIFAo MHgxNikNCj4+ICsrI2RlZmluZSBzc192dl8gUCgweDM2KQ0KPj4gKyvCoMKgwqDCoMKgwqBP Q19CfEJfYW58X3Z2fEEyLMKgwqAgT0NfQnxCX2NvfF9fdnxBMSzCoMKgIE9DX0J8Ql9sc3xf dnZ8QTIsDQo+PiBPQ19CfEJfb3J8X3Z2fEEyLMKgwqAgLy8gYW5kwqDCoMKgIGNvbXBswqDC oCBsc2hpZnTCoMKgIG9yDQo+PiArK8KgwqDCoMKgwqDCoE9DX0J8Ql9yc3xfdnZ8QTIsDQo+ PiBPQ19CfEJfeG98X3Z2fEEyLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBy c2hpZnQNCj4+IHhvcg0KPj4gKyvCoMKgwqDCoMKgwqBPQ19GfEZfY2x8U3h8UngswqDCoMKg IE9DX0Z8Rl9zeXxTeHxSeCzCoMKgwqAgT0NfRnxGX2ZmfFN4LA0KPj4gT0NfQnxCX2EyfF92 dnxBMizCoMKgIC8vIGNsb3NlwqAgc3lzdGVtwqAgZmZsdXNowqDCoCBhdGFuMg0KPj4gKyvC oMKgwqDCoMKgwqBPQ19GfEZfY298Tnh8UngswqDCoMKgIE9DX0Z8Rl9leHxOeHxSeCzCoMKg wqAgT0NfRnxGX2lufE54fFJ4LA0KPj4gT0NfRnxGX2xnfE54fFJ4LMKgwqDCoCAvLyBjb3PC oMKgwqAgZXhwwqDCoMKgwqAgaW50wqDCoMKgwqDCoCBsb2cNCj4+ICsrwqDCoMKgwqDCoMKg T0NfRnxGX3JuLMKgwqDCoMKgwqDCoMKgwqDCoCBPQ19GfEZfc2l8Tnh8UngswqDCoMKgIE9D X0Z8Rl9zcXxOeHxSeCwNCj4+IE9DX0Z8Rl9zcnxOeCzCoMKgwqDCoMKgwqAgLy8gcmFuZMKg wqAgc2luwqDCoMKgwqAgc3FydMKgwqDCoMKgIHNyYW5kDQo+PiArK8KgwqDCoMKgwqDCoE9D X0J8Ql9nZXxfc192dl98QTMsT0NfQnxCX2dzfHNzX3Z2X3xBMixPQ19CfEJfaXh8X3NzX3Z2 fEEyLA0KPj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBnZW5z dWIgZ3N1YsKgwqDCoCBpbmRleMKgIC8qbGVuZ3RoIHdhcyBoZXJlKi8NCj4+ICsrwqDCoMKg wqDCoMKgT0NfQnxCX21hfF9fc19fdnxBMixPQ19CfEJfc3B8X19zX3Z2fEEyLE9DX1NQUklO VEYsDQo+PiBPQ19CfEJfc3V8c3NfdnZffEEyLC8vIG1hdGNowqAgc3BsaXTCoMKgIHNwcmlu dGbCoCBzdWINCj4+ICsrwqDCoMKgwqDCoMKgT0NfQnxCX3NzfF9fc3Z2dnxBMixPQ19GfEZf dGkswqDCoMKgwqDCoMKgwqDCoMKgIE9DX0J8Ql90aXxfX3NfdnYsDQo+PiBPQ19CfEJfbXR8 X19zX3Z2LMKgwqAgLy8gc3Vic3RyIHN5c3RpbWUgc3RyZnRpbWUgbWt0aW1lDQo+PiArK8Kg wqDCoMKgwqDCoE9DX0J8Ql9sb3xfX3NfX3Z8QTEsT0NfQnxCX3VwfF9fc19fdnxBMSwNCj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gdG9sb3dlciB0b3Vw cGVyDQo+PiArK8KgwqDCoMKgwqDCoE9DX0Z8Rl9sZXxTeCzCoMKgIC8vIGxlbmd0aA0KPj4g KyvCoMKgwqDCoMKgwqBPQ19HRVRMSU5FfFNWLMKgIC8vIGdldGxpbmUNCj4+ICsrwqDCoMKg wqDCoMKgMCwgMCwgLy8gZnVuYyBmdW5jdGlvbg0KPj4gKyvCoMKgwqDCoMKgwqAwLCAvLyBC RUdJTg0KPj4gKyvCoMKgwqDCoMKgwqAwwqAgLy8gRU5EDQo+PiArKyN1bmRlZiBBMQ0KPj4g KysjdW5kZWYgQTINCj4+ICsrI3VuZGVmIEEzDQo+PiArKyN1bmRlZiBPQ19CDQo+PiArKyN1 bmRlZiBPQ19GDQo+PiArIH07DQo+PiArDQo+PiArIC8qIGludGVybmFsIHZhcmlhYmxlIG5h bWVzIGFuZCB0aGVpciBpbml0aWFsIHZhbHVlc8KgwqDCoMKgwqDCoCAqLw0KPj4gK0BAIC00 ODgsMjEgKzU0NywyOSBAQCBzdHJ1Y3QgZ2xvYmFscyB7DQo+PiArwqDCoMKgwqDCoMKgwqBj aGFpbiAqc2VxOw0KPj4gK8KgwqDCoMKgwqDCoMKgbm9kZSAqYnJlYWtfcHRyLCAqY29udGlu dWVfcHRyOw0KPj4gK8KgwqDCoMKgwqDCoMKgcnN0cmVhbSAqaUY7DQo+PiArLcKgwqDCoMKg wqDCoHhoYXNoICp2aGFzaCwgKmFoYXNoLCAqZmRoYXNoLCAqZm5oYXNoOw0KPj4gKyvCoMKg wqDCoMKgwqB4aGFzaCAqYWhhc2g7wqAgLyogYXJndW1lbnQgbmFtZXMsIHVzZWQgb25seSB3 aGlsZSBwYXJzaW5nDQo+PiBmdW5jdGlvbiBib2RpZXMgKi8NCj4+ICsrwqDCoMKgwqDCoMKg eGhhc2ggKmZuaGFzaDsgLyogZnVuY3Rpb24gbmFtZXMsIHVzZWQgb25seSBpbiBwYXJzaW5n IHN0YWdlDQo+PiAqLw0KPj4gKyvCoMKgwqDCoMKgwqB4aGFzaCAqdmhhc2g7wqAgLyogdmFy aWFibGVzIGFuZCBhcnJheXMgKi8NCj4+ICsrwqDCoMKgwqDCoMKgLy94aGFzaCAqZmRoYXNo OyAvKiBmaWxlIG9iamVjdHMsIHVzZWQgb25seSBpbiBleGVjdXRpb24NCj4+IHN0YWdlICov DQo+PiArK8KgwqDCoMKgwqDCoC8vd2UgYXJlIHJldXNpbmcgYWhhc2ggYXMgZmRoYXNoLCB2 aWEgZGVmaW5lIChzZWUgbGF0ZXIpDQo+PiArwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpn X3Byb2duYW1lOw0KPj4gK8KgwqDCoMKgwqDCoMKgaW50IGdfbGluZW5vOw0KPj4gK8KgwqDC oMKgwqDCoMKgaW50IG5maWVsZHM7DQo+PiArwqDCoMKgwqDCoMKgwqBpbnQgbWF4ZmllbGRz OyAvKiB1c2VkIGluIGZzcmVhbGxvYygpIG9ubHkgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoHZh ciAqRmllbGRzOw0KPj4gKy3CoMKgwqDCoMKgwqBudmJsb2NrICpnX2NiOw0KPj4gK8KgwqDC oMKgwqDCoMKgY2hhciAqZ19wb3M7DQo+PiArLcKgwqDCoMKgwqDCoGNoYXIgKmdfYnVmOw0K Pj4gKyvCoMKgwqDCoMKgwqBjaGFyIGdfc2F2ZWRfY2g7DQo+PiArwqDCoMKgwqDCoMKgwqBz bWFsbGludCBpY2FzZTsNCj4+ICvCoMKgwqDCoMKgwqDCoHNtYWxsaW50IGV4aXRpbmc7DQo+ PiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBuZXh0cmVjOw0KPj4gK8KgwqDCoMKgwqDCoMKg c21hbGxpbnQgbmV4dGZpbGU7DQo+PiArwqDCoMKgwqDCoMKgwqBzbWFsbGludCBpc19mMF9z cGxpdDsNCj4+ICvCoMKgwqDCoMKgwqDCoHNtYWxsaW50IHRfcm9sbGJhY2s7DQo+PiArKw0K Pj4gKyvCoMKgwqDCoMKgwqAvKiBmb3JtZXIgc3RhdGljcyBmcm9tIHZhcmlvdXMgZnVuY3Rp b25zICovDQo+PiArK8KgwqDCoMKgwqDCoHNtYWxsaW50IG5leHRfdG9rZW5fX2NvbmNhdF9p bnNlcnRlZDsNCj4+ICsrwqDCoMKgwqDCoMKgdWludDMyX3QgbmV4dF90b2tlbl9fc2F2ZV90 Y2xhc3M7DQo+PiArK8KgwqDCoMKgwqDCoHVpbnQzMl90IG5leHRfdG9rZW5fX3NhdmVfaW5m bzsNCj4+ICsgfTsNCj4+ICsgc3RydWN0IGdsb2JhbHMyIHsNCj4+ICvCoMKgwqDCoMKgwqDC oHVpbnQzMl90IHRfaW5mbzsgLyogb2Z0ZW4gdXNlZCAqLw0KPj4gK0BAIC01MTUsMzIgKzU4 MiwzNSBAQCBzdHJ1Y3QgZ2xvYmFsczIgew0KPj4gK8KgwqDCoMKgwqDCoMKgLyogZm9ybWVy IHN0YXRpY3MgZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyAqLw0KPj4gK8KgwqDCoMKgwqDCoMKg Y2hhciAqc3BsaXRfZjBfX2ZzdHJpbmdzOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqB1aW50 MzJfdCBuZXh0X3Rva2VuX19zYXZlX3RjbGFzczsNCj4+ICstwqDCoMKgwqDCoMKgdWludDMy X3QgbmV4dF90b2tlbl9fc2F2ZV9pbmZvOw0KPj4gKy3CoMKgwqDCoMKgwqB1aW50MzJfdCBu ZXh0X3Rva2VuX19sdGNsYXNzOw0KPj4gKy3CoMKgwqDCoMKgwqBzbWFsbGludCBuZXh0X3Rv a2VuX19jb25jYXRfaW5zZXJ0ZWQ7DQo+PiArLQ0KPj4gKy3CoMKgwqDCoMKgwqBzbWFsbGlu dCBuZXh0X2lucHV0X2ZpbGVfX2ZpbGVzX2hhcHBlbjsNCj4+ICvCoMKgwqDCoMKgwqDCoHJz dHJlYW0gbmV4dF9pbnB1dF9maWxlX19yc207DQo+PiArK8KgwqDCoMKgwqDCoHNtYWxsaW50 IG5leHRfaW5wdXRfZmlsZV9fZmlsZXNfaGFwcGVuOw0KPj4gKysNCj4+ICsrwqDCoMKgwqDC oMKgc21hbGx1aW50IGV4aXRjb2RlOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqB2YXIgKmV2 YWx1YXRlX19mbmFyZ3M7DQo+PiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBldmFsdWF0ZV9f c2VlZDsNCj4+ICsrwqDCoMKgwqDCoMKgdmFyICpldmFsdWF0ZV9fZm5hcmdzOw0KPj4gK8Kg wqDCoMKgwqDCoMKgcmVnZXhfdCBldmFsdWF0ZV9fc3JlZzsNCj4+ICsNCj4+ICstwqDCoMKg wqDCoMKgdmFyIHB0ZXN0X192Ow0KPj4gKyvCoMKgwqDCoMKgwqB2YXIgcHRlc3RfX3RtcHZh cjsNCj4+ICsrwqDCoMKgwqDCoMKgdmFyIGF3a19wcmludGZfX3RtcHZhcjsNCj4+ICsrwqDC oMKgwqDCoMKgdmFyIGFzX3JlZ2V4X190bXB2YXI7DQo+PiArK8KgwqDCoMKgwqDCoHZhciBl eGl0X190bXB2YXI7DQo+PiArK8KgwqDCoMKgwqDCoHZhciBtYWluX190bXB2YXI7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqB0c3BsaXR0ZXIgZXhlY19idWlsdGluX190c3BsOw0KPj4g Kw0KPj4gK8KgwqDCoMKgwqDCoMKgLyogYmlnZ2VzdCBhbmQgbGVhc3QgdXNlZCBtZW1iZXJz IGdvIGxhc3QgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoHRzcGxpdHRlciBmc3BsaXR0ZXIsIHJz cGxpdHRlcjsNCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoGNoYXIgZ19idWZbTUFYVkFSRk1U ICsgMV07DQo+PiArIH07DQo+PiArICNkZWZpbmUgRzEgKHB0cl90b19nbG9iYWxzWy0xXSkN Cj4+ICsgI2RlZmluZSBHICgqKHN0cnVjdCBnbG9iYWxzMiAqKXB0cl90b19nbG9iYWxzKQ0K Pj4gKyAvKiBGb3IgZGVidWcuIG5tIC0tc2l6ZS1zb3J0IGF3ay5vIHwgZ3JlcCAtdmkgJyBb dHJdICcgKi8NCj4+ICstLypjaGFyIEcxc2l6ZVtzaXplb2YoRzEpXTsgLSAweDc0ICovDQo+ PiArLS8qY2hhciBHc2l6ZVtzaXplb2YoRyldOyAtIDB4MWM0ICovDQo+PiArKy8vY2hhciBH MXNpemVbc2l6ZW9mKEcxKV07IC8vIDB4NzANCj4+ICsrLy9jaGFyIEdzaXplW3NpemVvZihH KV07IC8vIDB4MmY4DQo+PiArIC8qIFRyeWluZyB0byBrZWVwIG1vc3Qgb2YgbWVtYmVycyBh Y2Nlc3NpYmxlIHdpdGggc2hvcnQgb2Zmc2V0czogKi8NCj4+ICstLypjaGFyIEdvZnNfc2Vl ZFtvZmZzZXRvZihzdHJ1Y3QgZ2xvYmFsczIsIGV2YWx1YXRlX19zZWVkKV07IC0gMHg5MA0K Pj4gKi8NCj4+ICsrLy9jaGFyIEdvZnNfc2VlZFtvZmZzZXRvZihzdHJ1Y3QgZ2xvYmFsczIs IGV2YWx1YXRlX19zZWVkKV07IC8vDQo+PiAweDdjDQo+PiArICNkZWZpbmUgdF9kb3VibGXC oMKgwqDCoCAoRzEudF9kb3VibGXCoMKgwqAgKQ0KPj4gKyAjZGVmaW5lIGJlZ2luc2VxwqDC oMKgwqAgKEcxLmJlZ2luc2VxwqDCoMKgICkNCj4+ICsgI2RlZmluZSBtYWluc2VxwqDCoMKg wqDCoCAoRzEubWFpbnNlccKgwqDCoMKgICkNCj4+ICtAQCAtNTQ5LDE4ICs2MTksMjAgQEAg c3RydWN0IGdsb2JhbHMyIHsNCj4+ICsgI2RlZmluZSBicmVha19wdHLCoMKgwqAgKEcxLmJy ZWFrX3B0csKgwqAgKQ0KPj4gKyAjZGVmaW5lIGNvbnRpbnVlX3B0ciAoRzEuY29udGludWVf cHRyKQ0KPj4gKyAjZGVmaW5lIGlGwqDCoMKgwqDCoMKgwqDCoMKgwqAgKEcxLmlGwqDCoMKg wqDCoMKgwqDCoMKgICkNCj4+ICstI2RlZmluZSB2aGFzaMKgwqDCoMKgwqDCoMKgIChHMS52 aGFzaMKgwqDCoMKgwqDCoCApDQo+PiArICNkZWZpbmUgYWhhc2jCoMKgwqDCoMKgwqDCoCAo RzEuYWhhc2jCoMKgwqDCoMKgwqAgKQ0KPj4gKy0jZGVmaW5lIGZkaGFzaMKgwqDCoMKgwqDC oCAoRzEuZmRoYXNowqDCoMKgwqDCoCApDQo+PiArICNkZWZpbmUgZm5oYXNowqDCoMKgwqDC oMKgIChHMS5mbmhhc2jCoMKgwqDCoMKgICkNCj4+ICsrI2RlZmluZSB2aGFzaMKgwqDCoMKg wqDCoMKgIChHMS52aGFzaMKgwqDCoMKgwqDCoCApDQo+PiArKyNkZWZpbmUgZmRoYXNowqDC oMKgwqDCoMKgIGFoYXNoDQo+PiArKy8vXl5eXl5eXl5eXl5eXl5eXl5eIGFoYXNoIGlzIGNs ZWFyZWQgYWZ0ZXIgZXZlcnkgZnVuY3Rpb24gcGFyc2luZywNCj4+ICsrLy8gYW5kIGVuZHMg dXAgZW1wdHkgYWZ0ZXIgcGFyc2luZyBwaGFzZS4gVGh1cywgd2UgY2FuIHNpbXBseSByZXVz ZQ0KPj4gaXQNCj4+ICsrLy8gZm9yIGZkaGFzaCBpbiBleGVjdXRpb24gc3RhZ2UuDQo+PiAr ICNkZWZpbmUgZ19wcm9nbmFtZcKgwqAgKEcxLmdfcHJvZ25hbWXCoCApDQo+PiArICNkZWZp bmUgZ19saW5lbm/CoMKgwqDCoCAoRzEuZ19saW5lbm/CoMKgwqAgKQ0KPj4gKyAjZGVmaW5l IG5maWVsZHPCoMKgwqDCoMKgIChHMS5uZmllbGRzwqDCoMKgwqAgKQ0KPj4gKyAjZGVmaW5l IG1heGZpZWxkc8KgwqDCoCAoRzEubWF4ZmllbGRzwqDCoCApDQo+PiArICNkZWZpbmUgRmll bGRzwqDCoMKgwqDCoMKgIChHMS5GaWVsZHPCoMKgwqDCoMKgICkNCj4+ICstI2RlZmluZSBn X2NiwqDCoMKgwqDCoMKgwqDCoCAoRzEuZ19jYsKgwqDCoMKgwqDCoMKgICkNCj4+ICsgI2Rl ZmluZSBnX3Bvc8KgwqDCoMKgwqDCoMKgIChHMS5nX3Bvc8KgwqDCoMKgwqDCoCApDQo+PiAr LSNkZWZpbmUgZ19idWbCoMKgwqDCoMKgwqDCoCAoRzEuZ19idWbCoMKgwqDCoMKgwqAgKQ0K Pj4gKysjZGVmaW5lIGdfc2F2ZWRfY2jCoMKgIChHMS5nX3NhdmVkX2NowqAgKQ0KPj4gKyAj ZGVmaW5lIGljYXNlwqDCoMKgwqDCoMKgwqAgKEcxLmljYXNlwqDCoMKgwqDCoMKgICkNCj4+ ICsgI2RlZmluZSBleGl0aW5nwqDCoMKgwqDCoCAoRzEuZXhpdGluZ8KgwqDCoMKgICkNCj4+ ICsgI2RlZmluZSBuZXh0cmVjwqDCoMKgwqDCoCAoRzEubmV4dHJlY8KgwqDCoMKgICkNCj4+ ICtAQCAtNTc0LDI1ICs2NDYsMTMgQEAgc3RydWN0IGdsb2JhbHMyIHsNCj4+ICsgI2RlZmlu ZSBpbnR2YXLCoMKgwqDCoMKgwqAgKEcuaW50dmFywqDCoMKgwqDCoCApDQo+PiArICNkZWZp bmUgZnNwbGl0dGVywqDCoMKgIChHLmZzcGxpdHRlcsKgwqAgKQ0KPj4gKyAjZGVmaW5lIHJz cGxpdHRlcsKgwqDCoCAoRy5yc3BsaXR0ZXLCoMKgICkNCj4+ICsrI2RlZmluZSBnX2J1ZsKg wqDCoMKgwqDCoMKgIChHLmdfYnVmwqDCoMKgwqDCoMKgICkNCj4+ICsgI2RlZmluZSBJTklU X0coKSBkbyB7IFwNCj4+ICvCoMKgwqDCoMKgwqDCoFNFVF9QVFJfVE9fR0xPQkFMUygoY2hh ciopeHphbGxvYyhzaXplb2YoRzEpK3NpemVvZihHKSkgKw0KPj4gc2l6ZW9mKEcxKSk7IFwN Cj4+ICstwqDCoMKgwqDCoMKgRy5uZXh0X3Rva2VuX19sdGNsYXNzID0gVENfT1BURVJNOyBc DQo+PiArK8KgwqDCoMKgwqDCoHRfdGNsYXNzID0gVENfTkVXTElORTsgXA0KPj4gK8KgwqDC oMKgwqDCoMKgRy5ldmFsdWF0ZV9fc2VlZCA9IDE7IFwNCj4+ICsgfSB3aGlsZSAoMCkNCj4+ ICsNCj4+ICstDQo+PiArLS8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8NCj4+ICstc3RhdGlj IHZvaWQgaGFuZGxlX3NwZWNpYWwodmFyICopOw0KPj4gKy1zdGF0aWMgbm9kZSAqcGFyc2Vf ZXhwcih1aW50MzJfdCk7DQo+PiArLXN0YXRpYyB2b2lkIGNoYWluX2dyb3VwKHZvaWQpOw0K Pj4gKy1zdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICosIHZhciAqKTsNCj4+ICstc3RhdGlj IHJzdHJlYW0gKm5leHRfaW5wdXRfZmlsZSh2b2lkKTsNCj4+ICstc3RhdGljIGludCBmbXRf bnVtKGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIGRvdWJsZSwgaW50KTsNCj4+ICstc3Rh dGljIGludCBhd2tfZXhpdChpbnQpIE5PUkVUVVJOOw0KPj4gKy0NCj4+ICstLyogLS0tLSBl cnJvciBoYW5kbGluZyAtLS0tICovDQo+PiArLQ0KPj4gKy1zdGF0aWMgY29uc3QgY2hhciBF TVNHX0lOVEVSTkFMX0VSUk9SW10gQUxJR04xID0gIkludGVybmFsIGVycm9yIjsNCj4+ICsg c3RhdGljIGNvbnN0IGNoYXIgRU1TR19VTkVYUF9FT1NbXSBBTElHTjEgPSAiVW5leHBlY3Rl ZCBlbmQgb2YNCj4+IHN0cmluZyI7DQo+PiArIHN0YXRpYyBjb25zdCBjaGFyIEVNU0dfVU5F WFBfVE9LRU5bXSBBTElHTjEgPSAiVW5leHBlY3RlZCB0b2tlbiI7DQo+PiArIHN0YXRpYyBj b25zdCBjaGFyIEVNU0dfRElWX0JZX1pFUk9bXSBBTElHTjEgPSAiRGl2aXNpb24gYnkgemVy byI7DQo+PiArQEAgLTYwNCwxMCArNjY0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgRU1TR19V TkRFRl9GVU5DW10gQUxJR04xID0NCj4+ICJDYWxsIHRvIHVuZGVmaW5lZCBmdW5jdGlvbiI7 DQo+PiArIHN0YXRpYyBjb25zdCBjaGFyIEVNU0dfTk9fTUFUSFtdIEFMSUdOMSA9ICJNYXRo IHN1cHBvcnQgaXMgbm90DQo+PiBjb21waWxlZCBpbiI7DQo+PiArIHN0YXRpYyBjb25zdCBj aGFyIEVNU0dfTkVHQVRJVkVfRklFTERbXSBBTElHTjEgPSAiQWNjZXNzIHRvDQo+PiBuZWdh dGl2ZSBmaWVsZCI7DQo+PiArDQo+PiArLXN0YXRpYyB2b2lkIHplcm9fb3V0X3Zhcih2YXIg KnZwKQ0KPj4gKy17DQo+PiArLcKgwqDCoMKgwqDCoG1lbXNldCh2cCwgMCwgc2l6ZW9mKCp2 cCkpOw0KPj4gKy19DQo+PiArK3N0YXRpYyBpbnQgYXdrX2V4aXQodm9pZCkgTk9SRVRVUk47 DQo+PiArDQo+PiArIHN0YXRpYyB2b2lkIHN5bnRheF9lcnJvcihjb25zdCBjaGFyICptZXNz YWdlKSBOT1JFVFVSTjsNCj4+ICsgc3RhdGljIHZvaWQgc3ludGF4X2Vycm9yKGNvbnN0IGNo YXIgKm1lc3NhZ2UpDQo+PiArQEAgLTYzOCwxMiArNjk1LDQwIEBAIHN0YXRpYyB4aGFzaCAq aGFzaF9pbml0KHZvaWQpDQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbmV3aGFzaDsNCj4+ ICsgfQ0KPj4gKw0KPj4gKytzdGF0aWMgdm9pZCBoYXNoX2NsZWFyKHhoYXNoICpoYXNoKQ0K Pj4gKyt7DQo+PiArK8KgwqDCoMKgwqDCoHVuc2lnbmVkIGk7DQo+PiArK8KgwqDCoMKgwqDC oGhhc2hfaXRlbSAqaGksICp0aGk7DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqBmb3IgKGkg PSAwOyBpIDwgaGFzaC0+Y3NpemU7IGkrKykgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaGkgPSBoYXNoLT5pdGVtc1tpXTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHdoaWxlIChoaSkgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRoaSA9IGhpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhpID0gaGktPm5leHQ7DQo+PiArKy8vRklYTUU6 IHRoaXMgYXNzdW1lcyB0aGF0IGl0J3MgYSBoYXNoIG9mICp2YXJpYWJsZXMqOg0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUodGhpLT5k YXRhLnYuc3RyaW5nKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBmcmVlKHRoaSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYXNoLT5pdGVtc1tpXSA9 IE5VTEw7DQo+PiArK8KgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgaGFzaC0+Z2xl biA9IGhhc2gtPm5lbCA9IDA7DQo+PiArK30NCj4+ICsrDQo+PiArKyNpZiAwIC8vVU5VU0VE DQo+PiArK3N0YXRpYyB2b2lkIGhhc2hfZnJlZSh4aGFzaCAqaGFzaCkNCj4+ICsrew0KPj4g KyvCoMKgwqDCoMKgwqBoYXNoX2NsZWFyKGhhc2gpOw0KPj4gKyvCoMKgwqDCoMKgwqBmcmVl KGhhc2gtPml0ZW1zKTsNCj4+ICsrwqDCoMKgwqDCoMKgZnJlZShoYXNoKTsNCj4+ICsrfQ0K Pj4gKysjZW5kaWYNCj4+ICsrDQo+PiArIC8qIGZpbmQgaXRlbSBpbiBoYXNoLCByZXR1cm4g cHRyIHRvIGRhdGEsIE5VTEwgaWYgbm90IGZvdW5kICovDQo+PiArLXN0YXRpYyB2b2lkICpo YXNoX3NlYXJjaCh4aGFzaCAqaGFzaCwgY29uc3QgY2hhciAqbmFtZSkNCj4+ICsrc3RhdGlj IE5PSU5MSU5FIHZvaWQgKmhhc2hfc2VhcmNoMyh4aGFzaCAqaGFzaCwgY29uc3QgY2hhciAq bmFtZSwNCj4+IHVuc2lnbmVkIGlkeCkNCj4+ICsgew0KPj4gK8KgwqDCoMKgwqDCoMKgaGFz aF9pdGVtICpoaTsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgaGkgPSBoYXNoLT5pdGVtc1to YXNoaWR4KG5hbWUpICUgaGFzaC0+Y3NpemVdOw0KPj4gKyvCoMKgwqDCoMKgwqBoaSA9IGhh c2gtPml0ZW1zW2lkeCAlIGhhc2gtPmNzaXplXTsNCj4+ICvCoMKgwqDCoMKgwqDCoHdoaWxl IChoaSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzdHJjbXAo aGktPm5hbWUsIG5hbWUpID09IDApDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAmaGktPmRhdGE7DQo+PiArQEAgLTY1Miw2ICs3 MzcsMTEgQEAgc3RhdGljIHZvaWQgKmhhc2hfc2VhcmNoKHhoYXNoICpoYXNoLCBjb25zdA0K Pj4gY2hhciAqbmFtZSkNCj4+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBOVUxMOw0KPj4gKyB9 DQo+PiArDQo+PiArK3N0YXRpYyB2b2lkICpoYXNoX3NlYXJjaCh4aGFzaCAqaGFzaCwgY29u c3QgY2hhciAqbmFtZSkNCj4+ICsrew0KPj4gKyvCoMKgwqDCoMKgwqByZXR1cm4gaGFzaF9z ZWFyY2gzKGhhc2gsIG5hbWUswqBoYXNoaWR4KG5hbWUpKTsNCj4+ICsrfQ0KPj4gKysNCj4+ ICsgLyogZ3JvdyBoYXNoIGlmIGl0IGJlY29tZXMgdG9vIGJpZyAqLw0KPj4gKyBzdGF0aWMg dm9pZCBoYXNoX3JlYnVpbGQoeGhhc2ggKmhhc2gpDQo+PiArIHsNCj4+ICtAQCAtNjg3LDE2 ICs3NzcsMTcgQEAgc3RhdGljIHZvaWQgKmhhc2hfZmluZCh4aGFzaCAqaGFzaCwgY29uc3Qg Y2hhcg0KPj4gKm5hbWUpDQo+PiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpZHg7DQo+PiAr wqDCoMKgwqDCoMKgwqBpbnQgbDsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgaGkgPSBoYXNo X3NlYXJjaChoYXNoLCBuYW1lKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWR4ID0gaGFzaGlkeChu YW1lKTsNCj4+ICsrwqDCoMKgwqDCoMKgaGkgPSBoYXNoX3NlYXJjaDMoaGFzaCwgbmFtZSwg aWR4KTsNCj4+ICvCoMKgwqDCoMKgwqDCoGlmICghaGkpIHsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICgrK2hhc2gtPm5lbCAvIGhhc2gtPmNzaXplID4gMTApDQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKytoYXNoLT5uZWwgPiBoYXNo LT5jc2l6ZSAqIDgpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGhhc2hfcmVidWlsZChoYXNoKTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBsID0gc3RybGVuKG5hbWUpICsgMTsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IHh6YWxsb2Moc2l6ZW9mKCpoaSkgKyBsKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJjcHkoaGktPm5hbWUsIG5hbWUp Ow0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWR4ID0gaGFzaGlk eChuYW1lKSAlIGhhc2gtPmNzaXplOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWR4ID0gaWR4ICUgaGFzaC0+Y3NpemU7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaGktPm5leHQgPSBoYXNoLT5pdGVtc1tpZHhdOw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGhhc2gtPml0ZW1zW2lkeF0gPSBoaTsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYXNoLT5nbGVuICs9IGw7DQo+PiArQEAgLTczMSw3 ICs4MjIsNyBAQCBzdGF0aWMgdm9pZCBoYXNoX3JlbW92ZSh4aGFzaCAqaGFzaCwgY29uc3Qg Y2hhcg0KPj4gKm5hbWUpDQo+PiArDQo+PiArIHN0YXRpYyBjaGFyICpza2lwX3NwYWNlcyhj aGFyICpwKQ0KPj4gKyB7DQo+PiArLcKgwqDCoMKgwqDCoHdoaWxlICgxKSB7DQo+PiArK8Kg wqDCoMKgwqDCoGZvciAoOzspIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoKnAgPT0gJ1xcJyAmJiBwWzFdID09ICdcbicpIHsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCsrOw0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2xpbmVubysrOw0KPj4gK0BA IC03NDcsOCArODM4LDEwIEBAIHN0YXRpYyBjaGFyICpza2lwX3NwYWNlcyhjaGFyICpwKQ0K Pj4gKyBzdGF0aWMgY2hhciAqbmV4dHdvcmQoY2hhciAqKnMpDQo+PiArIHsNCj4+ICvCoMKg wqDCoMKgwqDCoGNoYXIgKnAgPSAqczsNCj4+ICstwqDCoMKgwqDCoMKgd2hpbGUgKCooKnMp KysgIT0gJ1wwJykNCj4+ICsrwqDCoMKgwqDCoMKgY2hhciAqcSA9IHA7DQo+PiArK8KgwqDC oMKgwqDCoHdoaWxlICgqcSsrICE9ICdcMCcpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29udGludWU7DQo+PiArK8KgwqDCoMKgwqDCoCpzID0gcTsNCj4+ICvCoMKg wqDCoMKgwqDCoHJldHVybiBwOw0KPj4gKyB9DQo+PiArDQo+PiArQEAgLTgxMSwxMCArOTA0 LDI3IEBAIHN0YXRpYyBkb3VibGUgbXlfc3RydG9kKGNoYXIgKipwcCkNCj4+ICsNCj4+ICsg LyogLS0tLS0tLS0gd29ya2luZyB3aXRoIHZhcmlhYmxlcyAoc2V0L2dldC9jb3B5L2V0Yykg LS0tLS0tLS0gKi8NCj4+ICsNCj4+ICstc3RhdGljIHhoYXNoICppYW1hcnJheSh2YXIgKnYp DQo+PiArK3N0YXRpYyB2b2lkIGZtdF9udW0oY29uc3QgY2hhciAqZm9ybWF0LCBkb3VibGUg bikNCj4+ICsgew0KPj4gKy3CoMKgwqDCoMKgwqB2YXIgKmEgPSB2Ow0KPj4gKyvCoMKgwqDC oMKgwqBpZiAobiA9PSAobG9uZyBsb25nKW4pIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHNucHJpbnRmKGdfYnVmLCBNQVhWQVJGTVQsICIlbGxkIiwgKGxvbmcgbG9u ZyluKTsNCj4+ICsrwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnMgPSBmb3JtYXQ7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjaGFyIGM7DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZG8geyBjID0gKnM7IH0gd2hpbGUgKGMgJiYgKisrcyk7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoc3RyY2hyKCJkaW91eFgiLCBjKSkgew0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNucHJp bnRmKGdfYnVmLCBNQVhWQVJGTVQsIGZvcm1hdCwgKGludCluKTsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoc3RyY2hyKCJlRWZGZ0dhQSIsIGMpKSB7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25w cmludGYoZ19idWYsIE1BWFZBUkZNVCwgZm9ybWF0LCBuKTsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfSU5WX0ZNVCk7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDCoMKgwqDCoH0NCj4+ ICsrfQ0KPj4gKw0KPj4gKytzdGF0aWMgeGhhc2ggKmlhbWFycmF5KHZhciAqYSkNCj4+ICsr ew0KPj4gK8KgwqDCoMKgwqDCoMKgd2hpbGUgKGEtPnR5cGUgJiBWRl9DSElMRCkNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhID0gYS0+eC5wYXJlbnQ7DQo+PiArDQo+ PiArQEAgLTgyNSwyMyArOTM1LDcgQEAgc3RhdGljIHhoYXNoICppYW1hcnJheSh2YXIgKnYp DQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gYS0+eC5hcnJheTsNCj4+ICsgfQ0KPj4gKw0K Pj4gKy1zdGF0aWMgdm9pZCBjbGVhcl9hcnJheSh4aGFzaCAqYXJyYXkpDQo+PiArLXsNCj4+ ICstwqDCoMKgwqDCoMKgdW5zaWduZWQgaTsNCj4+ICstwqDCoMKgwqDCoMKgaGFzaF9pdGVt ICpoaSwgKnRoaTsNCj4+ICstDQo+PiArLcKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBh cnJheS0+Y3NpemU7IGkrKykgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aGkgPSBhcnJheS0+aXRlbXNbaV07DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB3aGlsZSAoaGkpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB0aGkgPSBoaTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBoaSA9IGhpLT5uZXh0Ow0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUodGhpLT5kYXRhLnYuc3RyaW5nKTsN Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVl KHRoaSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhcnJheS0+aXRlbXNbaV0gPSBOVUxMOw0KPj4gKy3C oMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoGFycmF5LT5nbGVuID0gYXJyYXktPm5l bCA9IDA7DQo+PiArLX0NCj4+ICsrI2RlZmluZSBjbGVhcl9hcnJheShhcnJheSkgaGFzaF9j bGVhcihhcnJheSkNCj4+ICsNCj4+ICsgLyogY2xlYXIgYSB2YXJpYWJsZSAqLw0KPj4gKyBz dGF0aWMgdmFyICpjbHJ2YXIodmFyICp2KQ0KPj4gK0BAIC04NTUsNiArOTQ5LDggQEAgc3Rh dGljIHZhciAqY2xydmFyKHZhciAqdikNCj4+ICvCoMKgwqDCoMKgwqDCoHJldHVybiB2Ow0K Pj4gKyB9DQo+PiArDQo+PiArK3N0YXRpYyB2b2lkIGhhbmRsZV9zcGVjaWFsKHZhciAqKTsN Cj4+ICsrDQo+PiArIC8qIGFzc2lnbiBzdHJpbmcgdmFsdWUgdG8gdmFyaWFibGUgKi8NCj4+ ICsgc3RhdGljIHZhciAqc2V0dmFyX3AodmFyICp2LCBjaGFyICp2YWx1ZSkNCj4+ICsgew0K Pj4gK0BAIC05MDEsNyArOTk3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdldHZhcl9zKHZh ciAqdikNCj4+ICsgew0KPj4gK8KgwqDCoMKgwqDCoMKgLyogaWYgdiBpcyBudW1lcmljIGFu ZCBoYXMgbm8gY2FjaGVkIHN0cmluZywgY29udmVydCBpdCB0bw0KPj4gc3RyaW5nICovDQo+ PiArwqDCoMKgwqDCoMKgwqBpZiAoKHYtPnR5cGUgJiAoVkZfTlVNQkVSIHwgVkZfQ0FDSEVE KSkgPT0gVkZfTlVNQkVSKSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBm bXRfbnVtKGdfYnVmLCBNQVhWQVJGTVQsIGdldHZhcl9zKGludHZhcltDT05WRk1UXSksDQo+ PiB2LT5udW1iZXIsIFRSVUUpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Zm10X251bShnZXR2YXJfcyhpbnR2YXJbQ09OVkZNVF0pLCB2LT5udW1iZXIpOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnN0cmluZyA9IHhzdHJkdXAoZ19idWYp Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfQ0FD SEVEOw0KPj4gK8KgwqDCoMKgwqDCoMKgfQ0KPj4gK0BAIC05MjAsNiArMTAxNiw3IEBAIHN0 YXRpYyBkb3VibGUgZ2V0dmFyX2kodmFyICp2KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT5udW1iZXIgPSBteV9zdHJ0b2QoJnMpOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfZXZhbCgiJWYgKHM6JyVzJylcbiIsIHYtPm51bWJlciwNCj4+IHMpOw0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodi0+ dHlwZSAmIFZGX1VTRVIpIHsNCj4+ICsrLy9UT0RPOiBza2lwX3NwYWNlcygpIGFsc28gc2tp cHMgYmFja3NsYXNoK25ld2xpbmUsIGlzIGl0IGludGVuZGVkDQo+PiBoZXJlPw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcyA9IHNraXBfc3BhY2VzKHMpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpzICE9ICdcMCcp DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdi0+dHlwZSAmPSB+VkZfVVNFUjsNCj4+ ICtAQCAtOTgxLDk0ICsxMDc4LDI4IEBAIHN0YXRpYyBpbnQgaXN0cnVlKHZhciAqdikNCj4+ ICvCoMKgwqDCoMKgwqDCoHJldHVybiAodi0+c3RyaW5nICYmIHYtPnN0cmluZ1swXSk7DQo+ PiArIH0NCj4+ICsNCj4+ICstLyogdGVtcG9yYXJ5IHZhcmlhYmxlcyBhbGxvY2F0b3IuIExh c3QgYWxsb2NhdGVkIHNob3VsZCBiZSBmaXJzdA0KPj4gZnJlZWQgKi8NCj4+ICstc3RhdGlj IHZhciAqbnZhbGxvYyhpbnQgbikNCj4+ICstew0KPj4gKy3CoMKgwqDCoMKgwqBudmJsb2Nr ICpwYiA9IE5VTEw7DQo+PiArLcKgwqDCoMKgwqDCoHZhciAqdiwgKnI7DQo+PiArLcKgwqDC oMKgwqDCoGludCBzaXplOw0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgd2hpbGUgKGdfY2Ip IHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBiID0gZ19jYjsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgoZ19jYi0+cG9zIC0gZ19jYi0+bnYp ICsgbiA8PSBnX2NiLT5zaXplKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZ19jYiA9IGdfY2ItPm5leHQ7DQo+PiArLcKgwqDCoMKgwqDCoH0NCj4+ICstDQo+PiAr LcKgwqDCoMKgwqDCoGlmICghZ19jYikgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc2l6ZSA9IChuIDw9IE1JTk5WQkxPQ0spID8gTUlOTlZCTE9DSyA6IG47DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2NiID0geHphbGxvYyhzaXplb2YobnZi bG9jaykgKyBzaXplICogc2l6ZW9mKHZhcikpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ19jYi0+c2l6ZSA9IHNpemU7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnX2NiLT5wb3MgPSBnX2NiLT5udjsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGdfY2ItPnByZXYgPSBwYjsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qZ19jYi0+bmV4dCA9IE5VTEw7IC0geHphbGxvYyBkaWQgaXQgKi8NCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwYikNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYi0+bmV4dCA9IGdfY2I7DQo+PiAr LcKgwqDCoMKgwqDCoH0NCj4+ICstDQo+PiArLcKgwqDCoMKgwqDCoHYgPSByID0gZ19jYi0+ cG9zOw0KPj4gKy3CoMKgwqDCoMKgwqBnX2NiLT5wb3MgKz0gbjsNCj4+ICstDQo+PiArLcKg wqDCoMKgwqDCoHdoaWxlICh2IDwgZ19jYi0+cG9zKSB7DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2LT50eXBlID0gMDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHYtPnN0cmluZyA9IE5VTEw7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2Kys7DQo+PiArLcKgwqDCoMKgwqDCoH0NCj4+ICstDQo+PiArLcKgwqDCoMKgwqDC oHJldHVybiByOw0KPj4gKy19DQo+PiArLQ0KPj4gKy1zdGF0aWMgdm9pZCBudmZyZWUodmFy ICp2KQ0KPj4gKy17DQo+PiArLcKgwqDCoMKgwqDCoHZhciAqcDsNCj4+ICstDQo+PiArLcKg wqDCoMKgwqDCoGlmICh2IDwgZ19jYi0+bnYgfHwgdiA+PSBnX2NiLT5wb3MpDQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19JTlRFUk5BTF9F UlJPUik7DQo+PiArLQ0KPj4gKy3CoMKgwqDCoMKgwqBmb3IgKHAgPSB2OyBwIDwgZ19jYi0+ cG9zOyBwKyspIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgocC0+ dHlwZSAmIChWRl9BUlJBWSB8IFZGX0NISUxEKSkgPT0gVkZfQVJSQVkpIHsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShp YW1hcnJheShwKSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZnJlZShwLT54LmFycmF5LT5pdGVtcyk7DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZShwLT54LmFycmF5KTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChwLT50eXBlICYgVkZfV0FMSykgew0KPj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhbGtlcl9saXN0ICpuOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdhbGtlcl9saXN0 ICp3ID0gcC0+eC53YWxrZXI7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3dhbGtlcigibnZmcmVlOiBmcmVlaW5nIHdh bGtlcg0KPj4gQCVwXG4iLCAmcC0+eC53YWxrZXIpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHAtPngud2Fsa2VyID0gTlVMTDsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAodykg ew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuID0gdy0+cHJldjsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3dh bGtlcigiIGZyZWUoJXApXG4iLA0KPj4gdyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUodyk7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHcgPSBuOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNscnZhcihwKTsNCj4+ICstwqDCoMKgwqDC oMKgfQ0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgZ19jYi0+cG9zID0gdjsNCj4+ICstwqDC oMKgwqDCoMKgd2hpbGUgKGdfY2ItPnByZXYgJiYgZ19jYi0+cG9zID09IGdfY2ItPm52KSB7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2NiID0gZ19jYi0+cHJldjsN Cj4+ICstwqDCoMKgwqDCoMKgfQ0KPj4gKy19DQo+PiArLQ0KPj4gKyAvKiAtLS0tLS0tIGF3 ayBwcm9ncmFtIHRleHQgcGFyc2luZyAtLS0tLS0tICovDQo+PiArDQo+PiArLS8qIFBhcnNl IG5leHQgdG9rZW4gcG9pbnRlZCBieSBnbG9iYWwgcG9zLCBwbGFjZSByZXN1bHRzIGludG8N Cj4+IGdsb2JhbCB0dHQuDQo+PiArLSAqIElmIHRva2VuIGlzbid0IGV4cGVjdGVkLCBnaXZl IGF3YXkuIFJldHVybiB0b2tlbiBjbGFzcw0KPj4gKysvKiBQYXJzZSBuZXh0IHRva2VuIHBv aW50ZWQgYnkgZ2xvYmFsIHBvcywgcGxhY2UgcmVzdWx0cyBpbnRvDQo+PiBnbG9iYWwgdF9Y WVogdmFyaWFibGVzLg0KPj4gKysgKiBJZiB0b2tlbiBpc24ndCBleHBlY3RlZCwgcHJpbnQg ZXJyb3IgbWVzc2FnZSBhbmQgZGllLg0KPj4gKysgKiBSZXR1cm4gdG9rZW4gY2xhc3MgKGFs c28gc3RvcmUgaXQgaW4gdF90Y2xhc3MpLg0KPj4gK8KgICovDQo+PiArIHN0YXRpYyB1aW50 MzJfdCBuZXh0X3Rva2VuKHVpbnQzMl90IGV4cGVjdGVkKQ0KPj4gKyB7DQo+PiArLSNkZWZp bmUgY29uY2F0X2luc2VydGVkIChHLm5leHRfdG9rZW5fX2NvbmNhdF9pbnNlcnRlZCkNCj4+ ICstI2RlZmluZSBzYXZlX3RjbGFzc8KgwqDCoMKgIChHLm5leHRfdG9rZW5fX3NhdmVfdGNs YXNzKQ0KPj4gKy0jZGVmaW5lIHNhdmVfaW5mb8KgwqDCoMKgwqDCoCAoRy5uZXh0X3Rva2Vu X19zYXZlX2luZm8pDQo+PiArLS8qIEluaXRpYWxpemVkIHRvIFRDX09QVEVSTTogKi8NCj4+ ICstI2RlZmluZSBsdGNsYXNzwqDCoMKgwqDCoMKgwqDCoCAoRy5uZXh0X3Rva2VuX19sdGNs YXNzKQ0KPj4gKysjZGVmaW5lIGNvbmNhdF9pbnNlcnRlZCAoRzEubmV4dF90b2tlbl9fY29u Y2F0X2luc2VydGVkKQ0KPj4gKysjZGVmaW5lIHNhdmVfdGNsYXNzwqDCoMKgwqAgKEcxLm5l eHRfdG9rZW5fX3NhdmVfdGNsYXNzKQ0KPj4gKysjZGVmaW5lIHNhdmVfaW5mb8KgwqDCoMKg wqDCoCAoRzEubmV4dF90b2tlbl9fc2F2ZV9pbmZvKQ0KPj4gKw0KPj4gKy3CoMKgwqDCoMKg wqBjaGFyICpwLCAqczsNCj4+ICsrwqDCoMKgwqDCoMKgY2hhciAqcDsNCj4+ICvCoMKgwqDC oMKgwqDCoGNvbnN0IGNoYXIgKnRsOw0KPj4gKy3CoMKgwqDCoMKgwqB1aW50MzJfdCB0YzsN Cj4+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IHVpbnQzMl90ICp0aTsNCj4+ICsrwqDCoMKgwqDC oMKgdWludDMyX3QgdGMsIGxhc3RfdG9rZW5fY2xhc3M7DQo+PiArKw0KPj4gKyvCoMKgwqDC oMKgwqBsYXN0X3Rva2VuX2NsYXNzID0gdF90Y2xhc3M7IC8qIHRfdGNsYXNzIGlzIGluaXRp YWxpemVkIHRvDQo+PiBUQ19ORVdMSU5FICovDQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqBk ZWJ1Z19wcmludGZfcGFyc2UoIiVzKCkgZXhwZWN0ZWQoJXgpOiIsIF9fZnVuY19fLCBleHBl Y3RlZCk7DQo+PiArK8KgwqDCoMKgwqDCoGRlYnVnX3BhcnNlX3ByaW50X3RjKGV4cGVjdGVk KTsNCj4+ICsrwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCJcbiIpOw0KPj4gKw0K Pj4gK8KgwqDCoMKgwqDCoMKgaWYgKHRfcm9sbGJhY2spIHsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB1c2luZyByb2xsZWQt YmFjayB0b2tlblxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICtAQCAtMTA4MCw2ICsxMTExLDEw IEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVpbnQzMl90IGV4cGVjdGVkKQ0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfaW5mbyA9IHNhdmVfaW5mbzsNCj4+ ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcCA9IGdfcG9zOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGdfc2F2ZWRfY2ggIT0gJ1wwJykgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCpwID0gZ19zYXZlZF9jaDsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX3NhdmVkX2NoID0gJ1wwJzsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvCoCByZWFkbmV4dDoNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwID0gc2tpcF9zcGFjZXMocCk7DQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ19saW5lbm8gPSB0X2xpbmVubzsN Cj4+ICtAQCAtMTA4NywxNSArMTEyMiwxMiBAQCBzdGF0aWMgdWludDMyX3QgbmV4dF90b2tl bih1aW50MzJfdA0KPj4gZXhwZWN0ZWQpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgqcCAhPSAnXG4nICYmICpwICE9ICdcMCcp DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwKys7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoKnAgPT0gJ1xuJykNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB0X2xpbmVubysrOw0KPj4gKy0NCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoKnAgPT0gJ1wwJykgew0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX0VPRjsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRm X3BhcnNlKCIlczogdG9rZW4gZm91bmQ6DQo+PiBUQ19FT0ZcbiIsIF9fZnVuY19fKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKCpwID09ICdcIicp IHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogaXQncyBhIHN0cmluZyAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRfc3RyaW5nID0gcyA9ICsrcDsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpzID0gdF9zdHJpbmcgPSAr K3A7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHdoaWxlICgqcCAhPSAnXCInKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpwcDsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICdcbicpDQo+PiArQEAgLTExMTAsNyArMTE0 Miw3IEBAIHN0YXRpYyB1aW50MzJfdCBuZXh0X3Rva2VuKHVpbnQzMl90IGV4cGVjdGVkKQ0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOiB0b2tlbiBmb3VuZDonJXMnDQo+PiBUQ19TVFJJTkdcbiIs IF9fZnVuY19fLCB0X3N0cmluZyk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfSBlbHNlIGlmICgoZXhwZWN0ZWQgJiBUQ19SRUdFWFApICYmICpwID09ICcvJykgew0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBp dCdzIHJlZ2V4cCAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRfc3RyaW5nID0gcyA9ICsrcDsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpzwqA9IHRfc3RyaW5nID0gKytwOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGls ZSAoKnAgIT0gJy8nKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAn XG4nKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1VO RVhQX0VPUyk7DQo+PiArQEAgLTExNDEsNiArMTE3MywxMSBAQCBzdGF0aWMgdWludDMyX3Qg bmV4dF90b2tlbih1aW50MzJfdCBleHBlY3RlZCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19OVU1CRVI7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IHRva2VuIGZvdW5kOiVmDQo+PiBUQ19OVU1CRVJcbiIsIF9fZnVuY19fLCB0 X2RvdWJsZSk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFy ICplbmRfb2ZfbmFtZTsNCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpwID09ICdcbicpDQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfbGluZW5v Kys7DQo+PiArKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBzZWFyY2ggZm9yIHNvbWV0aGluZyBrbm93biAqLw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0bCA9IHRva2VubGlzdDsN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMg PSAweDAwMDAwMDAxOw0KPj4gK0BAIC0xMTU1LDkgKzExOTIsOSBAQCBzdGF0aWMgdWludDMy X3QgbmV4dF90b2tlbih1aW50MzJfdCBleHBlY3RlZCkNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRva2Vu IG1hdGNoZXMsDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgaXQncyBub3QgYSBsb25nZXIgd29yZCwN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKHRjICYgKGV4cGVjdGVkIHwgVENf V09SRCB8DQo+PiBUQ19ORVdMSU5FKSkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCh0YyAmIChleHBlY3Rl ZCB8IFRTX1dPUkQgfA0KPj4gVENfTkVXTElORSkpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgc3RybmNt cChwLCB0bCwgbCkgPT0gMA0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJiYgISgodGMgJiBUQ19XT1JEKSAmJg0K Pj4gaXNhbG51bV8ocFtsXSkpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmJiAhKCh0YyAmIFRTX1dPUkQpICYm DQo+PiBpc2FsbnVtXyhwW2xdKSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCkgew0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIHRoZW4gdGhpcyBpcyB3aGF0IHdlIGFyZQ0KPj4gbG9va2luZyBm b3IgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2luZm8gPSAqdGk7DQo+PiAr QEAgLTExNzQsNjcgKzEyMTEsOTQgQEAgc3RhdGljIHVpbnQzMl90IG5leHRfdG9rZW4odWlu dDMyX3QNCj4+IGV4cGVjdGVkKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoIWlzYWxudW1fKCpwKSkNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRh eF9lcnJvcihFTVNHX1VORVhQX1RPS0VOKTsgLyogbm8NCj4+ICovDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHllcyAqLw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfc3RyaW5nID0g LS1wOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHdoaWxlIChpc2FsbnVtXygqKytwKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwWy0xXSA9ICpwOw0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwWy0xXSA9ICdc MCc7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dGMgPSBUQ19WQVJJQUJMRTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBhbHNvIGNvbnN1bWUgd2hpdGVzcGFjZSBiZXR3ZWVuDQo+PiBm dW5jdGlvbm5hbWUgYW5kIGJyYWNrZXQgKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIShleHBlY3RlZCAmIFRDX1ZBUklBQkxFKSB8 fCAoZXhwZWN0ZWQgJg0KPj4gVENfQVJSQVkpKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRfc3RyaW5nID0gcDsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAoaXNhbG51bV8oKnAp KQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwKys7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZW5kX29mX25hbWUgPSBwOw0KPj4gKysNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobGFzdF90b2tlbl9jbGFz cyA9PSBUQ19GVU5DREVDTCkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZWF0IHNwYWNlIGluICJmdW5jdGlv biBGVU5DICguLi4pDQo+PiB7Li4ufSIgZGVjbGFyYXRpb24gKi8NCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHAg PSBza2lwX3NwYWNlcyhwKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBlbHNlIGlmIChleHBlY3RlZCAmIFRDX0FSUkFZKSB7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIGVhdCBzcGFjZSBiZXR3ZWVuIGFycmF5IG5hbWUgYW5kIFsNCj4+ICovDQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNoYXIgKnMgPSBza2lwX3NwYWNlcyhwKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCpzID09 ICdbJykgLyogYXJyYXkgcmVmLCBub3QganVzdA0KPj4gYSBuYW1lPyAqLw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcCA9IHM7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIGVsc2U6IGRvIE5PVCBjb25zdW1lIHdoaXRlc3BhY2Ug YWZ0ZXINCj4+IHZhcmlhYmxlIG5hbWUhDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZ2F3ayBhbGxvd3MgZGVmaW5pdGlvbiAiZnVuY3Rp b24gRlVOQyAocCkNCj4+IHsuLi59IiAtIG5vdGUgc3BhY2UsDQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYnV0IGRpc2FsbG93cyB0aGUg Y2FsbCAiRlVOQyAocCkiIGJlY2F1c2UNCj4+IGl0IGlzbid0IG9uZSAtDQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogZXhwcmVzc2lvbiAi diAoYSkiIHNob3VsZCBOT1QgYmUgcGFyc2VkIGFzDQo+PiBUQ19GVU5DVElPTjoNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpdCBpcyBh IHZhbGlkIGNvbmNhdGVuYXRpb24gaWYgInYiIGlzIGENCj4+IHZhcmlhYmxlLA0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG5vdCBhIGZ1 bmN0aW9uIG5hbWUgKGFuZCB0eXBlIG9mIG5hbWUgaXMNCj4+IG5vdCBrbm93biBhdCBwYXJz ZSB0aW1lKS4NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8NCj4+ICsrDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmICgqcCA9PSAnKCcpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcCsrOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdGMgPSBUQ19GVU5DVElPTjsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IHRva2VuDQo+PiBmb3VuZDonJXMnIFRDX0ZVTkNUSU9OXG4iLCBfX2Z1bmNfXywg dF9zdHJpbmcpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0gZWxzZSBpZiAoKnAgPT0gJ1snKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHArKzsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdGMgPSBUQ19BUlJBWTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogdG9rZW4NCj4+IGZvdW5kOiclcycgVENfQVJSQVlcbiIsIF9fZnVuY19fLCB0X3N0cmlu Zyk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqcCA9PSAnWycpIHsNCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHArKzsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjID0gVENf QVJSQVk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2Uo IiVzOiB0b2tlbg0KPj4gZm91bmQ6JyVzJyBUQ19BUlJBWVxuIiwgX19mdW5jX18sIHRfc3Ry aW5nKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk ZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0b2tlbg0KPj4gZm91bmQ6JyVzJyBUQ19WQVJJQUJM RVxuIiwgX19mdW5jX18sIHRfc3RyaW5nKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19WQVJJQUJM RTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogdG9rZW4NCj4+IGZvdW5k OiclcycgVENfVkFSSUFCTEVcbiIsIF9fZnVuY19fLCB0X3N0cmluZyk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChlbmRfb2ZfbmFtZSA9PSBwKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiB0aGVyZSBpcyBubyBzcGFjZSBmb3INCj4+IHRyYWlsaW5nIE5VTCBpbiB0X3N0cmluZyEN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFdlIG5lZWQgdG8gc2F2ZSB0aGUgY2hh cg0KPj4gd2UgYXJlIGdvaW5nIHRvIE5VTC4NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqICh3ZSdsbCB1c2UgaXQgaW4gZnV0dXJlDQo+PiBjYWxsIHRvIG5leHRfdG9rZW4oKSkN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ19zYXZlZF9jaCA9ICplbmRfb2ZfbmFtZTsNCj4+ICsrLy8gZXNwZWNpYWxseSBw YXRob2xvZ2ljYWwgZXhhbXBsZSBpcyBWPSJhYmMiOyBWLjIgLSBpdCdzIFYNCj4+IGNvbmNh dGVuYXRlZCB0byAuMg0KPj4gKysvLyAoaXQgZXZhbHVhdGVzIHRvICJhYmMwLjIiKS4gQmVj YXVzZSBvZiB0aGlzIGNhc2UsIHdlIGNhbid0DQo+PiBzaW1wbHkgY2FjaGUNCj4+ICsrLy8g Jy4nIGFuZCBhbmFseXplIGl0IGxhdGVyOiB3ZSBhbHNvIGhhdmUgdG8gKnN0b3JlIGl0IGJh Y2sqIGluDQo+PiBuZXh0DQo+PiArKy8vIG5leHRfdG9rZW4oKSwgaW4gb3JkZXIgdG8gZ2l2 ZSBteV9zdHJ0b2QoKSB0aGUgdW5kYW1hZ2VkICIuMiINCj4+IHN0cmluZy4NCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KmVuZF9vZl9uYW1lID0gJ1wwJzsgLyogdGVybWluYXRlIHRfc3RyaW5nICovDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gK8KgIHRva2VuX2ZvdW5kOg0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfcG9zID0gcDsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBza2lwcGluZyBuZXdsaW5lcyBpbiBz b21lIGNhc2VzICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKGx0 Y2xhc3MgJiBUQ19OT1RFUk0pICYmICh0YyAmIFRDX05FV0xJTkUpKQ0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChsYXN0X3Rva2VuX2NsYXNzICYgVFNfTk9URVJN KSAmJiAodGMgJg0KPj4gVENfTkVXTElORSkpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gcmVhZG5leHQ7DQo+PiArDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaW5zZXJ0IGNvbmNhdGVuYXRpb24gb3Bl cmF0b3Igd2hlbiBuZWVkZWQgKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6ICV4ICV4ICV4IGNvbmNhdF9pbnNlcnRlZD9cbiIs DQo+PiBfX2Z1bmNfXywNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAobHRjbGFzcyAmIFRDX0NPTkNBVDEpLCAodGMgJiBUQ19DT05DQVQyKSwN Cj4+IChleHBlY3RlZCAmIFRDX0JJTk9QKSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoKGx0Y2xhc3MgJiBUQ19DT05DQVQxKSAmJiAodGMgJiBUQ19DT05DQVQy KSAmJg0KPj4gKGV4cGVjdGVkICYgVENfQklOT1ApDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJiYgIShsdGNsYXNzID09IFRDX0xFTkdUSCAmJiB0YyA9PSBUQ19TRVFT VEFSVCkgLyoNCj4+IGJ1dCBub3QgZm9yICJsZW5ndGgoLi4uIiAqLw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogY29uY2F0X2lu c2VydGVkIGlmIGFsbA0KPj4gbm9uemVybzogJXggJXggJXggJXhcbiIsIF9fZnVuY19fLA0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChsYXN0 X3Rva2VuX2NsYXNzICYgVFNfQ09OQ0FUX0wpLCAodGMgJg0KPj4gVFNfQ09OQ0FUX1IpLCAo ZXhwZWN0ZWQgJiBUU19CSU5PUCksDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIShsYXN0X3Rva2VuX2NsYXNzID09IFRDX0xFTkdUSCAmJiB0 YyA9PQ0KPj4gVENfTFBBUkVOKSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoKGxhc3RfdG9rZW5fY2xhc3MgJiBUU19DT05DQVRfTCkgJiYgKHRjICYNCj4+IFRT X0NPTkNBVF9SKSAmJiAoZXhwZWN0ZWQgJiBUU19CSU5PUCkNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmJiAhKGxhc3RfdG9rZW5fY2xhc3MgPT0gVENfTEVOR1RIICYm IHRjID09DQo+PiBUQ19MUEFSRU4pIC8qIGJ1dCBub3QgZm9yICJsZW5ndGgoLi4uIiAqLw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCkgew0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25jYXRfaW5zZXJ0ZWQgPSBU UlVFOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzYXZlX3RjbGFzcyA9IHRjOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzYXZlX2luZm8gPSB0X2luZm87DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBUQ19CSU5PUDsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YyA9IFRDX0JJ Tk9QWDsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdF9pbmZvID0gT0NfQ09OQ0FUIHwgU1MgfCBQKDM1KTsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiB0X3RjbGFzcz10Yz0leFxuIiwgX19mdW5j X18sDQo+PiB0X3RjbGFzcyk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dF90Y2xhc3MgPSB0YzsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9wYXJzZSgiJXM6IHRfdGNsYXNzPXRjPSV4XG4iLCBfX2Z1bmNfXywNCj4+IHRj KTsNCj4+ICvCoMKgwqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgbHRjbGFzcyA9IHRf dGNsYXNzOw0KPj4gKy0NCj4+ICvCoMKgwqDCoMKgwqDCoC8qIEFyZSB3ZSByZWFkeSBmb3Ig dGhpcz8gKi8NCj4+ICstwqDCoMKgwqDCoMKgaWYgKCEobHRjbGFzcyAmIGV4cGVjdGVkKSkg ew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKChsdGNs YXNzICYgKFRDX05FV0xJTkUgfCBUQ19FT0YpKSA/DQo+PiArK8KgwqDCoMKgwqDCoGlmICgh KHRfdGNsYXNzICYgZXhwZWN0ZWQpKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzeW50YXhfZXJyb3IoKGxhc3RfdG9rZW5fY2xhc3MgJiAoVENfTkVXTElORSB8DQo+ PiBUQ19FT0YpKSA/DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFTVNHX1VORVhQX0VPUyA6IEVNU0dfVU5FWFBf VE9LRU4pOw0KPj4gK8KgwqDCoMKgwqDCoMKgfQ0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqBk ZWJ1Z19wcmludGZfcGFyc2UoIiVzOiByZXR1cm5pbmcsIGx0Y2xhc3M6JXggdF9kb3VibGU6 JWZcbiIsDQo+PiBfX2Z1bmNfXywgbHRjbGFzcywgdF9kb3VibGUpOw0KPj4gKy3CoMKgwqDC oMKgwqByZXR1cm4gbHRjbGFzczsNCj4+ICsrwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3Bh cnNlKCIlczogcmV0dXJuaW5nLCB0X2RvdWJsZTolZiB0X3RjbGFzczoiLA0KPj4gX19mdW5j X18sIHRfZG91YmxlKTsNCj4+ICsrwqDCoMKgwqDCoMKgZGVidWdfcGFyc2VfcHJpbnRfdGMo dF90Y2xhc3MpOw0KPj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIlxuIik7 DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqByZXR1cm4gdF90Y2xhc3M7DQo+PiArICN1bmRl ZiBjb25jYXRfaW5zZXJ0ZWQNCj4+ICsgI3VuZGVmIHNhdmVfdGNsYXNzDQo+PiArICN1bmRl ZiBzYXZlX2luZm8NCj4+ICstI3VuZGVmIGx0Y2xhc3MNCj4+ICsgfQ0KPj4gKw0KPj4gKy1z dGF0aWMgdm9pZCByb2xsYmFja190b2tlbih2b2lkKQ0KPj4gKytzdGF0aWMgQUxXQVlTX0lO TElORSB2b2lkIHJvbGxiYWNrX3Rva2VuKHZvaWQpDQo+PiArIHsNCj4+ICvCoMKgwqDCoMKg wqDCoHRfcm9sbGJhY2sgPSBUUlVFOw0KPj4gKyB9DQo+PiArQEAgLTEyNTEsMTY5ICsxMzE1 LDE4OCBAQCBzdGF0aWMgbm9kZSAqbmV3X25vZGUodWludDMyX3QgaW5mbykNCj4+ICsNCj4+ ICsgc3RhdGljIHZvaWQgbWtfcmVfbm9kZShjb25zdCBjaGFyICpzLCBub2RlICpuLCByZWdl eF90ICpyZSkNCj4+ICsgew0KPj4gKy3CoMKgwqDCoMKgwqBuLT5pbmZvID0gT0NfUkVHRVhQ Ow0KPj4gKyvCoMKgwqDCoMKgwqBuLT5pbmZvID0gVElfUkVHRVhQOw0KPj4gK8KgwqDCoMKg wqDCoMKgbi0+bC5yZSA9IHJlOw0KPj4gK8KgwqDCoMKgwqDCoMKgbi0+ci5pcmUgPSByZSAr IDE7DQo+PiArwqDCoMKgwqDCoMKgwqB4cmVnY29tcChyZSwgcywgUkVHX0VYVEVOREVEKTsN Cj4+ICvCoMKgwqDCoMKgwqDCoHhyZWdjb21wKHJlICsgMSwgcywgUkVHX0VYVEVOREVEIHwg UkVHX0lDQVNFKTsNCj4+ICsgfQ0KPj4gKw0KPj4gKy1zdGF0aWMgbm9kZSAqY29uZGl0aW9u KHZvaWQpDQo+PiArK3N0YXRpYyBub2RlICpwYXJzZV9leHByKHVpbnQzMl90KTsNCj4+ICsr DQo+PiArK3N0YXRpYyBub2RlICpwYXJzZV9scnBhcmVuX2xpc3Qodm9pZCkNCj4+ICsgew0K Pj4gKy3CoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX1NFUVNUQVJUKTsNCj4+ICstwqDCoMKg wqDCoMKgcmV0dXJuIHBhcnNlX2V4cHIoVENfU0VRVEVSTSk7DQo+PiArK8KgwqDCoMKgwqDC oG5leHRfdG9rZW4oVENfTFBBUkVOKTsNCj4+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIHBhcnNl X2V4cHIoVENfUlBBUkVOKTsNCj4+ICsgfQ0KPj4gKw0KPj4gKyAvKiBwYXJzZSBleHByZXNz aW9uIHRlcm1pbmF0ZWQgYnkgZ2l2ZW4gYXJndW1lbnQsIHJldHVybiBwdHINCj4+ICvCoCAq IHRvIGJ1aWx0IHN1YnRyZWUuIFRlcm1pbmF0b3IgaXMgZWF0ZW4gYnkgcGFyc2VfZXhwciAq Lw0KPj4gKy1zdGF0aWMgbm9kZSAqcGFyc2VfZXhwcih1aW50MzJfdCBpZXhwKQ0KPj4gKytz dGF0aWMgbm9kZSAqcGFyc2VfZXhwcih1aW50MzJfdCB0ZXJtX3RjKQ0KPj4gKyB7DQo+PiAr wqDCoMKgwqDCoMKgwqBub2RlIHNuOw0KPj4gK8KgwqDCoMKgwqDCoMKgbm9kZSAqY24gPSAm c247DQo+PiArwqDCoMKgwqDCoMKgwqBub2RlICp2biwgKmdscHRyOw0KPj4gKy3CoMKgwqDC oMKgwqB1aW50MzJfdCB0YywgeHRjOw0KPj4gKyvCoMKgwqDCoMKgwqB1aW50MzJfdCB0Yywg ZXhwZWN0ZWRfdGM7DQo+PiArwqDCoMKgwqDCoMKgwqB2YXIgKnY7DQo+PiArDQo+PiArLcKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXMoJXgpXG4iLCBfX2Z1bmNfXywgaWV4 cCk7DQo+PiArK8KgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXMoKSB0ZXJtX3Rj KCV4KToiLCBfX2Z1bmNfXywgdGVybV90Yyk7DQo+PiArK8KgwqDCoMKgwqDCoGRlYnVnX3Bh cnNlX3ByaW50X3RjKHRlcm1fdGMpOw0KPj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf cGFyc2UoIlxuIik7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqBzbi5pbmZvID0gUFJJTUFT SzsNCj4+ICvCoMKgwqDCoMKgwqDCoHNuLnIubiA9IHNuLmEubiA9IGdscHRyID0gTlVMTDsN Cj4+ICstwqDCoMKgwqDCoMKgeHRjID0gVENfT1BFUkFORCB8IFRDX1VPUFBSRSB8IFRDX1JF R0VYUCB8IGlleHA7DQo+PiArK8KgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFO RCB8IFRTX1VPUFBSRSB8IFRDX1JFR0VYUCB8IHRlcm1fdGM7DQo+PiArDQo+PiArLcKgwqDC oMKgwqDCoHdoaWxlICghKCh0YyA9IG5leHRfdG9rZW4oeHRjKSkgJiBpZXhwKSkgew0KPj4g KyvCoMKgwqDCoMKgwqB3aGlsZSAoISgodGMgPSBuZXh0X3Rva2VuKGV4cGVjdGVkX3RjKSkg JiB0ZXJtX3RjKSkgew0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGdscHRyICYmICh0X2luZm8gPT0gKE9DX0NPTVBBUkUgfCBWViB8IFAoMzkpIHwNCj4+ IDIpKSkgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGdscHRyICYm ICh0X2luZm8gPT0gVElfTEVTUykpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaW5wdXQgcmVkaXJlY3Rpb24gKDwpIGF0dGFjaGVk IHRvIGdscHRyDQo+PiBub2RlICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IGlucHV0IHJlZGly XG4iLA0KPj4gX19mdW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjbiA9IGdscHRyLT5sLm4gPSBuZXdfbm9kZShPQ19DT05DQVQg fCBTUyB8DQo+PiBQKDM3KSk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNuLT5hLm4gPSBnbHB0cjsNCj4+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwgVENfVU9Q UFJFOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRTX1VPUFBSRTsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ2xwdHIgPSBOVUxMOw0KPj4g Ky0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAodGMgJiAo VENfQklOT1AgfCBUQ19VT1BQT1NUKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0JJTk9Q IHwgVENfVU9QUE9TVA0KPj4gdGM6JXhcbiIsIF9fZnVuY19fLCB0Yyk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAodGMgJiAoVFNfQklOT1AgfCBUQ19VT1BQT1NUKSkgew0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IFRTX0JJTk9QIHwgVENfVU9QUE9TVA0KPj4gdGM6JXhcbiIsIF9fZnVu Y19fLCB0Yyk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIGZvciBiaW5hcnkgYW5kIHBvc3RmaXgtdW5hcnkgb3BlcmF0b3JzLA0KPj4g anVtcCBiYWNrIG92ZXINCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICogcHJldmlvdXMgb3BlcmF0b3JzIHdpdGggaGlnaGVyIHByaW9yaXR5 ICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHZuID0gY247DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHdoaWxlICgoKHRfaW5mbyAmIFBSSU1BU0spID4gKHZuLT5hLm4tPmluZm8gJg0K Pj4gUFJJTUFTSzIpKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8fCAoKHRfaW5mbyA9PSB2bi0+aW5mbykgJiYgKCh0X2luZm8g Jg0KPj4gT1BDTFNNQVNLKSA9PSBPQ19DT0xPTikpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHx8ICgodF9pbmZvID09IHZuLT5p bmZvKSAmJiB0X2luZm8gPT0NCj4+IFRJX0NPTE9OKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqApIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHZuID0gdm4t PmEubjsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICghdm4tPmEubikNCj4+IHN5bnRheF9lcnJvcihFTVNH X1VORVhQX1RPS0VOKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmICgodF9pbmZvICYgT1BDTFNNQVNLKSA9PSBPQ19URVJOQVJZKQ0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X2lu Zm8gPT0gVElfVEVSTkFSWSkNCj4+ICsrLy9UT0RPOiB3aHk/DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0X2lu Zm8gKz0gUCg2KTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY24gPSB2bi0+YS5uLT5yLm4gPSBuZXdfbm9kZSh0X2luZm8pOw0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+YS5uID0g dm4tPmEubjsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAodGMgJiBUQ19CSU5PUCkgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRTX0JJTk9QKSB7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjbi0+bC5uID0gdm47DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyA9IFRDX09QRVJBTkQgfCBUQ19VT1BQ UkUgfA0KPj4gVENfUkVHRVhQOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKHRfaW5mbyAmIE9QQ0xTTUFT SykgPT0NCj4+IE9DX1BHRVRMSU5FKSB7DQo+PiArKy8vRklYTUU6IHRoaXMgaXMgdGhlIHBs YWNlIHRvIGRldGVjdCBhbmQgcmVqZWN0IGFzc2lnbm1lbnRzIHRvIG5vbi0NCj4+IGx2YWx1 ZXMuDQo+PiArKy8vQ3VycmVudGx5IHdlIGFsbG93ICJhc3NpZ25tZW50cyIgdG8gY29uc3Rz IGFuZCB0ZW1wb3JhcmllcywNCj4+IG5vbnNlbnNlIGxpa2UgdGhpczoNCj4+ICsrLy8gYXdr ICdCRUdJTiB7ICJxd2UiID0gMSB9Jw0KPj4gKysvLyBhd2sgJ0JFR0lOIHsgNyAqPSA3IH0n DQo+PiArKy8vIGF3ayAnQkVHSU4geyBsZW5ndGgoInF3ZSIpID0gMSB9Jw0KPj4gKysvLyBh d2sgJ0JFR0lOIHsgKDErMSkgKz0gMyB9Jw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBleHBlY3RlZF90YyA9IFRT X09QRVJBTkQgfCBUU19VT1BQUkUNCj4+IHwgVENfUkVHRVhQOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo dF9pbmZvID09IFRJX1BHRVRMSU5FKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogaXQncyBhIHBpcGUgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rv a2VuKFRDX0dFVExJTkUpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGdpdmUg bWF4aW11bSBwcmlvcml0eSB0bw0KPj4gdGhpcyBwaXBlICovDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY24tPmluZm8gJj0gflBSSU1BU0s7DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwgVENfVU9QUFJFDQo+PiB8IFRDX0JJTk9QIHwg aWV4cDsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BF UkFORCB8DQo+PiBUU19VT1BQUkUgfCBUU19CSU5PUCB8IHRlcm1fdGM7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ci5uID0gdm47DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHh0YyA9 IFRDX09QRVJBTkQgfCBUQ19VT1BQUkUgfA0KPj4gVENfQklOT1AgfCBpZXhwOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBleHBlY3RlZF90YyA9IFRTX09QRVJBTkQgfCBUU19VT1BQUkUNCj4+IHwgVFNfQklO T1AgfCB0ZXJtX3RjOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZuLT5hLm4gPSBjbjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0NCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0g ZWxzZSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogb3RoZXJcbiIsIF9fZnVuY19fKTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBmb3Igb3Bl cmFuZHMgYW5kIHByZWZpeC11bmFyeSBvcGVyYXRvcnMsDQo+PiBhdHRhY2ggdGhlbQ0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRvIGxh c3Qgbm9kZSAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZuID0gY247DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY24gPSB2bi0+ci5uID0gbmV3X25vZGUodF9pbmZvKTsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+YS5uID0gdm47 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeHRj ID0gVENfT1BFUkFORCB8IFRDX1VPUFBSRSB8IFRDX1JFR0VYUDsNCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGMgJiAoVENfT1BFUkFO RCB8IFRDX1JFR0VYUCkpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczog VENfT1BFUkFORCB8DQo+PiBUQ19SRUdFWFBcbiIsIF9fZnVuY19fKTsNCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg eHRjID0gVENfVU9QUFJFIHwgVENfVU9QUE9TVCB8DQo+PiBUQ19CSU5PUCB8IFRDX09QRVJB TkQgfCBpZXhwOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBvbmUgc2hvdWxkIGJlIHZlcnkgY2FyZWZ1bCB3 aXRoDQo+PiBzd2l0Y2ggb24gdGNsYXNzIC0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogb25seSBzaW1wbGUg dGNsYXNzZXMgc2hvdWxkIGJlDQo+PiB1c2VkISAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKHRj KSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfVkFSSUFCTEU6DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENf QVJSQVk6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2Uo IiVzOg0KPj4gVENfVkFSSUFCTEUgfCBUQ19BUlJBWVxuIiwgX19mdW5jX18pOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gPSBPQ19WQVI7DQo+PiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2ID0gaGFzaF9zZWFyY2goYWhhc2gsDQo+PiB0X3N0cmluZyk7DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodiAhPSBOVUxMKSB7DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gPSBPQ19GTkFSRzsN Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5haWR4 ID0gdi0NCj4+PiB4LmFpZHg7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ug ew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLnYg PQ0KPj4gbmV3dmFyKHRfc3RyaW5nKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0N Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRDX0FSUkFZKSB7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gfD0geFM7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPnIubiA9 DQo+PiBwYXJzZV9leHByKFRDX0FSUlRFUk0pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBvdGhlciwgdF9p bmZvOiV4XG4iLA0KPj4gX19mdW5jX18sIHRfaW5mbyk7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBmb3Igb3BlcmFuZHMgYW5kIHByZWZpeC11bmFyeSBvcGVyYXRv cnMsIGF0dGFjaA0KPj4gdGhlbQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICogdG8gbGFzdCBub2RlICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 biA9IGNuOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24gPSB2bi0+ci5u ID0gbmV3X25vZGUodF9pbmZvKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNuLT5hLm4gPSB2bjsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19OVU1CRVI6DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgVENfU1RSSU5HOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX3BhcnNlKCIlczoNCj4+IFRDX05VTUJFUiB8IFRDX1NUUklOR1xuIiwgX19m dW5jX18pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmluZm8gPSBPQ19WQVI7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gY24tPmwudiA9DQo+PiB4emFsbG9j KHNpemVvZih2YXIpKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRD X05VTUJFUikNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz ZXR2YXJfaSh2LA0KPj4gdF9kb3VibGUpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZWxzZSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0 dmFyX3ModiwNCj4+IHRfc3RyaW5nKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4dGMgJj0gflRDX1VPUFBPU1Q7DQo+PiAvKiAic3RyIisrIGlzIG5v dCBhbGxvd2VkICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFORCB8IFRTX1VPUFBSRSB8IFRDX1JFR0VYUDsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X2luZm8gPT0gVElfUFJF SU5DIHx8IHRfaW5mbyA9PSBUSV9QUkVERUMpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXhwZWN0ZWRfdGMgPSBUU19MVkFMVUUgfCBUQ19V T1BQUkUxOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX1JFR0VYUDoNCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6DQo+PiBUQ19SRUdFWFBc biIsIF9fZnVuY19fKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1rX3JlX25vZGUo dF9zdHJpbmcsIGNuLA0KPj4geHphbGxvYyhzaXplb2YocmVnZXhfdCkqMikpOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoISh0YyAmIChUU19PUEVSQU5EIHwgVENfUkVHRVhQKSkpDQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+ PiArDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfRlVOQ1RJT046DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOg0KPj4gVENfRlVOQ1RJT05cbiIsIF9f ZnVuY19fKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvID0gT0NfRlVO QzsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5yLmYgPSBuZXdmdW5jKHRfc3Ry aW5nKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5sLm4gPSBjb25kaXRpb24o KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVFNfT1BFUkFORCB8 IFRDX1JFR0VYUFxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfVU9QUFJFIHwgVENfVU9QUE9TVCB8IFRTX0JJ Tk9QIHwNCj4+IFRTX09QRVJBTkQgfCB0ZXJtX3RjOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLyogb25lIHNob3VsZCBiZSB2ZXJ5IGNhcmVmdWwgd2l0aCBzd2l0Y2gg b24gdGNsYXNzIC0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG9ubHkg c2ltcGxlIHRjbGFzc2VzIHNob3VsZCBiZSB1c2VkIChUQ194eXosIG5vdA0KPj4gVFNfeHl6 KSAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoICh0Yykgew0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19WQVJJQUJMRToNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfQVJSQVk6DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRm X3BhcnNlKCIlczogVENfVkFSSUFCTEUgfA0KPj4gVENfQVJSQVlcbiIsIF9fZnVuY19fKTsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ aW5mbyA9IE9DX1ZBUjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2ID0gaGFzaF9zZWFyY2goYWhhc2gsIHRfc3RyaW5nKTsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodiAhPSBOVUxM KSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvID0gT0NfRk5BUkc7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5s LmFpZHggPSB2LT54LmFpZHg7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwudiA9IG5ld3Zhcih0 X3N0cmluZyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0YyAmIFRDX0FSUkFZKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvIHw9IHhTOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjbi0+ci5uID0gcGFyc2VfZXhwcihUQ19BUlJURVJNKTsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNhc2UgVENfU0VRU1RBUlQ6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOg0KPj4gVENfU0VRU1RBUlRcbiIsIF9fZnVuY19f KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNuID0gdm4tPnIubiA9DQo+PiBwYXJz ZV9leHByKFRDX1NFUVRFUk0pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFj bikNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhf ZXJyb3IoIkVtcHR5DQo+PiBzZXF1ZW5jZSIpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY24tPmEubiA9IHZuOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFRDX05VTUJFUjoNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfU1RSSU5HOg0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IFRDX05VTUJFUiB8DQo+PiBUQ19TVFJJTkdcbiIsIF9fZnVuY19fKTsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+aW5m byA9IE9DX1ZBUjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2ID0gY24tPmwudiA9IHh6YWxsb2Moc2l6ZW9mKHZhcikpOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0YyAmIFRDX05V TUJFUikNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kodiwgdF9kb3VibGUpOw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2Ugew0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzZXR2YXJfcyh2LCB0X3N0cmluZyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjICY9IH5U Q19VT1BQT1NUOyAvKg0KPj4gInN0ciIrKyBpcyBub3QgYWxsb3dlZCAqLw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBUQ19HRVRMSU5FOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX3BhcnNlKCIlczoNCj4+IFRDX0dFVExJTkVcbiIsIF9fZnVuY19fKTsN Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdscHRyID0gY247DQo+PiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB4dGMgPSBUQ19PUEVSQU5EIHwgVENfVU9QUFJFDQo+PiB8IFRDX0JJ Tk9QIHwgaWV4cDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19SRUdFWFA6DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3Bh cnNlKCIlczogVENfUkVHRVhQXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1rX3JlX25vZGUodF9zdHJpbmcs IGNuLA0KPj4geHphbGxvYyhzaXplb2YocmVnZXhfdCkqMikpOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjYXNlIFRDX0JVSUxUSU46DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOg0KPj4gVENfQlVJTFRJTlxuIiwgX19mdW5jX18pOw0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IGNvbmRpdGlvbigpOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjYXNlIFRDX0ZVTkNUSU9OOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0ZVTkNU SU9OXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNuLT5pbmZvID0gT0NfRlVOQzsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ci5mID0gbmV3ZnVuYyh0 X3N0cmluZyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY24tPmwubiA9IHBhcnNlX2V4cHIoVENfUlBBUkVOKTsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2FzZSBUQ19MRU5HVEg6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOg0KPj4gVENfTEVOR1RIXG4iLCBfX2Z1bmNfXyk7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRDX1NFUVNUQVJUIC8qDQo+PiBs ZW5ndGgoLi4uKSAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHwgVENfT1BURVJNwqDCoMKgIC8qDQo+PiBsZW5ndGg7IChvciBuZXdsaW5lKSovDQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19HUlBURVJN wqDCoCAvKg0KPj4gbGVuZ3RoIH0gKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB8IFRDX0JJTk9QWMKgwqDCoCAvKg0KPj4gbGVuZ3RoIDxvcD4gTlVN ICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19D T01NQcKgwqDCoMKgIC8qDQo+PiBwcmludCBsZW5ndGgsIDEgKi8NCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190 b2tlbigpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYgVENf U0VRU1RBUlQpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBJdCB3YXMgYSAiKCINCj4+IHRva2VuLiBIYW5kbGUganVzdCBsaWtlIFRDX0JVSUxU SU4gKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+ bC5uID0NCj4+IGNvbmRpdGlvbigpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVENfTFBBUkVOOg0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9w YXJzZSgiJXM6IFRDX0xQQVJFTlxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbiA9IHZuLT5yLm4gPSBwYXJz ZV9leHByKFRDX1JQQVJFTik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKCFjbikNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKCJFbXB0 eSBzZXF1ZW5jZSIpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNuLT5hLm4gPSB2bjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFRDX0dFVExJTkU6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENf R0VUTElORVxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnbHB0ciA9IGNuOw0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGV4cGVjdGVkX3RjID0gVFNfT1BFUkFO RCB8IFRTX1VPUFBSRSB8DQo+PiBUU19CSU5PUCB8IHRlcm1fdGM7DQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArKw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBUQ19CVUlMVElOOg0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IFRDX0JVSUxUSU5cbiIsDQo+PiBfX2Z1bmNfXyk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPmwubiA9IHBhcnNl X2xycGFyZW5fbGlzdCgpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgVENfTEVOR1RIOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0xFTkdUSFxu IiwNCj4+IF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0YyA9IG5leHRfdG9rZW4oVENfTFBBUkVOIC8qIGxlbmd0aCguLi4p ICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHwgVENfU0VNSUNPTMKgwqAgLyogbGVuZ3RoOyAqLw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB8IFRDX05FV0xJTkXCoMKgIC8qIGxlbmd0aDxuZXdsaW5lPiAqLw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8IFRDX1JCUkFDRcKgwqDCoCAvKiBsZW5ndGggfSAqLw0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0JJ Tk9QWMKgwqDCoCAvKiBsZW5ndGggPG9wPiBOVU0gKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCBUQ19DT01N QcKgwqDCoMKgIC8qIHByaW50IGxlbmd0aCwgMSAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjICE9IFRDX0xQQVJFTikNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcm9sbGJhY2tfdG9rZW4oKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogSXQgd2FzIGEgIigi IHRva2VuLiBIYW5kbGUganVzdA0KPj4gbGlrZSBUQ19CVUlMVElOICovDQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNuLT5sLm4gPSBwYXJzZV9leHByKFRDX1JQQVJFTik7DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDC oMKgfSAvKiB3aGlsZSgpICovDQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzKCkgcmV0dXJucyAlcFxuIiwgX19mdW5jX18sIHNuLnIubik7DQo+PiAr wqDCoMKgwqDCoMKgwqByZXR1cm4gc24uci5uOw0KPj4gK0BAIC0xNDMwLDcgKzE1MTMsNyBA QCBzdGF0aWMgbm9kZSAqY2hhaW5fbm9kZSh1aW50MzJfdCBpbmZvKQ0KPj4gK8KgwqDCoMKg wqDCoMKgaWYgKHNlcS0+cHJvZ3JhbW5hbWUgIT0gZ19wcm9nbmFtZSkgew0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlcS0+cHJvZ3JhbW5hbWUgPSBnX3Byb2duYW1l Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9D X05FV1NPVVJDRSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm5l d19wcm9nbmFtZSA9IHhzdHJkdXAoZ19wcm9nbmFtZSk7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuLT5sLm5ld19wcm9nbmFtZSA9IGdfcHJvZ25hbWU7DQo+PiArwqDC oMKgwqDCoMKgwqB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqBuID0gc2VxLT5sYXN0Ow0K Pj4gK0BAIC0xNDQ2LDE0ICsxNTI5LDE2IEBAIHN0YXRpYyB2b2lkIGNoYWluX2V4cHIodWlu dDMyX3QgaW5mbykNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKGlu Zm8pOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9leHByKFRDX09Q VEVSTSB8IFRDX0dSUFRFUk0pOw0KPj4gKyvCoMKgwqDCoMKgwqBuLT5sLm4gPSBwYXJzZV9l eHByKFRDX1NFTUlDT0wgfCBUQ19ORVdMSU5FIHwgVENfUkJSQUNFKTsNCj4+ICvCoMKgwqDC oMKgwqDCoGlmICgoaW5mbyAmIE9GX1JFUVVJUkVEKSAmJiAhbi0+bC5uKQ0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1RPT19GRVdfQVJH Uyk7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAmIFRDX0dSUFRFUk0p DQo+PiArK8KgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAmIFRDX1JCUkFDRSkNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gKyB9DQo+ PiArDQo+PiArK3N0YXRpYyB2b2lkIGNoYWluX2dyb3VwKHZvaWQpOw0KPj4gKysNCj4+ICsg c3RhdGljIG5vZGUgKmNoYWluX2xvb3Aobm9kZSAqbm4pDQo+PiArIHsNCj4+ICvCoMKgwqDC oMKgwqDCoG5vZGUgKm4sICpuMiwgKnNhdmVfYnJrLCAqc2F2ZV9jb250Ow0KPj4gK0BAIC0x NDc3LDIwNyArMTU2MiwyODQgQEAgc3RhdGljIG5vZGUgKmNoYWluX2xvb3Aobm9kZSAqbm4p DQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbjsNCj4+ICsgfQ0KPj4gKw0KPj4gKytzdGF0 aWMgdm9pZCBjaGFpbl91bnRpbF9yYnJhY2Uodm9pZCkNCj4+ICsrew0KPj4gKyvCoMKgwqDC oMKgwqB1aW50MzJfdCB0YzsNCj4+ICsrwqDCoMKgwqDCoMKgd2hpbGUgKCh0YyA9IG5leHRf dG9rZW4oVFNfR1JQU0VRIHwgVENfUkJSQUNFKSkgIT0gVENfUkJSQUNFKQ0KPj4gew0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczog IVRDX1JCUkFDRVxuIiwgX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHRjID09IFRDX05FV0xJTkUpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsNCj4+ICsrwqDCoMKgwqDCoMKgfQ0KPj4gKyvC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19SQlJBQ0VcbiIsIF9fZnVu Y19fKTsNCj4+ICsrfQ0KPj4gKysNCj4+ICsgLyogcGFyc2UgZ3JvdXAgYW5kIGF0dGFjaCBp dCB0byBjaGFpbiAqLw0KPj4gKyBzdGF0aWMgdm9pZCBjaGFpbl9ncm91cCh2b2lkKQ0KPj4g KyB7DQo+PiArLcKgwqDCoMKgwqDCoHVpbnQzMl90IGM7DQo+PiArK8KgwqDCoMKgwqDCoHVp bnQzMl90IHRjOw0KPj4gK8KgwqDCoMKgwqDCoMKgbm9kZSAqbiwgKm4yLCAqbjM7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqBkbyB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjID0gbmV4dF90b2tlbihUQ19HUlBTRVEpOw0KPj4gKy3CoMKgwqDCoMKgwqB9IHdo aWxlIChjICYgVENfTkVXTElORSk7DQo+PiArLQ0KPj4gKy3CoMKgwqDCoMKgwqBpZiAoYyAm IFRDX0dSUFNUQVJUKSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1 Z19wcmludGZfcGFyc2UoIiVzOiBUQ19HUlBTVEFSVFxuIiwgX19mdW5jX18pOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKG5leHRfdG9rZW4oVENfR1JQU0VR IHwgVENfR1JQVEVSTSkgIT0NCj4+IFRDX0dSUFRFUk0pIHsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVz OiAhVENfR1JQVEVSTVxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgJiBUQ19ORVdMSU5F KQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19HUlBURVJNXG4iLCBfX2Z1 bmNfXyk7DQo+PiArLcKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoYyAmIChUQ19PUFNFUSB8IFRD X09QVEVSTSkpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3By aW50Zl9wYXJzZSgiJXM6IFRDX09QU0VRIHwgVENfT1BURVJNXG4iLA0KPj4gX19mdW5jX18p Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGMgPSBuZXh0X3Rva2VuKFRT X0dSUFNFUSk7DQo+PiArK8KgwqDCoMKgwqDCoH0gd2hpbGUgKHRjID09IFRDX05FV0xJTkUp Ow0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKHRjID09IFRDX0xCUkFDRSkgew0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczog VENfTEJSQUNFXG4iLCBfX2Z1bmNfXyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjaGFpbl91bnRpbF9yYnJhY2UoKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybjsNCj4+ICsrwqDCoMKgwqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqBp ZiAodGMgJiAoVFNfT1BTRVEgfCBUQ19TRU1JQ09MKSkgew0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVFNfT1BTRVEgfCBUQ19T RU1JQ09MXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2hhaW5fZXhwcihPQ19FWEVDIHwgVngpOw0KPj4gKy3CoMKgwqDCoMKgwqB9IGVs c2Ugew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVENfU1RBVEVNTlQg Ki8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJz ZSgiJXM6IFRDX1NUQVRFTU5UKD8pXG4iLCBfX2Z1bmNfXyk7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKHRfaW5mbyAmIE9QQ0xTTUFTSykgew0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBTVF9JRjoNCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2Uo IiVzOiBTVF9JRlxuIiwgX19mdW5jX18pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0JSIHwgVngpOw0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9 IGNvbmRpdGlvbigpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu Ow0KPj4gKyvCoMKgwqDCoMKgwqB9DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqAvKiBUU19T VEFURU1OVCAqLw0KPj4gKyvCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBU U19TVEFURU1OVCg/KVxuIiwgX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqBzd2l0Y2gg KHRfaW5mbyAmIE9QQ0xTTUFTSykgew0KPj4gKyvCoMKgwqDCoMKgwqBjYXNlIFNUX0lGOg0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogU1RfSUZcbiIsIF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4gPSBjaGFpbl9ub2RlKE9DX0JSIHwgVngpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfbHJwYXJlbl9saXN0KCk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl9ncm91cCgpOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBjaGFpbl9ub2RlKE9DX0VYRUMpOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ci5uID0gc2VxLT5sYXN0Ow0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG5leHRfdG9rZW4oVFNfR1JQU0VRIHwgVENf UkJSQUNFIHwgVENfRUxTRSkgPT0NCj4+IFRDX0VMU0UpIHsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IGNoYWlu X25vZGUoT0NfRVhFQyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbi0+ci5uID0gc2VxLT5sYXN0Ow0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChuZXh0X3Rva2VuKFRDX0dSUFNFUSB8 IFRDX0dSUFRFUk0gfA0KPj4gVENfRUxTRSkgPT0gVENfRUxTRSkgew0KPj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj aGFpbl9ncm91cCgpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMi0+YS5uID0gc2VxLT5sYXN0Ow0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yLT5hLm4gPSBzZXEtPmxhc3Q7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJvbGxiYWNrX3Rva2VuKCk7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgU1RfV0hJTEU6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogU1RfV0hJTEVcbiIsDQo+ PiBfX2Z1bmNfXyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbjIgPSBjb25kaXRpb24oKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbG9vcChOVUxMKTsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMjsN Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsNCj4+ICsrwqDCoMKgwqDCoMKgY2FzZSBTVF9XSElMRToNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFNUX1dISUxFXG4iLCBf X2Z1bmNfXyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuMiA9IHBhcnNl X2xycGFyZW5fbGlzdCgpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9 IGNoYWluX2xvb3AoTlVMTCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBu LT5sLm4gPSBuMjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0K Pj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBTVF9ETzoNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19w cmludGZfcGFyc2UoIiVzOiBTVF9ET1xuIiwgX19mdW5jX18pOw0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yID0gY2hhaW5fbm9kZShPQ19F WEVDKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBuID0gY2hhaW5fbG9vcChOVUxMKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBuMi0+YS5uID0gbi0+YS5uOw0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRfdG9rZW4oVENfV0hJTEUp Ow0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4t PmwubiA9IGNvbmRpdGlvbigpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKgwqBjYXNlIFNUX0RPOg0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogU1RfRE9cbiIsIF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4yID0gY2hhaW5fbm9kZShPQ19FWEVDKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG4gPSBjaGFpbl9sb29wKE5VTEwpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbjItPmEubiA9IG4tPmEubjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG5leHRfdG9rZW4oVENfV0hJTEUpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbi0+bC5uID0gcGFyc2VfbHJwYXJlbl9saXN0KCk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgU1RfRk9SOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFNUX0ZP UlxuIiwgX19mdW5jX18pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG5leHRfdG9rZW4oVENfU0VRU1RBUlQpOw0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4yID0gcGFyc2VfZXhwcihUQ19T RU1JQ09MIHwgVENfU0VRVEVSTSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICYgVENfU0VRVEVSTSkge8KgwqDCoMKg LyogZm9yLWluICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghbjIgfHwgKG4yLT5pbmZvICYgT1BDTFNN QVNLKSAhPQ0KPj4gT0NfSU4pDQo+PiArLQ0KPj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBz eW50YXhfZXJyb3IoRU1TR19VTkVYUF9UT0tFTik7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9u b2RlKE9DX1dBTEtJTklUIHwgVlYpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5uOw0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuLT5yLm4gPSBuMi0+ci5uOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbG9v cChOVUxMKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyA9IE9DX1dBTEtORVhUIHwgVng7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4tPmwubiA9IG4yLT5sLm47DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBmb3IgKDs7KQ0KPj4gKi8NCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg biA9IGNoYWluX25vZGUoT0NfRVhFQyB8IFZ4KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0gbjI7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG4yID0gcGFyc2VfZXhwcihUQ19TRU1JQ09MKTsNCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bjMgPSBwYXJzZV9leHByKFRDX1NFUVRFUk0pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbG9v cChuMyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IG4yOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW4yKQ0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+aW5mbyA9IE9DX0VYRUM7DQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvC oMKgwqDCoMKgwqBjYXNlIFNUX0ZPUjoNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFNUX0ZPUlxuIiwgX19mdW5jX18pOw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tlbihUQ19MUEFSRU4pOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbjIgPSBwYXJzZV9leHByKFRDX1NF TUlDT0wgfCBUQ19SUEFSRU4pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKHRfdGNsYXNzICYgVENfUlBBUkVOKSB7wqDCoMKgwqDCoC8qIGZvciAoSSBpbiBBUlJB WSkNCj4+ICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFuMiB8fCBuMi0+aW5mbyAhPSBUSV9JTikNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4 X2Vycm9yKEVNU0dfVU5FWFBfVE9LRU4pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX1dBTEtJTklUIHwgVlYp Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4t PmwubiA9IG4yLT5sLm47DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbi0+ci5uID0gbjItPnIubjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuID0gY2hhaW5fbG9vcChOVUxMKTsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5pbmZvID0g T0NfV0FMS05FWFQgfCBWeDsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMi0+bC5uOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfSBlbHNlIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBmb3IgKDs7KSAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0VYRUMgfCBWeCk7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+ bC5uID0gbjI7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbjIgPSBwYXJzZV9leHByKFRDX1NFTUlDT0wpOw0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4zID0gcGFyc2VfZXhwcihUQ19SUEFS RU4pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG4gPSBjaGFpbl9sb29wKG4zKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuLT5sLm4gPSBuMjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW4yKQ0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuLT5pbmZv ID0gT0NfRVhFQzsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKw0KPj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBPQ19QUklOVDoNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNhc2UgT0NfUFJJTlRGOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IE9D X1BSSU5UW0ZdXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2RlKHRfaW5mbyk7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+bC5uID0g cGFyc2VfZXhwcihUQ19PUFRFUk0gfCBUQ19PVVRSRFIgfA0KPj4gVENfR1JQVEVSTSk7DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRf dGNsYXNzICYgVENfT1VUUkRSKSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmluZm8gfD0gdF9pbmZvOw0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuLT5yLm4gPSBwYXJzZV9leHByKFRDX09QVEVSTSB8DQo+PiBUQ19HUlBU RVJNKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKHRfdGNsYXNzICYgVENfR1JQVEVSTSkNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcm9sbGJhY2tfdG9rZW4o KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsNCj4+ICsrwqDCoMKgwqDCoMKgY2FzZSBPQ19QUklOVDoNCj4+ICsrwqDCoMKgwqDC oMKgY2FzZSBPQ19QUklOVEY6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk ZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBPQ19QUklOVFtGXVxuIiwgX19mdW5jX18pOw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25vZGUodF9pbmZvKTsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmwubiA9IHBhcnNlX2V4cHIo VENfU0VNSUNPTCB8IFRDX05FV0xJTkUgfA0KPj4gVENfT1VUUkRSIHwgVENfUkJSQUNFKTsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X3RjbGFzcyAmIFRDX09V VFJEUikgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4tPmluZm8gfD0gdF9pbmZvOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG4tPnIubiA9IHBhcnNlX2V4cHIoVENfU0VNSUNPTCB8IFRD X05FV0xJTkUgfA0KPj4gVENfUkJSQUNFKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0X3RjbGFz cyAmIFRDX1JCUkFDRSkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIE9DX0JSRUFLOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IE9DX0JSRUFLXG4iLA0KPj4g X19mdW5jX18pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4gPSBjaGFpbl9ub2RlKE9DX0VYRUMpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4tPmEubiA9IGJyZWFrX3B0cjsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl9leHBy KHRfaW5mbyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7DQo+PiArK8KgwqDCoMKgwqDCoGNhc2UgT0NfQlJFQUs6DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBPQ19C UkVBS1xuIiwgX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg biA9IGNoYWluX25vZGUoT0NfRVhFQyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIWJyZWFrX3B0cikNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoIidicmVhaycgbm90IGluIGEgbG9vcCIp Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+YS5uID0gYnJlYWtfcHRy Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8p Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIE9DX0NPTlRJTlVFOg0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IE9DX0NPTlRJTlVFXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG4gPSBjaGFpbl9ub2Rl KE9DX0VYRUMpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG4tPmEubiA9IGNvbnRpbnVlX3B0cjsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl9leHByKHRfaW5mbyk7DQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiAr K8KgwqDCoMKgwqDCoGNhc2UgT0NfQ09OVElOVUU6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBPQ19DT05USU5VRVxuIiwgX19m dW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbiA9IGNoYWluX25v ZGUoT0NfRVhFQyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWNv bnRpbnVlX3B0cikNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzeW50YXhfZXJyb3IoIidjb250aW51ZScgbm90IGluIGEgbG9vcCIpOw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbi0+YS5uID0gY29udGludWVfcHRyOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8pOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBkZWxldGUsIG5leHQsIG5leHRmaWxlLCBy ZXR1cm4sIGV4aXQgKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlZmF1 bHQ6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVmYXVsdFxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFpbl9l eHByKHRfaW5mbyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiAr K8KgwqDCoMKgwqDCoC8qIGRlbGV0ZSwgbmV4dCwgbmV4dGZpbGUsIHJldHVybiwgZXhpdCAq Lw0KPj4gKyvCoMKgwqDCoMKgwqBkZWZhdWx0Og0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogZGVmYXVsdFxuIiwgX19mdW5jX18p Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZXhwcih0X2luZm8p Ow0KPj4gK8KgwqDCoMKgwqDCoMKgfQ0KPj4gKyB9DQo+PiArDQo+PiArIHN0YXRpYyB2b2lk IHBhcnNlX3Byb2dyYW0oY2hhciAqcCkNCj4+ICsgew0KPj4gKy3CoMKgwqDCoMKgwqB1aW50 MzJfdCB0Y2xhc3M7DQo+PiArLcKgwqDCoMKgwqDCoG5vZGUgKmNuOw0KPj4gKy3CoMKgwqDC oMKgwqBmdW5jICpmOw0KPj4gKy3CoMKgwqDCoMKgwqB2YXIgKnY7DQo+PiArK8KgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXMoKVxuIiwgX19mdW5jX18pOw0KPj4gKw0KPj4g K8KgwqDCoMKgwqDCoMKgZ19wb3MgPSBwOw0KPj4gK8KgwqDCoMKgwqDCoMKgdF9saW5lbm8g PSAxOw0KPj4gKy3CoMKgwqDCoMKgwqB3aGlsZSAoKHRjbGFzcyA9IG5leHRfdG9rZW4oVENf RU9GIHwgVENfT1BTRVEgfCBUQ19HUlBTVEFSVCB8DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVENfT1BURVJNIHwgVENfQkVHSU4gfCBUQ19F TkQgfCBUQ19GVU5DREVDTCkpDQo+PiAhPSBUQ19FT0YpIHsNCj4+ICsrwqDCoMKgwqDCoMKg Zm9yICg7Oykgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3Qg dGNsYXNzOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRj bGFzcyAmIFRDX09QVEVSTSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX09QVEVSTVxuIiwN Cj4+IF9fZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRjbGFz cyA9IG5leHRfdG9rZW4oVFNfT1BTRVEgfCBUQ19MQlJBQ0UgfCBUQ19CRUdJTiB8DQo+PiBU Q19FTkQgfCBUQ19GVU5DREVDTA0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHwgVENfRU9GIHwgVENfTkVXTElORSAvKiBidXQgbm90IFRDX1NF TUlDT0wNCj4+ICovKTsNCj4+ICsrIGdvdF90b2s6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAodGNsYXNzID09IFRDX0VPRikgew0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6 IFRDX0VPRlxuIiwgX19mdW5jX18pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyA9 PSBUQ19ORVdMSU5FKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfTkVXTElORVxuIiwNCj4+ IF9fZnVuY19fKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29udGludWU7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQ0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlcSA9ICZtYWlu c2VxOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyAmIFRD X0JFR0lOKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGNsYXNz ID09IFRDX0JFR0lOKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0JFR0lOXG4iLA0KPj4g X19mdW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBzZXEgPSAmYmVnaW5zZXE7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAodGNsYXNzICYgVENfRU5EKSB7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW5zdXJlIHRo ZXJlIGlzIG5vIG5ld2xpbmUgYmV0d2VlbiBCRUdJTg0KPj4gYW5kIHsgKi8NCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRD X0xCUkFDRSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2hhaW5fdW50aWxfcmJyYWNlKCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBuZXh0X3RvazsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmICh0Y2xhc3MgPT0gVENfRU5EKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRDX0VORFxu IiwgX19mdW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzZXEgPSAmZW5kc2VxOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRjbGFzcyAmIFRDX0ZVTkNERUNMKSB7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW5z dXJlIHRoZXJlIGlzIG5vIG5ld2xpbmUgYmV0d2VlbiBFTkQgYW5kDQo+PiB7ICovDQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dF90b2tl bihUQ19MQlJBQ0UpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNoYWluX3VudGlsX3JicmFjZSgpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gbmV4dF90b2s7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAodGNsYXNzID09IFRDX0ZVTkNERUNMKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnVuYyAqZjsNCj4+ICsrDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9wYXJzZSgiJXM6IFRDX0ZVTkNERUNMXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0X3Rva2VuKFRD X0ZVTkNUSU9OKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnX3BvcysrOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmID0gbmV3ZnVuYyh0X3N0cmluZyk7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZi0+Ym9keS5maXJzdCA9IE5VTEw7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZi0+ bmFyZ3MgPSAwOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIE1hdGNoIGZ1bmMgYXJnIGxpc3Q6IGEgY29tbWEgc2VwIGxpc3Qgb2YNCj4+ PiA9IDAgYXJncywgYW5kIGEgY2xvc2UgcGFyZW4gKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAobmV4dF90b2tlbihUQ19WQVJJ QUJMRSB8IFRDX1NFUVRFUk0gfA0KPj4gVENfQ09NTUEpKSB7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEVp dGhlciBhbiBlbXB0eSBhcmcgbGlzdCwgb3INCj4+IHRyYWlsaW5nIGNvbW1hIGZyb20gcHJl diBpdGVyDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYXJnICovDQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChmLT5uYXJncyA9PSAwICYmIHRfdGNsYXNzID09DQo+PiBUQ19TRVFU RVJNKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArLQ0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBUQ19TRVFTVEFSVC9UQ19DT01NQSBtdXN0IGJlDQo+PiBmb2xsb3dlZCBieSBU Q19WQVJJQUJMRSAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodF90Y2xhc3MgIT0gVENfVkFSSUFCTEUp DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGYtPmRlZmluZWQpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN5bnRheF9lcnJvcigiRHVwbGljYXRlIGZ1bmN0 aW9uIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZi0+ZGVmaW5lZCA9IDE7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLy9mLT5ib2R5LmZpcnN0ID0gTlVMTDsgLSBhbHJlYWR5IGlzDQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy9mLT5u YXJncyA9IDA7IC0gYWxyZWFkeSBpcw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoC8qIGZ1bmMgYXJnIGxpc3Q6IGNvbW1hIHNlcCBsaXN0IG9m IGFyZ3MsIGFuZA0KPj4gYSBjbG9zZSBwYXJlbiAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoOzspIHsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFy ICp2Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dF90b2tlbihUQ19WQVJJQUJMRSB8DQo+PiBUQ19S UEFSRU4pID09IFRDX1JQQVJFTikgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGYtPm5hcmdzID09IDApDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7IC8qIGZ1bmMoKSBpcw0KPj4gb2sgKi8NCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIGZ1bmMoYSwpIGlzIG5vdCBvayAqLw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN5bnRheF9lcnJvcihFTVNHX1VORVhQX1RPS0VODQo+PiApOw0KPj4gKy0N Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9IGZpbmR2YXIoYWhhc2gsIHRfc3RyaW5n KTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHYtPnguYWlkeCA9IGYtPm5hcmdzKys7DQo+PiArLQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogQXJnIGZvbGxvd2VkIGVpdGhlciBieSBlbmQgb2YgYXJnDQo+PiBsaXN0IG9y IDEgY29tbWEgKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG5leHRfdG9rZW4oVENfQ09NTUEgfCBUQ19T RVFURVJNKQ0KPj4gJiBUQ19TRVFURVJNKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dF90b2tlbihU Q19DT01NQSB8IFRDX1JQQVJFTikNCj4+ID09IFRDX1JQQVJFTikNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRfdGNsYXNzICE9IFRDX0NP TU1BKQ0KPj4gKy0NCj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVN U0dfVU5FWFBfVE9LRU4pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBpdCB3YXMgYSBjb21tYSwgd2UgYXRl IGl0ICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc2VxID0gJmYtPmJvZHk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShhaGFzaCk7DQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHRjbGFzcyAmIFRDX09QU0VR KSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX3BhcnNlKCIlczogVENfT1BTRVFcbiIsDQo+PiBfX2Z1bmNfXyk7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW5z dXJlIHRoZXJlIGlzIHsgYWZ0ZXIgImZ1bmMgRiguLi4pIiAtDQo+PiBidXQgbmV3bGluZXMg YXJlIGFsbG93ZWQgKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB3aGlsZSAobmV4dF90b2tlbihUQ19MQlJBQ0UgfCBUQ19ORVdMSU5FKSA9 PQ0KPj4gVENfTkVXTElORSkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fdW50aWxfcmJyYWNl KCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aGFzaF9jbGVhcihhaGFzaCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ290byBuZXh0X3RvazsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNlcSA9ICZt YWluc2VxOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHRjbGFzcyAm IFRTX09QU0VRKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbm9kZSAqY247DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9wYXJzZSgiJXM6IFRTX09QU0VR XG4iLA0KPj4gX19mdW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbiA9IGNoYWluX25vZGUoT0NfVEVT VCk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y24tPmwubiA9IHBhcnNlX2V4cHIoVENfT1BURVJNIHwgVENfRU9GIHwNCj4+IFRDX0dSUFNU QVJUKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAodF90Y2xhc3MgJiBUQ19HUlBTVEFSVCkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfcGFyc2UoIiVzOg0KPj4gVENfR1JQU1RBUlRcbiIsIF9fZnVuY19fKTsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcm9sbGJhY2tfdG9rZW4oKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fZ3JvdXAoKTsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbi0+bC5uID0g cGFyc2VfZXhwcihUQ19TRU1JQ09MIHwgVENfTkVXTElORQ0KPj4gfCBUQ19FT0YgfCBUQ19M QlJBQ0UpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmICh0X3RjbGFzcyA9PSBUQ19MQlJBQ0UpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX3BhcnNlKCIlczogVENfTEJSQUNFXG4iLA0KPj4gX19mdW5jX18pOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjaGFpbl91bnRpbF9yYnJhY2UoKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRm X3BhcnNlKCIlczoNCj4+ICFUQ19HUlBTVEFSVFxuIiwgX19mdW5jX18pOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBubyBhY3Rpb24sIGFzc3VtZSBkZWZhdWx0ICJ7IHByaW50DQo+PiB9IiAqLw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOg0KPj4gIVRDX0xCUkFDRVxuIiwgX19m dW5jX18pOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhaW5fbm9kZShPQ19QUklOVCk7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY24tPnIubiA9IG1haW5z ZXEubGFzdDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSAvKiBp ZiAodGNsYXNzICYgVENfR1JQU1RBUlQpICovIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19H UlBTVEFSVCg/KVxuIiwNCj4+IF9fZnVuY19fKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByb2xsYmFja190b2tlbigpOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX2dyb3VwKCk7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290 byBuZXh0X3RvazsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiAr LcKgwqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX3BhcnNlKCIl czogVENfRU9GXG4iLCBfX2Z1bmNfXyk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiB0Y2xhc3MgPT0gVENfTEJSQUNFICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfcGFyc2UoIiVzOiBUQ19MQlJBQ0UoPylcbiIsIF9f ZnVuY19fKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYWluX3VudGls X3JicmFjZSgpOw0KPj4gKysgbmV4dF90b2s6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBTYW1lIGFzIG5leHRfdG9rZW4oKSBhdCB0aGUgdG9wIG9mIHRoZSBsb29w LCArDQo+PiBUQ19TRU1JQ09MICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0Y2xhc3MgPSBuZXh0X3Rva2VuKFRTX09QU0VRIHwgVENfTEJSQUNFIHwgVENfQkVHSU4g fA0KPj4gVENfRU5EIHwgVENfRlVOQ0RFQ0wNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IFRDX0VPRiB8IFRDX05FV0xJTkUgfCBUQ19TRU1J Q09MKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGdhd2sgYWxsb3dz IG1hbnkgbmV3bGluZXMsIGJ1dCBkb2VzIG5vdCBhbGxvdyBtb3JlDQo+PiB0aGFuIG9uZSBz ZW1pY29sb246DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgIEJFR0lO IHsuLi59PG5ld2xpbmU+OzxuZXdsaW5lPjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIHdvdWxkIGNvbXBsYWluICJlYWNoIHJ1bGUgbXVzdCBoYXZlIGEgcGF0dGVy biBvcg0KPj4gYW4gYWN0aW9uIHBhcnQiLg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogU2FtZSBtZXNzYWdlIGZvcg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICrCoCA7IEJFR0lOIHsuLi59DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICh0Y2xhc3Mg IT0gVENfU0VNSUNPTCkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIGdvdF90b2s7IC8qIHVzZSB0aGlzIHRva2VuICovDQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBlbHNlOiBsb29wIGJhY2sgLSBhdGUgdGhl IHNlbWljb2xvbiwgZ2V0IGFuZCB1c2UNCj4+IF9uZXh0XyB0b2tlbiAqLw0KPj4gKyvCoMKg wqDCoMKgwqB9IC8qIGZvciAoOzspICovDQo+PiArIH0NCj4+ICsNCj4+ICstDQo+PiArIC8q IC0tLS0tLS0tIHByb2dyYW0gZXhlY3V0aW9uIHBhcnQgLS0tLS0tLS0gKi8NCj4+ICsNCj4+ ICsrLyogdGVtcG9yYXJ5IHZhcmlhYmxlcyBhbGxvY2F0b3IgKi8NCj4+ICsrc3RhdGljIHZh ciAqbnZhbGxvYyhpbnQgc3opDQo+PiArK3sNCj4+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIHh6 YWxsb2Moc3ogKiBzaXplb2YodmFyKSk7DQo+PiArK30NCj4+ICsrDQo+PiArK3N0YXRpYyB2 b2lkIG52ZnJlZSh2YXIgKnYsIGludCBzeikNCj4+ICsrew0KPj4gKyvCoMKgwqDCoMKgwqB2 YXIgKnAgPSB2Ow0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgd2hpbGUgKC0tc3ogPj0gMCkg ew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChwLT50eXBlICYgKFZG X0FSUkFZIHwgVkZfQ0hJTEQpKSA9PSBWRl9BUlJBWSkgew0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsZWFyX2FycmF5KGlhbWFycmF5KHAp KTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBm cmVlKHAtPnguYXJyYXktPml0ZW1zKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHAtPnguYXJyYXkpOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKHAtPnR5cGUgJiBWRl9XQUxLKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Fsa2VyX2xpc3QgKm47DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2Fsa2VyX2xpc3QgKncgPSBwLT54 LndhbGtlcjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZWJ1Z19wcmludGZfd2Fsa2VyKCJudmZyZWU6IGZyZWVpbmcgd2Fsa2VyDQo+PiBA JXBcbiIsICZwLT54LndhbGtlcik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcC0+eC53YWxrZXIgPSBOVUxMOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICh3KSB7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4gPSB3LT5wcmV2Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfd2Fsa2VyKCIgZnJl ZSglcClcbiIsDQo+PiB3KTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJlZSh3KTsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdyA9 IG47DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2xydmFyKHApOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcCsrOw0KPj4gKyvCoMKgwqDCoMKgwqB9DQo+PiArKw0KPj4gKyvCoMKgwqDC oMKgwqBmcmVlKHYpOw0KPj4gKyt9DQo+PiArKw0KPj4gKyBzdGF0aWMgbm9kZSAqbWtfc3Bs aXR0ZXIoY29uc3QgY2hhciAqcywgdHNwbGl0dGVyICpzcGwpDQo+PiArIHsNCj4+ICvCoMKg wqDCoMKgwqDCoHJlZ2V4X3QgKnJlLCAqaXJlOw0KPj4gK0BAIC0xNjg2LDcgKzE4NDgsNyBA QCBzdGF0aWMgbm9kZSAqbWtfc3BsaXR0ZXIoY29uc3QgY2hhciAqcywNCj4+IHRzcGxpdHRl ciAqc3BsKQ0KPj4gK8KgwqDCoMKgwqDCoMKgcmUgPSAmc3BsLT5yZVswXTsNCj4+ICvCoMKg wqDCoMKgwqDCoGlyZSA9ICZzcGwtPnJlWzFdOw0KPj4gK8KgwqDCoMKgwqDCoMKgbiA9ICZz cGwtPm47DQo+PiArLcKgwqDCoMKgwqDCoGlmICgobi0+aW5mbyAmIE9QQ0xTTUFTSykgPT0g T0NfUkVHRVhQKSB7DQo+PiArK8KgwqDCoMKgwqDCoGlmIChuLT5pbmZvID09IFRJX1JFR0VY UCkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2ZyZWUocmUpOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZ2ZyZWUoaXJlKTsgLy8gVE9E TzogbnVrZSBpcmUsIHVzZSByZSsxPw0KPj4gK8KgwqDCoMKgwqDCoMKgfQ0KPj4gK0BAIC0x Njk5LDIxICsxODYxLDI4IEBAIHN0YXRpYyBub2RlICpta19zcGxpdHRlcihjb25zdCBjaGFy ICpzLA0KPj4gdHNwbGl0dGVyICpzcGwpDQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gbjsN Cj4+ICsgfQ0KPj4gKw0KPj4gKy0vKiB1c2Ugbm9kZSBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lv bi4gU3VwcGxpZWQgd2l0aCBub2RlIHB0ciBhbmQNCj4+IHJlZ2V4X3QNCj4+ICsrc3RhdGlj IHZhciAqZXZhbHVhdGUobm9kZSAqLCB2YXIgKik7DQo+PiArKw0KPj4gKysvKiBVc2Ugbm9k ZSBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gU3VwcGxpZWQgd2l0aCBub2RlIHB0ciBhbmQN Cj4+IHJlZ2V4X3QNCj4+ICvCoCAqIHN0b3JhZ2Ugc3BhY2UuIFJldHVybiBwdHIgdG8gcmVn ZXggKGlmIHJlc3VsdCBwb2ludHMgdG8gcHJlZywgaXQNCj4+IHNob3VsZA0KPj4gKy0gKiBi ZSBsYXRlciByZWdmcmVlJ2QgbWFudWFsbHkNCj4+ICsrICogYmUgbGF0ZXIgcmVnZnJlZSdk IG1hbnVhbGx5KS4NCj4+ICvCoCAqLw0KPj4gKyBzdGF0aWMgcmVnZXhfdCAqYXNfcmVnZXgo bm9kZSAqb3AsIHJlZ2V4X3QgKnByZWcpDQo+PiArIHsNCj4+ICvCoMKgwqDCoMKgwqDCoGlu dCBjZmxhZ3M7DQo+PiArLcKgwqDCoMKgwqDCoHZhciAqdjsNCj4+ICvCoMKgwqDCoMKgwqDC oGNvbnN0IGNoYXIgKnM7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoGlmICgob3AtPmluZm8g JiBPUENMU01BU0spID09IE9DX1JFR0VYUCkgew0KPj4gKyvCoMKgwqDCoMKgwqBpZiAob3At PmluZm8gPT0gVElfUkVHRVhQKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIGljYXNlID8gb3AtPnIuaXJlIDogb3AtPmwucmU7DQo+PiArwqDCoMKgwqDC oMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoHYgPSBudmFsbG9jKDEpOw0KPj4gKy3CoMKgwqDC oMKgwqBzID0gZ2V0dmFyX3MoZXZhbHVhdGUob3AsIHYpKTsNCj4+ICsrDQo+PiArK8KgwqDC oMKgwqDCoC8vdG1wdmFyID0gbnZhbGxvYygxKTsNCj4+ICsrI2RlZmluZSBUTVBWQVIgKCZH LmFzX3JlZ2V4X190bXB2YXIpDQo+PiArK8KgwqDCoMKgwqDCoC8vIFdlIHVzZSBhIHNpbmds ZSAic3RhdGljIiB0bXB2YXIgKGluc3RlYWQgb2Ygb24tc3RhY2sgb3INCj4+IG1hbGxvY2Vk IG9uZSkNCj4+ICsrwqDCoMKgwqDCoMKgLy8gdG8gZGVjcmVhc2UgbWVtb3J5IGNvbnN1bXB0 aW9uIGluIGRlZXBseS1yZWN1cnNpdmUgYXdrDQo+PiBwcm9ncmFtcy4NCj4+ICsrwqDCoMKg wqDCoMKgLy8gVGhlIHJ1bGUgdG8gd29yayBzYWZlbHkgaXMgdG8gbmV2ZXIgY2FsbCBldmFs dWF0ZSgpIHdoaWxlDQo+PiBvdXIgc3RhdGljDQo+PiArK8KgwqDCoMKgwqDCoC8vIFRNUFZB UidzIHZhbHVlIGlzIHN0aWxsIG5lZWRlZC4NCj4+ICsrwqDCoMKgwqDCoMKgcyA9IGdldHZh cl9zKGV2YWx1YXRlKG9wLCBUTVBWQVIpKTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoGNm bGFncyA9IGljYXNlID8gUkVHX0VYVEVOREVEIHwgUkVHX0lDQVNFIDogUkVHX0VYVEVOREVE Ow0KPj4gK8KgwqDCoMKgwqDCoMKgLyogVGVzdGNhc2Ugd2hlcmUgUkVHX0VYVEVOREVEIGZh aWxzICh1bnBhaXJlZCAneycpOg0KPj4gK0BAIC0xNzI1LDcgKzE4OTQsOCBAQCBzdGF0aWMg cmVnZXhfdCAqYXNfcmVnZXgobm9kZSAqb3AsIHJlZ2V4X3QNCj4+ICpwcmVnKQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNmbGFncyAmPSB+UkVHX0VYVEVOREVEOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhyZWdjb21wKHByZWcsIHMsIGNm bGFncyk7DQo+PiArwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoG52ZnJlZSh2 KTsNCj4+ICsrwqDCoMKgwqDCoMKgLy9udmZyZWUodG1wdmFyLCAxKTsNCj4+ICsrI3VuZGVm IFRNUFZBUg0KPj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHByZWc7DQo+PiArIH0NCj4+ICsN Cj4+ICtAQCAtMTc0NSwxMiArMTkxNSwyMiBAQCBzdGF0aWMgY2hhciogcXJlYWxsb2MoY2hh ciAqYiwgaW50IG4sIGludA0KPj4gKnNpemUpDQo+PiArIC8qIHJlc2l6ZSBmaWVsZCBzdG9y YWdlIHNwYWNlICovDQo+PiArIHN0YXRpYyB2b2lkIGZzcmVhbGxvYyhpbnQgc2l6ZSkNCj4+ ICsgew0KPj4gKy3CoMKgwqDCoMKgwqBpbnQgaTsNCj4+ICsrwqDCoMKgwqDCoMKgaW50IGks IG5ld3NpemU7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqBpZiAoc2l6ZSA+PSBtYXhmaWVs ZHMpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFNhbml0eSBjYXAs IGVhc2llciB0aGFuIGNhdGVyaW5nIGZvciBvdmVyZmxvd3MgKi8NCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChzaXplID4gMHhmZmZmZmYpDQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmJfZGllX21lbW9yeV9leGhh dXN0ZWQoKTsNCj4+ICsrDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaSA9 IG1heGZpZWxkczsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYXhmaWVs ZHMgPSBzaXplICsgMTY7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBGaWVs ZHMgPSB4cmVhbGxvYyhGaWVsZHMsIG1heGZpZWxkcyAqDQo+PiBzaXplb2YoRmllbGRzWzBd KSk7DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV3c2l6ZSA9 IG1heGZpZWxkcyAqIHNpemVvZihGaWVsZHNbMF0pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoImZzcmVhbGxvYzogeHJlYWxsb2MoJXAs ICV1KVxuIiwNCj4+IEZpZWxkcywgbmV3c2l6ZSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBGaWVsZHMgPSB4cmVhbGxvYyhGaWVsZHMsIG5ld3NpemUpOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoImZzcmVhbGxv YzogRmllbGRzPSVwLi4lcFxuIiwNCj4+IEZpZWxkcywgKGNoYXIqKUZpZWxkcyArIG5ld3Np emUgLSAxKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIF5eXiBkaWQg RmllbGRzW10gbW92ZT8gZGVidWcgYWlkIGZvciBMLnYgZ2V0dGluZw0KPj4gInVwc3RhZ2Vk IiBieSBSLnYgaW4gZXZhbHVhdGUoKSAqLw0KPj4gKysNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBmb3IgKDsgaSA8IG1heGZpZWxkczsgaSsrKSB7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEZpZWxkc1tpXS50eXBl ID0gVkZfU1BFQ0lBTDsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgRmllbGRzW2ldLnN0cmluZyA9IE5VTEw7DQo+PiArQEAgLTE4MDIsMTMg KzE5ODIsMTMgQEAgc3RhdGljIGludCBhd2tfc3BsaXQoY29uc3QgY2hhciAqcywgbm9kZQ0K Pj4gKnNwbCwgY2hhciAqKnNsaXN0KQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNbMl0gPSAnXG4nOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgbiA9IDA7DQo+PiAr LcKgwqDCoMKgwqDCoGlmICgoc3BsLT5pbmZvICYgT1BDTFNNQVNLKSA9PSBPQ19SRUdFWFAp IHvCoCAvKiByZWdleCBzcGxpdA0KPj4gKi8NCj4+ICsrwqDCoMKgwqDCoMKgaWYgKHNwbC0+ aW5mbyA9PSBUSV9SRUdFWFApIHvCoCAvKiByZWdleCBzcGxpdCAqLw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghKnMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBuOyAvKiAiIjogemVybyBmaWVs ZHMgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuKys7IC8qIGF0IGxl YXN0IG9uZSBmaWVsZCB3aWxsIGJlIHRoZXJlICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZG8gew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpbnQgbDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsyXTsgLy8gVE9ETzogd2h5IFsy XT8gWzFdDQo+PiBpcyBlbm91Z2guLi4NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsxXTsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbCA9IHN0cmNz cG4ocywgYysyKTsgLyogbGVuIHRpbGwgbmV4dCBOVUwgb3INCj4+IFxuICovDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZWdleGVj MV9ub25lbXB0eShpY2FzZSA/IHNwbC0+ci5pcmUgOg0KPj4gc3BsLT5sLnJlLCBzLCBwbWF0 Y2gpID09IDANCj4+ICtAQCAtMTk2OSw3ICsyMTQ5LDcgQEAgc3RhdGljIG5vZGUgKm5leHRh cmcobm9kZSAqKnBuKQ0KPj4gK8KgwqDCoMKgwqDCoMKgbm9kZSAqbjsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoG4gPSAqcG47DQo+PiArLcKgwqDCoMKgwqDCoGlmIChuICYmIChuLT5p bmZvICYgT1BDTFNNQVNLKSA9PSBPQ19DT01NQSkgew0KPj4gKyvCoMKgwqDCoMKgwqBpZiAo biAmJiBuLT5pbmZvID09IFRJX0NPTU1BKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKnBuID0gbi0+ci5uOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG4gPSBuLT5sLm47DQo+PiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPj4gK0BAIC0y MDAwLDggKzIxODAsNyBAQCBzdGF0aWMgdm9pZCBoYXNod2Fsa19pbml0KHZhciAqdiwgeGhh c2gNCj4+ICphcnJheSkNCj4+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBhcnJh eS0+Y3NpemU7IGkrKykgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhp ID0gYXJyYXktPml0ZW1zW2ldOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHdoaWxlIChoaSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0cmNweSh3LT5lbmQsIGhpLT5uYW1lKTsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBuZXh0d29yZCgmdy0+ZW5kKTsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3LT5lbmQg PSBzdHBjcHkody0+ZW5kLCBoaS0+bmFtZSkgKyAxOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoaSA9IGhpLT5uZXh0Ow0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvCoMKgwqDCoMKgwqDCoH0NCj4+ICtA QCAtMjAyNywxNSArMjIwNiwxOCBAQCBzdGF0aWMgaW50IGhhc2h3YWxrX25leHQodmFyICp2 KQ0KPj4gKyAvKiBldmFsdWF0ZSBub2RlLCByZXR1cm4gMSB3aGVuIHJlc3VsdCBpcyB0cnVl LCAwIG90aGVyd2lzZSAqLw0KPj4gKyBzdGF0aWMgaW50IHB0ZXN0KG5vZGUgKnBhdHRlcm4p DQo+PiArIHsNCj4+ICstwqDCoMKgwqDCoMKgLyogcHRlc3RfX3YgaXMgInN0YXRpYyI6IHRv IHNhdmUgc3RhY2sgc3BhY2U/ICovDQo+PiArLcKgwqDCoMKgwqDCoHJldHVybiBpc3RydWUo ZXZhbHVhdGUocGF0dGVybiwgJkcucHRlc3RfX3YpKTsNCj4+ICsrwqDCoMKgwqDCoMKgLy8g V2UgdXNlIGEgc2luZ2xlICJzdGF0aWMiIHRtcHZhciAoaW5zdGVhZCBvZiBvbi1zdGFjayBv cg0KPj4gbWFsbG9jZWQgb25lKQ0KPj4gKyvCoMKgwqDCoMKgwqAvLyB0byBkZWNyZWFzZSBt ZW1vcnkgY29uc3VtcHRpb24gaW4gZGVlcGx5LXJlY3Vyc2l2ZSBhd2sNCj4+IHByb2dyYW1z Lg0KPj4gKyvCoMKgwqDCoMKgwqAvLyBUaGUgcnVsZSB0byB3b3JrIHNhZmVseSBpcyB0byBu ZXZlciBjYWxsIGV2YWx1YXRlKCkgd2hpbGUNCj4+IG91ciBzdGF0aWMNCj4+ICsrwqDCoMKg wqDCoMKgLy8gVE1QVkFSJ3MgdmFsdWUgaXMgc3RpbGwgbmVlZGVkLg0KPj4gKyvCoMKgwqDC oMKgwqByZXR1cm4gaXN0cnVlKGV2YWx1YXRlKHBhdHRlcm4sICZHLnB0ZXN0X190bXB2YXIp KTsNCj4+ICsgfQ0KPj4gKw0KPj4gKyAvKiByZWFkIG5leHQgcmVjb3JkIGZyb20gc3RyZWFt IHJzbSBpbnRvIGEgdmFyaWFibGUgdiAqLw0KPj4gKyBzdGF0aWMgaW50IGF3a19nZXRsaW5l KHJzdHJlYW0gKnJzbSwgdmFyICp2KQ0KPj4gKyB7DQo+PiArwqDCoMKgwqDCoMKgwqBjaGFy ICpiOw0KPj4gKy3CoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsyXTsgLy8gVE9ETzog d2h5IFsyXT8gWzFdIGlzIGVub3VnaC4uLg0KPj4gKyvCoMKgwqDCoMKgwqByZWdtYXRjaF90 IHBtYXRjaFsxXTsNCj4+ICvCoMKgwqDCoMKgwqDCoGludCBzaXplLCBhLCBwLCBwcCA9IDA7 DQo+PiArwqDCoMKgwqDCoMKgwqBpbnQgZmQsIHNvLCBlbywgciwgcnA7DQo+PiArwqDCoMKg wqDCoMKgwqBjaGFyIGMsICptLCAqczsNCj4+ICtAQCAtMjA2MSw3ICsyMjQzLDcgQEAgc3Rh dGljIGludCBhd2tfZ2V0bGluZShyc3RyZWFtICpyc20sIHZhciAqdikNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbyA9IGVvID0gcDsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByID0gMTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAocCA+IDApIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoKHJzcGxpdHRlci5uLmluZm8gJiBPUENMU01BU0spID09DQo+ PiBPQ19SRUdFWFApIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAocnNwbGl0dGVyLm4uaW5mbyA9PSBUSV9SRUdFWFApIHsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChyZWdleGVjKGljYXNlID8gcnNwbGl0dGVyLm4uci5pcmUNCj4+IDogcnNw bGl0dGVyLm4ubC5yZSwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGIsIDEsIHBtYXRjaCwNCj4+IDApID09IDApIHsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbyA9IHBtYXRjaFswXS5ybV9zbzsNCj4+ICtA QCAtMjEzMyw4MiArMjMxNSwxMjYgQEAgc3RhdGljIGludCBhd2tfZ2V0bGluZShyc3RyZWFt ICpyc20sIHZhcg0KPj4gKnYpDQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcjsNCj4+ICsg fQ0KPj4gKw0KPj4gKy1zdGF0aWMgaW50IGZtdF9udW0oY2hhciAqYiwgaW50IHNpemUsIGNv bnN0IGNoYXIgKmZvcm1hdCwgZG91YmxlIG4sDQo+PiBpbnQgaW50X2FzX2ludCkNCj4+ICst ew0KPj4gKy3CoMKgwqDCoMKgwqBpbnQgciA9IDA7DQo+PiArLcKgwqDCoMKgwqDCoGNoYXIg YzsNCj4+ICstwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqcyA9IGZvcm1hdDsNCj4+ICstDQo+ PiArLcKgwqDCoMKgwqDCoGlmIChpbnRfYXNfaW50ICYmIG4gPT0gKGxvbmcgbG9uZyluKSB7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByID0gc25wcmludGYoYiwgc2l6 ZSwgIiVsbGQiLCAobG9uZyBsb25nKW4pOw0KPj4gKy3CoMKgwqDCoMKgwqB9IGVsc2Ugew0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG8geyBjID0gKnM7IH0gd2hpbGUg KGMgJiYgKisrcyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoc3Ry Y2hyKCJkaW91eFgiLCBjKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHIgPSBzbnByaW50ZihiLCBzaXplLCBmb3JtYXQsIChpbnQpbik7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKHN0cmNocigi ZUVmZ0ciLCBjKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHIgPSBzbnByaW50ZihiLCBzaXplLCBmb3JtYXQsIG4pOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3IoRU1TR19JTlZfRk1U KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDC oMKgfQ0KPj4gKy3CoMKgwqDCoMKgwqByZXR1cm4gcjsNCj4+ICstfQ0KPj4gKy0NCj4+ICsg LyogZm9ybWF0dGVkIG91dHB1dCBpbnRvIGFuIGFsbG9jYXRlZCBidWZmZXIsIHJldHVybiBw dHIgdG8gYnVmZmVyDQo+PiAqLw0KPj4gKy1zdGF0aWMgY2hhciAqYXdrX3ByaW50Zihub2Rl ICpuKQ0KPj4gKysjaWYgIUVOQUJMRV9GRUFUVVJFX0FXS19HTlVfRVhURU5TSU9OUw0KPj4g KysjIGRlZmluZSBhd2tfcHJpbnRmKGEsIGIpIGF3a19wcmludGYoYSkNCj4+ICsrI2VuZGlm DQo+PiArK3N0YXRpYyBjaGFyICphd2tfcHJpbnRmKG5vZGUgKm4sIHNpemVfdCAqbGVuKQ0K Pj4gKyB7DQo+PiArLcKgwqDCoMKgwqDCoGNoYXIgKmIgPSBOVUxMOw0KPj4gKy3CoMKgwqDC oMKgwqBjaGFyICpmbXQsICpzLCAqZjsNCj4+ICstwqDCoMKgwqDCoMKgY29uc3QgY2hhciAq czE7DQo+PiArLcKgwqDCoMKgwqDCoGludCBpLCBqLCBpbmNyLCBic2l6ZTsNCj4+ICstwqDC oMKgwqDCoMKgY2hhciBjLCBjMTsNCj4+ICstwqDCoMKgwqDCoMKgdmFyICp2LCAqYXJnOw0K Pj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgdiA9IG52YWxsb2MoMSk7DQo+PiArLcKgwqDCoMKg wqDCoGZtdCA9IGYgPSB4c3RyZHVwKGdldHZhcl9zKGV2YWx1YXRlKG5leHRhcmcoJm4pLCB2 KSkpOw0KPj4gKy0NCj4+ICsrwqDCoMKgwqDCoMKgY2hhciAqYjsNCj4+ICsrwqDCoMKgwqDC oMKgY2hhciAqZm10LCAqZjsNCj4+ICsrwqDCoMKgwqDCoMKgc2l6ZV90IGk7DQo+PiArKw0K Pj4gKyvCoMKgwqDCoMKgwqAvL3RtcHZhciA9IG52YWxsb2MoMSk7DQo+PiArKyNkZWZpbmUg VE1QVkFSICgmRy5hd2tfcHJpbnRmX190bXB2YXIpDQo+PiArK8KgwqDCoMKgwqDCoC8vIFdl IHVzZSBhIHNpbmdsZSAic3RhdGljIiB0bXB2YXIgKGluc3RlYWQgb2Ygb24tc3RhY2sgb3IN Cj4+IG1hbGxvY2VkIG9uZSkNCj4+ICsrwqDCoMKgwqDCoMKgLy8gdG8gZGVjcmVhc2UgbWVt b3J5IGNvbnN1bXB0aW9uIGluIGRlZXBseS1yZWN1cnNpdmUgYXdrDQo+PiBwcm9ncmFtcy4N Cj4+ICsrwqDCoMKgwqDCoMKgLy8gVGhlIHJ1bGUgdG8gd29yayBzYWZlbHkgaXMgdG8gbmV2 ZXIgY2FsbCBldmFsdWF0ZSgpIHdoaWxlDQo+PiBvdXIgc3RhdGljDQo+PiArK8KgwqDCoMKg wqDCoC8vIFRNUFZBUidzIHZhbHVlIGlzIHN0aWxsIG5lZWRlZC4NCj4+ICsrwqDCoMKgwqDC oMKgZm10ID0gZiA9IHhzdHJkdXAoZ2V0dmFyX3MoZXZhbHVhdGUobmV4dGFyZygmbiksIFRN UFZBUikpKTsNCj4+ICsrwqDCoMKgwqDCoMKgLy8gXl5eXl5eXl5eIGhlcmUgd2UgaW1tZWRp YXRlbHkgc3RyZHVwKCkgdGhlIHZhbHVlLCBzbyB0aGUNCj4+IGxhdGVyIGNhbGwNCj4+ICsr wqDCoMKgwqDCoMKgLy8gdG8gZXZhbHVhdGUoKSBwb3RlbnRpYWxseSByZWN1cnNpbmcgaW50 byBhbm90aGVyDQo+PiBhd2tfcHJpbnRmKCkgY2FuJ3QNCj4+ICsrwqDCoMKgwqDCoMKgLy8g bWFuZ2xlIHRoZSB2YWx1ZS4NCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoGIgPSBOVUxMOw0K Pj4gK8KgwqDCoMKgwqDCoMKgaSA9IDA7DQo+PiArLcKgwqDCoMKgwqDCoHdoaWxlICgqZikg ew0KPj4gKyvCoMKgwqDCoMKgwqB3aGlsZSAoMSkgeyAvKiAicHJpbnQgb25lIGZvcm1hdCBz cGVjIiBsb29wICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpz Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciBjOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciBzdjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHZhciAqYXJnOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc2l6ZV90IHNsZW47DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogRmluZCBlbmQgb2YgdGhlIG5leHQgZm9ybWF0IHNwZWMsIG9yIGVuZCBvZiBsaW5l DQo+PiAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMgPSBmOw0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKCpmICYmICgqZiAhPSAnJScg fHwgKisrZiA9PSAnJScpKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGYrKzsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdo aWxlICgqZiAmJiAhaXNhbHBoYSgqZikpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKmYgPT0gJyonKQ0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50 YXhfZXJyb3IoIiUqeCBmb3JtYXRzIGFyZSBub3QNCj4+IHN1cHBvcnRlZCIpOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgd2hpbGUgKDEpIHsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjID0gKmY7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFjKSAvKiBubyBw ZXJjZW50IGNoYXJzIGZvdW5kIGF0IGFsbCAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG51bDsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZisrOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChj ID09ICclJykNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQ0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlu Y3IgPSAoZiAtIHMpICsgTUFYVkFSRk1UOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYiA9IHFyZWFsbG9jKGIsIGluY3IgKyBpLCAmYnNpemUpOw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogd2UgYXJlIHBhc3QgJSBpbiAiLi4uLiUuLi4iICov DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYyA9ICpmOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMgIT0gJ1wwJykNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICghYykgLyogIi4uLi4lIiAqLw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gbnVsOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGMgPT0gJyUnKSB7IC8qICIuLi4uJSUu Li4uIiAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHNsZW4gPSBmIC0gczsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBzID0geHN0cm5kdXAocywgc2xlbik7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGYrKzsNCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGMxID0gKmY7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBhcHBlbmQ7IC8qIHByaW50ICIuLi4uJSIg cGFydCB2ZXJiYXRpbQ0KPj4gKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdoaWxlICgxKSB7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGlzYWxw aGEoYykpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjID09ICcqJykNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4 X2Vycm9yKCIlKnggZm9ybWF0cyBhcmUgbm90DQo+PiBzdXBwb3J0ZWQiKTsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjID0gKisrZjsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWMp IHsgLyogIi4uLi4lLi4uLiIgYW5kIG5vIGxldHRlciBmb3VuZA0KPj4gYWZ0ZXIgJSAqLw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAvKiBFeGFtcGxlOiBhd2sgJ0JFR0lOIHsgcHJpbnRmDQo+PiAiXl5eJV5e XlxuIjsgfScgKi8NCj4+ICsrIG51bDoNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2xlbiA9IGYgLSBzOw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnb3RvIHRhaWw7IC8qIHByaW50IHJlbWFpbmluZyBzdHJpbmcsDQo+PiBleGl0 IGxvb3AgKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB3ZSBhcmUgYXQgQSBpbiAiLi4uLiUuLi5BLi4u IiAqLw0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFyZyA9IGV2 YWx1YXRlKG5leHRhcmcoJm4pLCBUTVBWQVIpOw0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIFJlc3VsdCBjYW4gYmUgYXJiaXRyYXJpbHkgbG9uZy4gRXhh bXBsZToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqAgcHJpbnRmICIl OTk5OTlzIiwgIkJPT00iDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN2ID0gKisrZjsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZiA9ICdcMCc7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBhcmcgPSBldmFsdWF0ZShuZXh0YXJnKCZuKSwgdik7DQo+PiAr LQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaiA9IGk7DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYyA9PSAnYycgfHwgIWMpIHsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IHNwcmludGYo YitpLCBzLCBpc19udW1lcmljKGFyZykgPw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KGNoYXIpZ2V0dmFyX2koYXJnKSA6DQo+PiAqZ2V0dmFyX3MoYXJnKSk7DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKGMgPT0gJ3MnKSB7DQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgczEgPSBnZXR2YXJf cyhhcmcpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGIgPSBxcmVhbGxvYyhiLCBpbmNyK2krc3RybGVuKHMxKSwgJmJzaXplKTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IHNwcmlu dGYoYitpLCBzLCBzMSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo YyA9PSAnYycpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjaGFyIGNjID0gaXNfbnVtZXJpYyhhcmcpID8gZ2V0dmFyX2koYXJnKSA6DQo+ PiAqZ2V0dmFyX3MoYXJnKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjaGFyICpyID0geGFzcHJpbnRmKHMsIGNjID8gY2MgOiAnXicgLyog ZWxzZQ0KPj4gc3RybGVuIHdpbGwgYmUgd3JvbmcgKi8pOw0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNsZW4gPSBzdHJsZW4ocik7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNjID09 ICdcMCcpIC8qIGlmIGNjIGlzIE5VTCwgcmUtZm9ybWF0DQo+PiB0aGUgc3RyaW5nIHdpdGgg aXQgKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3ByaW50ZihyLCBzLCBjYyk7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcyA9IHI7DQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpICs9IGZtdF9udW0oYitpLCBpbmNyLCBzLCBn ZXR2YXJfaShhcmcpLA0KPj4gRkFMU0UpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjID09ICdzJykgew0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0g eGFzcHJpbnRmKHMsIGdldHZhcl9zKGFyZykpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRvdWJsZSBk ID0gZ2V0dmFyX2koYXJnKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0cmNocigiZGlvdXhYIiwgYykp IHsNCj4+ICsrLy9UT0RPOiBtYWtlIGl0IHdpZGVyIGhlcmUgKCV4IC0+ICVsbHggZXRjKT8N Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMgPSB4YXNwcmludGYocywgKGludClkKTsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfSBlbHNlIGlmIChzdHJjaHIoImVFZkZnR2FBIiwgYykpIHsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHMgPSB4YXNwcmludGYocywgZCk7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0gZWxzZSB7DQo+PiArKy8vVE9ETzogR05VIEF3ayA1LjAuMTogcHJpbnRmICIlVyIgcHJp bnRzICIlVyIsIGRvZXMgbm90IGVycm9yIG91dA0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc3ludGF4X2Vycm9yKEVNU0dfSU5WX0ZNVCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2xlbiA9IHN0cmxlbihz KTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAqZiA9IGMxOw0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBzcHJpbnRm LCByZXR1cm4gdmFsdWUNCj4+IGlzIG5lZ2F0aXZlICovDQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoaSA8IGopDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaSA9IGo7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAqZiA9IHN2Ow0KPj4gKysgYXBwZW5kOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGkgPT0gMCkgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGIgPSBzOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgPSBzbGVuOw0KPj4gKyvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKysgdGFpbDoNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGIgPSB4cmVhbGxvYyhiLCBpICsgc2xlbiArIDEpOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyY3B5KGIgKyBpLCBzKTsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgKz0gc2xlbjsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICghYykgLyogcyBpcyBOT1QgYWxsb2NhdGVkIGFuZCB0aGlz IGlzIHRoZSBsYXN0DQo+PiBwYXJ0IG9mIHN0cmluZz8gKi8NCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUocyk7DQo+PiArwqDCoMKgwqDCoMKgwqB9DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqBmcmVlKGZtdCk7DQo+PiArLcKgwqDCoMKgwqDCoG52ZnJl ZSh2KTsNCj4+ICstwqDCoMKgwqDCoMKgYiA9IHhyZWFsbG9jKGIsIGkgKyAxKTsNCj4+ICst wqDCoMKgwqDCoMKgYltpXSA9ICdcMCc7DQo+PiArK8KgwqDCoMKgwqDCoC8vbnZmcmVlKHRt cHZhciwgMSk7DQo+PiArKyN1bmRlZiBUTVBWQVINCj4+ICsrDQo+PiArKyNpZiBFTkFCTEVf RkVBVFVSRV9BV0tfR05VX0VYVEVOU0lPTlMNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKGxlbikN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCpsZW4gPSBpOw0KPj4gKysjZW5k aWYNCj4+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBiOw0KPj4gKyB9DQo+PiArDQo+PiArQEAg LTIzMzgsMzMgKzI1NjQsNTkgQEAgc3RhdGljIE5PSU5MSU5FIGludCBkb19ta3RpbWUoY29u c3QgY2hhcg0KPj4gKmRzKQ0KPj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIG1rdGltZSgmdGhl bik7DQo+PiArIH0NCj4+ICsNCj4+ICsrLyogUmVkdWNlIHN0YWNrIHVzYWdlIGluIGV4ZWNf YnVpbHRpbigpIGJ5IGtlZXBpbmcgbWF0Y2goKSBjb2RlDQo+PiBzZXBhcmF0ZSAqLw0KPj4g KytzdGF0aWMgTk9JTkxJTkUgdmFyICpkb19tYXRjaChub2RlICphbjEsIGNvbnN0IGNoYXIg KmFzMCkNCj4+ICsrew0KPj4gKyvCoMKgwqDCoMKgwqByZWdtYXRjaF90IHBtYXRjaFsxXTsN Cj4+ICsrwqDCoMKgwqDCoMKgcmVnZXhfdCBzcmVnLCAqcmU7DQo+PiArK8KgwqDCoMKgwqDC oGludCBuLCBzdGFydCwgbGVuOw0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgcmUgPSBhc19y ZWdleChhbjEsICZzcmVnKTsNCj4+ICsrwqDCoMKgwqDCoMKgbiA9IHJlZ2V4ZWMocmUsIGFz MCwgMSwgcG1hdGNoLCAwKTsNCj4+ICsrwqDCoMKgwqDCoMKgaWYgKHJlID09ICZzcmVnKQ0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVnZnJlZShyZSk7DQo+PiArK8Kg wqDCoMKgwqDCoHN0YXJ0ID0gMDsNCj4+ICsrwqDCoMKgwqDCoMKgbGVuID0gLTE7DQo+PiAr K8KgwqDCoMKgwqDCoGlmIChuID09IDApIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0YXJ0ID0gcG1hdGNoWzBdLnJtX3NvICsgMTsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGxlbiA9IHBtYXRjaFswXS5ybV9lbyAtIHBtYXRjaFswXS5ybV9z bzsNCj4+ICsrwqDCoMKgwqDCoMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqBzZXR2YXJfaShuZXd2 YXIoIlJMRU5HVEgiKSwgbGVuKTsNCj4+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIHNldHZhcl9p KG5ld3ZhcigiUlNUQVJUIiksIHN0YXJ0KTsNCj4+ICsrfQ0KPj4gKysNCj4+ICsrLyogUmVk dWNlIHN0YWNrIHVzYWdlIGluIGV2YWx1YXRlKCkgYnkga2VlcGluZyBidWlsdGlucycgY29k ZQ0KPj4gc2VwYXJhdGUgKi8NCj4+ICsgc3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWls dGluKG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICsgew0KPj4gKyAjZGVmaW5lIHRzcGwgKEcu ZXhlY19idWlsdGluX190c3BsKQ0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqB2YXIgKnR2Ow0K Pj4gKyvCoMKgwqDCoMKgwqB2YXIgKnRtcHZhcnM7DQo+PiArwqDCoMKgwqDCoMKgwqBub2Rl ICphbls0XTsNCj4+ICvCoMKgwqDCoMKgwqDCoHZhciAqYXZbNF07DQo+PiArwqDCoMKgwqDC oMKgwqBjb25zdCBjaGFyICphc1s0XTsNCj4+ICstwqDCoMKgwqDCoMKgcmVnbWF0Y2hfdCBw bWF0Y2hbMl07DQo+PiArLcKgwqDCoMKgwqDCoHJlZ2V4X3Qgc3JlZywgKnJlOw0KPj4gK8Kg wqDCoMKgwqDCoMKgbm9kZSAqc3BsOw0KPj4gK8KgwqDCoMKgwqDCoMKgdWludDMyX3QgaXNy LCBpbmZvOw0KPj4gK8KgwqDCoMKgwqDCoMKgaW50IG5hcmdzOw0KPj4gK8KgwqDCoMKgwqDC oMKgdGltZV90IHR0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgaW50IGksIGwsIGxsLCBuOw0KPj4g Kw0KPj4gKy3CoMKgwqDCoMKgwqB0diA9IG52YWxsb2MoNCk7DQo+PiArK8KgwqDCoMKgwqDC oHRtcHZhcnMgPSBudmFsbG9jKDQpOw0KPj4gKysjZGVmaW5lIFRNUFZBUjAgKHRtcHZhcnMp DQo+PiArKyNkZWZpbmUgVE1QVkFSMSAodG1wdmFycyArIDEpDQo+PiArKyNkZWZpbmUgVE1Q VkFSMiAodG1wdmFycyArIDIpDQo+PiArKyNkZWZpbmUgVE1QVkFSMyAodG1wdmFycyArIDMp DQo+PiArKyNkZWZpbmUgVE1QVkFSKGkpICh0bXB2YXJzICsgKGkpKQ0KPj4gK8KgwqDCoMKg wqDCoMKgaXNyID0gaW5mbyA9IG9wLT5pbmZvOw0KPj4gK8KgwqDCoMKgwqDCoMKgb3AgPSBv cC0+bC5uOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgYXZbMl0gPSBhdlszXSA9IE5VTEw7 DQo+PiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgNCAmJiBvcDsgaSsrKSB7DQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYW5baV0gPSBuZXh0YXJnKCZvcCk7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgwOTAwMDAw MCkNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBh dltpXSA9IGV2YWx1YXRlKGFuW2ldLCAmdHZbaV0pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGlzciAmIDB4MDgwMDAwMDApDQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXNbaV0gPSBnZXR2YXJfcyhhdltpXSk7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNyICYgMHgwOTAwMDAw MCkgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGF2W2ldID0gZXZhbHVhdGUoYW5baV0sIFRNUFZBUihpKSk7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGlzciAmIDB4MDgwMDAwMDAp DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGFzW2ldID0gZ2V0dmFyX3MoYXZbaV0pOw0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlzciA+Pj0gMTsNCj4+ICvCoMKgwqDCoMKgwqDCoH0NCj4+ICsNCj4+ICtAQCAtMjM4Niw4 ICsyNjM4LDggQEAgc3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5vZGUgKm9w LA0KPj4gdmFyICpyZXMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hh ciAqcywgKnMxOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChuYXJncyA+IDIpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzcGwgPSAoYW5bMl0tPmluZm8gJiBPUENMU01BU0spID09IE9DX1JFR0VY UA0KPj4gPw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBhblsyXSA6DQo+PiBta19zcGxpdHRlcihnZXR2YXJfcyhl dmFsdWF0ZShhblsyXSwgJnR2WzJdKSksICZ0c3BsKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGwgPSAoYW5bMl0tPmluZm8gPT0gVElf UkVHRVhQKSA/IGFuWzJdDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDoNCj4+IG1rX3NwbGl0dGVyKGdldHZhcl9z KGV2YWx1YXRlKGFuWzJdLCBUTVBWQVIyKSksICZ0c3BsKTsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcGwgPSAmZnNwbGl0dGVyLm47DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gK0BAIC0yNTAxLDIwICsyNzUzLDcgQEAg c3RhdGljIE5PSU5MSU5FIHZhciAqZXhlY19idWlsdGluKG5vZGUgKm9wLA0KPj4gdmFyICpy ZXMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+ PiArwqDCoMKgwqDCoMKgwqBjYXNlIEJfbWE6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZSA9IGFzX3JlZ2V4KGFuWzFdLCAmc3JlZyk7DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBuID0gcmVnZXhlYyhyZSwgYXNbMF0sIDEsIHBtYXRjaCwgMCk7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobiA9PSAwKSB7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBd LnJtX3NvKys7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcG1hdGNoWzBdLnJtX2VvKys7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9IGVsc2Ugew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHBtYXRjaFswXS5ybV9zbyA9IDA7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcG1hdGNoWzBdLnJtX2VvID0gLTE7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzZXR2YXJfaShuZXd2YXIoIlJTVEFSVCIpLCBwbWF0Y2hbMF0ucm1fc28p Ow0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kobmV3dmFyKCJS TEVOR1RIIiksIHBtYXRjaFswXS5ybV9lbyAtDQo+PiBwbWF0Y2hbMF0ucm1fc28pOw0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kocmVzLCBwbWF0Y2hbMF0u cm1fc28pOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJlID09ICZz cmVnKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJlZ2ZyZWUocmUpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzID0g ZG9fbWF0Y2goYW5bMV0sIGFzWzBdKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoGNhc2UgQl9nZToNCj4+ICtA QCAtMjUzMCwxNCArMjc2OSw3OSBAQCBzdGF0aWMgTk9JTkxJTkUgdmFyICpleGVjX2J1aWx0 aW4obm9kZSAqb3AsDQo+PiB2YXIgKnJlcykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsNCj4+ICvCoMKgwqDCoMKgwqDCoH0NCj4+ICsNCj4+ICstwqDCoMKg wqDCoMKgbnZmcmVlKHR2KTsNCj4+ICsrwqDCoMKgwqDCoMKgbnZmcmVlKHRtcHZhcnMsIDQp Ow0KPj4gKysjdW5kZWYgVE1QVkFSMA0KPj4gKysjdW5kZWYgVE1QVkFSMQ0KPj4gKysjdW5k ZWYgVE1QVkFSMg0KPj4gKysjdW5kZWYgVE1QVkFSMw0KPj4gKysjdW5kZWYgVE1QVkFSDQo+ PiArKw0KPj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJlczsNCj4+ICsgI3VuZGVmIHRzcGwN Cj4+ICsgfQ0KPj4gKw0KPj4gKysvKiBpZiBleHByIGxvb2tzIGxpa2UgInZhcj12YWx1ZSIs IHBlcmZvcm0gYXNzaWdubWVudCBhbmQgcmV0dXJuIDEsDQo+PiArKyAqIG90aGVyd2lzZSBy ZXR1cm4gMCAqLw0KPj4gKytzdGF0aWMgaW50IGlzX2Fzc2lnbm1lbnQoY29uc3QgY2hhciAq ZXhwcikNCj4+ICsrew0KPj4gKyvCoMKgwqDCoMKgwqBjaGFyICpleHByYywgKnZhbDsNCj4+ ICsrDQo+PiArK8KgwqDCoMKgwqDCoHZhbCA9IChjaGFyKillbmRvZm5hbWUoZXhwcik7DQo+ PiArK8KgwqDCoMKgwqDCoGlmICh2YWwgPT0gKGNoYXIqKWV4cHIgfHwgKnZhbCAhPSAnPScp IHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBGQUxTRTsNCj4+ ICsrwqDCoMKgwqDCoMKgfQ0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgZXhwcmMgPSB4c3Ry ZHVwKGV4cHIpOw0KPj4gKyvCoMKgwqDCoMKgwqB2YWwgPSBleHByYyArICh2YWwgLSBleHBy KTsNCj4+ICsrwqDCoMKgwqDCoMKgKnZhbCsrID0gJ1wwJzsNCj4+ICsrDQo+PiArK8KgwqDC oMKgwqDCoHVuZXNjYXBlX3N0cmluZ19pbl9wbGFjZSh2YWwpOw0KPj4gKyvCoMKgwqDCoMKg wqBzZXR2YXJfdShuZXd2YXIoZXhwcmMpLCB2YWwpOw0KPj4gKyvCoMKgwqDCoMKgwqBmcmVl KGV4cHJjKTsNCj4+ICsrwqDCoMKgwqDCoMKgcmV0dXJuIFRSVUU7DQo+PiArK30NCj4+ICsr DQo+PiArKy8qIHN3aXRjaCB0byBuZXh0IGlucHV0IGZpbGUgKi8NCj4+ICsrc3RhdGljIHJz dHJlYW0gKm5leHRfaW5wdXRfZmlsZSh2b2lkKQ0KPj4gKyt7DQo+PiArKyNkZWZpbmUgcnNt wqDCoMKgwqDCoMKgwqDCoMKgIChHLm5leHRfaW5wdXRfZmlsZV9fcnNtKQ0KPj4gKysjZGVm aW5lIGZpbGVzX2hhcHBlbiAoRy5uZXh0X2lucHV0X2ZpbGVfX2ZpbGVzX2hhcHBlbikNCj4+ ICsrDQo+PiArK8KgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmZuYW1lLCAqaW5kOw0KPj4gKysN Cj4+ICsrwqDCoMKgwqDCoMKgaWYgKHJzbS5GKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZmNsb3NlKHJzbS5GKTsNCj4+ICsrwqDCoMKgwqDCoMKgcnNtLkYgPSBOVUxM Ow0KPj4gKyvCoMKgwqDCoMKgwqByc20ucG9zID0gcnNtLmFkdiA9IDA7DQo+PiArKw0KPj4g KyvCoMKgwqDCoMKgwqBmb3IgKDs7KSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoZ2V0dmFyX2koaW50dmFyW0FSR0lORF0pKzEgPj0NCj4+IGdldHZhcl9pKGlu dHZhcltBUkdDXSkpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAoZmlsZXNfaGFwcGVuKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gTlVMTDsN Cj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFt ZSA9ICItIjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByc20uRiA9IHN0ZGluOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW5kID0gZ2V0dmFyX3Mo aW5jdmFyKGludHZhcltBUkdJTkRdKSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmbmFtZSA9IGdldHZhcl9zKGZpbmR2YXIoaWFtYXJyYXkoaW50dmFyW0FSR1ZdKSwN Cj4+IGluZCkpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZuYW1l ICYmICpmbmFtZSAmJiAhaXNfYXNzaWdubWVudChmbmFtZSkpIHsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc20uRiA9IHhmb3Blbl9zdGRp bihmbmFtZSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiAr K8KgwqDCoMKgwqDCoH0NCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoGZpbGVzX2hhcHBlbiA9 IFRSVUU7DQo+PiArK8KgwqDCoMKgwqDCoHNldHZhcl9zKGludHZhcltGSUxFTkFNRV0sIGZu YW1lKTsNCj4+ICsrwqDCoMKgwqDCoMKgcmV0dXJuICZyc207DQo+PiArKyN1bmRlZiByc20N Cj4+ICsrI3VuZGVmIGZpbGVzX2hhcHBlbg0KPj4gKyt9DQo+PiArKw0KPj4gKyAvKg0KPj4g K8KgICogRXZhbHVhdGUgbm9kZSAtIHRoZSBoZWFydCBvZiB0aGUgcHJvZ3JhbS4gU3VwcGxp ZWQgd2l0aCBzdWJ0cmVlDQo+PiArLSAqIGFuZCBwbGFjZSB3aGVyZSB0byBzdG9yZSByZXN1 bHQuIHJldHVybnMgcHRyIHRvIHJlc3VsdC4NCj4+ICsrICogYW5kICJyZXMiIHZhcmlhYmxl IHRvIGFzc2lnbiB0aGUgcmVzdWx0IHRvIGlmIHdlIGV2YWx1YXRlIGFuDQo+PiBleHByZXNz aW9uLg0KPj4gKysgKiBJZiBub2RlIHJlZmVycyB0byBlLmcuIGEgdmFyaWFibGUgb3IgYSBm aWVsZCwgbm8gYXNzaWdubWVudA0KPj4gaGFwcGVucy4NCj4+ICsrICogUmV0dXJuIHB0ciB0 byB0aGUgcmVzdWx0ICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB0aGUgInJlcyINCj4+IHZh cmlhYmxlISkNCj4+ICvCoCAqLw0KPj4gKyAjZGVmaW5lIFhDKG4pICgobikgPj4gOCkNCj4+ ICsNCj4+ICtAQCAtMjU0OSwxNCArMjg1MywxNiBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShu b2RlICpvcCwgdmFyICpyZXMpDQo+PiArICNkZWZpbmUgc2VlZMKgwqAgKEcuZXZhbHVhdGVf X3NlZWQpDQo+PiArICNkZWZpbmUgc3JlZ8KgwqAgKEcuZXZhbHVhdGVfX3NyZWcpDQo+PiAr DQo+PiArLcKgwqDCoMKgwqDCoHZhciAqdjE7DQo+PiArK8KgwqDCoMKgwqDCoHZhciAqdG1w dmFyczsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoGlmICghb3ApDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNldHZhcl9zKHJlcywgTlVMTCk7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiZW50ZXJlZCAlcygpXG4i LCBfX2Z1bmNfXyk7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoHYxID0gbnZhbGxvYygyKTsN Cj4+ICsrwqDCoMKgwqDCoMKgdG1wdmFycyA9IG52YWxsb2MoMik7DQo+PiArKyNkZWZpbmUg VE1QVkFSMCAodG1wdmFycykNCj4+ICsrI2RlZmluZSBUTVBWQVIxICh0bXB2YXJzICsgMSkN Cj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoHdoaWxlIChvcCkgew0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB7DQo+PiArQEAgLTI1NzgsNDggKzI4ODQsMzUg QEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wMSA9IG9wLT5sLm47DQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIm9waW5mbzolMDh4IG9w bjolMDh4XG4iLCBvcGluZm8sDQo+PiBvcG4pOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLyogImRlbGV0ZSIgaXMgc3BlY2lhbDoNCj4+ICstwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqICJkZWxldGUgYXJyYXlbdmFyLS1dIiBtdXN0IGV2YWx1 YXRlIGluZGV4IGV4cHINCj4+IG9ubHkgb25jZSwNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIG11c3Qgbm90IGV2YWx1YXRlIGl0IGluICJleGVjdXRlIGluZXZpdGFi bGUNCj4+IHRoaW5ncyIgcGFydC4NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFhDKG9waW5mbyAm IE9QQ0xTTUFTSykgPT0gWEMoT0NfREVMRVRFKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IGluZm8gPSBvcDEtPmluZm8g JiBPUENMU01BU0s7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdmFyICp2Ow0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiREVMRVRFXG4iKTsNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaW5m byA9PSBPQ19WQVIpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9IG9wMS0+bC52Ow0KPj4gKy3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSBpZiAoaW5mbyA9 PSBPQ19GTkFSRykgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gJmZuYXJnc1tvcDEtPmwuYWlkeF07DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNl IHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfTk9UX0FSUkFZKTsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIGV4ZWN1dGUgaW5ldml0YWJsZSB0aGluZ3Mg Ki8NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9S RVMxKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKChvcGluZm8gJiBPRl9SRVFVSVJFRCkgJiYgIW9wMSkNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3lu dGF4X2Vycm9yKEVNU0dfVE9PX0ZFV19BUkdTKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMLnYgPSBldmFsdWF0ZShvcDEsIFRNUFZBUjAp Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChvcGluZm8gJiBPRl9TVFIxKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEwucyA9IGdldHZhcl9zKEwudik7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJMLnM6JyVzJ1xuIiwgTC5zKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcDEt PnIubikgeyAvKiBhcnJheSByZWY/ICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnM7DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHMgPSBnZXR2YXJfcyhldmFsdWF0ZShvcDEtPnIubiwgdjEpKTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaGFzaF9yZW1vdmUoaWFtYXJyYXkodiksIHMpOw0KPj4gKy3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7DQo+PiArLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNs ZWFyX2FycmF5KGlhbWFycmF5KHYpKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYgT0ZfTlVNMSkgew0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBMX2QgPSBnZXR2YXJfaShMLnYpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgi TF9kOiVmXG4iLCBMX2QpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBuZXh0Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0NCj4+ICstDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBleGVj dXRlIGluZXZpdGFibGUgdGhpbmdzICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAob3BpbmZvICYgT0ZfUkVTMSkNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMLnYgPSBldmFsdWF0ZShvcDEsIHYxKTsNCj4+ICst wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9SRVMyKQ0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIudiA9IGV2 YWx1YXRlKG9wLT5yLm4sIHYxKzEpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKG9waW5mbyAmIE9GX1NUUjEpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMLnMgPSBnZXR2YXJfcyhMLnYpOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9l dmFsKCJMLnM6JyVzJ1xuIiwgTC5zKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBP Rl9TVFIyKSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgUi5zID0gZ2V0dmFyX3MoUi52KTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiUi5zOiclcydcbiIs IFIucyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3BpbmZvICYgT0ZfTlVNMSkgew0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExfZCA9IGdldHZh cl9pKEwudik7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkxfZDolZlxuIiwgTF9kKTsNCj4+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIE5COiBNdXN0IGdldCBzdHJpbmcvbnVtZXJpYyB2 YWx1ZXMgb2YgTCAoZG9uZQ0KPj4gYWJvdmUpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBfYmVmb3JlXyBldmFsdWF0ZSgpJ2luZyBSLnY6IGlmIGJvdGggTCBhbmQg UiBhcmUNCj4+ICROTk5zLA0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog YW5kIHJpZ2h0IG9uZSBpcyBsYXJnZSwgdGhlbiBMLnYgcG9pbnRzIHRvDQo+PiBGaWVsZHNb Tk5OMV0sDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBzZWNvbmQgZXZh bHVhdGUoKSByZWFsbG9jYXRlcyBhbmQgbW92ZXMgKCEpDQo+PiBGaWVsZHNbXSwNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIFIudiBwb2ludHMgdG8gRmllbGRzW05O TjJdIGJ1dCBMLnYgbm93IHBvaW50cyB0bw0KPj4gZnJlZWQgbWVtIQ0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogKFNlZW4gdHJ5aW5nIHRvIGV2YWx1YXRlICIkNDQ0 ICQ0NDQ0NCIpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8gJiBPRl9SRVMyKSB7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUi52ID0g ZXZhbHVhdGUob3AtPnIubiwgVE1QVkFSMSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy9UT0RPOiBMLnYgbWF5IGJlIGludmFsaWQgbm93 LCBzZXQgTC52IHRvDQo+PiBOVUxMIHRvIGNhdGNoIGJ1Z3M/DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLy9MLnYgPSBOVUxMOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvcGluZm8g JiBPRl9TVFIyKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFIucyA9IGdldHZhcl9zKFIudik7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJSLnM6JyVzJ1xuIiwgUi5zKTsNCj4+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJzd2l0Y2goMHgleClcbiIsIFhDKG9waW5m byAmDQo+PiBPUENMU01BU0spKTsNCj4+ICtAQCAtMjYyOSw3ICsyOTIyLDggQEAgc3RhdGlj IHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gKw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHRlc3QgcGF0dGVybiAqLw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX1RFU1QgKToNCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9wMS0+aW5mbyAm IE9QQ0xTTUFTSykgPT0gT0NfQ09NTUEpIHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiVEVTVFxuIik7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9w MS0+aW5mbyA9PSBUSV9DT01NQSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaXQncyByYW5nZSBwYXR0 ZXJuICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAmIE9GX0NIRUNLRUQpIHx8DQo+PiBw dGVzdChvcDEtPmwubikpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcC0+aW5m byB8PSBPRl9DSEVDS0VEOw0KPj4gK0BAIC0yNjQ2LDI1ICsyOTQwLDMyIEBAIHN0YXRpYyB2 YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBqdXN0IGV2YWx1YXRlIGFuIGV4cHJlc3Npb24sIGFs c28gdXNlZCBhcw0KPj4gdW5jb25kaXRpb25hbCBqdW1wICovDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfRVhFQyApOg0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJF WEVDXG4iKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogYnJhbmNoLCB1c2VkIGluIGlmLWVsc2UgYW5kIHZhcmlvdXMgbG9vcHMgKi8NCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19CUiApOg0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9ldmFsKCJCUlxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoG9wID0gaXN0cnVlKEwudikgPyBvcC0+YS5uIDogb3AtPnIubjsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7 DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogaW5pdGlhbGl6 ZSBmb3ItaW4gbG9vcCAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNh c2UgWEMoIE9DX1dBTEtJTklUICk6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIldBTEtJTklUXG4iKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFzaHdh bGtfaW5pdChMLnYsIGlhbWFycmF5KFIudikpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBnZXQgbmV4dCBhcnJheSBpdGVtICovDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfV0FMS05FWFQgKToNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19w cmludGZfZXZhbCgiV0FMS05FWFRcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcCA9IGhhc2h3YWxrX25leHQoTC52KSA/IG9wLT5h Lm4gOiBvcC0+ci5uOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjYXNlIFhDKCBPQ19QUklOVCApOg0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2FzZSBYQyggT0NfUFJJTlRGICk6IHsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiUFJJTlQgL1xu Iik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19QUklO VEYgKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfZXZhbCgiUFJJTlRGXG4iKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgRklMRSAqRiA9IHN0ZG91dDsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wLT5yLm4pIHsNCj4+ICtA QCAtMjY4Miw1NSArMjk4Myw5NCBAQCBzdGF0aWMgdmFyICpldmFsdWF0ZShub2RlICpvcCwg dmFyICpyZXMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBGID0gcnNtLT5GOw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArDQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQ2FuJ3QganVzdCBjaGVj ayAnb3BpbmZvID09IE9DX1BSSU5UJw0KPj4gaGVyZSwgcGFyc2VyIE9Scw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFkZGl0aW9uYWwg Yml0cyB0byBvcGluZm9zIG9mIHByaW50L3ByaW50Zg0KPj4gd2l0aCByZWRpcmVjdHMNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChv cGluZm8gJiBPUENMU01BU0spID09IE9DX1BSSU5UKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIW9w MSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZwdXRzKGdldHZhcl9zKGludHZh cltGMF0pLA0KPj4gRik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgd2hpbGUgKG9wMSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHZhciAqdiA9DQo+PiBldmFsdWF0ZShuZXh0YXJnKCZvcDEpLCB2 MSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKDs7KSB7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFyICp2ID0NCj4+IGV2YWx1YXRl KG5leHRhcmcoJm9wMSksIFRNUFZBUjApOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAodi0+dHlwZSAmDQo+PiBWRl9OVU1CRVIpIHsNCj4+ICst DQo+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZm10X251bShnX2J1ZiwNCj4+IE1BWFZBUkZNVCwgZ2V0dmFyX3MoaW50dmFyW09G TVRdKSwNCj4+ICstDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+PiAgwqBnZXR2YXJfaSh2KSwg VFJVRSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZtdF9udW0oZ2V0dmENCj4+IHJfcyhpbnR2YXJbT0ZNVF0pLA0KPj4g KysNCj4+ICDCoMKgwqBnZXR2YXJfaSh2KSk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcHV0cyhnX2J1ZiwNCj4+IEYp Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ug ew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZnB1dHMoZ2V0dmFyXw0KPj4gcyh2KSwgRik7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICstDQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKG9wMSkNCj4+ICstDQo+PiAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnB1dHMo Z2V0dmFyX3MoDQo+PiBpbnR2YXJbT0ZTXSksIEYpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghb3AxKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcHV0cyhnZXR2YXJfcyhpbnR2 YXINCj4+IFtPRlNdKSwgRik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZnB1dHMoZ2V0dmFyX3MoaW50dmFyW09SU10pLCBG KTsNCj4+ICstDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfSBlbHNlIHvCoMKgwqDCoMKgwqDCoMKgLyogT0NfUFJJTlRGICovDQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNoYXIgKnMgPSBhd2tfcHJpbnRmKG9wMSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHvCoMKgwqDCoMKgwqDCoMKgLyog UFJJTlRGICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoElGX0ZFQVRVUkVfQVdLX0dOVV9FWFRFTlNJT05TKHNp emVfdA0KPj4gbGVuOykNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqcyA9IGF3a19wcmludGYob3AxLCAm bGVuKTsNCj4+ICsrI2lmIEVOQUJMRV9GRUFUVVJFX0FXS19HTlVfRVhURU5TSU9OUw0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBmd3JpdGUocywgbGVuLCAxLCBGKTsNCj4+ICsrI2Vsc2UNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGZwdXRzKHMsIEYpOw0KPj4gKysjZW5kaWYNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZyZWUocyk7DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmZsdXNoKEYp Ow0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArDQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBjYXNlIFhDKCBPQ19ERUxFVEUgKTog LSBtb3ZlZCB0byBoYXBwZW4gYmVmb3JlIGFyZw0KPj4gZXZhbHVhdGlvbiAqLw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfREVMRVRFICk6DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX2V2YWwoIkRFTEVURVxuIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogImRlbGV0ZSIgaXMgc3BlY2lhbDoNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAiZGVsZXRlIGFycmF5W3Zhci0tXSIgbXVzdCBldmFs dWF0ZSBpbmRleA0KPj4gZXhwciBvbmx5IG9uY2UuDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgaW5mbyA9IG9wMS0+aW5mbyAm IE9QQ0xTTUFTSzsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2YXIgKnY7DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpbmZvID09IE9DX1ZBUikgew0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2 ID0gb3AxLT5sLnY7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfSBlbHNlIGlmIChpbmZvID09IE9DX0ZOQVJHKSB7DQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYg PSAmZm5hcmdzW29wMS0+bC5haWR4XTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9IGVsc2Ugew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJyb3Io RU1TR19OT1RfQVJSQVkpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAob3AxLT5yLm4pIHsgLyogYXJyYXkgcmVmPyAqLw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjb25zdCBjaGFyICpzOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0gZ2V0dmFyX3MoZXZhbHVhdGUob3Ax LT5yLm4sDQo+PiBUTVBWQVIwKSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhc2hfcmVtb3ZlKGlhbWFycmF5 KHYpLCBzKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9IGVsc2Ugew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGVhcl9hcnJheShpYW1hcnJheSh2KSk7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4g KyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX05FV1NPVVJDRSApOg0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50 Zl9ldmFsKCJORVdTT1VSQ0VcbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBnX3Byb2duYW1lID0gb3AtPmwubmV3X3Byb2duYW1lOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBP Q19SRVRVUk4gKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiUkVUVVJOXG4iKTsNCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29weXZhcihyZXMsIEwudik7 DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMo IE9DX05FWFRGSUxFICk6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIk5FWFRGSUxFXG4iKTsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dGZpbGUgPSBU UlVFOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX05F WFQgKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkZWJ1Z19wcmludGZfZXZhbCgiTkVYVFxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRyZWMgPSBUUlVFOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgWEMoIE9DX0RPTkUgKToNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiRE9ORVxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNscnZhcihyZXMpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19FWElUICk6DQo+PiArLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXdrX2V4aXQoTF9kKTsNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiRVhJVFxuIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKG9wMSkNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRy5leGl0Y29kZSA9IChpbnQp TF9kOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGF3a19leGl0KCk7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogLS0gcmVjdXJzaXZlIG5vZGUgdHlwZSAtLSAqLw0KPj4gKw0KPj4gK0BAIC0yNzQ5LDE1 ICszMDg5LDE4IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfSU4gKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiSU5cbiIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaShyZXMsIGhhc2hfc2VhcmNo KGlhbWFycmF5KFIudiksIEwucykNCj4+ID8gMSA6IDApOw0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19SRUdFWFAgKToNCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmlu dGZfZXZhbCgiUkVHRVhQXG4iKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgb3AxID0gb3A7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEwucyA9IGdldHZhcl9zKGludHZhcltGMF0pOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3Rv IHJlX2NvbnQ7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2Fz ZSBYQyggT0NfTUFUQ0ggKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTUFUQ0hcbiIpOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcDEgPSBvcC0+ci5u Ow0KPj4gK8KgIHJlX2NvbnQ6DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHsNCj4+ICtAQCAtMjc3Miw2MSArMzExNSw4MCBAQCBzdGF0aWMg dmFyICpldmFsdWF0ZShub2RlICpvcCwgdmFyICpyZXMpDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfTU9WRSApOg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiTU9W RVxuIik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIGlmIHNvdXJjZSBpcyBhIHRlbXBvcmFyeSBzdHJpbmcsIGp1c2sNCj4+IHJlbGlu ayBpdCB0byBkZXN0ICovDQo+PiArLS8vRGlzYWJsZWQ6IGlmIFIudiBpcyBudW1lcmljIGJ1 dCBoYXBwZW5zIHRvIGhhdmUgY2FjaGVkIFIudi0NCj4+PiBzdHJpbmcsDQo+PiArLS8vdGhl biBMLnYgZW5kcyB1cCBiZWluZyBhIHN0cmluZywgd2hpY2ggaXMgd3JvbmcNCj4+ICstLy/C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKFIudiA9PSB2MSsx ICYmIFIudi0+c3RyaW5nKSB7DQo+PiArLS8vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBzZXR2YXJfcChMLnYsIFIudi0+ c3RyaW5nKTsNCj4+ICstLy/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoFIudi0+c3RyaW5nID0gTlVMTDsNCj4+ICstLy/CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNlIHsNCj4+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoUi52ID09IFRNUFZB UjENCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JiYgIShSLnYtPnR5cGUgJiBWRl9OVU1CRVIpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFdoeSBjaGVjayAh TlVNQkVSPyBpZiBSLnYgaXMgYQ0KPj4gbnVtYmVyIGJ1dCBoYXMgY2FjaGVkIFIudi0+c3Ry aW5nLA0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKiBMLnYgZW5kcyB1cCBhIHN0cmluZywgd2hpY2ggaXMNCj4+ IHdyb25nICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qJiYgUi52LT5zdHJpbmcgLSBhbHdheXMgbm90IE5VTEwgKHJpZ2h0PykNCj4+ ICovDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg KSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJlcyA9IHNldHZhcl9wKEwudiwgUi52LT5zdHJpbmcpOyAvKg0K Pj4gYXZvaWRzIHN0cmR1cCAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBSLnYtPnN0cmluZyA9IE5VTEw7DQo+ PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSBlbHNl IHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJlcyA9IGNvcHl2YXIoTC52LCBSLnYpOw0KPj4gKy0vL8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19URVJOQVJZICk6DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChvcC0+ ci5uLT5pbmZvICYgT1BDTFNNQVNLKSAhPSBPQ19DT0xPTikNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiVEVS TkFSWVxuIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKG9wLT5yLm4tPmluZm8gIT0gVElfQ09MT04pDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50 YXhfZXJyb3IoRU1TR19QT1NTSUJMRV9FUlJPUik7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlcyA9IGV2YWx1YXRlKGlzdHJ1ZShMLnYp ID8gb3AtPnIubi0+bC5uIDoNCj4+IG9wLT5yLm4tPnIubiwgcmVzKTsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQyggT0NfRlVOQyApOiB7 DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFy ICp2YmVnLCAqdjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2YXIgKmFyZ3ZhcnMsICpzdl9mbmFyZ3M7DQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKnN2X3Byb2duYW1l Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlu dCBuYXJncywgaTsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBUaGUgYm9keSBtaWdodCBiZSBlbXB0eSwgc3RpbGwgaGFzIHRv IGV2YWwNCj4+IHRoZSBhcmdzICovDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFvcC0+ci5uLT5pbmZvICYmICFvcC0+ci5mLT5ib2R5 LmZpcnN0KQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJGVU5DXG4iKTsNCj4+ICsrDQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFvcC0+ci5mLT5kZWZp bmVkKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfVU5ERUZfRlVOQyk7DQo+PiAr DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmJl ZyA9IHYgPSBudmFsbG9jKG9wLT5yLmYtPm5hcmdzICsgMSk7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogVGhlIGJvZHkgbWlnaHQgYmUg ZW1wdHksIHN0aWxsIGhhcyB0byBldmFsDQo+PiB0aGUgYXJncyAqLw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5hcmdzID0gb3AtPnIuZi0+ bmFyZ3M7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYXJndmFycyA9IG52YWxsb2MobmFyZ3MpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGkgPSAwOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3aGlsZSAob3AxKSB7DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHZhciAqYXJnID0gZXZhbHVhdGUobmV4dGFyZygmb3AxKSwNCj4+IHYxKTsNCj4+ICstwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29weXZhcih2LCBhcmcpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2LT50eXBlIHw9IFZGX0NISUxEOw0K Pj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2LT54LnBhcmVudCA9IGFyZzsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCsrdiAtIHZi ZWcgPj0gb3AtPnIuZi0+bmFyZ3MpDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdmFyICphcmcgPSBldmFsdWF0ZShuZXh0YXJnKCZvcDEpLA0KPj4g VE1QVkFSMCk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpID09IG5hcmdzKSB7DQo+PiArK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBjYWxsIHdpdGggbW9yZSBhcmd1bWVudHMNCj4+IHRoYW4gZnVu Y3Rpb24gdGFrZXMuDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAoZ2F3ayB3YXJu czogIndhcm5pbmc6DQo+PiBmdW5jdGlvbiAnZicgY2FsbGVkIHdpdGggbW9yZSBhcmd1bWVu dHMgdGhhbiBkZWNsYXJlZCIpLg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGhl eSBhcmUgc3RpbGwgZXZhbHVhdGVkLA0KPj4gYnV0IGRpc2NhcmRlZDogKi8NCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNscnZhcihhcmcpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY29udGludWU7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29weXZhcigmYXJn dmFyc1tpXSwgYXJnKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXJndmFyc1tpXS50eXBlIHw9IFZGX0NISUxE Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBhcmd2YXJzW2ldLngucGFyZW50ID0gYXJnOw0KPj4gKyvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Kys7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0NCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2ID0gZm5hcmdzOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZuYXJncyA9IHZiZWc7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ZfZm5hcmdzID0gZm5hcmdzOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdl9wcm9nbmFtZSA9 IGdfcHJvZ25hbWU7DQo+PiArDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZm5hcmdzID0gYXJndmFyczsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzID0gZXZhbHVhdGUob3AtPnIuZi0+ Ym9keS5maXJzdCwgcmVzKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBudmZyZWUoYXJndmFycywgbmFyZ3MpOw0KPj4gKw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX3Byb2duYW1lID0g c3ZfcHJvZ25hbWU7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgbnZmcmVlKGZuYXJncyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm5hcmdzID0gdjsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFyZ3MgPSBzdl9mbmFyZ3M7DQo+PiAr DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJy ZWFrOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19HRVRMSU5FICk6DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19QR0VUTElORSAp OiB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGVidWdfcHJpbnRmX2V2YWwoIkdFVExJTkUgL1xuIik7DQo+PiArK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19QR0VUTElORSApOg0KPj4gKyvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJQ R0VUTElORVxuIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzdHJlYW0g KnJzbTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaW50IGk7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChvcDEpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJzbSA9IG5ld2ZpbGUoTC5z KTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICghcnNtLT5GKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBOQjogY2FuJ3QgdXNlICJvcGluZm8gPT0NCj4+IFRJX1BHRVRMSU5FIiwgd291 bGQgYnJlYWsgImNtZCIgfCBnZXRsaW5lICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKChvcGluZm8gJiBPUENMU01BU0spID09DQo+PiBPQ19QR0VUTElORSkgew0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByc20tPkYgPSBwb3Bl bihMLnMsDQo+PiAiciIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByc20tPmlzX3BpcGUgPSBUUlVFOw0KPj4gK0BAIC0yODYxLDE2ICszMjIzLDM0 IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBzaW1wbGUgYnVpbHRpbnMgKi8NCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19GQkxUSU4gKTogew0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkb3Vi bGUgUl9kID0gUl9kOyAvKiBmb3IgY29tcGlsZXIgKi8NCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiRkJMVElO XG4iKTsNCj4+ICsrDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKG9wMSAmJiBvcDEtPmluZm8gPT0gVElfQ09NTUEpDQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIFNpbXBsZSBidWlsdGlucyB0YWtlIG9uZSBhcmcNCj4+IG1heGltdW0gKi8NCj4+ICsr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3ludGF4X2Vycm9yKCJUb28gbWFueSBhcmd1bWVudHMiKTsNCj4+ICsNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoIChv cG4pIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2FzZSBGX2luOg0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUl9kID0gKGxvbmcgbG9uZylMX2Q7DQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBjYXNlIEZfcm46DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFJfZCA9IChkb3VibGUp cmFuZCgpIC8NCj4+IChkb3VibGUpUkFORF9NQVg7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBGX3JuOiAvKnJhbmQqLw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAob3AxKQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9y KCJUb28gbWFueQ0KPj4gYXJndW1lbnRzIik7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgew0KPj4gKysjaWYgUkFORF9NQVggPj0gMHg3ZmZm ZmZmZg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCB1ID0gKCh1aW50MzJfdClyYW5kKCkgPDwgMTYp DQo+PiBeIHJhbmQoKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWludDY0X3QgdiA9ICgodWludDY0X3QpcmFu ZCgpIDw8IDMyKQ0KPj4gfCB1Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiB0aGUgYWJvdmUgc2hpZnQrb3Ig aXMgb3B0aW1pemVkDQo+PiBvdXQgb24gMzItYml0IGFyY2hlcyAqLw0KPj4gKysjIGlmIFJB TkRfTUFYID4gMHg3ZmZmZmZmZg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ICY9IDB4N2ZmZmZmZmZmZmZmZmZm ZlVMTDsNCj4+ICsrIyBlbmRpZg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBSX2QgPSAoZG91YmxlKXYgLw0KPj4g MHg4MDAwMDAwMDAwMDAwMDAwVUxMOw0KPj4gKysjZWxzZQ0KPj4gKysjIGVycm9yIE5vdCBp bXBsZW1lbnRlZCBmb3IgdGhpcyB2YWx1ZSBvZiBSQU5EX01BWA0KPj4gKysjZW5kaWYNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOw0KPj4gKy0NCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl9jbzoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChFTkFCTEVf RkVBVFVSRV9BV0tfTElCTSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFJfZCA9 IGNvcyhMX2QpOw0KPj4gK0BAIC0yOTEwLDcgKzMyOTAsOSBAQCBzdGF0aWMgdmFyICpldmFs dWF0ZShub2RlICpvcCwgdmFyICpyZXMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzcmFuZChzZWVkKTsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRl90aToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIEZfdGk6IC8qc3lzdGltZSovDQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChvcDEpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW50YXhfZXJy b3IoIlRvbyBtYW55DQo+PiBhcmd1bWVudHMiKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFJfZCA9IHRpbWUo TlVMTCk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ICtAQCAtMjk0OSw3ICszMzMx LDcgQEAgc3RhdGljIHZhciAqZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcnN0cmVhbSAqcnNtOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciA9IDA7DQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByc20gPSAocnN0cmVhbSAqKWhhc2hfc2VhcmNoKGZkaGFzaCwNCj4+IEwucyk7DQo+ PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJPQ19GQkxUSU4gRl9jbA0KPj4gcnNtOiVw XG4iLCByc20pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiT0NfRkJMVElOIGNs b3NlOg0KPj4gb3AxOiVwIHM6JyVzJyByc206JXBcbiIsIG9wMSwgTC5zLCByc20pOw0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKHJzbSkgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVn X3ByaW50Zl9ldmFsKCJPQ19GQkxUSU4NCj4+IEZfY2wgIg0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicnNtLT5pc19waXBlOiVkLCAtDQo+Pj4gRjol cFxuIiwNCj4+ICtAQCAtMjk2MCw2ICszMzQyLDExIEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRl KG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocnNtLT5GKQ0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSByc20tPmlzX3BpcGUgPw0K Pj4gcGNsb3NlKHJzbS0+RikgOiBmY2xvc2UocnNtLT5GKTsNCj4+ICsrLy9UT0RPOiBmaXgg dGhpcyBjYXNlOg0KPj4gKysvLyAkIGF3ayAnQkVHSU4geyBwcmludCBjbG9zZSgiIik7IHBy aW50IEVSUk5PIH0nDQo+PiArKy8vIC0xDQo+PiArKy8vIGNsb3NlIG9mIHJlZGlyZWN0aW9u IHRoYXQgd2FzIG5ldmVyIG9wZW5lZA0KPj4gKysvLyAod2UgcHJpbnQgMCwgMCkNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHJzbS0+YnVmZmVyKTsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBoYXNoX3JlbW92ZShmZGhhc2gsIEwucyk7DQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9DQo+PiArQEAgLTI5NzQsMTQgKzMzNjEsMTggQEAgc3RhdGljIHZhciAqZXZhbHVhdGUo bm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0NCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBP Q19CVUlMVElOICk6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkJVSUxUSU5cbiIpOw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXMgPSBleGVjX2J1aWx0 aW4ob3AsIHJlcyk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNhc2UgWEMoIE9DX1NQUklOVEYgKToNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfcChyZXMsIGF3a19wcmludGYob3AxKSk7 DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX2V2YWwoIlNQUklOVEZcbiIpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9wKHJlcywgYXdrX3ByaW50ZihvcDEs IE5VTEwpKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj YXNlIFhDKCBPQ19VTkFSWSApOiB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjYXNlIFhDKCBPQ19VTkFSWSApOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJVTkFSWVxuIik7DQo+PiAr K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRvdWJsZSBMZCwgUl9kOw0KPj4gKw0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBMZCA9IFJf ZCA9IGdldHZhcl9pKFIudik7DQo+PiArQEAgLTMwMTEsNyArMzQwMiw5IEBAIHN0YXRpYyB2 YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2FzZSBYQyggT0NfRklFTEQgKTogew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBYQyggT0NfRklFTEQgKToNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiRklFTERcbiIp Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgew0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgaSA9IChpbnQpZ2V0dmFy X2koUi52KTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKGkgPCAwKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ludGF4X2Vycm9yKEVNU0dfTkVHQVRJ VkVfRklFTEQpOw0KPj4gK0BAIC0zMDI4LDI2ICszNDIxLDMzIEBAIHN0YXRpYyB2YXIgKmV2 YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJlcykNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBjb25jYXRlbmF0aW9uICgiICIpIGFuZCBpbmRleCBqb2luaW5n ICgiLCIpICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfQ09OQ0FUICk6DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGVidWdfcHJpbnRmX2V2YWwoIkNPTkNBVCAvXG4iKTsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19DT01NQSApOiB7DQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIg KnNlcCA9ICIiOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmICgob3BpbmZvICYgT1BDTFNNQVNLKSA9PSBPQ19DT01NQSkNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZf ZXZhbCgiQ09NTUFcbiIpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChvcGluZm8gPT0gVElfQ09NTUEpDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXAg PSBnZXR2YXJfcyhpbnR2YXJbU1VCU0VQXSk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9wKHJlcywgeGFzcHJpbnRmKCIlcyVz JXMiLCBMLnMsIHNlcCwNCj4+IFIucykpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2FzZSBYQyggT0NfTEFORCApOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJMQU5EXG4iKTsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kocmVz LCBpc3RydWUoTC52KSA/IHB0ZXN0KG9wLT5yLm4pIDoNCj4+IDApOw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICsNCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19MT1IgKToNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19w cmludGZfZXZhbCgiTE9SXG4iKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX2kocmVzLCBpc3RydWUoTC52KSA/IDEgOiBwdGVz dChvcC0NCj4+PiByLm4pKTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYnJlYWs7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBYQyggT0NfQklOQVJZICk6DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19SRVBMQUNFICk6IHsNCj4+ICsrwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWJ1Z19wcmludGZfZXZhbCgiQklO QVJZIC9cbiIpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBYQygg T0NfUkVQTEFDRSApOg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9ldmFsKCJSRVBMQUNFXG4iKTsNCj4+ICsrwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91YmxlIFJfZCA9IGdldHZhcl9pKFIudik7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGVidWdfcHJp bnRmX2V2YWwoIkJJTkFSWS9SRVBMQUNFOiBSX2Q6JWYNCj4+IG9wbjolY1xuIiwgUl9kLCBv cG4pOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRlYnVnX3ByaW50Zl9ldmFsKCJSX2Q6JWYgb3BuOiVjXG4iLCBSX2QsDQo+PiBvcG4pOw0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzd2l0 Y2ggKG9wbikgew0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjYXNlICcrJzoNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoExfZCArPSBSX2Q7DQo+PiArQEAgLTMw ODMsNiArMzQ4Myw3IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5vZGUgKm9wLCB2YXIgKnJl cykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFhDKCBPQ19DT01Q QVJFICk6IHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaW50IGkgPSBpOyAvKiBmb3IgY29tcGlsZXIgKi8NCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZG91YmxlIExkOw0KPj4gKyvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRlYnVnX3ByaW50Zl9l dmFsKCJDT01QQVJFXG4iKTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGlzX251bWVyaWMoTC52KSAmJiBpc19udW1lcmlj KFIudikpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoExkID0gZ2V0dmFyX2koTC52KSAtIGdldHZhcl9pKFIu dik7DQo+PiArQEAgLTMxMDksNyArMzUxMCw3IEBAIHN0YXRpYyB2YXIgKmV2YWx1YXRlKG5v ZGUgKm9wLCB2YXIgKnJlcykNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk ZWZhdWx0Og0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oO+/ve+/vcKgc3ludGF4X2Vycm9yKEVNU0dfUE9TU0lCTEVfRVJST1IpOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gLyogc3dpdGNoICovDQo+PiArLSBuZXh0Og0K Pj4gKysNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAm IE9QQ0xTTUFTSykgPD0gU0hJRlRfVElMX1RISVMpDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wID0gb3AtPmEubjsNCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoKG9waW5mbyAmIE9QQ0xTTUFTSykgPj0gUkVD VVJfRlJPTV9USElTKQ0KPj4gK0BAIC0zMTE4LDcgKzM1MTksMTAgQEAgc3RhdGljIHZhciAq ZXZhbHVhdGUobm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsNCj4+ICvCoMKgwqDCoMKgwqDCoH0g Lyogd2hpbGUgKG9wKSAqLw0KPj4gKw0KPj4gKy3CoMKgwqDCoMKgwqBudmZyZWUodjEpOw0K Pj4gKyvCoMKgwqDCoMKgwqBudmZyZWUodG1wdmFycywgMik7DQo+PiArKyN1bmRlZiBUTVBW QVIwDQo+PiArKyN1bmRlZiBUTVBWQVIxDQo+PiArKw0KPj4gK8KgwqDCoMKgwqDCoMKgZGVi dWdfcHJpbnRmX2V2YWwoInJldHVybmluZyBmcm9tICVzKCk6ICVwXG4iLCBfX2Z1bmNfXywN Cj4+IHJlcyk7DQo+PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmVzOw0KPj4gKyAjdW5kZWYg Zm5hcmdzDQo+PiArQEAgLTMxMjYsMjUgKzM1MzAsMjEgQEAgc3RhdGljIHZhciAqZXZhbHVh dGUobm9kZSAqb3AsIHZhciAqcmVzKQ0KPj4gKyAjdW5kZWYgc3JlZw0KPj4gKyB9DQo+PiAr DQo+PiArLQ0KPj4gKyAvKiAtLS0tLS0tLSBtYWluICYgY28uIC0tLS0tLS0tICovDQo+PiAr DQo+PiArLXN0YXRpYyBpbnQgYXdrX2V4aXQoaW50IHIpDQo+PiArK3N0YXRpYyBpbnQgYXdr X2V4aXQodm9pZCkNCj4+ICsgew0KPj4gKy3CoMKgwqDCoMKgwqB2YXIgdHY7DQo+PiArwqDC oMKgwqDCoMKgwqB1bnNpZ25lZCBpOw0KPj4gKy3CoMKgwqDCoMKgwqBoYXNoX2l0ZW0gKmhp Ow0KPj4gKy0NCj4+ICstwqDCoMKgwqDCoMKgemVyb19vdXRfdmFyKCZ0dik7DQo+PiArDQo+ PiArwqDCoMKgwqDCoMKgwqBpZiAoIWV4aXRpbmcpIHsNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBleGl0aW5nID0gVFJVRTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBuZXh0cmVjID0gRkFMU0U7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBldmFsdWF0ZShlbmRzZXEuZmlyc3QsICZ0dik7DQo+PiArK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBldmFsdWF0ZShlbmRzZXEuZmlyc3QsICZHLmV4aXRfX3RtcHZh cik7DQo+PiArwqDCoMKgwqDCoMKgwqB9DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAvKiB3 YWl0aW5nIGZvciBjaGlsZHJlbiAqLw0KPj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsg aSA8IGZkaGFzaC0+Y3NpemU7IGkrKykgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaGFzaF9pdGVtICpoaTsNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBoaSA9IGZkaGFzaC0+aXRlbXNbaV07DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgd2hpbGUgKGhpKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmIChoaS0+ZGF0YS5ycy5GICYmIGhpLT5kYXRhLnJzLmlzX3Bp cGUpDQo+PiArQEAgLTMxNTMsNjUgKzM1NTMsNyBAQCBzdGF0aWMgaW50IGF3a19leGl0KGlu dCByKQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvCoMKgwqDC oMKgwqDCoH0NCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgZXhpdChyKTsNCj4+ICstfQ0KPj4g Ky0NCj4+ICstLyogaWYgZXhwciBsb29rcyBsaWtlICJ2YXI9dmFsdWUiLCBwZXJmb3JtIGFz c2lnbm1lbnQgYW5kIHJldHVybiAxLA0KPj4gKy0gKiBvdGhlcndpc2UgcmV0dXJuIDAgKi8N Cj4+ICstc3RhdGljIGludCBpc19hc3NpZ25tZW50KGNvbnN0IGNoYXIgKmV4cHIpDQo+PiAr LXsNCj4+ICstwqDCoMKgwqDCoMKgY2hhciAqZXhwcmMsICp2YWw7DQo+PiArLQ0KPj4gKy3C oMKgwqDCoMKgwqBpZiAoIWlzYWxudW1fKCpleHByKSB8fCAodmFsID0gc3RyY2hyKGV4cHIs ICc9JykpID09IE5VTEwpIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBGQUxTRTsNCj4+ICstwqDCoMKgwqDCoMKgfQ0KPj4gKy0NCj4+ICstwqDCoMKgwqDC oMKgZXhwcmMgPSB4c3RyZHVwKGV4cHIpOw0KPj4gKy3CoMKgwqDCoMKgwqB2YWwgPSBleHBy YyArICh2YWwgLSBleHByKTsNCj4+ICstwqDCoMKgwqDCoMKgKnZhbCsrID0gJ1wwJzsNCj4+ ICstDQo+PiArLcKgwqDCoMKgwqDCoHVuZXNjYXBlX3N0cmluZ19pbl9wbGFjZSh2YWwpOw0K Pj4gKy3CoMKgwqDCoMKgwqBzZXR2YXJfdShuZXd2YXIoZXhwcmMpLCB2YWwpOw0KPj4gKy3C oMKgwqDCoMKgwqBmcmVlKGV4cHJjKTsNCj4+ICstwqDCoMKgwqDCoMKgcmV0dXJuIFRSVUU7 DQo+PiArLX0NCj4+ICstDQo+PiArLS8qIHN3aXRjaCB0byBuZXh0IGlucHV0IGZpbGUgKi8N Cj4+ICstc3RhdGljIHJzdHJlYW0gKm5leHRfaW5wdXRfZmlsZSh2b2lkKQ0KPj4gKy17DQo+ PiArLSNkZWZpbmUgcnNtwqDCoMKgwqDCoMKgwqDCoMKgIChHLm5leHRfaW5wdXRfZmlsZV9f cnNtKQ0KPj4gKy0jZGVmaW5lIGZpbGVzX2hhcHBlbiAoRy5uZXh0X2lucHV0X2ZpbGVfX2Zp bGVzX2hhcHBlbikNCj4+ICstDQo+PiArLcKgwqDCoMKgwqDCoEZJTEUgKkY7DQo+PiArLcKg wqDCoMKgwqDCoGNvbnN0IGNoYXIgKmZuYW1lLCAqaW5kOw0KPj4gKy0NCj4+ICstwqDCoMKg wqDCoMKgaWYgKHJzbS5GKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmNs b3NlKHJzbS5GKTsNCj4+ICstwqDCoMKgwqDCoMKgcnNtLkYgPSBOVUxMOw0KPj4gKy3CoMKg wqDCoMKgwqByc20ucG9zID0gcnNtLmFkdiA9IDA7DQo+PiArLQ0KPj4gKy3CoMKgwqDCoMKg wqBmb3IgKDs7KSB7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZ2V0 dmFyX2koaW50dmFyW0FSR0lORF0pKzEgPj0NCj4+IGdldHZhcl9pKGludHZhcltBUkdDXSkp IHsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAoZmlsZXNfaGFwcGVuKQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gTlVMTDsNCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmbmFtZSA9ICItIjsNCj4+ ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBGID0gc3Rk aW47DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg YnJlYWs7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9DQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbmQgPSBnZXR2YXJfcyhpbmN2YXIoaW50dmFyW0FS R0lORF0pKTsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZuYW1lID0gZ2V0 dmFyX3MoZmluZHZhcihpYW1hcnJheShpbnR2YXJbQVJHVl0pLA0KPj4gaW5kKSk7DQo+PiAr LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZm5hbWUgJiYgKmZuYW1lICYmICFp c19hc3NpZ25tZW50KGZuYW1lKSkgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEYgPSB4Zm9wZW5fc3RkaW4oZm5hbWUpOw0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOw0KPj4gKy3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4gKy3CoMKgwqDCoMKgwqB9DQo+PiAr LQ0KPj4gKy3CoMKgwqDCoMKgwqBmaWxlc19oYXBwZW4gPSBUUlVFOw0KPj4gKy3CoMKgwqDC oMKgwqBzZXR2YXJfcyhpbnR2YXJbRklMRU5BTUVdLCBmbmFtZSk7DQo+PiArLcKgwqDCoMKg wqDCoHJzbS5GID0gRjsNCj4+ICstwqDCoMKgwqDCoMKgcmV0dXJuICZyc207DQo+PiArLSN1 bmRlZiByc20NCj4+ICstI3VuZGVmIGZpbGVzX2hhcHBlbg0KPj4gKyvCoMKgwqDCoMKgwqBl eGl0KEcuZXhpdGNvZGUpOw0KPj4gKyB9DQo+PiArDQo+PiArIGludCBhd2tfbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpIE1BSU5fRVhURVJOQUxMWV9WSVNJQkxFOw0KPj4gK0BAIC0z MjI0LDEyICszNTY2LDcgQEAgaW50IGF3a19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwg Y2hhcg0KPj4gKiphcmd2KQ0KPj4gKyAjaWYgRU5BQkxFX0ZFQVRVUkVfQVdLX0dOVV9FWFRF TlNJT05TDQo+PiArwqDCoMKgwqDCoMKgwqBsbGlzdF90ICpsaXN0X2UgPSBOVUxMOw0KPj4g KyAjZW5kaWYNCj4+ICstwqDCoMKgwqDCoMKgaW50IGksIGo7DQo+PiArLcKgwqDCoMKgwqDC oHZhciAqdjsNCj4+ICstwqDCoMKgwqDCoMKgdmFyIHR2Ow0KPj4gKy3CoMKgwqDCoMKgwqBj aGFyICoqZW52cDsNCj4+ICstwqDCoMKgwqDCoMKgY2hhciAqdm5hbWVzID0gKGNoYXIgKil2 TmFtZXM7IC8qIGNoZWF0ICovDQo+PiArLcKgwqDCoMKgwqDCoGNoYXIgKnZ2YWx1ZXMgPSAo Y2hhciAqKXZWYWx1ZXM7DQo+PiArK8KgwqDCoMKgwqDCoGludCBpOw0KPj4gKw0KPj4gK8Kg wqDCoMKgwqDCoMKgSU5JVF9HKCk7DQo+PiArDQo+PiArQEAgLTMyMzgsNDggKzM1NzUsNDMg QEAgaW50IGF3a19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhcg0KPj4gKiphcmd2 KQ0KPj4gK8KgwqDCoMKgwqDCoMKgaWYgKEVOQUJMRV9MT0NBTEVfU1VQUE9SVCkNCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXRsb2NhbGUoTENfTlVNRVJJQywgIkMi KTsNCj4+ICsNCj4+ICstwqDCoMKgwqDCoMKgemVyb19vdXRfdmFyKCZ0dik7DQo+PiArLQ0K Pj4gKy3CoMKgwqDCoMKgwqAvKiBhbGxvY2F0ZSBnbG9iYWwgYnVmZmVyICovDQo+PiArLcKg wqDCoMKgwqDCoGdfYnVmID0geG1hbGxvYyhNQVhWQVJGTVQgKyAxKTsNCj4+ICstDQo+PiAr LcKgwqDCoMKgwqDCoHZoYXNoID0gaGFzaF9pbml0KCk7DQo+PiArLcKgwqDCoMKgwqDCoGFo YXNoID0gaGFzaF9pbml0KCk7DQo+PiArLcKgwqDCoMKgwqDCoGZkaGFzaCA9IGhhc2hfaW5p dCgpOw0KPj4gKy3CoMKgwqDCoMKgwqBmbmhhc2ggPSBoYXNoX2luaXQoKTsNCj4+ICstDQo+ PiArwqDCoMKgwqDCoMKgwqAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyAqLw0KPj4gKy3CoMKg wqDCoMKgwqBmb3IgKGkgPSAwOyAqdm5hbWVzOyBpKyspIHsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGludHZhcltpXSA9IHYgPSBuZXd2YXIobmV4dHdvcmQoJnZuYW1l cykpOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2dmFsdWVzICE9 ICdcMzc3JykNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBzZXR2YXJfcyh2LCBuZXh0d29yZCgmdnZhbHVlcykpOw0KPj4gKy3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZWxzZQ0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9pKHYsIDApOw0KPj4gKy0NCj4+ICstwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgqdm5hbWVzID09ICcqJykgew0KPj4gKy3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZf U1BFQ0lBTDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB2bmFtZXMrKzsNCj4+ICsrwqDCoMKgwqDCoMKgdmhhc2ggPSBoYXNoX2luaXQoKTsN Cj4+ICsrwqDCoMKgwqDCoMKgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2hhciAqdm5hbWVzID0gKGNoYXIgKil2TmFtZXM7IC8qIGNoZWF0ICovDQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICp2dmFsdWVzID0gKGNoYXIgKil2VmFsdWVz Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgKnZuYW1l czsgaSsrKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgdmFyICp2Ow0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGludHZhcltpXSA9IHYgPSBuZXd2YXIobmV4dHdvcmQoJnZuYW1lcykpOw0K Pj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICgq dnZhbHVlcyAhPSAnXDM3NycpDQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldHZhcl9zKHYsIG5leHR3b3JkKCZ2 dmFsdWVzKSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZWxzZQ0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfaSh2LCAwKTsNCj4+ICsrDQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCp2bmFtZXMg PT0gJyonKSB7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYtPnR5cGUgfD0gVkZfU1BFQ0lBTDsNCj4+ICsrwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdm5hbWVzKys7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0NCj4+ICvC oMKgwqDCoMKgwqDCoH0NCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoGhhbmRsZV9zcGVjaWFs KGludHZhcltGU10pOw0KPj4gK8KgwqDCoMKgwqDCoMKgaGFuZGxlX3NwZWNpYWwoaW50dmFy W1JTXSk7DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoG5ld2ZpbGUoIi9kZXYvc3RkaW4iKS0+ RiA9IHN0ZGluOw0KPj4gKy3CoMKgwqDCoMKgwqBuZXdmaWxlKCIvZGV2L3N0ZG91dCIpLT5G ID0gc3Rkb3V0Ow0KPj4gKy3CoMKgwqDCoMKgwqBuZXdmaWxlKCIvZGV2L3N0ZGVyciIpLT5G ID0gc3RkZXJyOw0KPj4gKy0NCj4+ICvCoMKgwqDCoMKgwqDCoC8qIEh1aCwgcGVvcGxlIHJl cG9ydCB0aGF0IHNvbWV0aW1lcyBlbnZpcm9uIGlzIE5VTEwuIE9oDQo+PiB3ZWxsLiAqLw0K Pj4gKy3CoMKgwqDCoMKgwqBpZiAoZW52aXJvbikgZm9yIChlbnZwID0gZW52aXJvbjsgKmVu dnA7IGVudnArKykgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW52 aXJvbiBpcyB3cml0YWJsZSwgdGh1cyB3ZSBkb24ndCBzdHJkdXAgaXQNCj4+IG5lZWRsZXNz bHkgKi8NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnMgPSAqZW52 cDsNCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNoYXIgKnMxID0gc3RyY2hy KHMsICc9Jyk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoczEpIHsN Cj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqczEg PSAnXDAnOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoC8qIEJvdGggZmluZHZhciBhbmQgc2V0dmFyX3UgdGFrZSBjb25zdCBjaGFyKg0KPj4g Ky3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFzIDJu ZCBhcmcgLT4gZW52aXJvbm1lbnQgaXMgbm90IHRyYXNoZWQNCj4+ICovDQo+PiArLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dmFyX3UoZmluZHZh cihpYW1hcnJheShpbnR2YXJbRU5WSVJPTl0pLA0KPj4gcyksIHMxICsgMSk7DQo+PiArLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnMxID0gJz0nOw0K Pj4gKyvCoMKgwqDCoMKgwqBpZiAoZW52aXJvbikgew0KPj4gKyvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY2hhciAqKmVudnA7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3IgKGVudnAgPSBlbnZpcm9uOyAqZW52cDsgZW52cCsrKSB7DQo+PiArK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogZW52aXJvbiBpcyB3 cml0YWJsZSwgdGh1cyB3ZSBkb24ndCBzdHJkdXANCj4+IGl0IG5lZWRsZXNzbHkgKi8NCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpz ID0gKmVudnA7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2hhciAqczEgPSBzdHJjaHIocywgJz0nKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoczEpIHsNCj4+ICsrwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnMx ID0gJ1wwJzsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogQm90aCBmaW5kdmFyIGFuZCBzZXR2YXJfdSB0YWtl DQo+PiBjb25zdCBjaGFyKg0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBhcyAybmQgYXJnIC0+IGVudmlyb25t ZW50IGlzIG5vdA0KPj4gdHJhc2hlZCAqLw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXR2YXJfdShmaW5kdmFy KGlhbWFycmF5KGludHZhcltFTlZJDQo+PiBST05dKSwgcyksIHMxICsgMSk7DQo+PiArK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCpzMSA9ICc9JzsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPj4g K8KgwqDCoMKgwqDCoMKgfQ0KPj4gK8KgwqDCoMKgwqDCoMKgb3B0ID0gZ2V0b3B0MzIoYXJn diwgT1BUU1RSX0FXSywgJm9wdF9GLCAmbGlzdF92LCAmbGlzdF9mLA0KPj4gSUZfRkVBVFVS RV9BV0tfR05VX0VYVEVOU0lPTlMoJmxpc3RfZSwpIE5VTEwpOw0KPj4gK0BAIC0zMjk1LDIw ICszNjI3LDE5IEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIN Cj4+ICoqYXJndikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWlz X2Fzc2lnbm1lbnQobGxpc3RfcG9wKCZsaXN0X3YpKSkNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmJfc2hvd191c2FnZSgpOw0KPj4gK8Kg wqDCoMKgwqDCoMKgfQ0KPj4gKysNCj4+ICsrwqDCoMKgwqDCoMKgLyogUGFyc2UgYWxsIHN1 cHBsaWVkIHByb2dyYW1zICovDQo+PiArK8KgwqDCoMKgwqDCoGZuaGFzaCA9IGhhc2hfaW5p dCgpOw0KPj4gKyvCoMKgwqDCoMKgwqBhaGFzaCA9IGhhc2hfaW5pdCgpOw0KPj4gK8KgwqDC oMKgwqDCoMKgd2hpbGUgKGxpc3RfZikgew0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2hhciAqcyA9IE5VTEw7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBGSUxFICpmcm9tX2ZpbGU7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp bnQgZmQ7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaGFyICpzOw0KPj4g Kw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfcHJvZ25hbWUgPSBsbGlz dF9wb3AoJmxpc3RfZik7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcm9t X2ZpbGUgPSB4Zm9wZW5fc3RkaW4oZ19wcm9nbmFtZSk7DQo+PiArLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAvKiBvbmUgYnl0ZSBpcyByZXNlcnZlZCBmb3Igc29tZSB0cmljayBp biBuZXh0X3Rva2VuDQo+PiAqLw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Zm9yIChpID0gaiA9IDE7IGogPiAwOyBpICs9IGopIHsNCj4+ICstwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzID0geHJlYWxsb2MocywgaSArIDQwOTYp Ow0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGog PSBmcmVhZChzICsgaSwgMSwgNDA5NCwgZnJvbV9maWxlKTsNCj4+ICstwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0NCj4+ICstwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNb aV0gPSAnXDAnOw0KPj4gKy3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZmNsb3NlKGZy b21fZmlsZSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYXJzZV9wcm9n cmFtKHMgKyAxKTsNCj4+ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZkID0geG9w ZW5fc3RkaW4oZ19wcm9nbmFtZSk7DQo+PiArK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzID0geG1hbGxvY19yZWFkKGZkLCBOVUxMKTsgLyogaXQncyBOVUwtdGVybWluYXRlZCAq Lw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xvc2UoZmQpOw0KPj4gKyvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyc2VfcHJvZ3JhbShzKTsNCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmcmVlKHMpOw0KPj4gK8KgwqDCoMKgwqDCoMKg fQ0KPj4gK8KgwqDCoMKgwqDCoMKgZ19wcm9nbmFtZSA9ICJjbWQuIGxpbmUiOw0KPj4gK0BA IC0zMzE3LDExICszNjQ4LDIzIEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFS QU0sIGNoYXINCj4+ICoqYXJndikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBwYXJzZV9wcm9ncmFtKGxsaXN0X3BvcCgmbGlzdF9lKSk7DQo+PiArwqDCoMKgwqDCoMKg wqB9DQo+PiArICNlbmRpZg0KPj4gKysvL0ZJWE1FOiBwcmVzZXJ2ZSBvcmRlciBvZiAtZSBh bmQgLWYNCj4+ICsrLy9UT0RPOiBpbXBsZW1lbnQgLWkgTElCUkFSWSBhbmQgLUUgRklMRSB0 b28sIHRoZXkgYXJlIGVhc3ktaXNoDQo+PiArwqDCoMKgwqDCoMKgwqBpZiAoIShvcHQgJiAo T1BUX2YgfCBPUFRfZSkpKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKCEqYXJndikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYmJfc2hvd191c2FnZSgpOw0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHBhcnNlX3Byb2dyYW0oKmFyZ3YrKyk7DQo+PiArwqDCoMKgwqDCoMKgwqB9DQo+ PiArK8KgwqDCoMKgwqDCoC8qIEZyZWUgdW51c2VkIHBhcnNlIHN0cnVjdHVyZXMgKi8NCj4+ ICsrwqDCoMKgwqDCoMKgLy9oYXNoX2ZyZWUoZm5oYXNoKTsgLy8gfjI1MCBieXRlcyB3aGVu IGVtcHR5LCB1c2VkIG9ubHkgZm9yDQo+PiBmdW5jdGlvbiBuYW1lcw0KPj4gKyvCoMKgwqDC oMKgwqAvL15eXl5eXl5eXl5eXl5eXl5eIGRvZXMgbm90IHdvcmssIGhhc2hfY2xlYXIoKSBp bnNpZGUgU0VHVnMNCj4+ICsrwqDCoMKgwqDCoMKgLy8gKElPVzogaGFzaF9jbGVhcigpIGFz c3VtZXMgaXQncyBhIGhhc2ggb2YgdmFyaWFibGVzLg0KPj4gZm5oYXNoIGlzIG5vdCkuDQo+ PiArK8KgwqDCoMKgwqDCoGZyZWUoZm5oYXNoLT5pdGVtcyk7DQo+PiArK8KgwqDCoMKgwqDC oGZyZWUoZm5oYXNoKTsNCj4+ICsrwqDCoMKgwqDCoMKgZm5oYXNoID0gTlVMTDsgLy8gZGVi dWcNCj4+ICsrwqDCoMKgwqDCoMKgLy9oYXNoX2ZyZWUoYWhhc2gpOyAvLyBlbXB0eSBhZnRl ciBwYXJzaW5nLCB3aWxsIHJldXNlIGFzDQo+PiBmZGhhc2ggaW5zdGVhZCBvZiBmcmVlaW5n DQo+PiArKw0KPj4gKyvCoMKgwqDCoMKgwqAvKiBQYXJzaW5nIGRvbmUsIG9uIHRvIGV4ZWN1 dGluZyAqLw0KPj4gKw0KPj4gK8KgwqDCoMKgwqDCoMKgLyogZmlsbCBpbiBBUkdWIGFycmF5 ICovDQo+PiArwqDCoMKgwqDCoMKgwqBzZXRhcmlfdShpbnR2YXJbQVJHVl0sIDAsICJhd2si KTsNCj4+ICtAQCAtMzMzMCw5ICszNjczLDE0IEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBV TlVTRURfUEFSQU0sIGNoYXINCj4+ICoqYXJndikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBzZXRhcmlfdShpbnR2YXJbQVJHVl0sICsraSwgKmFyZ3YrKyk7DQo+PiAr wqDCoMKgwqDCoMKgwqBzZXR2YXJfaShpbnR2YXJbQVJHQ10sIGkgKyAxKTsNCj4+ICsNCj4+ ICstwqDCoMKgwqDCoMKgZXZhbHVhdGUoYmVnaW5zZXEuZmlyc3QsICZ0dik7DQo+PiArK8Kg wqDCoMKgwqDCoC8vZmRoYXNoID0gYWhhc2g7IC8vIGRvbmUgdmlhIGRlZmluZQ0KPj4gKyvC oMKgwqDCoMKgwqBuZXdmaWxlKCIvZGV2L3N0ZGluIiktPkYgPSBzdGRpbjsNCj4+ICsrwqDC oMKgwqDCoMKgbmV3ZmlsZSgiL2Rldi9zdGRvdXQiKS0+RiA9IHN0ZG91dDsNCj4+ICsrwqDC oMKgwqDCoMKgbmV3ZmlsZSgiL2Rldi9zdGRlcnIiKS0+RiA9IHN0ZGVycjsNCj4+ICsrDQo+ PiArK8KgwqDCoMKgwqDCoGV2YWx1YXRlKGJlZ2luc2VxLmZpcnN0LCAmRy5tYWluX190bXB2 YXIpOw0KPj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFtYWluc2VxLmZpcnN0ICYmICFlbmRzZXEu Zmlyc3QpDQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhd2tfZXhpdChFWElU X1NVQ0NFU1MpOw0KPj4gKyvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXdrX2V4aXQo KTsNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoC8qIGlucHV0IGZpbGUgY291bGQgYWxyZWFk eSBiZSBvcGVuZWQgaW4gQkVHSU4gYmxvY2sgKi8NCj4+ICvCoMKgwqDCoMKgwqDCoGlmICgh aUYpDQo+PiArQEAgLTMzNDcsNyArMzY5NSw3IEBAIGludCBhd2tfbWFpbihpbnQgYXJnYyBV TlVTRURfUEFSQU0sIGNoYXINCj4+ICoqYXJndikNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV4dHJlYyA9IEZBTFNFOw0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpbmN2YXIoaW50dmFy W05SXSk7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGluY3ZhcihpbnR2YXJbRk5SXSk7DQo+PiArLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZXZhbHVhdGUobWFpbnNlcS5maXJzdCwgJnR2KTsNCj4+ ICsrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBldmFsdWF0 ZShtYWluc2VxLmZpcnN0LCAmRy5tYWluX190bXB2YXIpOw0KPj4gKw0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobmV4dGZpbGUpDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsNCj4+ICtAQCAtMzM1OSw2ICszNzA3LDYgQEAgaW50IGF3a19t YWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhcg0KPj4gKiphcmd2KQ0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlGID0gbmV4dF9pbnB1dF9maWxlKCk7DQo+PiAr wqDCoMKgwqDCoMKgwqB9DQo+PiArDQo+PiArLcKgwqDCoMKgwqDCoGF3a19leGl0KEVYSVRf U1VDQ0VTUyk7DQo+PiArK8KgwqDCoMKgwqDCoGF3a19leGl0KCk7DQo+PiArwqDCoMKgwqDC oMKgwqAvKnJldHVybiAwOyovDQo+PiArIH0NCj4+ICstLQ0KPj4gKzIuMzMuMA0KPj4gKw0K Pj4gZGlmZiAtLWdpdCBhL21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAy LW1hbi1maXgtc2VnZmF1bHQtDQo+PiBpbi1tYW4tMS5wYXRjaCBiL21ldGEvcmVjaXBlcy1j b3JlL2J1c3lib3gvYnVzeWJveC8wMDAyLW1hbi1maXgtDQo+PiBzZWdmYXVsdC1pbi1tYW4t MS5wYXRjaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAu LjRhOTMwYjdiNmYNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL21ldGEvcmVjaXBlcy1j b3JlL2J1c3lib3gvYnVzeWJveC8wMDAyLW1hbi1maXgtc2VnZmF1bHQtaW4tbWFuLQ0KPj4g MS5wYXRjaA0KPj4gQEAgLTAsMCArMSwzMCBAQA0KPj4gK0Zyb20gNDk3NWNhY2U5YmY5NmJm ZGUxNzRmOGJiNWNjNDA2OGQyZWEyOTRkNCBNb24gU2VwIDE3IDAwOjAwOjAwDQo+PiAyMDAx DQo+PiArRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4N Cj4+ICtEYXRlOiBUdWUsIDE1IEp1biAyMDIxIDE0OjQ3OjQ2ICswMjAwDQo+PiArU3ViamVj dDogW1BBVENIXSBtYW46IGZpeCBzZWdmYXVsdCBpbiAibWFuIDEiDQo+PiArDQo+PiArZnVu Y3Rpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9sZMKgwqDCoMKgIG5l dw0KPj4gZGVsdGENCj4+ICttYW5fbWFpbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgOTQywqDCoMKgwqAgOTU0DQo+PiArMTINCj4+ICsNCj4+ICtTaWduZWQtb2ZmLWJ5 OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPg0KPj4gKw0KPj4g K1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRkNGZjNWNhNWVlNGZdDQo+PiArQ1ZFOiBD VkUtMjAyMS00MjM3Mw0KPj4gK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2lu ZHJpdmVyLmNvbT4NCj4+ICstLS0NCj4+ICsgbWlzY3V0aWxzL21hbi5jIHwgMiArLQ0KPj4g KyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkNCj4+ICsN Cj4+ICtkaWZmIC0tZ2l0IGEvbWlzY3V0aWxzL21hbi5jIGIvbWlzY3V0aWxzL21hbi5jDQo+ PiAraW5kZXggNzIyZjY2NDFlLi5kMzE5ZThiYmEgMTAwNjQ0DQo+PiArLS0tIGEvbWlzY3V0 aWxzL21hbi5jDQo+PiArKysrIGIvbWlzY3V0aWxzL21hbi5jDQo+PiArQEAgLTMyNCw3ICsz MjQsNyBAQCBpbnQgbWFuX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJn dikNCj4+ICsNCj4+ICvCoMKgwqDCoMKgwqDCoC8qIGlzIDFzdCBBUkcgYSBTRUNUSU9OPyAq Lw0KPj4gK8KgwqDCoMKgwqDCoMKgc2VjX2xpc3QgPSBjb25mX3NlY19saXN0Ow0KPj4gKy3C oMKgwqDCoMKgwqBpZiAoaXNfc2VjdGlvbl9uYW1lKGNvbmZfc2VjX2xpc3QsICphcmd2KSkg ew0KPj4gKyvCoMKgwqDCoMKgwqBpZiAoaXNfc2VjdGlvbl9uYW1lKGNvbmZfc2VjX2xpc3Qs ICphcmd2KSAmJiBhcmd2WzFdKSB7DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogeWVzICovDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2VjX2xp c3QgPSAqYXJndisrOw0KPj4gK8KgwqDCoMKgwqDCoMKgfQ0KPj4gZGlmZiAtLWdpdCBhL21l dGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMzLjIuYmINCj4+IGIvbWV0YS9y ZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzMuMi5iYg0KPj4gaW5kZXggNDRjODNh YjgzYy4uNGEwZDNiNDU1NiAxMDA2NDQNCj4+IC0tLSBhL21ldGEvcmVjaXBlcy1jb3JlL2J1 c3lib3gvYnVzeWJveF8xLjMzLjIuYmINCj4+ICsrKyBiL21ldGEvcmVjaXBlcy1jb3JlL2J1 c3lib3gvYnVzeWJveF8xLjMzLjIuYmINCj4+IEBAIC00OCw2ICs0OCw4IEBAIFNSQ19VUkkg PQ0KPj4gImh0dHBzOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFy LmJ6MjtuYW1lPXRhcmJhbGzCoFwNCj4+ICAgICAgICAgICAgIA0KPj4gZmlsZTovLzAwMDEt c3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5w YXRjaA0KPj4gIMKgXA0KPj4gICAgICAgICAgICAgDQo+PiBmaWxlOi8vMDAwMS1nZW5fYnVp bGRfZmlsZXMtVXNlLUMtbG9jYWxlLXdoZW4tY2FsbGluZy1zZWQtb24tZ2xvLnBhdGNoDQo+ PiAgwqBcDQo+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmaWxlOi8vMDAwMS1ta3RlbXAt YWRkLXRtcGRpci1vcHRpb24ucGF0Y2jCoFwNCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBm aWxlOi8vMDAwMS1hd2stZml4LUNWRXMucGF0Y2jCoFwNCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBmaWxlOi8vMDAwMi1tYW4tZml4LXNlZ2ZhdWx0LWluLW1hbi0xLnBhdGNowqBcDQo+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiDQo+PiAgwqBTUkNfVVJJX2FwcGVuZF9saWJj LW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZ8KgIg0KPj4gICANCj4+DQo+PiAtPS09LT0tPS09 LT0tPS09LT0tPS09LQ0KPj4gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50 IHRvIHRoaXMgZ3JvdXAuDQo+PiBWaWV3L1JlcGx5IE9ubGluZSAoIzE2MDA0Nik6DQo+PiBo dHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9vcGVuZW1iZWRkZWQtY29yZS9tZXNz YWdlLzE2MDA0Ng0KPj4gTXV0ZSBUaGlzIFRvcGljOiBodHRwczovL2xpc3RzLm9wZW5lbWJl ZGRlZC5vcmcvbXQvODgwMDc3MDMvMzYxNjcwMg0KPj4gR3JvdXAgT3duZXI6IG9wZW5lbWJl ZGRlZC1jb3JlK293bmVyQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcNCj4+IFVuc3Vic2NyaWJl Og0KPj4gaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL2cvb3BlbmVtYmVkZGVkLWNv cmUvdW5zdWLCoFsNCj4+IGFudWoubWl0dGFsQGludGVsLmNvbV0NCj4+IC09LT0tPS09LT0t PS09LT0tPS09LT0tDQo+Pg0KDQo=