From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 31044385840B for ; Thu, 29 Jul 2021 20:02:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 31044385840B Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 16TK1rUJ003906; Thu, 29 Jul 2021 20:02:48 GMT Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3a2jkfed08-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 29 Jul 2021 20:02:47 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 16TK1gvD161526; Thu, 29 Jul 2021 20:02:46 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2048.outbound.protection.outlook.com [104.47.57.48]) by aserp3020.oracle.com with ESMTP id 3a234cweg3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 29 Jul 2021 20:02:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n7rMlVjKps8uWqENtFWtYlz6xrmc+xgDy7+aBVCzMVKga7pJ62mY7HWQ5JL6n/CZp1Za2Mbf8yhYoJoFKi8pbsqu0vKyD1BJtXufdr8r2gWmmJ4wTONOJiNxtCgfDvkfQrzWAyuexepGMAH0oLlJLsei60EgL+BpGSybPKXVPzKibOrCdQ4FsXk5PUx1aUbfrW9idSeI2dczf6DjWcjBAywXFOjaa1aWyaogN2m6AY7xnbrvGMOHtgM8cPE7qjvF92yeEq8p/O9nJnkCxgKQ/KJNa8AYS5bjJktmQZc/LBx+cRy7gxdU5qTC7kIGOxsSbB+1HbpnWW/GgdQ70fbDjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8lgSZLj+XXOd8MHzTwRBukd43tKBkRhaQ2d7Tc51Bc8=; b=K2GACqWrR2UI5JCqv4+7UqoRLwTerLES7JQ0yPPLkmOZUP0AdrF3blScPxj2SsjwdmpxXaojOOh1ncm/S85gTsS09D3+cUcCkBbzzg5FZXsaH4me4yJls93p+7shzkVA4tSdoiG+u8Y2RJ/1LtzAxrZ0ZduNqpvDMC6ByyVz/DMTlFgrBHiPh3IzGVVBT0K2/R3o4h2DqNeiPCiCs1/ZreMqR59Kc696s8gogXu8fZXDYahWOfvnAw+rBreZgGeGj6AZJIreoReQy6DeUWYRl8w6HeRVmUunRpmLER3522xLT5NF/Gslcqr7byaQO5oPFm9idbZzC9MjlS2XSFgZTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH2PR10MB3831.namprd10.prod.outlook.com (2603:10b6:610:d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4352.29; Thu, 29 Jul 2021 20:02:43 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::d0b0:6721:c950:5314]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::d0b0:6721:c950:5314%6]) with mapi id 15.20.4373.022; Thu, 29 Jul 2021 20:02:43 +0000 From: Qing Zhao To: Richard Biener , Jakub Jelinek CC: Martin Jambor , Richard Sandiford , Kees Cook , Nick Alcock via Gcc-patches Subject: [patch][version 7]add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Topic: [patch][version 7]add -ftrivial-auto-var-init and variable attribute "uninitialized" to gcc Thread-Index: AQHXhLSxHwzt2b4ZGEOhqOzmrypa/A== Date: Thu, 29 Jul 2021 20:02:43 +0000 Message-ID: <68155224-CCA8-4108-AE73-35C698D95402@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3863375b-96da-4beb-16a2-08d952cbd3df x-ms-traffictypediagnostic: CH2PR10MB3831: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ejqYXAj0b5Ut4zusBlFziT9Q2yZ9mmaQmT1CykAgiVcWJft8R2OfWxTOngfXDe1zqHuWhyunUf2Kl7XDqjcvqKhgBHpmdB9dQpQtH5iFszHsblA1a2AJw0KMDwBckw1A+q/MNen3gjmbiXspVtmwBalKtjuf7vbuKCXOc97IGw3PPv0ZZt0maxDjirLzfnLFuOtcDCsuMLiIe2vk05yZ4xosQ0pwKval0u7VslQnAWfKj02UhmfU/DMEAEVg9qAKWDMq9yajj6PSsDS9JS8IVsa4T3SfpE6XZJi7wLp9/66aiC9YX27q+m6vW2IOnB9lhulsA5i/A/j3xK7CfMfMFgu0QIIjc8XQuHC8JAgRReQFN3CnJqjuAR3GxJupd4SUQ3NiERim7Vf5BWaNZYPeZXEIwrvf7OlOwF+HiQ6fMl+dxHOMStsYXEpVl1Tv7AtDvG1+g8BfJHPBd9toQGh98+FE3Noq979W4wVkhB5CzwEyXs6gts2S51e5AYz1BQsmmUU0PfANIxgSDnNU7dqL8Xq3oGH49YHANQ+OE0LegG40D3r31+Rg1MiXlKinPmYQb/UF1zoIK79Votr/spJBLeRychzDuY+kzINOHOsGFvlVcDC8qu2ygyXnddGI5q+nUFPdB3NRqniOgYPUOy82uGST36YktZhT9upBHLPSG5XRMCQhNB0s5CiA8W4HkibKYRLib99d1iPruns7Lpm6yao97xW3v4aAiVHrODlI7uD301u0GRq2UFCw1i03eYZbIwoev+hfLHXaEcnD+JpGt3E850AtIgEAFEBZAz/oqmiucMSkHA7NkUqxM3ljixja85ymFj2ZLt1T+ybwb6IDLANawbe6NctAqUBBKdcmb7M= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(366004)(5660300002)(66556008)(66446008)(33656002)(186003)(66616009)(2616005)(4326008)(122000001)(8676002)(6512007)(966005)(86362001)(66946007)(64756008)(508600001)(66476007)(71200400001)(91956017)(83380400001)(316002)(6486002)(6506007)(2906002)(110136005)(36756003)(99936003)(44832011)(8936002)(76116006)(54906003)(38100700002)(38070700005)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?cqI50h7y+6Z8vmmyna8/Zc2I0mX60fNAAunX5EIgeYHpt0JED3Je+HDYtojV?= =?us-ascii?Q?UtiVQOECyrfKv0e2uMoz4tsg/LN88bRDAGhuWrZhfSMlR5JcOqaOt6t7mzvx?= =?us-ascii?Q?Vf+KqV5VX5rQDRhn1ajDXd9q5Z1CVITIZYbPP1hSjdJmpGaJVrvwNRf43W4k?= =?us-ascii?Q?srrD1P3+nMbWwdShpEwayDbg6Cd8HqUqpdGdKZHYTk2wWR7K3WcGwc3KWpeD?= =?us-ascii?Q?E1PRHqDEbUEM4hG8PbFHQkoBcbl3JtURj2QXfDyDvGgzj/Yef3ttL0Fx3atk?= =?us-ascii?Q?TZoW17ZsoHOh9ccxpYOINdH8sOHZGIqyiTOU8GudrKlpFj/5b8tdK25TKVB5?= =?us-ascii?Q?MRuIyZvHvbzjnas+eyBrvdvJys9Xiz49Lmkttj2ltVAf8Yry4n85XWC04uS+?= =?us-ascii?Q?ZTcJqW7fZ4oRDe4wQkPRiNTDxxhlK9iuRGl+H1Ti+ChU9WcR+koeXSaTxlh/?= =?us-ascii?Q?4tccAq2J4msMrG6YHf4Y4gjb2SflxXmj8MIGXVwB2xKAYmBsyF6SGpNHXtme?= =?us-ascii?Q?tUl62EAs669wBzr9uEruChlXvZShiNl6IUE4ooGgTB9j1jbNPGw/d7fc8LlX?= =?us-ascii?Q?mBhsqo3dBXfDOqxm34AhYCb9mwwxNrc8JIcP9CPPT/prq0EAdCJH/SRY9x5S?= =?us-ascii?Q?R6GBrB6VTWsviDlq5qMU2jj/QLvM2MV7dxQFlmu5LlJubkewis/K4yZbbGJ3?= =?us-ascii?Q?3Xh/pdlj3D/hTJrOXqWbscLc2moyu/annWsw+khqR3avg3PW9khdVkUUrHYM?= =?us-ascii?Q?COemrx71Cww8yVgTdH5378UvUdfkJ15N7Id3sUdlaZThvLizvq3qdxeFIpg9?= =?us-ascii?Q?uKhrKyHm7mAaCfQQZuqixY6H3HE5zrqtLYpi2b683aVl/8Vxl8Urhj5hjiX2?= =?us-ascii?Q?1q4BM+nNILNiibhJaV6DnEPpJgjIo/jz0iFIrBUHoQc8EbmVXp+s7zU8c5u8?= =?us-ascii?Q?R5dE0pjGb3AKu1yNCma/MPkLZbKn2oKD0mYihQ82bGs5vABx9dB9e9/lWJp4?= =?us-ascii?Q?iaCUa4RA5Voz68dPTHKfUJAo+SV+7Kqsc9rSUqkyOZn3fogWz/SYSp9I8wfm?= =?us-ascii?Q?ALXsW12Qb4NCFWkmijxv8znw2OuLKU0R7Hg/t/HukPUug1SxV7ORAudrXALq?= =?us-ascii?Q?O3XchU2KL0T1uCoLSSEkBHMry/Xr7+jszuMVW6EXnAGVfPjIumukUHHfyzmn?= =?us-ascii?Q?kccPbeukOxG3esM7XArOt/idgKJsKQs8lTG0tJ/uGDRmFFSHULRDA1VRygc8?= =?us-ascii?Q?VUVCzYCzfHfoOsiuHKxOrH1v8eka2rZ42viipb1qMPI2es1ZGlUI8khdVImi?= =?us-ascii?Q?JOb1l/miMFKtE3XbR/5HTb/aJ3IaIIltrPJTx7xxKmjnwjafMlml4p0nwMTf?= =?us-ascii?Q?5WPioiEnwNF+6A2cbjDJfu8d/C3R?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_68155224CCA84108AE7335C698D95402oraclecom_" MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3863375b-96da-4beb-16a2-08d952cbd3df X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2021 20:02:43.4653 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fXUKB0wvFW+E0jIZSbf7qzq3Q7q/taFt63GVG/0B11Zew+kaFcrsjdmvRMJWDFh5+n3ZcRA0jgxzS5Go6VnZlg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB3831 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10060 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 suspectscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2107290123 X-Proofpoint-GUID: YS-kAYipNE7FpugwufTdduwaje-tx4kQ X-Proofpoint-ORIG-GUID: YS-kAYipNE7FpugwufTdduwaje-tx4kQ X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L3, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2021 20:02:56 -0000 --_002_68155224CCA84108AE7335C698D95402oraclecom_ Content-Type: text/plain; charset="us-ascii" Content-ID: <3DA63F652585FE4AA1B285DFC7A6369E@namprd10.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Hi, This is the 7th version of the patch for the new security feature for GCC. I have tested it with bootstrap on both x86 and aarch64, regression testing= on both x86 and aarch64. Also compile CPU2017 (running is ongoing), without any issue. Please take a look and let me know any issue. NOTE: ** Changes in tree-sra.c have been reviewed and approved by Martin Jambor.= =20 ** Jakub, could you please review the changes for using __builtin_clear_pad= ding, mostly in simple-fold.c? Thanks Qing ******Compared with the 6th version, the changes are: 1. in gimplify.c, for explicitly initialized auto variables, emit a call t= o=20 __builtin_clear_padding BEFORE the constructor instead AFTER it. 2. Add one new testing case gcc/testsuite/gcc.dg/auto-init-uninit-38.c to = verify the uninitialized warnings not being emitted for initialized auto va= riable when -ftrivial-auto-var-init is added.=20 =20 3. update gcc/testsuite/gcc.dg/auto-init-uninit-23.c according to the late= st change in gcc/testsuite/gcc.dg/uninit-23.c. ******the 6th version compared with the 5th version, the changes are: 1. Fix two issues raised by Martin Jambor in tree-sra.c: A. Inside "scan_function", Do not set cannot_scalarize_away_bitmap for a = call to DEFERRED_INIT. B. Fix a potential issue for single-field structure. 2. Add two testing cases based on gcc/testsuite/gcc.dg/tree-ssa/sra-12.c to= verity SRA total scalarization will not be confused by auto initializatoin= . ******the 5th version compared with the 4th version, the following are the = major changes: 1. delete the code for handling "grp_to_be_debug_replaced" since they are n= ot needed per Martin Jambor's suggestion. 2. for Pattern init, call __builtin_clear_padding after the call to .DEFERR= ED_INIT to initialize the paddings to zeroes; 3. for partially or fully initialized auto variables, call __builtin_clea= r_padding before the real initialization to initialize the paddings to zeroes. 4. Update the documentation with padding initialization to zeroes. 5. in order to reuse __builtin_clear_padding for auto init purpose, add one= more dummy argument to indiciate whether it's for auto init or not, if for auto init, do not emit error messages to avoid confusing users. 6. Add new testing cases to verify padding initializations. 7. rename some of the old testing cases to make the file name reflecting th= e testing purpose per Kees Cook's suggestions. ******Please see version 6 at: https://gcc.gnu.org/pipermail/gcc-patches/2021-July/576072.html ******ChangeLog is: gcc/ChangeLog: 2021-07-29 qing zhao * builtins.c (expand_builtin_memset): Make external visible.=20 * builtins.h (expand_builtin_memset): Declare extern. * common.opt (ftrivial-auto-var-init=3D): New option. * doc/extend.texi: Document the uninitialized attribute. * doc/invoke.texi: Document -ftrivial-auto-var-init. * flag-types.h (enum auto_init_type): New enumerated type auto_init_type. * gimple-fold.c (clear_padding_type): Add one new parameter. (clear_padding_union): Likewise. (clear_padding_emit_loop): Likewise. (clear_type_padding_in_mask): Likewise. (gimple_fold_builtin_clear_padding): Handle this new parameter. * gimplify.c (gimple_add_init_for_auto_var): New function. (maybe_with_size_expr): Forword declaration. (build_deferred_init): New function. (gimple_add_padding_init_for_auto_var): New function. (gimplify_decl_expr): Add initialization to automatic variables per users' requests. (gimplify_call_expr): Add one new parameter for call to __builtin_clear_padding. (gimplify_modify_expr_rhs): Add padding initialization after gimplify_init_constructor. * internal-fn.c (INIT_PATTERN_VALUE): New macro. (expand_DEFERRED_INIT): New function. * internal-fn.def (DEFERRED_INIT): New internal function. * tree-cfg.c (verify_gimple_call): Verify calls to .DEFERRED_INIT. * tree-sra.c (generate_subtree_deferred_init): New function. (scan_function): Avoid setting cannot_scalarize_away_bitmap for=20 calls to .DEFERRED_INIT. (sra_modify_deferred_init): New function. (sra_modify_function_body): Handle calls to DEFERRED_INIT specially. * tree-ssa-structalias.c (find_func_aliases_for_call): Likewise. * tree-ssa-uninit.c (warn_uninit): Handle calls to DEFERRED_INIT specially. (check_defs): Likewise. (warn_uninitialized_vars): Likewise. * tree-ssa.c (ssa_undefined_value_p): Likewise. gcc/c-family/ChangeLog: 2021-07-29 qing zhao * c-attribs.c (handle_uninitialized_attribute): New function. (c_common_attribute_table): Add "uninitialized" attribute. gcc/testsuite/ChangeLog: 2021-07-29 qing zhao * c-c++-common/auto-init-1.c: New test. * c-c++-common/auto-init-10.c: New test. * c-c++-common/auto-init-11.c: New test. * c-c++-common/auto-init-12.c: New test. * c-c++-common/auto-init-13.c: New test. * c-c++-common/auto-init-14.c: New test. * c-c++-common/auto-init-15.c: New test. * c-c++-common/auto-init-16.c: New test. * c-c++-common/auto-init-2.c: New test. * c-c++-common/auto-init-3.c: New test. * c-c++-common/auto-init-4.c: New test. * c-c++-common/auto-init-5.c: New test. * c-c++-common/auto-init-6.c: New test. * c-c++-common/auto-init-7.c: New test. * c-c++-common/auto-init-8.c: New test. * c-c++-common/auto-init-9.c: New test. * c-c++-common/auto-init-esra.c: New test. * c-c++-common/auto-init-padding-1.c: New test. * c-c++-common/auto-init-padding-2.c: New test. * c-c++-common/auto-init-padding-3.c: New test. * g++.dg/auto-init-uninit-pred-1_a.C: New test. * g++.dg/auto-init-uninit-pred-1_b.C: New test. * g++.dg/auto-init-uninit-pred-2_a.C: New test. * g++.dg/auto-init-uninit-pred-2_b.C: New test. * g++.dg/auto-init-uninit-pred-3_a.C: New test. * g++.dg/auto-init-uninit-pred-3_b.C: New test. * g++.dg/auto-init-uninit-pred-4.C: New test. * g++.dg/auto-init-uninit-pred-loop-1_a.cc: New test. * g++.dg/auto-init-uninit-pred-loop-1_b.cc: New test. * g++.dg/auto-init-uninit-pred-loop-1_c.cc: New test. * g++.dg/auto-init-uninit-pred-loop_1.cc: New test. * gcc.dg/auto-init-sra-1.c: New test. * gcc.dg/auto-init-sra-2.c: New test. * gcc.dg/auto-init-uninit-1.c: New test. * gcc.dg/auto-init-uninit-11.c: New test. * gcc.dg/auto-init-uninit-12.c: New test. * gcc.dg/auto-init-uninit-13.c: New test. * gcc.dg/auto-init-uninit-14.c: New test. * gcc.dg/auto-init-uninit-15.c: New test. * gcc.dg/auto-init-uninit-16.c: New test. * gcc.dg/auto-init-uninit-17.c: New test. * gcc.dg/auto-init-uninit-18.c: New test. * gcc.dg/auto-init-uninit-19.c: New test. * gcc.dg/auto-init-uninit-2.c: New test. * gcc.dg/auto-init-uninit-20.c: New test. * gcc.dg/auto-init-uninit-21.c: New test. * gcc.dg/auto-init-uninit-22.c: New test. * gcc.dg/auto-init-uninit-23.c: New test. * gcc.dg/auto-init-uninit-24.c: New test. * gcc.dg/auto-init-uninit-25.c: New test. * gcc.dg/auto-init-uninit-26.c: New test. * gcc.dg/auto-init-uninit-3.c: New test. * gcc.dg/auto-init-uninit-34.c: New test. * gcc.dg/auto-init-uninit-36.c: New test. * gcc.dg/auto-init-uninit-37.c: New test. * gcc.dg/auto-init-uninit-38.c: New test. * gcc.dg/auto-init-uninit-4.c: New test. * gcc.dg/auto-init-uninit-5.c: New test. * gcc.dg/auto-init-uninit-6.c: New test. * gcc.dg/auto-init-uninit-8.c: New test. * gcc.dg/auto-init-uninit-9.c: New test. * gcc.dg/auto-init-uninit-A.c: New test. * gcc.dg/auto-init-uninit-B.c: New test. * gcc.dg/auto-init-uninit-C.c: New test. * gcc.dg/auto-init-uninit-H.c: New test. * gcc.dg/auto-init-uninit-I.c: New test. * gcc.target/aarch64/auto-init-1.c: New test. * gcc.target/aarch64/auto-init-2.c: New test. * gcc.target/aarch64/auto-init-3.c: New test. * gcc.target/aarch64/auto-init-4.c: New test. * gcc.target/aarch64/auto-init-5.c: New test. * gcc.target/aarch64/auto-init-6.c: New test. * gcc.target/aarch64/auto-init-7.c: New test. * gcc.target/aarch64/auto-init-8.c: New test. * gcc.target/aarch64/auto-init-padding-1.c: New test. * gcc.target/aarch64/auto-init-padding-10.c: New test. * gcc.target/aarch64/auto-init-padding-11.c: New test. * gcc.target/aarch64/auto-init-padding-12.c: New test. * gcc.target/aarch64/auto-init-padding-2.c: New test. * gcc.target/aarch64/auto-init-padding-3.c: New test. * gcc.target/aarch64/auto-init-padding-4.c: New test. * gcc.target/aarch64/auto-init-padding-5.c: New test. * gcc.target/aarch64/auto-init-padding-6.c: New test. * gcc.target/aarch64/auto-init-padding-7.c: New test. * gcc.target/aarch64/auto-init-padding-8.c: New test. * gcc.target/aarch64/auto-init-padding-9.c: New test. * gcc.target/i386/auto-init-1.c: New test. * gcc.target/i386/auto-init-2.c: New test. * gcc.target/i386/auto-init-21.c: New test. * gcc.target/i386/auto-init-22.c: New test. * gcc.target/i386/auto-init-23.c: New test. * gcc.target/i386/auto-init-24.c: New test. * gcc.target/i386/auto-init-3.c: New test. * gcc.target/i386/auto-init-4.c: New test. * gcc.target/i386/auto-init-5.c: New test. * gcc.target/i386/auto-init-6.c: New test. * gcc.target/i386/auto-init-7.c: New test. * gcc.target/i386/auto-init-8.c: New test. * gcc.target/i386/auto-init-padding-1.c: New test. * gcc.target/i386/auto-init-padding-10.c: New test. * gcc.target/i386/auto-init-padding-11.c: New test. * gcc.target/i386/auto-init-padding-12.c: New test. * gcc.target/i386/auto-init-padding-2.c: New test. * gcc.target/i386/auto-init-padding-3.c: New test. * gcc.target/i386/auto-init-padding-4.c: New test. * gcc.target/i386/auto-init-padding-5.c: New test. * gcc.target/i386/auto-init-padding-6.c: New test. * gcc.target/i386/auto-init-padding-7.c: New test. * gcc.target/i386/auto-init-padding-8.c: New test. * gcc.target/i386/auto-init-padding-9.c: New test. ******The complete 7th version of the patch is: --_002_68155224CCA84108AE7335C698D95402oraclecom_ Content-Type: application/octet-stream; name="0001-7th-version.patch" Content-Description: 0001-7th-version.patch Content-Disposition: attachment; filename="0001-7th-version.patch"; size=171492; creation-date="Thu, 29 Jul 2021 20:02:43 GMT"; modification-date="Thu, 29 Jul 2021 20:02:43 GMT" Content-ID: <344910CA35006947A4E9E8C68CA66E07@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBlNGU3OGU5YjUzNTk5ZWY5ODBlODQ5NmRjYmZkZGEyMTNmZGQxMjFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPgpEYXRl OiBUaHUsIDI5IEp1bCAyMDIxIDE2OjQ2OjIwICswMDAwClN1YmplY3Q6IFtQQVRDSF0gN3RoIHZl cnNpb24gYWRkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0IGFuZCB2YXJpYWJsZQogYXR0cmlidXRl ICB1bmluaXRpYWxpemVkIHRvIGdjYy4KCi0tLQogZ2NjL2J1aWx0aW5zLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBnY2MvYnVpbHRpbnMuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jICAgICAg ICAgICAgICAgICAgICAgIHwgIDE5ICsrCiBnY2MvY29tbW9uLm9wdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMTYgKysKIGdjYy9kb2MvZXh0ZW5kLnRleGkgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAxNiArKwogZ2NjL2RvYy9pbnZva2UudGV4aSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDQxICsrLQogZ2NjL2ZsYWctdHlwZXMuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICA3ICsKIGdjYy9naW1wbGUtZm9sZC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA0OCArKy0tCiBnY2MvZ2ltcGxpZnkuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAxNjcgKysrKysrKysrKystCiBnY2MvaW50ZXJuYWwtZm4uYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMDggKysrKysrKysKIGdjYy9pbnRlcm5hbC1mbi5kZWYg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtMS5jICAgICAgfCAgMzkgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9hdXRvLWluaXQtMTAuYyAgICAgfCAgMTcgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2F1dG8taW5pdC0xMS5jICAgICB8ICAxNCArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21t b24vYXV0by1pbml0LTEyLmMgICAgIHwgIDE0ICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9hdXRvLWluaXQtMTMuYyAgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9u L2F1dG8taW5pdC0xNC5jICAgICB8ICAyMyArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXV0by1pbml0LTE1LmMgICAgIHwgIDEzICsKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1 dG8taW5pdC0xNi5jICAgICB8ICAxMyArCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRv LWluaXQtMi5jICAgICAgfCAgMzkgKysrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRv LWluaXQtMy5jICAgICAgfCAgMTkgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8t aW5pdC00LmMgICAgICB8ICAxOSArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1p bml0LTUuYyAgICAgIHwgIDIxICsrCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWlu aXQtNi5jICAgICAgfCAgMjEgKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC03LmMgICAgICB8ICAzNSArKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC04LmMgICAgICB8ICAzNSArKysKIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC05LmMgICAgICB8ICAxNyArKwogZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LWVzcmEuYyAgIHwgIDM1ICsrKwogLi4uL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0x LmMgICAgICAgIHwgIDIzICsrCiAuLi4vYy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTIu YyAgICAgICAgfCAxMTQgKysrKysrKysrCiAuLi4vYy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRk aW5nLTMuYyAgICAgICAgfCAxMTQgKysrKysrKysrCiAuLi4vZysrLmRnL2F1dG8taW5pdC11bmlu aXQtcHJlZC0xX2EuQyAgICAgICAgfCAgNjMgKysrKysKIC4uLi9nKysuZGcvYXV0by1pbml0LXVu aW5pdC1wcmVkLTFfYi5DICAgICAgICB8ICA2MyArKysrKwogLi4uL2crKy5kZy9hdXRvLWluaXQt dW5pbml0LXByZWQtMl9hLkMgICAgICAgIHwgIDYyICsrKysrCiAuLi4vZysrLmRnL2F1dG8taW5p dC11bmluaXQtcHJlZC0yX2IuQyAgICAgICAgfCAgNjIgKysrKysKIC4uLi9nKysuZGcvYXV0by1p bml0LXVuaW5pdC1wcmVkLTNfYS5DICAgICAgICB8ICA3NyArKysrKysKIC4uLi9nKysuZGcvYXV0 by1pbml0LXVuaW5pdC1wcmVkLTNfYi5DICAgICAgICB8ICA4NyArKysrKysrCiAuLi4vZysrLmRn L2F1dG8taW5pdC11bmluaXQtcHJlZC00LkMgICAgICAgICAgfCAgMTYgKysKIC4uLi9nKysuZGcv YXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9hLmNjICB8ICAyMSArKwogLi4uL2crKy5kZy9h dXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2IuY2MgIHwgIDIxICsrCiAuLi4vZysrLmRnL2F1 dG8taW5pdC11bmluaXQtcHJlZC1sb29wLTFfYy5jYyAgfCAgMjMgKysKIC4uLi9nKysuZGcvYXV0 by1pbml0LXVuaW5pdC1wcmVkLWxvb3BfMS5jYyAgICB8ICAyMSArKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXNyYS0xLmMgICAgICAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtc3JhLTIuYyAgICAgICAgfCAgMjQgKysKIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMS5jICAgICB8ICAzMCArKysKIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMTEuYyAgICB8ICA0MiArKysrCiBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTEyLmMgICAgfCAgMTIgKwogZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0xMy5jICAgIHwgIDEwICsKIGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMTQuYyAgICB8ICAyMCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YXV0by1pbml0LXVuaW5pdC0xNS5jICAgIHwgIDI2ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTE2LmMgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMTcuYyAgICB8ICAxNSArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0xOC5jICAgIHwgIDI0ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTE5LmMgICAgfCAgMjYgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMi5jICAgICB8ICA1MiArKysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTIwLmMgICAgfCAgMTggKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMjEuYyAgICB8ICAzMyArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMjIuYyAgICB8ICA2OSArKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0yMy5jICAgIHwgIDI3ICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTI0LmMgICAgfCAgMTAgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0yNS5jICAgIHwgIDIzICsrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LTI2LmMgICAgfCAgMjMgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMy5jICAgICB8ICAzMyArKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5p dC11bmluaXQtMzQuYyAgICB8ICA1OCArKysrKwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0zNi5jICAgIHwgMjM4ICsrKysrKysrKysrKysrKysrKwogZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNy5jICAgIHwgMTU0ICsrKysrKysrKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zOC5jICAgIHwgIDE0ICsrCiBnY2Mv dGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTQuYyAgICAgfCAgNTIgKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC01LmMgICAgIHwgIDM5ICsrKwogZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02LmMgICAgIHwgIDQ3ICsrKysKIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtOC5jICAgICB8ICAzMiArKysKIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtOS5jICAgICB8ICA0MiArKysrCiBn Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUEuYyAgICAgfCAxMTcgKysrKysr KysrCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUIuYyAgICAgfCAgMTUg KysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQy5jICAgICB8ICAyMSAr KwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1ILmMgICAgIHwgIDMzICsr KwogZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1JLmMgICAgIHwgICA4ICsK IC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTEuYyAgICAgICAgICB8ICAzMiArKysK IC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTIuYyAgICAgICAgICB8ICAzNSArKysK IC4uLi9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMuYyAgICAgICAgICB8ICAxNyArKwog Li4uL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtNC5jICAgICAgICAgIHwgIDE5ICsrCiAu Li4vZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC01LmMgICAgICAgICAgfCAgMTkgKysKIC4u Li9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTYuYyAgICAgICAgICB8ICAxOCArKwogLi4u L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtNy5jICAgICAgICAgIHwgIDMyICsrKwogLi4u L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jICAgICAgICAgIHwgIDMyICsrKwogLi4u L2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xLmMgIHwgIDE3ICsrCiAuLi4v Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMgfCAgMjIgKysKIC4uLi9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTEuYyB8ICAyNyArKwogLi4uL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMi5jIHwgIDI3ICsrCiAuLi4vZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTIuYyAgfCAgMTggKysKIC4uLi9nY2Mu dGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMy5jICB8ICAyNyArKwogLi4uL2djYy50 YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy00LmMgIHwgIDI3ICsrCiAuLi4vZ2NjLnRh cmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYyAgfCAgMjIgKysKIC4uLi9nY2MudGFy Z2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNi5jICB8ICAyMCArKwogLi4uL2djYy50YXJn ZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy03LmMgIHwgIDIwICsrCiAuLi4vZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTguYyAgfCAgMjIgKysKIC4uLi9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctOS5jICB8ICAyMSArKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYyAgIHwgIDMyICsrKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIuYyAgIHwgIDM2ICsrKwogZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIxLmMgIHwgIDE0ICsrCiBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjIuYyAgfCAgMTQgKysKIGdjYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMy5jICB8ICAxMyArCiBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjQuYyAgfCAgMTMgKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYXV0by1pbml0LTMuYyAgIHwgIDE3ICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9hdXRvLWluaXQtNC5jICAgfCAgMjAgKysKIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC01LmMgICB8ICAyMCArKwogZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXV0by1pbml0LTYuYyAgIHwgIDE5ICsrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtNy5jICAgfCAgMzIgKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtOC5jICAgfCAgMzUgKysrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC1wYWRkaW5nLTEuYyAgICAgfCAgMTkgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LXBhZGRpbmctMTAuYyAgICB8ICAyMSArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtcGFkZGluZy0xMS5jICAgIHwgIDI2ICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC1wYWRkaW5nLTEyLmMgICAgfCAgMjYgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0 LXBhZGRpbmctMi5jICAgICB8ICAxOSArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt cGFkZGluZy0zLmMgICAgIHwgIDMwICsrKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt cGFkZGluZy00LmMgICAgIHwgIDI4ICsrKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt cGFkZGluZy01LmMgICAgIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1w YWRkaW5nLTYuYyAgICAgfCAgMjIgKysKIC4uLi9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBh ZGRpbmctNy5jICAgICB8ICAyMiArKwogLi4uL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFk ZGluZy04LmMgICAgIHwgIDIyICsrCiAuLi4vZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRk aW5nLTkuYyAgICAgfCAgMjMgKysKIGdjYy90cmVlLWNmZy5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICA5OSArKysrKystLQogZ2NjL3RyZWUtc3JhLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTI0ICsrKysrKysrLQogZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFz LmMgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGdjYy90cmVlLXNzYS11bmluaXQuYyAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0NyArKysrCiBnY2MvdHJlZS1zc2EuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNDAgKysrCiAxMjYgZmlsZXMgY2hhbmdlZCwgNDMwMyBp bnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEwLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTEuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTQu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5p dC0xNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTE2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9hdXRvLWluaXQtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2F1dG8taW5pdC00LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC03LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtOC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTkuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1lc3JhLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtcGFkZGlu Zy0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRv LWluaXQtcGFkZGluZy0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtcGFkZGluZy0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMV9hLkMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMV9iLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXBy ZWQtMl9hLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWlu aXQtdW5pbml0LXByZWQtMl9iLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19hLkMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19iLkMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtNC5DCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1w cmVkLWxvb3AtMV9hLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv YXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9iLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9jLmNjCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVk LWxvb3BfMS5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC1zcmEtMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXNyYS0yLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTQuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTUuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt MTcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtMTguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMTkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMy5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC0yNi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTM0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtdW5pbml0LTM2LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM3LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTQuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTguYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQt OS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC1BLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWlu aXQtdW5pbml0LUIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtQy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC1ILmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMi5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC00LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTYuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC03LmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0 LXBhZGRpbmctMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTExLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQt cGFkZGluZy0xMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMy5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctNC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LXBhZGRpbmctNS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRp bmctNy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNo NjQvYXV0by1pbml0LXBhZGRpbmctOC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctOS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtMjEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2 L2F1dG8taW5pdC0yMi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvYXV0by1pbml0LTIzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNC5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC02 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtNy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kz ODYvYXV0by1pbml0LTguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGlu Zy0xMS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LXBhZGRpbmctMTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTMuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1w YWRkaW5nLTQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC1wYWRkaW5nLTUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTYuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTcuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5p dC1wYWRkaW5nLTguYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTkuYwoKZGlmZiAtLWdpdCBhL2djYy9idWlsdGlucy5j IGIvZ2NjL2J1aWx0aW5zLmMKaW5kZXggODQ1YThiYjEyMDEyLi5lMzQ2MmNlM2M0NTYgMTAwNjQ0 Ci0tLSBhL2djYy9idWlsdGlucy5jCisrKyBiL2djYy9idWlsdGlucy5jCkBAIC0xNDcsNyArMTQ3 LDYgQEAgc3RhdGljIHJ0eCBleHBhbmRfYnVpbHRpbl9zdHBjcHkgKHRyZWUsIHJ0eCwgbWFjaGlu ZV9tb2RlKTsKIHN0YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fc3RwbmNweSAodHJlZSwgcnR4KTsK IHN0YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fc3RybmNhdCAodHJlZSwgcnR4KTsKIHN0YXRpYyBy dHggZXhwYW5kX2J1aWx0aW5fc3RybmNweSAodHJlZSwgcnR4KTsKLXN0YXRpYyBydHggZXhwYW5k X2J1aWx0aW5fbWVtc2V0ICh0cmVlLCBydHgsIG1hY2hpbmVfbW9kZSk7CiBzdGF0aWMgcnR4IGV4 cGFuZF9idWlsdGluX21lbXNldF9hcmdzICh0cmVlLCB0cmVlLCB0cmVlLCBydHgsIG1hY2hpbmVf bW9kZSwgdHJlZSk7CiBzdGF0aWMgcnR4IGV4cGFuZF9idWlsdGluX2J6ZXJvICh0cmVlKTsKIHN0 YXRpYyBydHggZXhwYW5kX2J1aWx0aW5fc3RybGVuICh0cmVlLCBydHgsIG1hY2hpbmVfbW9kZSk7 CkBAIC00MDIxLDcgKzQwMjAsNyBAQCBidWlsdGluX21lbXNldF9nZW5fc3RyICh2b2lkICpkYXRh LCB2b2lkICpwcmV2cCwKICAgIHRyeSB0byBnZXQgdGhlIHJlc3VsdCBpbiBUQVJHRVQsIGlmIGNv bnZlbmllbnQgKGFuZCBpbiBtb2RlIE1PREUgaWYgdGhhdCdzCiAgICBjb252ZW5pZW50KS4gICov CiAKLXN0YXRpYyBydHgKK3J0eAogZXhwYW5kX2J1aWx0aW5fbWVtc2V0ICh0cmVlIGV4cCwgcnR4 IHRhcmdldCwgbWFjaGluZV9tb2RlIG1vZGUpCiB7CiAgIGlmICghdmFsaWRhdGVfYXJnbGlzdCAo ZXhwLApkaWZmIC0tZ2l0IGEvZ2NjL2J1aWx0aW5zLmggYi9nY2MvYnVpbHRpbnMuaAppbmRleCBi NTgwNjM1YTA5ZjAuLjg0NTg5OWM4MjU3ZSAxMDA2NDQKLS0tIGEvZ2NjL2J1aWx0aW5zLmgKKysr IGIvZ2NjL2J1aWx0aW5zLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBleHRlcm4gcnR4IGJ1aWx0aW5f c3RybmNweV9yZWFkX3N0ciAodm9pZCAqLCB2b2lkICosIEhPU1RfV0lERV9JTlQsCiAJCQkJICAg ICBzY2FsYXJfaW50X21vZGUpOwogZXh0ZXJuIHJ0eCBidWlsdGluX21lbXNldF9yZWFkX3N0ciAo dm9pZCAqLCB2b2lkICosIEhPU1RfV0lERV9JTlQsCiAJCQkJICAgIHNjYWxhcl9pbnRfbW9kZSk7 CitleHRlcm4gcnR4IGV4cGFuZF9idWlsdGluX21lbXNldCAodHJlZSwgcnR4LCBtYWNoaW5lX21v ZGUpOwogZXh0ZXJuIHJ0eCBleHBhbmRfYnVpbHRpbl9zYXZlcmVncyAodm9pZCk7CiBleHRlcm4g dHJlZSBzdGRfYnVpbGRfYnVpbHRpbl92YV9saXN0ICh2b2lkKTsKIGV4dGVybiB0cmVlIHN0ZF9m bl9hYmlfdmFfbGlzdCAodHJlZSk7CmRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1hdHRyaWJz LmMgYi9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmMKaW5kZXggZTYwZmIzMWQ4YzhlLi45YjU5NDAw NmZlNDQgMTAwNjQ0Ci0tLSBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYworKysgYi9nY2MvYy1m YW1pbHkvYy1hdHRyaWJzLmMKQEAgLTgzLDYgKzgzLDcgQEAgc3RhdGljIHRyZWUgaGFuZGxlX2Fy dGlmaWNpYWxfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0 YXRpYyB0cmVlIGhhbmRsZV9mbGF0dGVuX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBp bnQsIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBoYW5kbGVfZXJyb3JfYXR0cmlidXRlICh0cmVlICos IHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV91c2VkX2F0dHJp YnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CitzdGF0aWMgdHJlZSBoYW5k bGVfdW5pbml0aWFsaXplZF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29s ICopOwogc3RhdGljIHRyZWUgaGFuZGxlX2V4dGVybmFsbHlfdmlzaWJsZV9hdHRyaWJ1dGUgKHRy ZWUgKiwgdHJlZSwgdHJlZSwgaW50LAogCQkJCQkJIGJvb2wgKik7CiBzdGF0aWMgdHJlZSBoYW5k bGVfbm9fcmVvcmRlcl9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LApAQCAtMzMx LDYgKzMzMiw4IEBAIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1vbl9hdHRyaWJ1 dGVfdGFibGVbXSA9CiAJCQkgICAgICBoYW5kbGVfdXNlZF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAg eyAidW51c2VkIiwgICAgICAgICAgICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLAogCQkJICAgICAgaGFuZGxlX3VudXNlZF9hdHRyaWJ1dGUsIE5VTEwgfSwKKyAgeyAidW5p bml0aWFsaXplZCIsCSAgICAgIDAsIDAsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJCQkg ICAgICBoYW5kbGVfdW5pbml0aWFsaXplZF9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAicmV0YWlu IiwgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQkJ ICAgICAgaGFuZGxlX3JldGFpbl9hdHRyaWJ1dGUsIE5VTEwgfSwKICAgeyAiZXh0ZXJuYWxseV92 aXNpYmxlIiwgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsIGZhbHNlLApAQCAtMTYxMyw2 ICsxNjE2LDIyIEBAIGhhbmRsZV9yZXRhaW5fYXR0cmlidXRlICh0cmVlICpwbm9kZSwgdHJlZSBu YW1lLCB0cmVlIEFSR19VTlVTRUQgKGFyZ3MpLAogICByZXR1cm4gTlVMTF9UUkVFOwogfQogCisv KiBIYW5kbGUgYW4gInVuaW5pdGlhbGl6ZWQiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCisg ICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCisKK3N0YXRpYyB0cmVlCitoYW5k bGVfdW5pbml0aWFsaXplZF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBB UkdfVU5VU0VEIChhcmdzKSwKKwkJCQlpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpLCBib29sICpub19h ZGRfYXR0cnMpCit7CisgIGlmICghVkFSX1AgKCpub2RlKSkKKyAgICB7CisgICAgICB3YXJuaW5n IChPUFRfV2F0dHJpYnV0ZXMsICIlcUUgYXR0cmlidXRlIGlnbm9yZWQiLCBuYW1lKTsKKyAgICAg ICpub19hZGRfYXR0cnMgPSB0cnVlOworICAgIH0KKworICByZXR1cm4gTlVMTF9UUkVFOworfQor CiAvKiBIYW5kbGUgYSAiZXh0ZXJuYWxseV92aXNpYmxlIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBh cyBpbgogICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwogCmRpZmYgLS1naXQg YS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CmluZGV4IGQ5ZGExMTMxZWRhYS4uNWU0 MjIxZThhZjY0IDEwMDY0NAotLS0gYS9nY2MvY29tbW9uLm9wdAorKysgYi9nY2MvY29tbW9uLm9w dApAQCAtMzA3OCw2ICszMDc4LDIyIEBAIGZ0cmVlLXNjZXYtY3Byb3AKIENvbW1vbiBWYXIoZmxh Z190cmVlX3NjZXZfY3Byb3ApIEluaXQoMSkgT3B0aW1pemF0aW9uCiBFbmFibGUgY29weSBwcm9w YWdhdGlvbiBvZiBzY2FsYXItZXZvbHV0aW9uIGluZm9ybWF0aW9uLgogCitmdHJpdmlhbC1hdXRv LXZhci1pbml0PQorQ29tbW9uIEpvaW5lZCBSZWplY3ROZWdhdGl2ZSBFbnVtKGF1dG9faW5pdF90 eXBlKSBWYXIoZmxhZ19hdXRvX3Zhcl9pbml0KSBJbml0KEFVVE9fSU5JVF9VTklOSVRJQUxJWkVE KSBPcHRpbWl6YXRpb24KKy1mdHJpdmlhbC1hdXRvLXZhci1pbml0PVt1bmluaXRpYWxpemVkfHBh dHRlcm58emVyb10JQWRkIGluaXRpYWxpemF0aW9ucyB0byBhdXRvbWF0aWMgdmFyaWFibGVzLgor CitFbnVtCitOYW1lKGF1dG9faW5pdF90eXBlKSBUeXBlKGVudW0gYXV0b19pbml0X3R5cGUpIFVu a25vd25FcnJvcih1bnJlY29nbml6ZWQgYXV0b21hdGljIHZhcmlhYmxlIGluaXRpYWxpemF0aW9u IHR5cGUgJXFzKQorCitFbnVtVmFsdWUKK0VudW0oYXV0b19pbml0X3R5cGUpIFN0cmluZyh1bmlu aXRpYWxpemVkKSBWYWx1ZShBVVRPX0lOSVRfVU5JTklUSUFMSVpFRCkKKworRW51bVZhbHVlCitF bnVtKGF1dG9faW5pdF90eXBlKSBTdHJpbmcocGF0dGVybikgVmFsdWUoQVVUT19JTklUX1BBVFRF Uk4pCisKK0VudW1WYWx1ZQorRW51bShhdXRvX2luaXRfdHlwZSkgU3RyaW5nKHplcm8pIFZhbHVl KEFVVE9fSU5JVF9aRVJPKQorCiA7IC1mdmVyYm9zZS1hc20gY2F1c2VzIGV4dHJhIGNvbW1lbnRh cnkgaW5mb3JtYXRpb24gdG8gYmUgcHJvZHVjZWQgaW4KIDsgdGhlIGdlbmVyYXRlZCBhc3NlbWJs eSBjb2RlICh0byBtYWtlIGl0IG1vcmUgcmVhZGFibGUpLiAgVGhpcyBvcHRpb24KIDsgaXMgZ2Vu ZXJhbGx5IG9ubHkgb2YgdXNlIHRvIHRob3NlIHdobyBhY3R1YWxseSBuZWVkIHRvIHJlYWQgdGhl CmRpZmYgLS1naXQgYS9nY2MvZG9jL2V4dGVuZC50ZXhpIGIvZ2NjL2RvYy9leHRlbmQudGV4aQpp bmRleCBiODNjZDQ5MTliYjEuLjU0ZWU5OWQyOTQwNyAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRl bmQudGV4aQorKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC03NTQwLDYgKzc1NDAsMjIgQEAg d2lsbCBiZSBwbGFjZWQgaW4gbmV3LCB1bmlxdWUgc2VjdGlvbnMuCiAKIFRoaXMgYWRkaXRpb25h bCBmdW5jdGlvbmFsaXR5IHJlcXVpcmVzIEJpbnV0aWxzIHZlcnNpb24gMi4zNiBvciBsYXRlci4K IAorQGl0ZW0gdW5pbml0aWFsaXplZAorQGNpbmRleCBAY29kZXt1bmluaXRpYWxpemVkfSB2YXJp YWJsZSBhdHRyaWJ1dGUKK1RoaXMgYXR0cmlidXRlLCBhdHRhY2hlZCB0byBhIHZhcmlhYmxlIHdp dGggYXV0b21hdGljIHN0b3JhZ2UsIG1lYW5zIHRoYXQKK3RoZSB2YXJpYWJsZSBzaG91bGQgbm90 IGJlIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZWQgYnkgdGhlIGNvbXBpbGVyIHdoZW4KK3RoZSBv cHRpb24gQGNvZGV7LWZ0cml2aWFsLWF1dG8tdmFyLWluaXR9IHByZXNlbnRzLgorCitXaXRoIHRo ZSBvcHRpb24gQGNvZGV7LWZ0cml2aWFsLWF1dG8tdmFyLWluaXR9LCBhbGwgdGhlIGF1dG9tYXRp YyB2YXJpYWJsZXMKK3RoYXQgZG8gbm90IGhhdmUgZXhwbGljaXQgaW5pdGlhbGl6ZXJzIHdpbGwg YmUgaW5pdGlhbGl6ZWQgYnkgdGhlIGNvbXBpbGVyLgorVGhlc2UgYWRkaXRpb25hbCBjb21waWxl ciBpbml0aWFsaXphdGlvbnMgbWlnaHQgaW5jdXIgcnVuLXRpbWUgb3ZlcmhlYWQsCitzb21ldGlt ZXMgZHJhbWF0aWNhbGx5LiAgVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8gbWFyayBzb21l IHZhcmlhYmxlcwordG8gYmUgZXhjbHVkZWQgZnJvbSBzdWNoIGF1dG9tYXRpY2FsIGluaXRpYWxp emF0aW9uIGluIG9yZGVyIHRvIHJlZHVjZSBydW50aW1lCitvdmVyaGVhZC4KKworVGhpcyBhdHRy aWJ1dGUgaGFzIG5vIGVmZmVjdCB3aGVuIHRoZSBvcHRpb24gQGNvZGV7LWZ0cml2aWFsLWF1dG8t dmFyLWluaXR9Citkb2VzIG5vdCBwcmVzZW50LgorCiBAaXRlbSB2ZWN0b3Jfc2l6ZSAoQHZhcnti eXRlc30pCiBAY2luZGV4IEBjb2Rle3ZlY3Rvcl9zaXplfSB2YXJpYWJsZSBhdHRyaWJ1dGUKIFRo aXMgYXR0cmlidXRlIHNwZWNpZmllcyB0aGUgdmVjdG9yIHNpemUgZm9yIHRoZSB0eXBlIG9mIHRo ZSBkZWNsYXJlZApkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52 b2tlLnRleGkKaW5kZXggMzI2OTdlNjExN2MwLi4wOTJlNGE5MTc3NGYgMTAwNjQ0Ci0tLSBhL2dj Yy9kb2MvaW52b2tlLnRleGkKKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQpAQCAtNTczLDkgKzU3 Myw5IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KIC1mdHJlZS1w YXJhbGxlbGl6ZS1sb29wcz1AdmFye259ICAtZnRyZWUtcHJlICAtZnRyZWUtcGFydGlhbC1wcmUg IC1mdHJlZS1wdGEgQGdvbAogLWZ0cmVlLXJlYXNzb2MgIC1mdHJlZS1zY2V2LWNwcm9wICAtZnRy ZWUtc2luayAgLWZ0cmVlLXNsc3IgIC1mdHJlZS1zcmEgQGdvbAogLWZ0cmVlLXN3aXRjaC1jb252 ZXJzaW9uICAtZnRyZWUtdGFpbC1tZXJnZSBAZ29sCi0tZnRyZWUtdGVyICAtZnRyZWUtdmVjdG9y aXplICAtZnRyZWUtdnJwICAtZnVuY29uc3RyYWluZWQtY29tbW9ucyBAZ29sCi0tZnVuaXQtYXQt YS10aW1lICAtZnVucm9sbC1hbGwtbG9vcHMgIC1mdW5yb2xsLWxvb3BzIEBnb2wKLS1mdW5zYWZl LW1hdGgtb3B0aW1pemF0aW9ucyAgLWZ1bnN3aXRjaC1sb29wcyBAZ29sCistZnRyZWUtdGVyICAt ZnRyZWUtdmVjdG9yaXplICAtZnRyZWUtdnJwICAtZnRyaXZpYWwtYXV0by12YXItaW5pdCBAZ29s CistZnVuY29uc3RyYWluZWQtY29tbW9ucyAtZnVuaXQtYXQtYS10aW1lICAtZnVucm9sbC1hbGwt bG9vcHMgQGdvbAorLWZ1bnJvbGwtbG9vcHMgLWZ1bnNhZmUtbWF0aC1vcHRpbWl6YXRpb25zICAt ZnVuc3dpdGNoLWxvb3BzIEBnb2wKIC1maXBhLXJhICAtZnZhcmlhYmxlLWV4cGFuc2lvbi1pbi11 bnJvbGxlciAgLWZ2ZWN0LWNvc3QtbW9kZWwgIC1mdnB0IEBnb2wKIC1md2ViICAtZndob2xlLXBy b2dyYW0gIC1md3BhICAtZnVzZS1saW5rZXItcGx1Z2luIC1memVyby1jYWxsLXVzZWQtcmVncyBA Z29sCiAtLXBhcmFtIEB2YXJ7bmFtZX09QHZhcnt2YWx1ZX0KQEAgLTExODE4LDYgKzExODE4LDQx IEBAIFBlcmZvcm0gYmFzaWMgYmxvY2sgdmVjdG9yaXphdGlvbiBvbiB0cmVlcy4gVGhpcyBmbGFn IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBhdAogQG9wdGlvbnstTzN9IGFuZCBieSBAb3B0aW9uey1m dHJlZS12ZWN0b3JpemV9LCBAb3B0aW9uey1mcHJvZmlsZS11c2V9LAogYW5kIEBvcHRpb257LWZh dXRvLXByb2ZpbGV9LgogCitAaXRlbSAtZnRyaXZpYWwtYXV0by12YXItaW5pdD1AdmFye2Nob2lj ZX0KK0BvcGluZGV4IGZ0cml2aWFsLWF1dG8tdmFyLWluaXQKK0luaXRpYWxpemUgYXV0b21hdGlj IHZhcmlhYmxlcyB3aXRoIGVpdGhlciBhIHBhdHRlcm4gb3Igd2l0aCB6ZXJvZXMgdG8gaW5jcmVh c2UKK3RoZSBzZWN1cml0eSBhbmQgcHJlZGljdGFiaWxpdHkgb2YgYSBwcm9ncmFtIGJ5IHByZXZl bnRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkKK2Rpc2Nsb3N1cmUgYW5kIHVzZS4KK0dDQyBzdGls bCBjb25zaWRlcnMgYW4gYXV0b21hdGljIHZhcmlhYmxlIHRoYXQgZG9lc24ndCBoYXZlIGFuIGV4 cGxpY2l0Citpbml0aWFsaXplciBhcyB1bmluaXRpYWxpemVkLCAtV3VuaW5pdGlhbGl6ZWQgd2ls bCBzdGlsbCByZXBvcnQgd2FybmluZyBtZXNzYWdlcworb24gc3VjaCBhdXRvbWF0aWMgdmFyaWFi bGVzLgorV2l0aCB0aGlzIG9wdGlvbiwgR0NDIHdpbGwgYWxzbyBpbml0aWFsaXplIGFueSBwYWRk aW5nIG9mIGF1dG9tYXRpYyB2YXJpYWJsZXMKK3RoYXQgaGF2ZSBzdHJ1Y3R1cmUgb3IgdW5pb24g dHlwZXMgdG8gemVyb2VzLgorCitUaGUgdGhyZWUgdmFsdWVzIG9mIEB2YXJ7Y2hvaWNlfSBhcmU6 CisKK0BpdGVtaXplIEBidWxsZXQKK0BpdGVtCitAc2FtcHt1bmluaXRpYWxpemVkfSBkb2Vzbid0 IGluaXRpYWxpemUgYW55IGF1dG9tYXRpYyB2YXJpYWJsZXMuCitUaGlzIGlzIEMgYW5kIEMrKydz IGRlZmF1bHQuCisKK0BpdGVtCitAc2FtcHtwYXR0ZXJufSBJbml0aWFsaXplIGF1dG9tYXRpYyB2 YXJpYWJsZXMgd2l0aCB2YWx1ZXMgd2hpY2ggd2lsbCBsaWtlbHkKK3RyYW5zZm9ybSBsb2dpYyBi dWdzIGludG8gY3Jhc2hlcyBkb3duIHRoZSBsaW5lLCBhcmUgZWFzaWx5IHJlY29nbml6ZWQgaW4g YQorY3Jhc2ggZHVtcCBhbmQgd2l0aG91dCBiZWluZyB2YWx1ZXMgdGhhdCBwcm9ncmFtbWVycyBj YW4gcmVseSBvbiBmb3IgdXNlZnVsCitwcm9ncmFtIHNlbWFudGljcy4KK1RoZSBjdXJyZW50IHZh bHVlIGlzIGJ5dGUtcmVwZWF0YWJsZSBwYXR0ZXJuIHdpdGggYnl0ZSAiMHhGRSIuCitUaGUgdmFs dWVzIHVzZWQgZm9yIHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gbWlnaHQgYmUgY2hhbmdlZCBpbiB0 aGUgZnV0dXJlLgorCitAaXRlbQorQHNhbXB7emVyb30gSW5pdGlhbGl6ZSBhdXRvbWF0aWMgdmFy aWFibGVzIHdpdGggemVyb2VzLgorQGVuZCBpdGVtaXplCisKK1RoZSBkZWZhdWx0IGlzIEBzYW1w e3VuaW5pdGlhbGl6ZWR9LgorCitZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBz cGVjaWZpYyB2YXJpYWJsZSBieSB1c2luZyB0aGUgdmFyaWFibGUKK2F0dHJpYnV0ZSBAY29kZXt1 bmluaXRpYWxpemVkfSAoQHB4cmVme1ZhcmlhYmxlIEF0dHJpYnV0ZXN9KS4KKwogQGl0ZW0gLWZ2 ZWN0LWNvc3QtbW9kZWw9QHZhcnttb2RlbH0KIEBvcGluZGV4IGZ2ZWN0LWNvc3QtbW9kZWwKIEFs dGVyIHRoZSBjb3N0IG1vZGVsIHVzZWQgZm9yIHZlY3Rvcml6YXRpb24uICBUaGUgQHZhcnttb2Rl bH0gYXJndW1lbnQKZGlmZiAtLWdpdCBhL2djYy9mbGFnLXR5cGVzLmggYi9nY2MvZmxhZy10eXBl cy5oCmluZGV4IGUzOTY3M2Y2NzE2YS4uZmIxOTdhYzI2ZmUyIDEwMDY0NAotLS0gYS9nY2MvZmxh Zy10eXBlcy5oCisrKyBiL2djYy9mbGFnLXR5cGVzLmgKQEAgLTI3Niw2ICsyNzYsMTMgQEAgZW51 bSB2ZWN0X2Nvc3RfbW9kZWwgewogICBWRUNUX0NPU1RfTU9ERUxfREVGQVVMVCA9IDEKIH07CiAK Ky8qIEF1dG9tYXRpYyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiB0eXBlLiAgKi8KK2VudW0gYXV0 b19pbml0X3R5cGUgeworICBBVVRPX0lOSVRfVU5JTklUSUFMSVpFRCA9IDAsCisgIEFVVE9fSU5J VF9QQVRURVJOID0gMSwKKyAgQVVUT19JTklUX1pFUk8gPSAyCit9OworCiAvKiBEaWZmZXJlbnQg aW5zdHJ1bWVudGF0aW9uIG1vZGVzLiAgKi8KIGVudW0gc2FuaXRpemVfY29kZSB7CiAgIC8qIEFk ZHJlc3NTYW5pdGl6ZXIuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1mb2xkLmMgYi9nY2Mv Z2ltcGxlLWZvbGQuYwppbmRleCBhZDdiMTQwMTczZmEuLjkzNzRkMTI3Yjc3MyAxMDA2NDQKLS0t IGEvZ2NjL2dpbXBsZS1mb2xkLmMKKysrIGIvZ2NjL2dpbXBsZS1mb2xkLmMKQEAgLTQ1MTgsMTIg KzQ1MTgsMTQgQEAgY2xlYXJfcGFkZGluZ19hZGRfcGFkZGluZyAoY2xlYXJfcGFkZGluZ19zdHJ1 Y3QgKmJ1ZiwKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFyX3BhZGRpbmdfdHlwZSAoY2xl YXJfcGFkZGluZ19zdHJ1Y3QgKiwgdHJlZSwgSE9TVF9XSURFX0lOVCk7CitzdGF0aWMgdm9pZCBj bGVhcl9wYWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICosIHRyZWUsCisJCQkJSE9T VF9XSURFX0lOVCwgYm9vbCk7CiAKIC8qIENsZWFyIHBhZGRpbmcgYml0cyBvZiB1bmlvbiB0eXBl IFRZUEUuICAqLwogCiBzdGF0aWMgdm9pZAotY2xlYXJfcGFkZGluZ191bmlvbiAoY2xlYXJfcGFk ZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLCBIT1NUX1dJREVfSU5UIHN6KQorY2xlYXJfcGFk ZGluZ191bmlvbiAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLAorCQkgICAg IEhPU1RfV0lERV9JTlQgc3osIGJvb2wgZm9yX2F1dG9faW5pdCkKIHsKICAgY2xlYXJfcGFkZGlu Z19zdHJ1Y3QgKnVuaW9uX2J1ZjsKICAgSE9TVF9XSURFX0lOVCBzdGFydF9vZmYgPSAwLCBuZXh0 X29mZiA9IDA7CkBAIC00NTY4LDcgKzQ1NzAsNyBAQCBjbGVhcl9wYWRkaW5nX3VuaW9uIChjbGVh cl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJICAg ICAgY29udGludWU7CiAJICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChmaWVs ZCkpID09IEFSUkFZX1RZUEUKIAkJCSYmICFDT01QTEVURV9UWVBFX1AgKFRSRUVfVFlQRSAoZmll bGQpKSk7Ci0JICAgIGlmICghYnVmLT5jbGVhcl9pbl9tYXNrKQorCSAgICBpZiAoIWJ1Zi0+Y2xl YXJfaW5fbWFzayAmJiAhZm9yX2F1dG9faW5pdCkKIAkgICAgICBlcnJvcl9hdCAoYnVmLT5sb2Ms ICJmbGV4aWJsZSBhcnJheSBtZW1iZXIgJXFEIGRvZXMgbm90IGhhdmUgIgogCQkJCSAgIndlbGwg ZGVmaW5lZCBwYWRkaW5nIGJpdHMgZm9yICVxcyIsCiAJCQlmaWVsZCwgIl9fYnVpbHRpbl9jbGVh cl9wYWRkaW5nIik7CkBAIC00NTc5LDcgKzQ1ODEsNyBAQCBjbGVhcl9wYWRkaW5nX3VuaW9uIChj bGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJ dW5pb25fYnVmLT5vZmYgPSBzdGFydF9vZmY7CiAJdW5pb25fYnVmLT5zaXplID0gc3RhcnRfc2l6 ZTsKIAltZW1zZXQgKHVuaW9uX2J1Zi0+YnVmLCB+MCwgc3RhcnRfc2l6ZSk7Ci0JY2xlYXJfcGFk ZGluZ190eXBlICh1bmlvbl9idWYsIFRSRUVfVFlQRSAoZmllbGQpLCBmbGRzeik7CisJY2xlYXJf cGFkZGluZ190eXBlICh1bmlvbl9idWYsIFRSRUVfVFlQRSAoZmllbGQpLCBmbGRzeiwgZm9yX2F1 dG9faW5pdCk7CiAJY2xlYXJfcGFkZGluZ19hZGRfcGFkZGluZyAodW5pb25fYnVmLCBzeiAtIGZs ZHN6KTsKIAljbGVhcl9wYWRkaW5nX2ZsdXNoICh1bmlvbl9idWYsIHRydWUpOwogICAgICAgfQpA QCAtNDY0OSw3ICs0NjUxLDggQEAgY2xlYXJfcGFkZGluZ190eXBlX21heV9oYXZlX3BhZGRpbmdf cCAodHJlZSB0eXBlKQogICAgICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoYnVmLmJhc2UpOyAg Ki8KIAogc3RhdGljIHZvaWQKLWNsZWFyX3BhZGRpbmdfZW1pdF9sb29wIChjbGVhcl9wYWRkaW5n X3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIHRyZWUgZW5kKQorY2xlYXJfcGFkZGluZ19lbWl0X2xv b3AgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwKKwkJCSB0cmVlIGVuZCwg Ym9vbCBmb3JfYXV0b19pbml0KQogewogICB0cmVlIGwxID0gY3JlYXRlX2FydGlmaWNpYWxfbGFi ZWwgKGJ1Zi0+bG9jKTsKICAgdHJlZSBsMiA9IGNyZWF0ZV9hcnRpZmljaWFsX2xhYmVsIChidWYt PmxvYyk7CkBAIC00NjYwLDcgKzQ2NjMsNyBAQCBjbGVhcl9wYWRkaW5nX2VtaXRfbG9vcCAoY2xl YXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLCB0cmVlIGVuZCkKICAgZyA9IGdpbXBs ZV9idWlsZF9sYWJlbCAobDEpOwogICBnaW1wbGVfc2V0X2xvY2F0aW9uIChnLCBidWYtPmxvYyk7 CiAgIGdzaV9pbnNlcnRfYmVmb3JlIChidWYtPmdzaSwgZywgR1NJX1NBTUVfU1RNVCk7Ci0gIGNs ZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCB0eXBlLCBidWYtPnN6KTsKKyAgY2xlYXJfcGFkZGluZ190 eXBlIChidWYsIHR5cGUsIGJ1Zi0+c3osIGZvcl9hdXRvX2luaXQpOwogICBjbGVhcl9wYWRkaW5n X2ZsdXNoIChidWYsIHRydWUpOwogICBnID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoYnVmLT5iYXNl LCBQT0lOVEVSX1BMVVNfRVhQUiwgYnVmLT5iYXNlLAogCQkJICAgc2l6ZV9pbnQgKGJ1Zi0+c3op KTsKQEAgLTQ2NzgsMTAgKzQ2ODEsMTMgQEAgY2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGNsZWFy X3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwgdHJlZSBlbmQpCiB9CiAKIC8qIENsZWFy IHBhZGRpbmcgYml0cyBmb3IgVFlQRS4gIENhbGxlZCByZWN1cnNpdmVseSBmcm9tCi0gICBnaW1w bGVfZm9sZF9idWlsdGluX2NsZWFyX3BhZGRpbmcuICAqLworICAgZ2ltcGxlX2ZvbGRfYnVpbHRp bl9jbGVhcl9wYWRkaW5nLiBJZiBGT1JfQVVUT19JTklULAorICAgbm90IGVtaXQgc29tZSBvZiB0 aGUgZXJyb3IgbWVzc2FnZXMgc2luY2UgZG9pbmcgdGhhdAorICAgbWlnaHQgY29uZnVzZSB0aGUg ZW5kIHVzZXIuICAqLwogCiBzdGF0aWMgdm9pZAotY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9w YWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCitjbGVhcl9w YWRkaW5nX3R5cGUgKGNsZWFyX3BhZGRpbmdfc3RydWN0ICpidWYsIHRyZWUgdHlwZSwKKwkJICAg IEhPU1RfV0lERV9JTlQgc3osIGJvb2wgZm9yX2F1dG9faW5pdCkKIHsKICAgc3dpdGNoIChUUkVF X0NPREUgKHR5cGUpKQogICAgIHsKQEAgLTQ3NjUsNyArNDc3MSw3IEBAIGNsZWFyX3BhZGRpbmdf dHlwZSAoY2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLCBIT1NUX1dJREVfSU5U IHN6KQogCQkgIGNvbnRpbnVlOwogCQlnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGZ0eXBlKSA9PSBB UlJBWV9UWVBFCiAJCQkgICAgJiYgIUNPTVBMRVRFX1RZUEVfUCAoZnR5cGUpKTsKLQkJaWYgKCFi dWYtPmNsZWFyX2luX21hc2spCisJCWlmICghYnVmLT5jbGVhcl9pbl9tYXNrICYmICFmb3JfYXV0 b19pbml0KQogCQkgIGVycm9yX2F0IChidWYtPmxvYywgImZsZXhpYmxlIGFycmF5IG1lbWJlciAl cUQgZG9lcyBub3QgIgogCQkJCSAgICAgICJoYXZlIHdlbGwgZGVmaW5lZCBwYWRkaW5nIGJpdHMg Zm9yICVxcyIsCiAJCQkgICAgZmllbGQsICJfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyIpOwpAQCAt NDc4MSw3ICs0Nzg3LDggQEAgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVj dCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJCWdjY19hc3NlcnQgKHBvcyA+ PSAwICYmIGZsZHN6ID49IDAgJiYgcG9zID49IGN1cl9wb3MpOwogCQljbGVhcl9wYWRkaW5nX2Fk ZF9wYWRkaW5nIChidWYsIHBvcyAtIGN1cl9wb3MpOwogCQljdXJfcG9zID0gcG9zOwotCQljbGVh cl9wYWRkaW5nX3R5cGUgKGJ1ZiwgVFJFRV9UWVBFIChmaWVsZCksIGZsZHN6KTsKKwkJY2xlYXJf cGFkZGluZ190eXBlIChidWYsIFRSRUVfVFlQRSAoZmllbGQpLAorCQkJCSAgICBmbGRzeiwgZm9y X2F1dG9faW5pdCk7CiAJCWN1cl9wb3MgKz0gZmxkc3o7CiAJICAgICAgfQogCSAgfQpAQCAtNDgy MSw3ICs0ODI4LDcgQEAgY2xlYXJfcGFkZGluZ190eXBlIChjbGVhcl9wYWRkaW5nX3N0cnVjdCAq YnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJICBidWYtPmFsaWduID0gVFlQRV9B TElHTiAoZWx0dHlwZSk7CiAJICBidWYtPm9mZiA9IDA7CiAJICBidWYtPnNpemUgPSAwOwotCSAg Y2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKGJ1ZiwgZWx0dHlwZSwgZW5kKTsKKwkgIGNsZWFyX3Bh ZGRpbmdfZW1pdF9sb29wIChidWYsIGVsdHR5cGUsIGVuZCwgZm9yX2F1dG9faW5pdCk7CiAJICBi dWYtPmJhc2UgPSBiYXNlOwogCSAgYnVmLT5zeiA9IHByZXZfc3o7CiAJICBidWYtPmFsaWduID0g cHJldl9hbGlnbjsKQEAgLTQ4MzEsMTAgKzQ4MzgsMTAgQEAgY2xlYXJfcGFkZGluZ190eXBlIChj bGVhcl9wYWRkaW5nX3N0cnVjdCAqYnVmLCB0cmVlIHR5cGUsIEhPU1RfV0lERV9JTlQgc3opCiAJ ICBicmVhazsKIAl9CiAgICAgICBmb3IgKEhPU1RfV0lERV9JTlQgaSA9IDA7IGkgPCBuZWx0czsg aSsrKQotCWNsZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCBUUkVFX1RZUEUgKHR5cGUpLCBmbGRzeik7 CisJY2xlYXJfcGFkZGluZ190eXBlIChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6LCBmb3Jf YXV0b19pbml0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVU5JT05fVFlQRToKLSAgICAgIGNs ZWFyX3BhZGRpbmdfdW5pb24gKGJ1ZiwgdHlwZSwgc3opOworICAgICAgY2xlYXJfcGFkZGluZ191 bmlvbiAoYnVmLCB0eXBlLCBzeiwgZm9yX2F1dG9faW5pdCk7CiAgICAgICBicmVhazsKICAgICBj YXNlIFJFQUxfVFlQRToKICAgICAgIGdjY19hc3NlcnQgKChzaXplX3QpIHN6IDw9IGNsZWFyX3Bh ZGRpbmdfdW5pdCk7CkBAIC00ODU4LDE0ICs0ODY1LDE0IEBAIGNsZWFyX3BhZGRpbmdfdHlwZSAo Y2xlYXJfcGFkZGluZ19zdHJ1Y3QgKmJ1ZiwgdHJlZSB0eXBlLCBIT1NUX1dJREVfSU5UIHN6KQog ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDT01QTEVYX1RZUEU6CiAgICAgICBmbGRzeiA9IGludF9z aXplX2luX2J5dGVzIChUUkVFX1RZUEUgKHR5cGUpKTsKLSAgICAgIGNsZWFyX3BhZGRpbmdfdHlw ZSAoYnVmLCBUUkVFX1RZUEUgKHR5cGUpLCBmbGRzeik7Ci0gICAgICBjbGVhcl9wYWRkaW5nX3R5 cGUgKGJ1ZiwgVFJFRV9UWVBFICh0eXBlKSwgZmxkc3opOworICAgICAgY2xlYXJfcGFkZGluZ190 eXBlIChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6LCBmb3JfYXV0b19pbml0KTsKKyAgICAg IGNsZWFyX3BhZGRpbmdfdHlwZSAoYnVmLCBUUkVFX1RZUEUgKHR5cGUpLCBmbGRzeiwgZm9yX2F1 dG9faW5pdCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFZFQ1RPUl9UWVBFOgogICAgICAgbmVs dHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodHlwZSkudG9fY29uc3RhbnQgKCk7CiAgICAgICBm bGRzeiA9IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKHR5cGUpKTsKICAgICAgIGZvciAo SE9TVF9XSURFX0lOVCBpID0gMDsgaSA8IG5lbHRzOyBpKyspCi0JY2xlYXJfcGFkZGluZ190eXBl IChidWYsIFRSRUVfVFlQRSAodHlwZSksIGZsZHN6KTsKKwljbGVhcl9wYWRkaW5nX3R5cGUgKGJ1 ZiwgVFJFRV9UWVBFICh0eXBlKSwgZmxkc3osIGZvcl9hdXRvX2luaXQpOwogICAgICAgYnJlYWs7 CiAgICAgY2FzZSBOVUxMUFRSX1RZUEU6CiAgICAgICBnY2NfYXNzZXJ0ICgoc2l6ZV90KSBzeiA8 PSBjbGVhcl9wYWRkaW5nX3VuaXQpOwpAQCAtNDkwMSw3ICs0OTA4LDcgQEAgY2xlYXJfdHlwZV9w YWRkaW5nX2luX21hc2sgKHRyZWUgdHlwZSwgdW5zaWduZWQgY2hhciAqbWFzaykKICAgYnVmLnN6 ID0gaW50X3NpemVfaW5fYnl0ZXMgKHR5cGUpOwogICBidWYuc2l6ZSA9IDA7CiAgIGJ1Zi51bmlv bl9wdHIgPSBtYXNrOwotICBjbGVhcl9wYWRkaW5nX3R5cGUgKCZidWYsIHR5cGUsIGJ1Zi5zeik7 CisgIGNsZWFyX3BhZGRpbmdfdHlwZSAoJmJ1ZiwgdHlwZSwgYnVmLnN6LCBmYWxzZSk7CiAgIGNs ZWFyX3BhZGRpbmdfZmx1c2ggKCZidWYsIHRydWUpOwogfQogCkBAIC00OTExLDkgKzQ5MTgsMTAg QEAgc3RhdGljIGJvb2wKIGdpbXBsZV9mb2xkX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoZ2ltcGxl X3N0bXRfaXRlcmF0b3IgKmdzaSkKIHsKICAgZ2ltcGxlICpzdG10ID0gZ3NpX3N0bXQgKCpnc2kp OwotICBnY2NfYXNzZXJ0IChnaW1wbGVfY2FsbF9udW1fYXJncyAoc3RtdCkgPT0gMik7CisgIGdj Y19hc3NlcnQgKGdpbXBsZV9jYWxsX251bV9hcmdzIChzdG10KSA9PSAzKTsKICAgdHJlZSBwdHIg PSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDApOwogICB0cmVlIHR5cGVhcmcgPSBnaW1wbGVfY2Fs bF9hcmcgKHN0bXQsIDEpOworICBib29sIGZvcl9hdXRvX2luaXQgPSAoYm9vbCkgVFJFRV9JTlRf Q1NUX0xPVyAoZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAyKSk7CiAgIHRyZWUgdHlwZSA9IFRSRUVf VFlQRSAoVFJFRV9UWVBFICh0eXBlYXJnKSk7CiAgIGxvY2F0aW9uX3QgbG9jID0gZ2ltcGxlX2xv Y2F0aW9uIChzdG10KTsKICAgY2xlYXJfcGFkZGluZ19zdHJ1Y3QgYnVmOwpAQCAtNDk3MCw3ICs0 OTc4LDcgQEAgZ2ltcGxlX2ZvbGRfYnVpbHRpbl9jbGVhcl9wYWRkaW5nIChnaW1wbGVfc3RtdF9p dGVyYXRvciAqZ3NpKQogCSAgYnVmLnN6ID0gZWx0c3o7CiAJICBidWYuYWxpZ24gPSBUWVBFX0FM SUdOIChlbHR0eXBlKTsKIAkgIGJ1Zi5hbGlhc190eXBlID0gYnVpbGRfcG9pbnRlcl90eXBlIChl bHR0eXBlKTsKLQkgIGNsZWFyX3BhZGRpbmdfZW1pdF9sb29wICgmYnVmLCBlbHR0eXBlLCBlbmQp OworCSAgY2xlYXJfcGFkZGluZ19lbWl0X2xvb3AgKCZidWYsIGVsdHR5cGUsIGVuZCwgZm9yX2F1 dG9faW5pdCk7CiAJfQogICAgIH0KICAgZWxzZQpAQCAtNDk4Myw3ICs0OTkxLDcgQEAgZ2ltcGxl X2ZvbGRfYnVpbHRpbl9jbGVhcl9wYWRkaW5nIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQog CSAgZ3NpX2luc2VydF9iZWZvcmUgKGdzaSwgZywgR1NJX1NBTUVfU1RNVCk7CiAJfQogICAgICAg YnVmLmFsaWFzX3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKHR5cGUpOwotICAgICAgY2xlYXJf cGFkZGluZ190eXBlICgmYnVmLCB0eXBlLCBidWYuc3opOworICAgICAgY2xlYXJfcGFkZGluZ190 eXBlICgmYnVmLCB0eXBlLCBidWYuc3osIGZvcl9hdXRvX2luaXQpOwogICAgICAgY2xlYXJfcGFk ZGluZ19mbHVzaCAoJmJ1ZiwgdHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxp ZnkuYyBiL2djYy9naW1wbGlmeS5jCmluZGV4IDIxZmYzMmVlNGFhMy4uZTIxNDUzMmQ1MzM4IDEw MDY0NAotLS0gYS9nY2MvZ2ltcGxpZnkuYworKysgYi9nY2MvZ2ltcGxpZnkuYwpAQCAtMjQ5LDYg KzI0OSwxMSBAQCBzdGF0aWMgZW51bSBnaW1wbGlmeV9zdGF0dXMgZ2ltcGxpZnlfY29tcG91bmRf ZXhwciAodHJlZSAqLCBnaW1wbGVfc2VxICosIGJvb2wpOwogc3RhdGljIGhhc2hfbWFwPHRyZWUs IHRyZWU+ICpvYWNjX2RlY2xhcmVfcmV0dXJuczsKIHN0YXRpYyBlbnVtIGdpbXBsaWZ5X3N0YXR1 cyBnaW1wbGlmeV9leHByICh0cmVlICosIGdpbXBsZV9zZXEgKiwgZ2ltcGxlX3NlcSAqLAogCQkJ CQkgICBib29sICgqKSAodHJlZSksIGZhbGxiYWNrX3QsIGJvb2wpOworc3RhdGljIHZvaWQgZ2lt cGxlX2FkZF9pbml0X2Zvcl9hdXRvX3ZhciAodHJlZSwgZW51bSBhdXRvX2luaXRfdHlwZSwgYm9v bCwKKwkJCQkJICBnaW1wbGVfc2VxICopOworc3RhdGljIHZvaWQgbWF5YmVfd2l0aF9zaXplX2V4 cHIgKHRyZWUgKik7CitzdGF0aWMgdm9pZCBwcmVwYXJlX2dpbXBsZV9hZGRyZXNzYWJsZSAodHJl ZSAqLCBnaW1wbGVfc2VxICopOworCiAKIC8qIFNob3J0ZXIgYWxpYXMgbmFtZSBmb3IgdGhlIGFi b3ZlIGZ1bmN0aW9uIGZvciB1c2UgaW4gZ2ltcGxpZnkuYwogICAgb25seS4gICovCkBAIC0xNzQz LDYgKzE3NDgsMTE0IEBAIGZvcmNlX2xhYmVsc19yICh0cmVlICp0cCwgaW50ICp3YWxrX3N1YnRy ZWVzLCB2b2lkICpkYXRhIEFUVFJJQlVURV9VTlVTRUQpCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9 CiAKKworLyogQnVpbGQgYSBjYWxsIHRvIGludGVybmFsIGNvbnN0IGZ1bmN0aW9uIERFRkVSUkVE X0lOSVQ6CisgICAxc3QgYXJndW1lbnQ6IFNJWkUgb2YgdGhlIERFQ0w7CisgICAybmQgYXJndW1l bnQ6IElOSVRfVFlQRTsKKyAgIDNyZCBhcmd1bWVudDogSVNfVkxBLCAwIE5PLCAxIFlFUzsKKwor ICAgYXMgREVGRVJSRURfSU5JVCAoU0laRSBvZiB0aGUgREVDTCwgSU5JVF9UWVBFLCBJU19WTEEp LiAgKi8KKworc3RhdGljIGdpbXBsZSAqCitidWlsZF9kZWZlcnJlZF9pbml0ICh0cmVlIGRlY2ws CisJCSAgICAgZW51bSBhdXRvX2luaXRfdHlwZSBpbml0X3R5cGUsCisJCSAgICAgYm9vbCBpc192 bGEpCit7CisgIGdjY19hc3NlcnQgKChpc192bGEgJiYgVFJFRV9DT0RFIChkZWNsKSA9PSBXSVRI X1NJWkVfRVhQUikKKwkgICAgICB8fCAoIWlzX3ZsYSAmJiBUUkVFX0NPREUgKGRlY2wpICE9IFdJ VEhfU0laRV9FWFBSKSk7CisKKyAgdHJlZSBkZWNsX3NpemUgPSBOVUxMX1RSRUU7CisgIHRyZWUg aW5pdF90eXBlX25vZGUKKyAgICA9IGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLCAo aW50KSBpbml0X3R5cGUpOworICB0cmVlIGlzX3ZsYV9ub2RlCisgICAgPSBidWlsZF9pbnRfY3N0 IChpbnRlZ2VyX3R5cGVfbm9kZSwgKGludCkgaXNfdmxhKTsKKworICAgaWYgKFRSRUVfQ09ERSAo ZGVjbCkgPT0gV0lUSF9TSVpFX0VYUFIpCisgICAgIGRlY2xfc2l6ZSA9IFRSRUVfT1BFUkFORCAo ZGVjbCwgMSk7CisgICBlbHNlCisgICAgIGRlY2xfc2l6ZSA9IFRZUEVfU0laRV9VTklUIChUUkVF X1RZUEUgKGRlY2wpKTsKKworICAgcmV0dXJuIGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJ Rk5fREVGRVJSRURfSU5JVCwgMywKKwkJCQkgICAgICBkZWNsX3NpemUsIGluaXRfdHlwZV9ub2Rl LCBpc192bGFfbm9kZSk7Cit9CisKKy8qIEdlbmVyYXRlIGluaXRpYWxpemF0aW9uIHRvIGF1dG9t YXRpYyB2YXJpYWJsZSBERUNMIGJhc2VkIG9uIElOSVRfVFlQRS4gICovCitzdGF0aWMgdm9pZAor Z2ltcGxlX2FkZF9pbml0X2Zvcl9hdXRvX3ZhciAodHJlZSBkZWNsLAorCQkJICAgICAgZW51bSBh dXRvX2luaXRfdHlwZSBpbml0X3R5cGUsCisJCQkgICAgICBib29sIGlzX3ZsYSwKKwkJCSAgICAg IGdpbXBsZV9zZXEgKnNlcV9wKQoreworICBnY2NfYXNzZXJ0IChWQVJfUCAoZGVjbCkgJiYgIURF Q0xfRVhURVJOQUwgKGRlY2wpICYmICFUUkVFX1NUQVRJQyAoZGVjbCkpOworICBnY2NfYXNzZXJ0 IChpbml0X3R5cGUgPiBBVVRPX0lOSVRfVU5JTklUSUFMSVpFRCk7CisKKyAgLyogSWYgdGhpcyBE RUNMIGlzIGEgdmFyaWFibGUgc2l6ZWQgdHlwZSwgd2UgbXVzdCByZW1lbWJlciB0aGUgc2l6ZS4g ICovCisgIHRyZWUgb3JpZ19kZWNsID0gZGVjbDsKKyAgbWF5YmVfd2l0aF9zaXplX2V4cHIgKCZk ZWNsKTsKKworICBnaW1wbGUgKmNhbGwgPSBidWlsZF9kZWZlcnJlZF9pbml0IChkZWNsLCBpbml0 X3R5cGUsIGlzX3ZsYSk7CisgIGdpbXBsZV9jYWxsX3NldF9saHMgKGNhbGwsIG9yaWdfZGVjbCk7 CisgIGdpbXBsaWZ5X3NlcV9hZGRfc3RtdCAoc2VxX3AsIGNhbGwpOworfQorCisvKiBHZW5lcmF0 ZSBwYWRkaW5nIGluaXRpYWxpemF0aW9uIGZvciBhdXRvbWF0aWMgdmFpcmFibGUgREVDTC4KKyAg IEMgZ3VhcmFudGVlcyB0aGF0IGJyYWNlLWluaXQgd2l0aCBmZXdlciBpbml0aWFsaXplcnMgdGhh biBtZW1iZXJzCisgICBhZ2dyZWdhdGUgd2lsbCBpbml0aWFsaXplIHRoZSByZXN0IG9mIHRoZSBh Z2dyZWdhdGUgYXMtaWYgaXQgd2VyZQorICAgc3RhdGljIGluaXRpYWxpemF0aW9uLiAgSW4gdHVy biBzdGF0aWMgaW5pdGlhbGl6YXRpb24gZ3VhcmFudGVlcworICAgdGhhdCBwYWRkaW5nIGlzIGlu aXRpYWxpemVkIHRvIHplcm8uIFNvLCB3ZSBhbHdheXMgaW5pdGlhbGl6ZSBwYWRkaW5ncworICAg dG8gemVyb2VzIHJlZ2FyZGxlc3MgSU5JVF9UWVBFLgorICAgVG8gZG8gdGhlIHBhZGRpbmcgaW5p dGlhbGl6YXRpb24sIHdlIGluc2VydCBhIGNhbGwgdG8KKyAgIF9fQlVJTFRJTl9DTEVBUl9QQURE SU5HICgmZGVjbCwgMCwgZm9yX2F1dG9faW5pdCA9IHRydWUpLgorICAgKi8KK3N0YXRpYyB2b2lk CitnaW1wbGVfYWRkX3BhZGRpbmdfaW5pdF9mb3JfYXV0b192YXIgKHRyZWUgZGVjbCwgYm9vbCBp c192bGEsCisJCQkJICAgICAgZ2ltcGxlX3NlcSAqc2VxX3ApCit7CisgIHRyZWUgYWRkcl9vZl9k ZWNsID0gTlVMTF9UUkVFOworICBib29sIGZvcl9hdXRvX2luaXQgPSB0cnVlOworICB0cmVlIGZu ID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9DTEVBUl9QQURESU5HKTsKKworICBp ZiAoaXNfdmxhKQorICAgIHsKKyAgICAgIC8qIFRoZSB0ZW1wb3JhcnkgYWRkcmVzcyB2YXJpYWJs ZSBmb3IgdGhpcyB2bGEgc2hvdWxkIGJlCisJIGNyZWF0ZWQgaW4gZ2ltcGxpZnlfdmxhX2RlY2wu ICAqLworICAgICAgZ2NjX2Fzc2VydCAoREVDTF9IQVNfVkFMVUVfRVhQUl9QIChkZWNsKSk7Cisg ICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKERFQ0xfVkFMVUVfRVhQUiAoZGVjbCkpID09IElO RElSRUNUX1JFRik7CisgICAgICBhZGRyX29mX2RlY2wgPSBUUkVFX09QRVJBTkQgKERFQ0xfVkFM VUVfRVhQUiAoZGVjbCksIDApOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHByZXBhcmVf Z2ltcGxlX2FkZHJlc3NhYmxlICgmZGVjbCwgc2VxX3ApOworICAgICAgbWFya19hZGRyZXNzYWJs ZSAoZGVjbCk7CisgICAgICBhZGRyX29mX2RlY2wgPSBidWlsZF9mb2xkX2FkZHJfZXhwciAoZGVj bCk7CisgICAgfQorCisKKyAgLyogZm9yIGxhbmd1YWdlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IEJV SUxUX0lOX0NMRUFSX1BBRERJTkcsIGNyZWF0ZSB0aGUKKyAgICAgZnVuY3Rpb24gbm9kZSBmb3Ig cGFkZGluZyBpbml0aWFsaXphdGlvbi4gICovCisgIGlmICghZm4pCisgICAgeworICAgICAgdHJl ZSBmdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAodm9pZF90eXBlX25vZGUsCisJCQkJ CSAgICAgcHRyX3R5cGVfbm9kZSwKKwkJCQkJICAgICBwdHJfdHlwZV9ub2RlLAorCQkJCQkgICAg IGludGVnZXJfdHlwZV9ub2RlLAorCQkJCQkgICAgIE5VTExfVFJFRSk7CisgICAgICBmbiA9IGFk ZF9idWlsdGluX2Z1bmN0aW9uICgiX19idWlsdGluX2NsZWFyX3BhZGRpbmciLCBmdHlwZSwKKwkJ CQkgQlVJTFRfSU5fQ0xFQVJfUEFERElORywgQlVJTFRfSU5fTk9STUFMLAorCQkJCSBOVUxMLCBO VUxMX1RSRUUpOworICAgICAgc2V0X2NhbGxfZXhwcl9mbGFncyAoZm4sIEVDRl9OT1RIUk9XIHwg RUNGX0xFQUYpOworICAgICAgc2V0X2J1aWx0aW5fZGVjbCAoQlVJTFRfSU5fQ0xFQVJfUEFERElO RywgZm4sIGZhbHNlKTsKKyAgICB9CisKKyAgZ2ltcGxlICpjYWxsID0gZ2ltcGxlX2J1aWxkX2Nh bGwgKGZuLAorCQkJCSAgICAzLCBhZGRyX29mX2RlY2wsCisJCQkJICAgIGJ1aWxkX3plcm9fY3N0 IChUUkVFX1RZUEUgKGFkZHJfb2ZfZGVjbCkpLAorCQkJCSAgICBidWlsZF9pbnRfY3N0IChpbnRl Z2VyX3R5cGVfbm9kZSwKKwkJCQkJCSAgIChpbnQpIGZvcl9hdXRvX2luaXQpKTsKKyAgZ2ltcGxp Znlfc2VxX2FkZF9zdG10IChzZXFfcCwgY2FsbCk7Cit9CisKKwogLyogR2ltcGxpZnkgYSBERUNM X0VYUFIgbm9kZSAqU1RNVF9QIGJ5IG1ha2luZyBhbnkgbmVjZXNzYXJ5IGFsbG9jYXRpb24KICAg IGFuZCBpbml0aWFsaXphdGlvbiBleHBsaWNpdC4gICovCiAKQEAgLTE4MzksNiArMTk1MiwzMSBA QCBnaW1wbGlmeV9kZWNsX2V4cHIgKHRyZWUgKnN0bXRfcCwgZ2ltcGxlX3NlcSAqc2VxX3ApCiAJ ICAgICAgIGFzIHRoZXkgbWF5IGNvbnRhaW4gYSBsYWJlbCBhZGRyZXNzLiAgKi8KIAkgICAgd2Fs a190cmVlICgmaW5pdCwgZm9yY2VfbGFiZWxzX3IsIE5VTEwsIE5VTEwpOwogCX0KKyAgICAgIC8q IFdoZW4gdGhlcmUgaXMgbm8gZXhwbGljaXQgaW5pdGlhbGl6ZXIsIGlmIHRoZSB1c2VyIHJlcXVl c3RlZCwKKwkgV2Ugc2hvdWxkIGluc2VydCBhbiBhcnRpZmljYWwgaW5pdGlhbGl6ZXIgZm9yIHRo aXMgYXV0b21hdGljCisJIHZhcmlhYmxlLiAgKi8KKyAgICAgIGVsc2UgaWYgKG9wdF9mb3JfZm4g KGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwgZmxhZ19hdXRvX3Zhcl9pbml0KQorCQkgPiBBVVRPX0lO SVRfVU5JTklUSUFMSVpFRAorCSAgICAgICAmJiAhbG9va3VwX2F0dHJpYnV0ZSAoInVuaW5pdGlh bGl6ZWQiLCBERUNMX0FUVFJJQlVURVMgKGRlY2wpKQorCSAgICAgICAmJiAhVFJFRV9TVEFUSUMg KGRlY2wpKQorCXsKKwkgIGdpbXBsZV9hZGRfaW5pdF9mb3JfYXV0b192YXIgKGRlY2wsCisJCQkJ CW9wdF9mb3JfZm4gKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCwKKwkJCQkJCSAgICBmbGFnX2F1dG9f dmFyX2luaXQpLAorCQkJCQlpc192bGEsCisJCQkJCXNlcV9wKTsKKwkgIC8qIFRoZSBleHBhbmRp bmcgb2YgYSBjYWxsIHRvIHRoZSBhYm92ZSAuREVGRVJSRURfSU5JVCB3aWxsIGFwcGx5CisJICAg ICBibG9jayBpbml0aWFsaXphdGlvbiB0byB0aGUgd2hvbGUgc3BhY2UgY292ZXJlZCBieSB0aGlz IHZhcmlhYmxlLgorCSAgICAgQXMgYSByZXN1bHQsIGFsbCB0aGUgcGFkZGluZ3Mgd2lsbCBiZSBp bml0aWFsaXplZCB0byB6ZXJvZXMKKwkgICAgIGZvciB6ZXJvIGluaXRpYWxpemF0aW9uIGFuZCAw eEZFIGJ5dGUtcmVwZWF0YWJsZSBwYXR0ZXJucyBmb3IKKwkgICAgIHBhdHRlcm4gaW5pdGlhbGl6 YXRpb24uCisJICAgICBJbiBvcmRlciB0byBtYWtlIHRoZSBwYWRkaW5ncyBhcyB6ZXJvZXMgZm9y IHBhdHRlcm4gaW5pdCwgV2UKKwkgICAgIHNob3VsZCBhZGQgYSBjYWxsIHRvIF9fYnVpbHRpbl9j bGVhcl9wYWRkaW5nIHRvIGNsZWFyIHRoZQorCSAgICAgcGFkZGluZ3MgdG8gemVybyBpbiBjb21w YXRpcGxlIHdpdGggQ0xBTkcuICAqLworCSAgaWYgKG9wdF9mb3JfZm4gKGN1cnJlbnRfZnVuY3Rp b25fZGVjbCwgZmxhZ19hdXRvX3Zhcl9pbml0KQorCSAgICAgID09IEFVVE9fSU5JVF9QQVRURVJO KQorCSAgICBnaW1wbGVfYWRkX3BhZGRpbmdfaW5pdF9mb3JfYXV0b192YXIgKGRlY2wsIGlzX3Zs YSwgc2VxX3ApOworCX0KICAgICB9CiAKICAgcmV0dXJuIEdTX0FMTF9ET05FOwpAQCAtMzQxMCwx MSArMzU0OCwxNSBAQCBnaW1wbGlmeV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3Nl cSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKIAkgIHsKIAkgICAgLyogUmVtZW1iZXIgdGhlIG9y aWdpbmFsIHR5cGUgb2YgdGhlIGFyZ3VtZW50IGluIGFuIGludGVybmFsCiAJICAgICAgIGR1bW15 IHNlY29uZCBhcmd1bWVudCwgYXMgaW4gR0lNUExFIHBvaW50ZXIgY29udmVyc2lvbnMgYXJlCi0J ICAgICAgIHVzZWxlc3MuICAqLworCSAgICAgICB1c2VsZXNzLiBhbHNvIG1hcmsgdGhpcyBjYWxs IGFzIG5vdCBmb3IgYXV0b21hdGljIGluaXRpYWxpemF0aW9uCisJICAgICAgIGluIHRoZSBpbnRl cm5hbCBkdW1teSB0aGlyZCBhcmd1bWVudC4gICovCiAJICAgIHAgPSBDQUxMX0VYUFJfQVJHICgq ZXhwcl9wLCAwKTsKKwkgICAgYm9vbCBmb3JfYXV0b19pbml0ID0gZmFsc2U7CiAJICAgICpleHBy X3AKLQkgICAgICA9IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKEVYUFJfTE9DQVRJT04gKCpleHByX3Ap LCBmbmRlY2wsIDIsIHAsCi0JCQkJICAgICBidWlsZF96ZXJvX2NzdCAoVFJFRV9UWVBFIChwKSkp OworCSAgICAgID0gYnVpbGRfY2FsbF9leHByX2xvYyAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCks IGZuZGVjbCwgMywgcCwKKwkJCQkgICAgIGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKHApKSwK KwkJCQkgICAgIGJ1aWxkX2ludF9jc3QgKGludGVnZXJfdHlwZV9ub2RlLAorCQkJCQkJICAgIChp bnQpIGZvcl9hdXRvX2luaXQpKTsKIAkgICAgcmV0dXJuIEdTX09LOwogCSAgfQogCWJyZWFrOwpA QCAtNTI4MCw2ICs1NDIyLDcgQEAgZ2ltcGxpZnlfbW9kaWZ5X2V4cHJfcmhzICh0cmVlICpleHBy X3AsIHRyZWUgKmZyb21fcCwgdHJlZSAqdG9fcCwKIHsKICAgZW51bSBnaW1wbGlmeV9zdGF0dXMg cmV0ID0gR1NfVU5IQU5ETEVEOwogICBib29sIGNoYW5nZWQ7CisgIHRyZWUgb2JqZWN0ID0gTlVM TF9UUkVFOwogCiAgIGRvCiAgICAgewpAQCAtNTM5NCwxMCArNTUzNywyNCBAQCBnaW1wbGlmeV9t b2RpZnlfZXhwcl9yaHMgKHRyZWUgKmV4cHJfcCwgdHJlZSAqZnJvbV9wLCB0cmVlICp0b19wLAog CSAgICAgY3JhY2sgYXQgdGhpcyBiZWZvcmUgd2UgYnJlYWsgaXQgZG93bi4gICovCiAJICBpZiAo cmV0ICE9IEdTX1VOSEFORExFRCkKIAkgICAgYnJlYWs7CisKKwkgIG9iamVjdCA9IFRSRUVfT1BF UkFORCAoKmV4cHJfcCwgMCk7CiAJICAvKiBJZiB3ZSdyZSBpbml0aWFsaXppbmcgZnJvbSBhIENP TlNUUlVDVE9SLCBicmVhayB0aGlzIGludG8KIAkgICAgIGluZGl2aWR1YWwgTU9ESUZZX0VYUFJz LiAgKi8KLQkgIHJldHVybiBnaW1wbGlmeV9pbml0X2NvbnN0cnVjdG9yIChleHByX3AsIHByZV9w LCBwb3N0X3AsIHdhbnRfdmFsdWUsCi0JCQkJCSAgICBmYWxzZSk7CisJICByZXQgPSBnaW1wbGlm eV9pbml0X2NvbnN0cnVjdG9yIChleHByX3AsIHByZV9wLCBwb3N0X3AsIHdhbnRfdmFsdWUsCisJ CQkJCSAgIGZhbHNlKTsKKwkgIC8qIElmIHRoZSB1c2VyIHJlcXVlc3RzIHRvIGluaXRpYWxpemUg YXV0b21hdGljIHZhcmlhYmxlcywgd2UKKwkgICAgIHNob3VsZCBpbml0aWFsaXplIHBhZGRpbmdz IGluc2lkZSB0aGUgdmFyaWFibGUuIEFkZCBhIGNhbGwgdG8KKwkgICAgIF9fQlVJTFRJTl9DTEVB Ul9QQURESU5HICgmb2JqZWN0LCAwLCBmb3JfYXV0b19pbml0ID0gdHJ1ZSkgdG8KKwkgICAgIGlu aXRpYWxpemUgcGFkZGluZ3Mgb2Ygb2JqZWN0IGFsd2F5cyB0byB6ZXJvIHJlZ2FyZGxlc3Mgb2YK KwkgICAgIElOSVRfVFlQRS4gICovCisJICBpZiAob3B0X2Zvcl9mbiAoY3VycmVudF9mdW5jdGlv bl9kZWNsLCBmbGFnX2F1dG9fdmFyX2luaXQpCisJCT4gQVVUT19JTklUX1VOSU5JVElBTElaRUQK KwkgICAgICAmJiBWQVJfUCAob2JqZWN0KQorCSAgICAgICYmICFERUNMX0VYVEVSTkFMIChvYmpl Y3QpCisJICAgICAgJiYgIVRSRUVfU1RBVElDIChvYmplY3QpKQorCSAgICBnaW1wbGVfYWRkX3Bh ZGRpbmdfaW5pdF9mb3JfYXV0b192YXIgKG9iamVjdCwgZmFsc2UsIHByZV9wKTsKKwkgIHJldHVy biByZXQ7CiAKIAljYXNlIENPTkRfRVhQUjoKIAkgIC8qIElmIHdlJ3JlIGFzc2lnbmluZyB0byBh IG5vbi1yZWdpc3RlciB0eXBlLCBwdXNoIHRoZSBhc3NpZ25tZW50CmRpZmYgLS1naXQgYS9nY2Mv aW50ZXJuYWwtZm4uYyBiL2djYy9pbnRlcm5hbC1mbi5jCmluZGV4IDEzNjBhMDBmMGI5My4uNjIw YTJmOWZlZTJhIDEwMDY0NAotLS0gYS9nY2MvaW50ZXJuYWwtZm4uYworKysgYi9nY2MvaW50ZXJu YWwtZm4uYwpAQCAtMjk3Nyw2ICsyOTc3LDExNCBAQCBleHBhbmRfVU5JUVVFIChpbnRlcm5hbF9m biwgZ2NhbGwgKnN0bXQpCiAgICAgZW1pdF9pbnNuIChwYXR0ZXJuKTsKIH0KIAorLyogRXhwYW5k IHRoZSBJRk5fREVGRVJSRURfSU5JVCBmdW5jdGlvbjoKKyAgIEluaXRpYWxpemUgdGhlIExIUyB2 YXJpYWJsZSB3aXRoIHplcm8vcGF0dGVybiBhY2NvcmRpbmcgdG8gaXRzIHNlY29uZAorICAgYXJn dW1lbnQgSU5JVF9UWVBFLgorICAgaWYgSU5JVF9UWVBFIGlzIEFVVE9fSU5JVF9aRVJPLCB1c2Ug emVyb2VzIHRvIGluaXRpYWxpemU7CisgICBpZiBJTklUX1RZUEUgaXMgQVVUT19JTklUX1BBVFRF Uk4sIHVzZSAweEZFIGJ5dGUtcmVwZWF0YWJsZSBwYXR0ZXJuCisgICAgIHRvIGluaXRpYWxpemU7 CisgICBhbGwgdGhlIG1lbW9yeSBjb3ZlcmVkIGJ5IHRoaXMgTEhTIHZhcmlhYmxlIGlzIGluaXRp YWxpemVkIGluY2x1ZGluZworICAgcGFkZGluZ3MuCisgICBUaGUgcmVhc29ucyB0byBjaG9vc2Ug MHhGRSBmb3IgcGF0dGVybiBpbml0aWFsaXphdGlvbiBhcmU6CisgICAgIDEuIEl0IGlzIGEgbm9u LWNhbm9uaWNhbCB2aXJ0dWFsIGFkZHJlc3Mgb24geDg2XzY0LCBhbmQgYXQgdGhlCisJaGlnaCBl bmQgb2YgdGhlIGkzODYga2VybmVsIGFkZHJlc3Mgc3BhY2UuCisgICAgIDIuIEl0IGlzIGEgdmVy eSBsYXJnZSBmbG9hdCB2YWx1ZSAoLTEuNjk0NzM5NTMwMzE3Mzc5ZSszOCkuCisgICAgIDMuIEl0 IGlzIGFsc28gYW4gdW51c3VhbCBudW1iZXIgZm9yIGludGVnZXJzLiAgKi8KKyNkZWZpbmUgSU5J VF9QQVRURVJOX1ZBTFVFICAweEZFCitzdGF0aWMgdm9pZAorZXhwYW5kX0RFRkVSUkVEX0lOSVQg KGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCkKK3sKKyAgdHJlZSB2YXIgPSBnaW1wbGVfY2FsbF9s aHMgKHN0bXQpOworICB0cmVlIHNpemVfb2ZfdmFyID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAw KTsKKyAgdHJlZSB2bGFhZGRyID0gTlVMTF9UUkVFOworICB0cmVlIHZhcl90eXBlID0gVFJFRV9U WVBFICh2YXIpOworICBib29sIGlzX3ZsYSA9IChib29sKSBUUkVFX0lOVF9DU1RfTE9XIChnaW1w bGVfY2FsbF9hcmcgKHN0bXQsIDIpKTsKKyAgZW51bSBhdXRvX2luaXRfdHlwZSBpbml0X3R5cGUK KyAgICA9IChlbnVtIGF1dG9faW5pdF90eXBlKSBUUkVFX0lOVF9DU1RfTE9XIChnaW1wbGVfY2Fs bF9hcmcgKHN0bXQsIDEpKTsKKworICBnY2NfYXNzZXJ0IChpbml0X3R5cGUgPiBBVVRPX0lOSVRf VU5JTklUSUFMSVpFRCk7CisKKyAgLyogaWYgdGhpcyB2YXJpYWJsZSBpcyBhIFZMQSwgZ2V0IGl0 cyBTSVpFIGFuZCBBRERSIGZpcnN0LiAgKi8KKyAgaWYgKGlzX3ZsYSkKKyAgICB7CisgICAgICAv KiBUaGUgdGVtcG9yYXJ5IGFkZHJlc3MgdmFyaWFibGUgZm9yIHRoaXMgdmxhIHNob3VsZCBoYXZl IGJlZW4KKwkgY3JlYXRlZCBkdXJpbmcgZ2ltcGxpZmljYXRpb24gcGhhc2UuICBSZWZlciB0byBn aW1wbGlmeV92bGFfZGVjbAorCSBmb3IgZGV0YWlscy4gICovCisgICAgICB0cmVlIHZhcl9kZWNs ID0gKFRSRUVfQ09ERSAodmFyKSA9PSBTU0FfTkFNRSkgPworCQkgICAgICAgU1NBX05BTUVfVkFS ICh2YXIpIDogdmFyOworICAgICAgZ2NjX2Fzc2VydCAoREVDTF9IQVNfVkFMVUVfRVhQUl9QICh2 YXJfZGVjbCkpOworICAgICAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChERUNMX1ZBTFVFX0VYUFIg KHZhcl9kZWNsKSkgPT0gSU5ESVJFQ1RfUkVGKTsKKyAgICAgIC8qIEdldCB0aGUgYWRkcmVzcyBv ZiB0aGlzIHZsYSB2YXJpYWJsZS4gICovCisgICAgICB2bGFhZGRyID0gVFJFRV9PUEVSQU5EIChE RUNMX1ZBTFVFX0VYUFIgKHZhcl9kZWNsKSwgMCk7CisgICAgfQorCisgIGlmIChpc192bGEgfHwg KCF1c2VfcmVnaXN0ZXJfZm9yX2RlY2wgKHZhcikpKQorICAgIHsKKyAgICAvKiBJZiB0aGlzIGlz IGEgVkxBIG9yIHRoZSB2YXJpYWJsZSBpcyBub3QgaW4gcmVnaXN0ZXIsCisgICAgICAgZXhwYW5k IHRvIGEgbWVtc2V0IHRvIGluaXRpYWxpemUgaXQuICAqLworICAgICAgaWYgKFRSRUVfQ09ERSAo dmFyKSA9PSBTU0FfTkFNRSkKKwl2YXIgPSBTU0FfTkFNRV9WQVIgKHZhcik7CisgICAgICB0cmVl IGFkZHIgPSBpc192bGEgPyB2bGFhZGRyOiBidWlsZF9mb2xkX2FkZHJfZXhwciAodmFyKTsKKyAg ICAgIHRyZWUgdmFsdWUgPSAoaW5pdF90eXBlID09IEFVVE9fSU5JVF9QQVRURVJOKSA/CisJCSAg ICBidWlsZF9pbnRfY3N0ICh1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZSwKKwkJCQkgICBJTklUX1BB VFRFUk5fVkFMVUUpIDoKKwkJICAgIGJ1aWxkX3plcm9fY3N0ICh1bnNpZ25lZF9jaGFyX3R5cGVf bm9kZSk7CisgICAgICB0cmVlIG1fY2FsbCA9IGJ1aWxkX2NhbGxfZXhwciAoYnVpbHRpbl9kZWNs X2ltcGxpY2l0IChCVUlMVF9JTl9NRU1TRVQpLAorCQkJCSAgICAgMywgYWRkciwgdmFsdWUsIHNp emVfb2ZfdmFyKTsKKyAgICAgIC8qIEV4cGFuZCB0aGlzIG1lbXNldCBjYWxsLiAgKi8KKyAgICAg IGV4cGFuZF9idWlsdGluX21lbXNldCAobV9jYWxsLCBOVUxMX1JUWCwgVFlQRV9NT0RFICh2YXJf dHlwZSkpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAvKiBJZiB0aGlzIHZhcmlhYmxlIGlz IGluIGEgcmVnaXN0ZXIsIHVzZSBleHBhbmRfYXNzaWdubWVudCBtaWdodAorICAgICAgIGdlbmVy YXRlIGJldHRlciBjb2RlLiAgKi8KKyAgICAgIHRyZWUgcGF0dGVybiA9IE5VTExfVFJFRTsKKyAg ICAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdG90YWxfYnl0ZXMKKwk9IHRyZWVfdG9fdWh3aSAo VFlQRV9TSVpFX1VOSVQgKHZhcl90eXBlKSk7CisKKyAgICAgIGlmIChJTlRFR1JBTF9UWVBFX1Ag KHZhcl90eXBlKSB8fCBQT0lOVEVSX1RZUEVfUCAodmFyX3R5cGUpKQorCXsKKwkgIHVuc2lnbmVk IGNoYXIgKnB0ciA9ICh1bnNpZ25lZCBjaGFyICopeG1hbGxvYyAodG90YWxfYnl0ZXMpOworCSAg Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB0b3RhbF9ieXRlczsgaSsrKQorCSAgICBwdHJb aV0gPSBJTklUX1BBVFRFUk5fVkFMVUU7CisJICB3aWRlX2ludCByZXN1bHQgPSB3aTo6ZnJvbV9i dWZmZXIgKHB0ciwgdG90YWxfYnl0ZXMpOworCSAgcGF0dGVybiA9ICB3aWRlX2ludF90b190cmVl ICh2YXJfdHlwZSwgcmVzdWx0KTsKKwl9CisgICAgICBlbHNlIGlmIChTQ0FMQVJfRkxPQVRfVFlQ RV9QICh2YXJfdHlwZSkpCisJeworCSAgdW5zaWduZWQgaW50IG1heF9pbmRleCA9IDIgKyAyICog dG90YWxfYnl0ZXM7CisJICBjaGFyICpwdHI9IChjaGFyICopeG1hbGxvYyAobWF4X2luZGV4KTsK KwkgIHB0clswXSA9ICcwJzsKKwkgIHB0clsxXSA9ICd4JzsKKwkgIGZvciAodW5zaWduZWQgaW50 IGkgPSAyOyBpIDwgbWF4X2luZGV4OyBpICs9IDIpCisJICAgIHB0cltpXSA9ICdGJzsKKwkgIGZv ciAodW5zaWduZWQgaW50IGkgPSAzOyBpIDwgbWF4X2luZGV4OyBpICs9IDIpCisJICAgIHB0cltp XSA9ICdFJzsKKwkgIFJFQUxfVkFMVUVfVFlQRSByX3ZhcjsKKwkgIHJlYWxfZnJvbV9zdHJpbmcg KCZyX3ZhciwgcHRyKTsKKwkgIHBhdHRlcm4gPSBidWlsZF9yZWFsICh2YXJfdHlwZSwgcl92YXIp OworCX0KKyAgICAgIGVsc2UKKwl7CisJICB0cmVlIGluZGV4X3R5cGUgPSBidWlsZF9pbmRleF90 eXBlIChzaXplX2ludCAodG90YWxfYnl0ZXMgLSAxKSk7CisJICB0cmVlIGFycmF5X3R5cGUgPSBi dWlsZF9hcnJheV90eXBlICh1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZSwKKwkJCQkJICAgICAgaW5k ZXhfdHlwZSk7CisJICB0cmVlIGVsZW1lbnQgPSBidWlsZF9pbnRfY3N0ICh1bnNpZ25lZF9jaGFy X3R5cGVfbm9kZSwKKwkJCQkJSU5JVF9QQVRURVJOX1ZBTFVFKTsKKwkgIHZlYzxjb25zdHJ1Y3Rv cl9lbHQsIHZhX2djPiAqZWx0cyA9IE5VTEw7CisJICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg aSA8IHRvdGFsX2J5dGVzOyBpKyspCisJICAgIENPTlNUUlVDVE9SX0FQUEVORF9FTFQgKGVsdHMs IE5VTExfVFJFRSwgZWxlbWVudCk7CisJICBwYXR0ZXJuID0gYnVpbGRfY29uc3RydWN0b3IgKGFy cmF5X3R5cGUsIGVsdHMpOworCSAgcGF0dGVybiA9IGJ1aWxkMSAoVklFV19DT05WRVJUX0VYUFIs IHZhcl90eXBlLCBwYXR0ZXJuKTsKKwl9CisKKyAgICAgIHRyZWUgaW5pdCA9IChpbml0X3R5cGUg PT0gQVVUT19JTklUX1BBVFRFUk4pID8KKwkJICAgcGF0dGVybiA6CisJCSAgIGJ1aWxkX3plcm9f Y3N0IChUUkVFX1RZUEUgKHZhcikpOworICAgICAgZXhwYW5kX2Fzc2lnbm1lbnQgKHZhciwgaW5p dCwgZmFsc2UpOworICAgIH0KK30KKwogLyogVGhlIHNpemUgb2YgYW4gT3BlbkFDQyBjb21wdXRl IGRpbWVuc2lvbi4gICovCiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9nY2MvaW50ZXJuYWwt Zm4uZGVmIGIvZ2NjL2ludGVybmFsLWZuLmRlZgppbmRleCAzYWM5YWU2OGIyYTYuLmRjODRiN2I3 Y2E3OSAxMDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZgorKysgYi9nY2MvaW50ZXJuYWwt Zm4uZGVmCkBAIC0zNjAsNiArMzYwLDExIEBAIERFRl9JTlRFUk5BTF9GTiAoVkVDX0NPTlZFUlQs IEVDRl9DT05TVCB8IEVDRl9MRUFGIHwgRUNGX05PVEhST1csIE5VTEwpCiBERUZfSU5URVJOQUxf Rk4gKFVOSVFVRSwgRUNGX05PVEhST1csIE5VTEwpCiBERUZfSU5URVJOQUxfRk4gKFBISSwgMCwg TlVMTCkKIAorLyogQSBmdW5jdGlvbiB0byByZXByZXNlbnQgYW4gYXJ0aWZpY2FsIGluaXRpYWxp emF0aW9uIHRvIGFuIHVuaW5pdGlhbGl6ZWQKKyAgIGF1dG9tYXRpYyB2YXJpYWJsZS4gIFRoZSBm aXJzdCBhcmd1bWVudCBpcyB0aGUgdmFyaWFibGUgaXRzZWxmLCB0aGUKKyAgIHNlY29uZCBhcmd1 bWVudCBpcyB0aGUgaW5pdGlhbGl6YXRpb24gdHlwZS4gICovCitERUZfSU5URVJOQUxfRk4gKERF RkVSUkVEX0lOSVQsIEVDRl9DT05TVCB8IEVDRl9MRUFGIHwgRUNGX05PVEhST1csIE5VTEwpCisK IC8qIERJTV9TSVpFIGFuZCBESU1fUE9TIHJldHVybiB0aGUgc2l6ZSBvZiBhIHBhcnRpY3VsYXIg Y29tcHV0ZQogICAgZGltZW5zaW9uIGFuZCB0aGUgZXhlY3V0aW5nIHRocmVhZCdzIHBvc2l0aW9u IHdpdGhpbiB0aGF0CiAgICBkaW1lbnNpb24uICBESU1fUE9TIGlzIHB1cmUgKGFuZCBub3QgY29u c3QpIHNvIHRoYXQgaXQgaXNuJ3QKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2F1dG8taW5pdC0xLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQt MS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGI4YmEzZGQ3ZThk Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0 LTEuYwpAQCAtMCwwICsxLDM5IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Ig aW50ZWdlciBhbmQgcG9pbnRlciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWlu aXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworI2lmbmRlZiBfX2NwbHVzcGx1cwor IyBkZWZpbmUgYm9vbCBfQm9vbAorI2VuZGlmCisKK2VudW0gRSB7CisgIE4xID0gMCwKKyAgTjIs CisgIE4zCit9OworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIHNob3J0LCBpbnQsIGVudW0gRSwg bG9uZywgbG9uZyBsb25nLCBpbnQgKiwgYm9vbCk7CisKK3ZvaWQgZm9vKCkKK3sKKyAgY2hhciB0 ZW1wMTsKKyAgc2hvcnQgdGVtcDI7CisgIGludCB0ZW1wMzsKKyAgZW51bSBFIHRlbXA0OworICBs b25nIHRlbXA1OworICBsb25nIGxvbmcgdGVtcDY7CisgIGludCAqdGVtcDc7CisgIGJvb2wgdGVt cDg7CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgdGVtcDUsIHRlbXA2LCB0 ZW1wNywgdGVtcDgpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAidGVtcDEgPSAuREVGRVJSRURfSU5JVCBcXCgxLCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDIgPSAuREVGRVJSRURfSU5J VCBcXCgyLCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAidGVtcDMgPSAuREVGRVJSRURfSU5JVCBcXCg0LCAyLCAwXFwpIiAiZ2ltcGxlIiB9 IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDQgPSAuREVGRVJSRURf SU5JVCBcXCg0LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcCAidGVtcDUgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAyLCAwXFwpIiAiZ2ltcGxl IiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDYgPSAuREVGRVJS RURfSU5JVCBcXCg4LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAidGVtcDcgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAyLCAwXFwpIiAiZ2lt cGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDggPSAuREVG RVJSRURfSU5JVCBcXCgxLCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vYXV0by1pbml0LTEwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4wYTg4NDFlNmUwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTAuYwpAQCAtMCwwICsxLDE3IEBACisvKiBWZXJpZnkg dGhlIHZhcmlhYmxlIGF0dHJpYnV0ZSAidW5pbml0aWFsaXplZCIuICAqLyAKKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBh dHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwg bG9uZyBsb25nICopIF9fYXR0cmlidXRlX18gKCh1bmluaXRpYWxpemVkKSk7IC8qIHsgZGctd2Fy bmluZyAiJ3VuaW5pdGlhbGl6ZWQnIGF0dHJpYnV0ZSBpZ25vcmVkIiB9ICovCisKK3ZvaWQgZm9v KCkKK3sKKyAgc2hvcnQgdGVtcDE7CisgIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fICgodW5pbml0 aWFsaXplZCkpIHRlbXAyWzEwXTsKKworICBiYXIgKHRlbXAxLCB0ZW1wMik7CisgIHJldHVybjsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZFUlJFRF9J TklUIFxcKDIsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wLW5vdCAidGVtcDIgPSAuREVGRVJSRURfSU5JVCBcXCgiICJnaW1wbGUiIH0gfSAq LwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTExLmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTEuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEyZDY2OTA4ZDgzZQotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMS5jCkBAIC0wLDAgKzEs MTQgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBWTEEgYXV0b21hdGljIHZh cmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitl eHRlcm4gdm9pZCBiYXIgKGludCk7CisKK3ZvaWQgZm9vKGludCBuKQoreworICBpbnQgYXJyW25d OworICBiYXIgKGFyclsyXSk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICIuREVGRVJSRURfSU5JVCBcXChELlxcZCosIDIsIDFcXCkiICJnaW1wbGUiIH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTEy LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTIuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYwNWQ3NDNmZGEwMgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMi5jCkBAIC0wLDAg KzEsMTQgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBWTEEgYXV0b21hdGlj IHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAq LworCitleHRlcm4gdm9pZCBiYXIgKGludCk7CisKK3ZvaWQgZm9vKGludCBuKQoreworICBpbnQg YXJyW25dOworICBiYXIgKGFyclsyXSk7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICIuREVGRVJSRURfSU5JVCBcXChELlxcZCosIDEsIDFcXCkiICJnaW1w bGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1p bml0LTEzLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTMuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmIwYzAzNjViMjg4YQotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xMy5jCkBA IC0wLDAgKzEsMjMgQEAKKy8qIFZlcmlmeSB0aGUgYXV0byBpbml0aWFsaXphdGlvbiBvZiBzdHJ1 Y3R1cmUgb3IgdW5pb24gd2l0aCBhIGZsZXhpYmxlIGFycmF5CisgICBtZW1iZXIuICAqLyAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZh ci1pbml0PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK3N0cnVjdCBhIHsKKyAg aW50IGI7CisgIGludCBhcnJheVtdOworfTsKK3VuaW9uIHRhciB7CisgIHN0cnVjdCBhIGJhcjsK KyAgY2hhciBidWY7Cit9OworCitpbnQgZm9vKCkKK3sKKyAgc3RydWN0IGEgZDsKKyAgdW5pb24g dGFyIHZhcjsKKyAgcmV0dXJuIGQuYiArIHZhci5iYXIuYjsKK30KKworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJkID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMSwgMFxcKSIgImdpbXBs ZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInZhciA9IC5ERUZFUlJF RF9JTklUIFxcKDQsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE0LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi9hdXRvLWluaXQtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjk4NmJiMTlmYWFmMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2F1dG8taW5pdC0xNC5jCkBAIC0wLDAgKzEsMjMgQEAKKy8qIFZlcmlmeSB0aGUg YXV0byBpbml0aWFsaXphdGlvbiBvZiBzdHJ1Y3R1cmUgb3IgdW5pb24gd2l0aCBhIGZsZXhpYmxl IGFycmF5CisgICBtZW1iZXIuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxl IiB9ICovCisKK3N0cnVjdCBhIHsKKyAgaW50IGI7CisgIGludCBhcnJheVtdOworfTsKK3VuaW9u IHRhciB7CisgIHN0cnVjdCBhIGJhcjsKKyAgY2hhciBidWY7Cit9OworCitpbnQgZm9vKCkKK3sK KyAgc3RydWN0IGEgZDsKKyAgdW5pb24gdGFyIHZhcjsKKyAgcmV0dXJuIGQuYiArIHZhci5iYXIu YjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJkID0gLkRFRkVSUkVEX0lO SVQgXFwoNCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgInZhciA9IC5ERUZFUlJFRF9JTklUIFxcKDQsIDIsIDBcXCkiICJnaW1wbGUiIH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTE1 LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMTUuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFhOWQ3ZmFiNjhhNgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0xNS5jCkBAIC0wLDAg KzEsMTMgQEAKKy8qIFZlcmlmeSB0aGUgYXV0byBpbml0aWFsaXphdGlvbiBvZiBuZXN0ZWQgVkxB LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKK3ZvaWQgZyh2 b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAgaW50IHhbYV1bYV07CisgIGcoeCk7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiLkRFRkVSUkVEX0lOSVQgXFwoRC5c XGQqLCAyLCAxXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC0xNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXV0by1pbml0LTE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44 NjQ5M2VlZjllNDcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi9hdXRvLWluaXQtMTYuYwpAQCAtMCwwICsxLDEzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5p dGlhbGl6YXRpb24gb2YgbmVzdGVkIFZMQS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10 cmVlLWdpbXBsZSIgfSAqLworCit2b2lkIGcodm9pZCAqKTsKKwordm9pZCBmb28oaW50IGEpCit7 CisgIGludCB4W2FdW2FdOworICBnKHgpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIi5ERUZFUlJFRF9JTklUIFxcKEQuXFxkKiwgMSwgMVxcKSIgImdpbXBsZSIgfSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtMi5jIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTIuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcxOTU1YjU0YmEwMwotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC0yLmMKQEAgLTAsMCArMSwzOSBA QAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGludGVnZXIgYW5kIHBvaW50 ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1w LXRyZWUtZ2ltcGxlIiB9ICovCisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyMgZGVmaW5lIGJvb2wg X0Jvb2wKKyNlbmRpZgorCitlbnVtIEUgeworICBOMSA9IDAsCisgIE4yLAorICBOMworfTsKKwor ZXh0ZXJuIHZvaWQgYmFyIChjaGFyLCBzaG9ydCwgaW50LCBlbnVtIEUsIGxvbmcsIGxvbmcgbG9u ZywgaW50ICosIGJvb2wpOworCit2b2lkIGZvbygpCit7CisgIGNoYXIgdGVtcDE7CisgIHNob3J0 IHRlbXAyOworICBpbnQgdGVtcDM7CisgIGVudW0gRSB0ZW1wNDsKKyAgbG9uZyB0ZW1wNTsKKyAg bG9uZyBsb25nIHRlbXA2OworICBpbnQgKnRlbXA3OworICBib29sIHRlbXA4OworCisgIGJhciAo dGVtcDEsIHRlbXAyLCB0ZW1wMywgdGVtcDQsIHRlbXA1LCB0ZW1wNiwgdGVtcDcsIHRlbXA4KTsK KyAgcmV0dXJuOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAxID0g LkRFRkVSUkVEX0lOSVQgXFwoMSwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoMiwgMSwgMFxc KSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAz ID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA0ID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMSwg MFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRl bXA1ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA2ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwg MSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAg InRlbXA3ID0gLkRFRkVSUkVEX0lOSVQgXFwoOCwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXA4ID0gLkRFRkVSUkVEX0lOSVQgXFwo MSwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2Mt YysrLWNvbW1vbi9hdXRvLWluaXQtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMxMjI3 NTY2NjM4MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1 dG8taW5pdC0zLmMKQEAgLTAsMCArMSwxOSBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRp b24gZm9yIGZsb2F0aW5nIHBvaW50IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitsb25nIGRvdWJsZSByZXN1bHQ7 CisKK2xvbmcgZG91YmxlIGZvbygpCit7CisgIGZsb2F0IHRlbXAxOworICBkb3VibGUgdGVtcDI7 CisgIGxvbmcgZG91YmxlIHRlbXAzOworICAKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRl bXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAgInRlbXAxID0gLkRFRkVSUkVEX0lOSVQgXFwoNCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQg XFwoOCwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgInRlbXAzID0gLkRFRkVSUkVEX0lOSVQgXFwoMTYsIDIsIDBcXCkiICJnaW1wbGUiIH0g fSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTQu YyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC00LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNWE0MzE3MjZkY2QKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNC5jCkBAIC0wLDAgKzEs MTkgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2lu dCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAt dHJlZS1naW1wbGUiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBm b28oKQoreworICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0 ZW1wMzsKKyAgCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJl c3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZF UlJFRF9JTklUIFxcKDQsIDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEsIDBcXCkiICJn aW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMyA9IC5E RUZFUlJFRF9JTklUIFxcKDE2LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC01LmMgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uNTRmOTBiYzg5MGI1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTUuYwpAQCAtMCwwICsxLDIxIEBACisvKiBWZXJpZnkg emVybyBpbml0aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFs LWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtdHJlZS1naW1wbGUiIH0gKi8KKworCitfQ29tcGxl eCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91YmxlIGZvbygpCit7Cisg IF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVtcDI7CisgIF9Db21w bGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1w MzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJ0ZW1wMSA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDIsIDBcXCkiICJnaW1wbGUiIH0gfSAqLwor LyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxc KDE2LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUt ZHVtcCAidGVtcDMgPSAuREVGRVJSRURfSU5JVCBcXCgzMiwgMiwgMFxcKSIgImdpbXBsZSIgfSB9 ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC02 LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtNi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDEyNGEyYjE4M2FhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LTYuYwpAQCAtMCwwICsx LDIxIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBl IGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtdHJlZS1n aW1wbGUiIH0gKi8KKworCitfQ29tcGxleCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4 IGxvbmcgZG91YmxlIGZvbygpCit7CisgIF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxl eCBkb3VibGUgdGVtcDI7CisgIF9Db21wbGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3Vs dCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZFUlJFRF9JTklUIFxcKDgsIDEs IDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0 ZW1wMiA9IC5ERUZFUlJFRF9JTklUIFxcKDE2LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDMgPSAuREVGRVJSRURfSU5JVCBcXCgz MiwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC03LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTk5 ODY5NjlhOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXV0by1pbml0LTcuYwpAQCAtMCwwICsxLDM1IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXph dGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlh Ymxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRy aXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitzdHJ1 Y3QgUworeworICBpbnQgZjE7CisgIGZsb2F0IGYyOworICBjaGFyIGYzWzIwXTsKK307CisKK3Vu aW9uIFUKK3sKKyAgY2hhciB1MVs1XTsKKyAgaW50IHUyOworICBmbG9hdCB1MzsgCit9OworCitk b3VibGUgcmVzdWx0OworCitkb3VibGUgZm9vKCkKK3sKKyAgaW50IHRlbXAxWzNdOworICBkb3Vi bGUgdGVtcDJbM107CisgIHN0cnVjdCBTIHRlbXAzOworICB1bmlvbiBVIHRlbXA0OworICAKKyAg cmVzdWx0ID0gdGVtcDFbMl0gKyB0ZW1wMlsxXSArIHRlbXAzLmYyICsgdGVtcDQudTM7CisgIHJl dHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDEg PSAuREVGRVJSRURfSU5JVCBcXCgxMiwgMiwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoMjQsIDIs IDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJ0 ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDI4LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KKy8q IHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDQgPSAuREVGRVJSRURfSU5JVCBcXCg4 LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2F1dG8taW5pdC04LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRv LWluaXQtOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTc3OGU5 MTFlM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0 by1pbml0LTguYwpAQCAtMCwwICsxLDM1IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXph dGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlh Ymxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRy aXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC10cmVlLWdpbXBsZSIgfSAqLworCitz dHJ1Y3QgUworeworICBpbnQgZjE7CisgIGZsb2F0IGYyOworICBjaGFyIGYzWzIwXTsKK307CisK K3VuaW9uIFUKK3sKKyAgY2hhciB1MVs1XTsKKyAgaW50IHUyOworICBmbG9hdCB1MzsgCit9Owor Citkb3VibGUgcmVzdWx0OworCitkb3VibGUgZm9vKCkKK3sKKyAgaW50IHRlbXAxWzNdOworICBk b3VibGUgdGVtcDJbM107CisgIHN0cnVjdCBTIHRlbXAzOworICB1bmlvbiBVIHRlbXA0OworICAK KyAgcmVzdWx0ID0gdGVtcDFbMl0gKyB0ZW1wMlsxXSArIHRlbXAzLmYyICsgdGVtcDQudTM7Cisg IHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVt cDEgPSAuREVGRVJSRURfSU5JVCBcXCgxMiwgMSwgMFxcKSIgImdpbXBsZSIgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgInRlbXAyID0gLkRFRkVSUkVEX0lOSVQgXFwoMjQs IDEsIDBcXCkiICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJ0ZW1wMyA9IC5ERUZFUlJFRF9JTklUIFxcKDI4LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidGVtcDQgPSAuREVGRVJSRURfSU5JVCBc XCg4LCAxLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC05LmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi9h dXRvLWluaXQtOS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTBi YmQ4Y2IxYWZlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXV0by1pbml0LTkuYwpAQCAtMCwwICsxLDE3IEBACisvKiBWZXJpZnkgdGhlIHZhcmlhYmxlIGF0 dHJpYnV0ZSAidW5pbml0aWFsaXplZCIuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUt Z2ltcGxlIiB9ICovCisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwgbG9uZyBsb25nICopIF9fYXR0 cmlidXRlX18gKCh1bmluaXRpYWxpemVkKSk7IC8qIHsgZGctd2FybmluZyAiJ3VuaW5pdGlhbGl6 ZWQnIGF0dHJpYnV0ZSBpZ25vcmVkIiB9ICovCisKK3ZvaWQgZm9vKCkKK3sKKyAgc2hvcnQgdGVt cDE7CisgIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fICgodW5pbml0aWFsaXplZCkpIHRlbXAyWzEw XTsKKworICBiYXIgKHRlbXAxLCB0ZW1wMik7CisgIHJldHVybjsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJ0ZW1wMSA9IC5ERUZFUlJFRF9JTklUIFxcKDIsIDIsIDBcXCki ICJnaW1wbGUiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLW5vdCAidGVt cDIgPSAuREVGRVJSRURfSU5JVCBcXCg4LCAyLCAwXFwpIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2F1dG8taW5pdC1lc3JhLmMgYi9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9hdXRvLWluaXQtZXNyYS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzdlYzAyMzU1ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LWVzcmEuYwpAQCAtMCwwICsxLDM1 IEBACisvKiBWZXJpZnkgdGhlIHN0cmVuZ3RoIHJlZHVjdGlvbiBhZGp1c3RtZW50IGZvciAtZnRy aXZpYWwtYXV0by12YXItaW5pdC4gICovIAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXRyZWUt Z2ltcGxlIC1mZHVtcC10cmVlLWVzcmEiIH0gKi8KKworCit0eXBlZGVmIGRvdWJsZSBWRUNUT1Jb M107CisKK2VudW0KK3sKKyBYID0gMCwKKyBZID0gMSwKKyBaID0gMiwKKyBUID0gMworfTsKKwor dm9pZCBBc3NpZ25fVmVjdG9yKFZFQ1RPUiBkLCBWRUNUT1IgcykKK3sKKyBkW1hdID0gc1tYXTsK KyBkW1ldID0gc1tZXTsKKyBkW1pdID0gc1taXTsKK30KKwordm9pZCBWQ3Jvc3MoVkVDVE9SIGEs IGNvbnN0IFZFQ1RPUiBiLCBjb25zdCBWRUNUT1IgYykKK3sKKyBWRUNUT1IgdG1wOworCisgdG1w W1hdID0gYltZXSAqIGNbWl0gLSBiW1pdICogY1tZXTsKKyB0bXBbWV0gPSBiW1pdICogY1tYXSAt IGJbWF0gKiBjW1pdOworIHRtcFtaXSA9IGJbWF0gKiBjW1ldIC0gYltZXSAqIGNbWF07CisKKyBB c3NpZ25fVmVjdG9yKGEsIHRtcCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAidG1wID0gLkRFRkVSUkVEX0lOSVQgXFwoMjQsIDIsIDBcXCkiIDEgImdpbXBsZSIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIi5ERUZFUlJFRF9J TklUIFxcKDgsIDIsIDBcXCkiIDMgImVzcmEiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9j LWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uOTdmNzhlZTdkNTZhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMS5jCkBAIC0wLDAgKzEsMjMg QEAKKy8qIFZlcmlmeSB0aGUgcGFkZGluZyBpbml0aWFsaXphdGlvbiBmb3IgcGF0dGVybiBpbml0 aWFsaXphdGlvbiwgd2UgYWx3YXlzIGVtaXQKKyAqIGEgY2FsbCB0byBfX2J1aWx0aW5fY2xlYXJf cGFkZGluZyB0byBpbml0aWFsaXplIHRoZSBwYWRkaW5ncyB0byB6ZXJvLiAgKi8KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0 PXBhdHRlcm4gLWZkdW1wLXRyZWUtZ2ltcGxlIiB9ICovCisKKworc3RydWN0IHRlc3Rfc21hbGxf aG9sZSB7CisgIGludCBvbmU7CisgIGNoYXIgdHdvOworICAvKiAzIGJ5dGUgcGFkZGluZyBob2xl IGhlcmUuICovCisgIGludCB0aHJlZTsKKyAgdW5zaWduZWQgbG9uZyBmb3VyOworfTsKKworZXh0 ZXJuIHZvaWQgZyAoc3RydWN0IHRlc3Rfc21hbGxfaG9sZSk7Cit2b2lkIGZvbyhpbnQgYSkKK3sK KyAgc3RydWN0IHRlc3Rfc21hbGxfaG9sZSBzOyAKKyAgZyhzKTsKK30KKworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICIuREVGRVJSRURfSU5JVCBcXCgyNCwgMSwgMFxcKSIgImdpbXBs ZSIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIl9fYnVpbHRpbl9jbGVh cl9wYWRkaW5nIiAiZ2ltcGxlIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvYy1j KystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTIuYyBiL2djYy90ZXN0c3VpdGUvYy1jKystY29t bW9uL2F1dG8taW5pdC1wYWRkaW5nLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmUyYjUwZGM1YWU4ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Yy1jKystY29tbW9uL2F1dG8taW5pdC1wYWRkaW5nLTIuYwpAQCAtMCwwICsxLDExNCBAQAorLyog VG8gdGVzdCB0aGF0IHRoZSBjb21waWxlciBjYW4gZmlsbCBhbGwgdGhlIHBhZGRpbmdzIHRvIHpl cm9lcyBmb3IgdGhlIAorICAgc3RydWN0dXJlcyB3aGVuIHRoZSBhdXRvIHZhcmlhYmxlIGlzIHBh cnRpYWxseSBpbml0aWFsaXplZCwgIGZ1bGx5IAorICAgaW5pdGlhbGl6ZWQsIG9yIG5vdCBpbml0 aWFsaXplZCBmb3IgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVyby4gICovCisvKiB7IGRnLWRv IHJ1bn0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIg fSAqLworCisvKiBTdHJ1Y3R1cmUgd2l0aCBubyBwYWRkaW5nLiAqLworc3RydWN0IHRlc3RfcGFj a2VkIHsKKyAgdW5zaWduZWQgbG9uZyBvbmU7CisgIHVuc2lnbmVkIGxvbmcgdHdvOworICB1bnNp Z25lZCBsb25nIHRocmVlOworICB1bnNpZ25lZCBsb25nIGZvdXI7Cit9IHAxOworCisvKiBTaW1w bGUgc3RydWN0dXJlIHdpdGggcGFkZGluZyBsaWtlbHkgdG8gYmUgY292ZXJlZCBieSBjb21waWxl ci4gKi8KK3N0cnVjdCB0ZXN0X3NtYWxsX2hvbGUgeworICB1bnNpZ25lZCBsb25nIG9uZTsKKyAg Y2hhciB0d287CisgIC8qIDMgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgaW50IHRocmVl OworICB1bnNpZ25lZCBsb25nIGZvdXI7Cit9IHNoMTsKKworLyogVHJ5IHRvIHRyaWdnZXIgdW5o YW5kbGVkIHBhZGRpbmcgaW4gYSBzdHJ1Y3R1cmUuICovCitzdHJ1Y3QgdGVzdF9hbGlnbmVkIHsK KyAgdW5zaWduZWQgaW50IGludGVybmFsMTsKKyAgdW5zaWduZWQgbG9uZyBsb25nIGludGVybmFs MjsKK30gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7CisKK3N0cnVjdCB0ZXN0X2Fs aWduZWQgYTE7CisKK3N0cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgdW5zaWduZWQgY2hhciBvbmU7 CisgIHVuc2lnbmVkIGNoYXIgdHdvOworICB1bnNpZ25lZCBjaGFyIHRocmVlOworICAvKiA2MSBi eXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZvdXI7Cit9 IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpOyAKKworc3RydWN0IHRlc3RfYmlnX2hv bGUgYmgxOworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgY2hhciAqb25lOworICBj aGFyICp0d287CisgIGNoYXIgKnRocmVlOworICBjaGFyIGZvdXI7CisgIC8qICJzaXplb2YodW5z aWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfSB0aDE7CisKK19f YXR0cmlidXRlX18oKG5vaXBhKSkgdm9pZAorZm9vIChzdHJ1Y3QgdGVzdF9wYWNrZWQgKnAsIHN0 cnVjdCB0ZXN0X3NtYWxsX2hvbGUgKnNoLCBzdHJ1Y3QgdGVzdF9hbGlnbmVkICphLAorICAgICBz dHJ1Y3QgdGVzdF9iaWdfaG9sZSAqYmgsIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgKnRoKQor eworICBwLT5vbmUgPSAxOyBwLT50d28gPSAyOyBwLT50aHJlZSA9IDM7IHAtPmZvdXIgPSA0Owor ICBzaC0+b25lID0gMTE7IHNoLT50d28gPSAxMjsgc2gtPnRocmVlID0gMTM7IHNoLT5mb3VyID0g MTQ7CisgIGEtPmludGVybmFsMSA9IDIxOyBhLT5pbnRlcm5hbDIgPSAyMjsKKyAgYmgtPm9uZSA9 IDMxOyBiaC0+dHdvID0gMzI7IGJoLT50aHJlZSA9IDMzOworICBiaC0+Zm91ci5pbnRlcm5hbDEg PSAzNDsgYmgtPmZvdXIuaW50ZXJuYWwyID0gMzU7IAorICB0aC0+b25lID0gMDsgdGgtPnR3byA9 IDA7IHRoLT50aHJlZSA9IDA7IHRoLT5mb3VyID0gNDQ7Cit9CisKK2ludCBtYWluICgpCit7Cisg IHN0cnVjdCB0ZXN0X3BhY2tlZCBwMjsKKyAgc3RydWN0IHRlc3Rfc21hbGxfaG9sZSBzaDI7Cisg IHN0cnVjdCB0ZXN0X2FsaWduZWQgYTI7CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIGJoMjsKKyAg c3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB0aDI7CisKKyAgc3RydWN0IHRlc3RfcGFja2VkIHAz ID0gey5vbmUgPSAxfTsKKyAgc3RydWN0IHRlc3Rfc21hbGxfaG9sZSBzaDMgPSB7LnR3byA9IDEy fTsKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCBhMyA9IHsuaW50ZXJuYWwxID0gMjF9OworICBzdHJ1 Y3QgdGVzdF9iaWdfaG9sZSBiaDMgPSB7Lm9uZSA9IDMxfTsKKyAgc3RydWN0IHRlc3RfdHJhaWxp bmdfaG9sZSB0aDMgPSB7LnRocmVlID0gMH07CisKKyAgc3RydWN0IHRlc3RfcGFja2VkIHA0ID0g ey5vbmUgPSAxLCAudHdvID0gMiwgLnRocmVlID0gMywgLmZvdXIgPSA0fTsKKyAgc3RydWN0IHRl c3Rfc21hbGxfaG9sZSBzaDQgPSB7Lm9uZSA9IDExLCAudHdvID0gMTIsIC50aHJlZSA9IDEzLCAu Zm91ciA9IDE0fTsKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCBhNCA9IHsuaW50ZXJuYWwxID0gMjEs IC5pbnRlcm5hbDIgPSAyMn07CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIGJoNCA9IHsub25lID0g MzEsIC50d28gPSAzMiwgLnRocmVlID0gMzN9OworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xl IHRoNCA9IHsub25lID0gMCwgLnR3byA9IDAsIC50aHJlZSA9IDAsIC5mb3VyID0gNDR9OworCisg IGZvbyAoJnAxLCAmc2gxLCAmYTEsICZiaDEsICZ0aDEpOworICBmb28gKCZwMiwgJnNoMiwgJmEy LCAmYmgyLCAmdGgyKTsKKyAgZm9vICgmcDMsICZzaDMsICZhMywgJmJoMywgJnRoMyk7CisgIGJo NC5mb3VyLmludGVybmFsMSA9IDM0OyBiaDQuZm91ci5pbnRlcm5hbDIgPSAzNTsKKworICBfX2J1 aWx0aW5fY2xlYXJfcGFkZGluZyAoJnAxKTsKKyAgX19idWlsdGluX2NsZWFyX3BhZGRpbmcgKCZz aDEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoJmExKTsKKyAgX19idWlsdGluX2NsZWFy X3BhZGRpbmcgKCZiaDEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAoJnRoMSk7CisKKyAg aWYgKF9fYnVpbHRpbl9tZW1jbXAgKCZwMSwgJnAyLCBzaXplb2YgKHAxKSkKKyAgICAgIHx8IF9f YnVpbHRpbl9tZW1jbXAgKCZzaDEsICZzaDIsIHNpemVvZiAoc2gxKSkKKyAgICAgIHx8IF9fYnVp bHRpbl9tZW1jbXAgKCZhMSwgJmEyLCBzaXplb2YgKGExKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9t ZW1jbXAgKCZiaDEsICZiaDIsIHNpemVvZiAoYmgxKSkKKyAgICAgIHx8IF9fYnVpbHRpbl9tZW1j bXAgKCZ0aDEsICZ0aDIsIHNpemVvZiAodGgxKSkpCisgICAgX19idWlsdGluX2Fib3J0ICgpOwor ICBpZiAoX19idWlsdGluX21lbWNtcCAoJnAxLCAmcDMsIHNpemVvZiAocDEpKQorICAgICAgfHwg X19idWlsdGluX21lbWNtcCAoJnNoMSwgJnNoMywgc2l6ZW9mIChzaDEpKQorICAgICAgfHwgX19i dWlsdGluX21lbWNtcCAoJmExLCAmYTMsIHNpemVvZiAoYTEpKQorICAgICAgfHwgX19idWlsdGlu X21lbWNtcCAoJmJoMSwgJmJoMywgc2l6ZW9mIChiaDEpKQorICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoJnRoMSwgJnRoMywgc2l6ZW9mICh0aDEpKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisgIGlmIChfX2J1aWx0aW5fbWVtY21wICgmcDEsICZwNCwgc2l6ZW9mIChwMSkpCisgICAgICB8 fCBfX2J1aWx0aW5fbWVtY21wICgmc2gxLCAmc2g0LCBzaXplb2YgKHNoMSkpCisgICAgICB8fCBf X2J1aWx0aW5fbWVtY21wICgmYTEsICZhNCwgc2l6ZW9mIChhMSkpCisgICAgICB8fCBfX2J1aWx0 aW5fbWVtY21wICgmYmgxLCAmYmg0LCBzaXplb2YgKGJoMSkpCisgICAgICB8fCBfX2J1aWx0aW5f bWVtY21wICgmdGgxLCAmdGg0LCBzaXplb2YgKHRoMSkpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1j b21tb24vYXV0by1pbml0LXBhZGRpbmctMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24v YXV0by1pbml0LXBhZGRpbmctMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uZTJjNDhjMDAyYzk1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMr Ky1jb21tb24vYXV0by1pbml0LXBhZGRpbmctMy5jCkBAIC0wLDAgKzEsMTE0IEBACisvKiBUbyB0 ZXN0IHRoYXQgdGhlIGNvbXBpbGVyIGNhbiBmaWxsIGFsbCB0aGUgcGFkZGluZ3MgdG8gemVyb2Vz IGZvciB0aGUgCisgICBzdHJ1Y3R1cmVzIHdoZW4gdGhlIGF1dG8gdmFyaWFibGUgaXMgcGFydGlh bGx5IGluaXRpYWxpemVkLCAgZnVsbHkgCisgICBpbml0aWFsaXplZCwgb3Igbm90IGluaXRpYWxp emVkIGZvciAtZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuLiAgKi8KKy8qIHsgZGctZG8g cnVufSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJu IiB9ICovCisKKy8qIFN0cnVjdHVyZSB3aXRoIG5vIHBhZGRpbmcuICovCitzdHJ1Y3QgdGVzdF9w YWNrZWQgeworICB1bnNpZ25lZCBsb25nIG9uZTsKKyAgdW5zaWduZWQgbG9uZyB0d287CisgIHVu c2lnbmVkIGxvbmcgdGhyZWU7CisgIHVuc2lnbmVkIGxvbmcgZm91cjsKK30gcDE7CisKKy8qIFNp bXBsZSBzdHJ1Y3R1cmUgd2l0aCBwYWRkaW5nIGxpa2VseSB0byBiZSBjb3ZlcmVkIGJ5IGNvbXBp bGVyLiAqLworc3RydWN0IHRlc3Rfc21hbGxfaG9sZSB7CisgIHVuc2lnbmVkIGxvbmcgb25lOwor ICBjaGFyIHR3bzsKKyAgLyogMyBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworICBpbnQgdGhy ZWU7CisgIHVuc2lnbmVkIGxvbmcgZm91cjsKK30gc2gxOworCisvKiBUcnkgdG8gdHJpZ2dlciB1 bmhhbmRsZWQgcGFkZGluZyBpbiBhIHN0cnVjdHVyZS4gKi8KK3N0cnVjdCB0ZXN0X2FsaWduZWQg eworICB1bnNpZ25lZCBpbnQgaW50ZXJuYWwxOworICB1bnNpZ25lZCBsb25nIGxvbmcgaW50ZXJu YWwyOworfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKTsKKworc3RydWN0IHRlc3Rf YWxpZ25lZCBhMTsKKworc3RydWN0IHRlc3RfYmlnX2hvbGUgeworICB1bnNpZ25lZCBjaGFyIG9u ZTsKKyAgdW5zaWduZWQgY2hhciB0d287CisgIHVuc2lnbmVkIGNoYXIgdGhyZWU7CisgIC8qIDYx IGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgZm91cjsK K30gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oNjQpKSk7IAorCitzdHJ1Y3QgdGVzdF9iaWdf aG9sZSBiaDE7CisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICBjaGFyICpvbmU7Cisg IGNoYXIgKnR3bzsKKyAgY2hhciAqdGhyZWU7CisgIGNoYXIgZm91cjsKKyAgLyogInNpemVvZih1 bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9IHRoMTsKKwor X19hdHRyaWJ1dGVfXygobm9pcGEpKSB2b2lkCitmb28gKHN0cnVjdCB0ZXN0X3BhY2tlZCAqcCwg c3RydWN0IHRlc3Rfc21hbGxfaG9sZSAqc2gsIHN0cnVjdCB0ZXN0X2FsaWduZWQgKmEsCisgICAg IHN0cnVjdCB0ZXN0X2JpZ19ob2xlICpiaCwgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSAqdGgp Cit7CisgIHAtPm9uZSA9IDE7IHAtPnR3byA9IDI7IHAtPnRocmVlID0gMzsgcC0+Zm91ciA9IDQ7 CisgIHNoLT5vbmUgPSAxMTsgc2gtPnR3byA9IDEyOyBzaC0+dGhyZWUgPSAxMzsgc2gtPmZvdXIg PSAxNDsKKyAgYS0+aW50ZXJuYWwxID0gMjE7IGEtPmludGVybmFsMiA9IDIyOworICBiaC0+b25l ID0gMzE7IGJoLT50d28gPSAzMjsgYmgtPnRocmVlID0gMzM7CisgIGJoLT5mb3VyLmludGVybmFs MSA9IDM0OyBiaC0+Zm91ci5pbnRlcm5hbDIgPSAzNTsgCisgIHRoLT5vbmUgPSAwOyB0aC0+dHdv ID0gMDsgdGgtPnRocmVlID0gMDsgdGgtPmZvdXIgPSA0NDsKK30KKworaW50IG1haW4gKCkKK3sK KyAgc3RydWN0IHRlc3RfcGFja2VkIHAyOworICBzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHNoMjsK KyAgc3RydWN0IHRlc3RfYWxpZ25lZCBhMjsKKyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgYmgyOwor ICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHRoMjsKKworICBzdHJ1Y3QgdGVzdF9wYWNrZWQg cDMgPSB7Lm9uZSA9IDF9OworICBzdHJ1Y3QgdGVzdF9zbWFsbF9ob2xlIHNoMyA9IHsudHdvID0g MTJ9OworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGEzID0gey5pbnRlcm5hbDEgPSAyMX07CisgIHN0 cnVjdCB0ZXN0X2JpZ19ob2xlIGJoMyA9IHsub25lID0gMzF9OworICBzdHJ1Y3QgdGVzdF90cmFp bGluZ19ob2xlIHRoMyA9IHsudGhyZWUgPSAwfTsKKworICBzdHJ1Y3QgdGVzdF9wYWNrZWQgcDQg PSB7Lm9uZSA9IDEsIC50d28gPSAyLCAudGhyZWUgPSAzLCAuZm91ciA9IDR9OworICBzdHJ1Y3Qg dGVzdF9zbWFsbF9ob2xlIHNoNCA9IHsub25lID0gMTEsIC50d28gPSAxMiwgLnRocmVlID0gMTMs IC5mb3VyID0gMTR9OworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGE0ID0gey5pbnRlcm5hbDEgPSAy MSwgLmludGVybmFsMiA9IDIyfTsKKyAgc3RydWN0IHRlc3RfYmlnX2hvbGUgYmg0ID0gey5vbmUg PSAzMSwgLnR3byA9IDMyLCAudGhyZWUgPSAzM307CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hv bGUgdGg0ID0gey5vbmUgPSAwLCAudHdvID0gMCwgLnRocmVlID0gMCwgLmZvdXIgPSA0NH07CisK KyAgZm9vICgmcDEsICZzaDEsICZhMSwgJmJoMSwgJnRoMSk7CisgIGZvbyAoJnAyLCAmc2gyLCAm YTIsICZiaDIsICZ0aDIpOworICBmb28gKCZwMywgJnNoMywgJmEzLCAmYmgzLCAmdGgzKTsKKyAg Ymg0LmZvdXIuaW50ZXJuYWwxID0gMzQ7IGJoNC5mb3VyLmludGVybmFsMiA9IDM1OworCisgIF9f YnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmcDEpOworICBfX2J1aWx0aW5fY2xlYXJfcGFkZGluZyAo JnNoMSk7CisgIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmYTEpOworICBfX2J1aWx0aW5fY2xl YXJfcGFkZGluZyAoJmJoMSk7CisgIF9fYnVpbHRpbl9jbGVhcl9wYWRkaW5nICgmdGgxKTsKKwor ICBpZiAoX19idWlsdGluX21lbWNtcCAoJnAxLCAmcDIsIHNpemVvZiAocDEpKQorICAgICAgfHwg X19idWlsdGluX21lbWNtcCAoJnNoMSwgJnNoMiwgc2l6ZW9mIChzaDEpKQorICAgICAgfHwgX19i dWlsdGluX21lbWNtcCAoJmExLCAmYTIsIHNpemVvZiAoYTEpKQorICAgICAgfHwgX19idWlsdGlu X21lbWNtcCAoJmJoMSwgJmJoMiwgc2l6ZW9mIChiaDEpKQorICAgICAgfHwgX19idWlsdGluX21l bWNtcCAoJnRoMSwgJnRoMiwgc2l6ZW9mICh0aDEpKSkKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 CisgIGlmIChfX2J1aWx0aW5fbWVtY21wICgmcDEsICZwMywgc2l6ZW9mIChwMSkpCisgICAgICB8 fCBfX2J1aWx0aW5fbWVtY21wICgmc2gxLCAmc2gzLCBzaXplb2YgKHNoMSkpCisgICAgICB8fCBf X2J1aWx0aW5fbWVtY21wICgmYTEsICZhMywgc2l6ZW9mIChhMSkpCisgICAgICB8fCBfX2J1aWx0 aW5fbWVtY21wICgmYmgxLCAmYmgzLCBzaXplb2YgKGJoMSkpCisgICAgICB8fCBfX2J1aWx0aW5f bWVtY21wICgmdGgxLCAmdGgzLCBzaXplb2YgKHRoMSkpKQorICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKyAgaWYgKF9fYnVpbHRpbl9tZW1jbXAgKCZwMSwgJnA0LCBzaXplb2YgKHAxKSkKKyAgICAg IHx8IF9fYnVpbHRpbl9tZW1jbXAgKCZzaDEsICZzaDQsIHNpemVvZiAoc2gxKSkKKyAgICAgIHx8 IF9fYnVpbHRpbl9tZW1jbXAgKCZhMSwgJmE0LCBzaXplb2YgKGExKSkKKyAgICAgIHx8IF9fYnVp bHRpbl9tZW1jbXAgKCZiaDEsICZiaDQsIHNpemVvZiAoYmgxKSkKKyAgICAgIHx8IF9fYnVpbHRp bl9tZW1jbXAgKCZ0aDEsICZ0aDQsIHNpemVvZiAodGgxKSkpCisgICAgX19idWlsdGluX2Fib3J0 ICgpOworCisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5k Zy9hdXRvLWluaXQtdW5pbml0LXByZWQtMV9hLkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRv LWluaXQtdW5pbml0LXByZWQtMV9hLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4zM2MxNzQ0MTM4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtMV9hLkMKQEAgLTAsMCArMSw2MyBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PMiAt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgbG9uZyBsb25nIGlu dDY0Owordm9pZCBpbmNyICgpOworYm9vbCBpc192YWxpZCAoaW50KTsKK2ludCAgZ2V0X3RpbWUg KCk7CisKK2NsYXNzIEEgCit7CitwdWJsaWM6CisgIEEgKCk7CisgIH5BICgpIHsKKyAgICBpZiAo SSkgZGVsZXRlIEk7CisgIH0KKworcHJpdmF0ZToKKyAgaW50KiBJOworfTsKKworYm9vbCBnZXRf dXJsIChBICopOworCitjbGFzcyBNIHsKKworIHB1YmxpYzoKK19fYXR0cmlidXRlX18gKChhbHdh eXNfaW5saW5lKSkgIGludCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBBIGRldGFpbHNfc3RyOwor ICAgIGlmICghZ2V0X3VybCAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAgaW5jciAo KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgICB9CisKKyAgICAqYyA9IGdldF90aW1lICgpOwor ICAgIHJldHVybiAtMTsKKyAgfQorCisgIHZvaWQgZG9fc3RoKCk7CisgIHZvaWQgZG9fc3RoMigp OworICAgCisgIHZvaWQgUCAoaW50NjQgdCkKKyAgICB7CisgICAgICBpbnQgY2M7IC8qIHsgZGct Ym9ndXMgInVuaW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0g ICovIAorICAgICAgaWYgKEdldEMgKCZjYykgPj0gMCApCisgICAgICAgIHJldHVybjsKKyAgICAg IAorICAgICAgaWYgKHQgJiYgY2MgPD0gMCApICAvKiB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVk IiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICAgIHsKKyAgICAg ICAgICB0aGlzLT5kb19zdGgoKTsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg IGRvX3N0aDIoKTsKKyAgfQorfTsKKworTSogbTsgCit2b2lkIGZvbyhpbnQgeCkKK3sKKyAgbSA9 IG5ldyBNOworICBtLT5QKHgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv YXV0by1pbml0LXVuaW5pdC1wcmVkLTFfYi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1p bml0LXVuaW5pdC1wcmVkLTFfYi5DCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uNmI2YmRhZWQ3MWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTFfYi5DCkBAIC0wLDAgKzEsNjMgQEAKKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2 NDsKK3ZvaWQgaW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQgKGludCk7CitpbnQgIGdldF90aW1lICgp OworCitjbGFzcyBBIAoreworcHVibGljOgorICBBICgpOworICB+QSAoKSB7CisgICAgaWYgKEkp IGRlbGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsKK307CisKK2Jvb2wgZ2V0X3Vy bCAoQSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CitfX2F0dHJpYnV0ZV9fICgoYWx3YXlz X2lubGluZSkpICBpbnQgR2V0QyAoaW50ICpjKSAgeworCisgICAgQSBkZXRhaWxzX3N0cjsKKyAg ICBpZiAoIWdldF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAgIGluY3IgKCk7 CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorCisgICAgKmMgPSBnZXRfdGltZSAoKTsKKyAg ICByZXR1cm4gLTE7CisgIH0KKworICB2b2lkIGRvX3N0aCgpOworICB2b2lkIGRvX3N0aDIoKTsK KyAgIAorICB2b2lkIFAgKGludDY0IHQpCisgICAgeworICAgICAgaW50IGNjOyAvKiB7IGRnLW1l c3NhZ2UgIm5vdGU6ICdjYycgd2FzIGRlY2xhcmVkIGhlcmUiIH0gKi8KKyAgICAgIGlmIChHZXRD ICgmY2MpIDw9IDAgKSAvKiByZXR1cm4gZmxhZyBjaGVja2VkIHdyb25nbHkgKi8KKyAgICAgICAg cmV0dXJuOworICAgICAgCisgICAgICBpZiAodCAmJiBjYyA8PSAwICkgIC8qIHsgZGctd2Fybmlu ZyAidW5pbml0aWFsaXplZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLwor ICAgICAgICB7CisgICAgICAgICAgdGhpcy0+ZG9fc3RoKCk7CisgICAgICAgICAgcmV0dXJuOwor ICAgICAgICB9CisKKyAgICBkb19zdGgyKCk7CisgIH0KK307CisKK00qIG07IAordm9pZCBmb28o aW50IHgpCit7CisgIG0gPSBuZXcgTTsKKyAgbS0+UCh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2EuQyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2EuQwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmZjMThjYjFlN2M5MQotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0yX2EuQwpAQCAtMCwwICsx LDYyIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItV3VuaW5p dGlhbGl6ZWQgLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKwordHlwZWRl ZiBsb25nIGxvbmcgaW50NjQ7Cit2b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQpOwor aW50ICBnZXRfdGltZSAoKTsKKworY2xhc3MgQSAKK3sKK3B1YmxpYzoKKyAgQSAoKTsKKyAgfkEg KCkgeworICAgIGlmIChJKSBkZWxldGUgSTsKKyAgfQorCitwcml2YXRlOgorICBpbnQqIEk7Cit9 OworCitib29sIGdldF91cmwgKEEgKik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorX19hdHRy aWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKSAgYm9vbCBHZXRDIChpbnQgKmMpICB7CisKKyAgICBB IGRldGFpbHNfc3RyOworICAgIGlmIChnZXRfdXJsICgmZGV0YWlsc19zdHIpKQorICAgICAgewor ICAgICAgICAqYyA9IGdldF90aW1lICgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0K KworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHZvaWQgZG9fc3RoKCk7CisgIHZvaWQgZG9f c3RoMigpOworICAgCisgIHZvaWQgUCAoaW50NjQgdCkKKyAgICB7CisgICAgICBpbnQgY2M7IAor ICAgICAgaWYgKCFHZXRDICgmY2MpKSAvKiByZXR1cm4gZmxhZyBjaGVja2VkIHByb3Blcmx5ICov CisgICAgICAgIHJldHVybjsKKyAgICAgIAorICAgICAgaWYgKGNjIDw9IDApICAvKiB7IGRnLWJv Z3VzICJ1bmluaXRpYWxpemVkIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICov CisgICAgICAgIHsKKyAgICAgICAgICB0aGlzLT5kb19zdGgoKTsKKyAgICAgICAgICByZXR1cm47 CisgICAgICAgIH0KKworICAgIGRvX3N0aDIoKTsKKyAgfQorfTsKKworTSogbTsgCit2b2lkIGZv byhpbnQgeCkKK3sKKyAgbSA9IG5ldyBNOworICBtLT5QKHgpOworfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYi5DIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYi5DCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTg1YTM2ZjE2ZmZmCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLTJfYi5DCkBAIC0wLDAg KzEsNjIgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XdW5p bml0aWFsaXplZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBl ZGVmIGxvbmcgbG9uZyBpbnQ2NDsKK3ZvaWQgaW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQgKGludCk7 CitpbnQgIGdldF90aW1lICgpOworCitjbGFzcyBBIAoreworcHVibGljOgorICBBICgpOworICB+ QSAoKSB7CisgICAgaWYgKEkpIGRlbGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsK K307CisKK2Jvb2wgZ2V0X3VybCAoQSAqKTsKKworY2xhc3MgTSB7CisKKyBwdWJsaWM6CitfX2F0 dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpICBib29sIEdldEMgKGludCAqYykgIHsKKworICAg IEEgZGV0YWlsc19zdHI7CisgICAgaWYgKGdldF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7 CisgICAgICAgICpjID0gZ2V0X3RpbWUgKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg fQorCisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdm9pZCBkb19zdGgoKTsKKyAgdm9pZCBk b19zdGgyKCk7CisgICAKKyAgdm9pZCBQIChpbnQ2NCB0KQorICAgIHsKKyAgICAgIGludCBjYzsg LyogeyBkZy1tZXNzYWdlICJub3RlOiAnY2MnIHdhcyBkZWNsYXJlZCBoZXJlIiB9ICovCisgICAg ICBpZiAoR2V0QyAoJmNjKSkgLyogcmV0dXJuIGZsYWcgY2hlY2tlZCB3cm9uZ2x5ICovCisgICAg ICAgIHJldHVybjsKKyAgICAgIAorICAgICAgaWYgKGNjIDw9IDApICAvKiB7IGRnLXdhcm5pbmcg InVuaW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAg ICAgICAgeworICAgICAgICAgIHRoaXMtPmRvX3N0aCgpOworICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgfQorCisgICAgZG9fc3RoMigpOworICB9Cit9OworCitNKiBtOyAKK3ZvaWQgZm9vKGlu dCB4KQoreworICBtID0gbmV3IE07CisgIG0tPlAoeCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19hLkMgYi9nY2MvdGVzdHN1aXRl L2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19hLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4wOWVkNjkyMTUzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtM19hLkMKQEAgLTAsMCArMSw3 NyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRp YWxpemVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKKy8qIE11bHRp cGxlIGluaXRpYWxpemF0aW9uIHBhdGhzLiAgKi8KKwordHlwZWRlZiBsb25nIGxvbmcgaW50NjQ7 Cit2b2lkIGluY3IgKCk7Citib29sIGlzX3ZhbGlkIChpbnQpOworaW50ICBnZXRfdGltZSAoKTsK KworY2xhc3MgQQoreworcHVibGljOgorICBBICgpOworICB+QSAoKSB7CisgICAgaWYgKEkpIGRl bGV0ZSBJOworICB9CisKK3ByaXZhdGU6CisgIGludCogSTsKK307CisKK2Jvb2wgZ2V0X3VybCAo QSAqKTsKK2Jvb2wgZ2V0X3VybDIgKEEgKik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorIF9f YXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKyBib29sIEdldEMgKGludCAqYykgIHsKKwor ICAgIEEgZGV0YWlsc19zdHI7CisgICAgLyogSW50aWFsaXphdGlvbiBwYXRoIDEgICovCisgICAg aWYgKGdldF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAgICpjID0gZ2V0X3Rp bWUgKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgLyogaW5zZXJ0IGR0 b3IgY2FsbHMgKGlubGluZWQpIGludG8gZm9sbG93aW5nIHJldHVybiBwYXRocyAgKi8KKyAgICBB IHRtcF9zdHI7CisKKyAgICAvKiBJbnRpYWxpenRpb24gcGF0aCAyICAqLworICAgIGlmIChnZXRf dXJsMiAoJmRldGFpbHNfc3RyKSkKKyAgICAgIHsKKyAgICAgICAgKmMgPSBnZXRfdGltZSAoKTsK KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7CisgIH0K KworICB2b2lkIGRvX3N0aCgpOworICB2b2lkIGRvX3N0aDIoKTsKKworICB2b2lkIFAgKGludDY0 IHQpCisgICAgeworICAgICAgaW50IGNjOworICAgICAgaWYgKCFHZXRDICgmY2MpKSAvKiByZXR1 cm4gZmxhZyBjaGVja2VkIHByb3Blcmx5ICovCisgICAgICAgIHJldHVybjsKKworICAgICAgaWYg KGNjIDw9IDApICAgLyogeyBkZy1ib2d1cyAidW5pbml0aWFsaXplZCIgInVuaW5pdGlhbGl6ZWQg dmFyaWFibGUgd2FybmluZyIgfSAqLworICAgICAgICB7CisgICAgICAgICAgdGhpcy0+ZG9fc3Ro KCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICBkb19zdGgyKCk7CisgIH0K K307CisKK00qIG07Cit2b2lkIHRlc3QoaW50IHgpCit7CisgIG0gPSBuZXcgTTsKKyAgbS0+UCh4 KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQt cHJlZC0zX2IuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC0z X2IuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhlN2I4NTQxNzI1 ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5pdC11bmlu aXQtcHJlZC0zX2IuQwpAQCAtMCwwICsxLDg3IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItV3VuaW5pdGlhbGl6ZWQgLU8yIC1mdHJpdmlhbC1hdXRvLXZhci1p bml0PXplcm8iIH0gKi8KKworLyogTXVsdGlwbGUgaW5pdGlhbGl6YXRpb24gcGF0aHMuICAqLwor Cit0eXBlZGVmIGxvbmcgbG9uZyBpbnQ2NDsKK3ZvaWQgaW5jciAoKTsKK2Jvb2wgaXNfdmFsaWQg KGludCk7CitpbnQgIGdldF90aW1lICgpOworCitjbGFzcyBBCit7CitwdWJsaWM6CisgIEEgKCk7 CisgIH5BICgpIHsKKyAgICBpZiAoSSkgZGVsZXRlIEk7CisgIH0KKworcHJpdmF0ZToKKyAgaW50 KiBJOworfTsKKworYm9vbCBnZXRfdXJsIChBICopOworYm9vbCBnZXRfdXJsMiAoQSAqKTsKK2Jv b2wgZ2V0X3VybDMgKEEgKik7CisKK2NsYXNzIE0geworCisgcHVibGljOgorIF9fYXR0cmlidXRl X18gKChhbHdheXNfaW5saW5lKSkKKyBib29sIEdldEMgKGludCAqYykgIHsKKworICAgIEEgZGV0 YWlsc19zdHI7CisKKyAgICAvKiBJbml0aWFsaXphdGlvbiBwYXRoIDEgICovCisgICAgaWYgKGdl dF91cmwgKCZkZXRhaWxzX3N0cikpCisgICAgICB7CisgICAgICAgICpjID0gZ2V0X3RpbWUgKCk7 CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorCisgICAgLyogRGVzdHJ1Y3RvciBjYWxs IGJlZm9yZSByZXR1cm4qLworICAgIEEgdG1wX3N0cjsKKworICAgIC8qIEluaXRpYWxpemF0aW9u IHBhdGggMiAgKi8KKyAgICBpZiAoZ2V0X3VybDIgKCZkZXRhaWxzX3N0cikpCisgICAgICB7Cisg ICAgICAgICpjID0gZ2V0X3RpbWUgKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQor CisgICAgLyogRmFpbCB0byBpbml0aWFsaXplIGluIHRoaXMgcGF0aCBidXQKKyAgICAgICBzdGls bCByZXR1cm5zIHRydWUgICovCisgICAgaWYgKGdldF91cmwyICgmZGV0YWlsc19zdHIpKQorICAg ICAgeworICAgICAgICAvKiBGYWlsIHRvIGluaXRpYWxpemUgKmMgICovCisgICAgICAgIHJldHVy biB0cnVlOworICAgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgdm9pZCBkb19z dGgoKTsKKyAgdm9pZCBkb19zdGgyKCk7CisKKyAgdm9pZCBQIChpbnQ2NCB0KQorICAgIHsKKyAg ICAgIGludCBjYzsKKyAgICAgIGlmICghR2V0QyAoJmNjKSkKKyAgICAgICAgcmV0dXJuOworCisg ICAgICBpZiAoY2MgPD0gMCkgICAvKiB7IGRnLXdhcm5pbmcgInVuaW5pdGlhbGl6ZWQiICJ1bmlu aXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICAgICAgeworICAgICAgICAgIHRo aXMtPmRvX3N0aCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgZG9fc3Ro MigpOworICB9Cit9OworCitNKiBtOwordm9pZCB0ZXN0KGludCB4KQoreworICBtID0gbmV3IE07 CisgIG0tPlAoeCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWlu aXQtdW5pbml0LXByZWQtNC5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5p dC1wcmVkLTQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM0ODc3 MGFlNDRkZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2F1dG8taW5p dC11bmluaXQtcHJlZC00LkMKQEAgLTAsMCArMSwxNiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PZyAtZnRyaXZpYWwtYXV0by12 YXItaW5pdD16ZXJvIiB9ICovCisKK2ludCBwb3AgKCk7CitpbnQgcG9wX2ZpcnN0X2J1Y2tldDsK KworaW50IG15X3BvcCAoKQoreworICBpbnQgb3V0OyAgLy8geyBkZy1ib2d1cyAidW5pbml0aWFs aXplZCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfQorCisgIHdoaWxlIChwb3Bf Zmlyc3RfYnVja2V0KQorICAgIGlmIChwb3BfZmlyc3RfYnVja2V0ICYmIChvdXQgPSBwb3AoKSkp CisgICAgICByZXR1cm4gb3V0OworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9hLmNjIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3AtMV9hLmNjCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjI5Njc3YTYwMjU5Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1pbml0LXVuaW5pdC1wcmVkLWxvb3At MV9hLmNjCkBAIC0wLDAgKzEsMjEgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1XdW5pbml0aWFsaXplZCAtTzIgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVy byIgfSAqLworCitleHRlcm4gaW50IGJhcigpOworaW50IGZvbyh2b2lkKQoreworIGZvciAoOzsp IHsKKyAgIGludCBlcnIgPSAoe2ludCBfZXJyOyAvKiAgeyBkZy1ib2d1cyAidW5pbml0aWFsaXpl ZCIgImZhbHNlIHdhcm5pbmciIH0gKi8KKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytp KSB7CisgICAgICAgX2VyciA9IDE3OworICAgICAgIF9lcnIgPSBiYXIoKTsKKyAgICAgfQorICAg ICBfZXJyOyAvKiAgeyBkZy1ib2d1cyAidW5pbml0aWFsaXplZCIgImZhbHNlIHdhcm5pbmciIH0g Ki8KKyAgIH0pOworCisgICBpZiAoZXJyID09IDApIHJldHVybiAxNzsgCisgfQorCisgcmV0dXJu IDE4OworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtbG9vcC0xX2IuY2MgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5p bml0LXByZWQtbG9vcC0xX2IuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wNGFiMzY0YWM4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5k Zy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2IuY2MKQEAgLTAsMCArMSwyMSBAQAorLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1P MiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiBpbnQgYmFyKCk7 CitpbnQgZm9vKGludCBuKQoreworIGZvciAoOzspIHsKKyAgIGludCBlcnIgPSAoe2ludCBfZXJy OyAKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICBfZXJyID0gMTc7 CisgICAgICAgX2VyciA9IGJhcigpOworICAgICB9CisgICAgIF9lcnI7IAorICAgfSk7IC8qIHsg ZGctd2FybmluZyAidW5pbml0aWFsaXplZCIgIndhcm4gb24gX2VyciIgfSAqLworCisgICBpZiAo ZXJyID09IDApIHJldHVybiAxNzsgCisgfQorCisgcmV0dXJuIDE4OworfQorCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2MuY2Mg Yi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXByZWQtbG9vcC0xX2MuY2MK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MmExODQ2YzZlMGIKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRvLWluaXQtdW5pbml0LXBy ZWQtbG9vcC0xX2MuY2MKQEAgLTAsMCArMSwyMyBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVkIC1PMiAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiBpbnQgYmFyKCk7CitpbnQgZm9vKGludCBuLCBpbnQg bSkKK3sKKyBmb3IgKDs7KSB7CisgICBpbnQgZXJyID0gKHtpbnQgX2VycjsgCisgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgIGlmIChtK2kgPiBuKQorICAgICAgICAg IGJyZWFrOworICAgICAgIF9lcnIgPSAxNzsKKyAgICAgICBfZXJyID0gYmFyKCk7CisgICAgIH0K KyAgICAgX2VycjsgCisgICB9KTsgCisKKyAgIGlmIChlcnIgPT0gMCkgcmV0dXJuIDE3OyB9KTsg LyogeyBkZy13YXJuaW5nICJ1bmluaXRpYWxpemVkIiAid2FybiBvbiBfZXJyIiB9ICovCisgfQor CisgcmV0dXJuIDE4OworfQorCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hdXRv LWluaXQtdW5pbml0LXByZWQtbG9vcF8xLmNjIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYXV0by1p bml0LXVuaW5pdC1wcmVkLWxvb3BfMS5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjYyOTY3N2E2MDI1OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL2F1dG8taW5pdC11bmluaXQtcHJlZC1sb29wXzEuY2MKQEAgLTAsMCArMSwyMSBAQAor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLVd1bmluaXRpYWxpemVk IC1PMiAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiBpbnQgYmFy KCk7CitpbnQgZm9vKHZvaWQpCit7CisgZm9yICg7OykgeworICAgaW50IGVyciA9ICh7aW50IF9l cnI7IC8qICB7IGRnLWJvZ3VzICJ1bmluaXRpYWxpemVkIiAiZmFsc2Ugd2FybmluZyIgfSAqLwor ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kpIHsKKyAgICAgICBfZXJyID0gMTc7Cisg ICAgICAgX2VyciA9IGJhcigpOworICAgICB9CisgICAgIF9lcnI7IC8qICB7IGRnLWJvZ3VzICJ1 bmluaXRpYWxpemVkIiAiZmFsc2Ugd2FybmluZyIgfSAqLworICAgfSk7CisKKyAgIGlmIChlcnIg PT0gMCkgcmV0dXJuIDE3OyAKKyB9CisKKyByZXR1cm4gMTg7Cit9CisKZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC1zcmEtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXNyYS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi44OGZkNjY2NzhmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9hdXRvLWluaXQtc3JhLTEuYwpAQCAtMCwwICsxLDI0IEBACisvKiBWZXJpZnkgdGhhdCBTUkEg dG90YWwgc2NhbGFyaXphdGlvbiB3aWxsIG5vdCBiZSBjb25mdXNlZCBieSBwYWRkaW5nCisgICBh bmQgYWxzbyBub3QgY29uZnVzZWQgYnkgYXV0byBpbml0aWFsaXphdGlvbi4gICovCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzEgLS1wYXJhbSBzcmEtbWF4LXNj YWxhcml6YXRpb24tc2l6ZS1Pc3BlZWQ9MTYgLWZkdW1wLXRyZWUtcmVsZWFzZV9zc2EgLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgUworeworICBpbnQgaTsKKyAg dW5zaWduZWQgc2hvcnQgZjE7CisgIGNoYXIgZjI7CisgIHVuc2lnbmVkIHNob3J0IGYzLCBmNDsK K307CisKKworaW50IGZvbyAoc3RydWN0IFMgKnApCit7CisgIHN0cnVjdCBTIGw7CisKKyAgbCA9 ICpwOworICBsLmkrKzsKKyAgKnAgPSBsOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAtdGltZXMgImw7IiAwICJyZWxlYXNlX3NzYSIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtc3JhLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC1zcmEtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZDI2MGY1YWU5MzRlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv YXV0by1pbml0LXNyYS0yLmMKQEAgLTAsMCArMSwyNCBAQAorLyogVmVyaWZ5IHRoYXQgU1JBIHRv dGFsIHNjYWxhcml6YXRpb24gd2lsbCBub3QgYmUgY29uZnVzZWQgYnkgcGFkZGluZworICAgYW5k IGFsc28gbm90IGNvbmZ1c2VkIGJ5IGF1dG8gaW5pdGlhbGl6YXRpb24uICAqLworLyogeyBkZy1k byBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8xIC0tcGFyYW0gc3JhLW1heC1zY2Fs YXJpemF0aW9uLXNpemUtT3NwZWVkPTE2IC1mZHVtcC10cmVlLXJlbGVhc2Vfc3NhIC1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8KKworc3RydWN0IFMKK3sKKyAgaW50IGk7Cisg IHVuc2lnbmVkIHNob3J0IGYxOworICBjaGFyIGYyOworICB1bnNpZ25lZCBzaG9ydCBmMywgZjQ7 Cit9OworCisKK2ludCBmb28gKHN0cnVjdCBTICpwKQoreworICBzdHJ1Y3QgUyBsOworCisgIGwg PSAqcDsKKyAgbC5pKys7CisgICpwID0gbDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJsOyIgMCAicmVsZWFzZV9zc2EiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy5kZy9hdXRvLWluaXQtdW5pbml0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmNiMGU3Y2M2MjU0NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMS5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIFNwdXJpb3Vz IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MsIGNhc2UgMS4KKyAgIFRha2VuIGZyb20g Y3BwZmlsZXMuYyAobWVyZ2VfaW5jbHVkZV9jaGFpbnMpICovCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgbGlzdAoreworICBzdHJ1Y3QgbGlzdCAqbmV4 dDsKKyAgaW50IGlkOworfTsKKworZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqKTsKKwordm9pZCBy ZW1vdmVfZHVwZXMgKHN0cnVjdCBsaXN0ICplbCkKK3sKKyAgc3RydWN0IGxpc3QgKnAsICpxLCAq cjsgIC8qIHsgZGctYm9ndXMgInIiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0g Ki8KKworICBmb3IgKHAgPSBlbDsgcDsgcCA9IHAtPm5leHQpCisgIHsKKyAgICBmb3IgKHEgPSBl bDsgcSAhPSBwOyBxID0gcS0+bmV4dCkKKyAgICAgIGlmIChxLT5pZCA9PSBwLT5pZCkKKyAgICAg IHsKKwlyLT5uZXh0ID0gcC0+bmV4dDsKKwlmcmVlIChwKTsKKwlwID0gcjsKKwlicmVhazsKKyAg ICAgIH0KKyAgICByID0gcDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTU5 ZTJkOTYzMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0xMS5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qIFBvc2l0aXZlIHRlc3QgZm9yIHVu aW5pdGlhbGl6ZWQgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16 ZXJvIiB9ICovCisKK2ludCBzaW5rOworCit2b2lkIGYxKGludCBwYXJtKQkvKiB7IGRnLWJvZ3Vz ICJ1bmluaXRpYWxpemVkIiAicGFyYW1ldGVyIiB9ICovCit7CisgIHNpbmsgPSBwYXJtOwkJLyog eyBkZy1ib2d1cyAidW5pbml0aWFsaXplZCIgInBhcmFtZXRlciIgfSAqLworfQorCit2b2lkIGYy KHZvaWQpCit7CisgIGludCB4OworICBzaW5rID0geDsJCS8qIHsgZGctd2FybmluZyAiaXMgdXNl ZCIgInVuY29uZGl0aW9uYWwiIH0gKi8KK30KKwordm9pZCBmMyhpbnQgcCkKK3sKKyAgaW50IHg7 CQkKKyAgaWYgKHApCisgICAgeCA9IHA7CisgIHNpbmsgPSB4OyAgICAgICAgICAgIC8qIHsgZGct d2FybmluZyAibWF5IGJlIHVzZWQiICJjb25kaXRpb25hbCIgfSAqLworfQorCit2b2lkIGY0KGlu dCBwKQoreworICBpbnQgeDsJCS8qIHsgZGctYm9ndXMgInVuaW5pdGlhbGl6ZWQiICJlYXN5IGlm IiB9ICovCisgIGlmIChwKQorICAgIHggPSAxOworICBlbHNlCisgICAgeCA9IDI7CisgIHNpbmsg PSB4OworfQorCit2b2lkIGY1KHZvaWQpCit7CisgIGludCB4LCBpOwkJLyogeyBkZy1ib2d1cyAi dW5pbml0aWFsaXplZCIgImVhc3kgbG9vcCIgfSAqLworICBmb3IgKGkgPSAwOyBpIDwgMTA7ICsr aSkKKyAgICB4ID0gMTsKKyAgc2luayA9IHg7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRv LWluaXQtdW5pbml0LTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5hY2ZmNzI1NzIyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9h dXRvLWluaXQtdW5pbml0LTEyLmMKQEAgLTAsMCArMSwxMiBAQAorLyogUFIgMjM0OTcgKi8KKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXpl ZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgX0NvbXBsZXgg ZmxvYXQgQzsKK0MgZm9vKCkKK3sKKyAgQyBmOworICBfX3JlYWxfXyBmID0gMDsKKyAgX19pbWFn X18gZiA9IDA7CisgIHJldHVybiBmOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu ZGcvYXV0by1pbml0LXVuaW5pdC0xMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0 LXVuaW5pdC0xMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODdk ZDhiNTg3ZTAwCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0xMy5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK3R5cGVkZWYgX0NvbXBsZXggZmxvYXQgQzsKK0MgZm9vKCkKK3sK KyAgQyBmOworICBfX2ltYWdfXyBmID0gMDsKKyAgcmV0dXJuIGY7CS8qIHsgZGctd2FybmluZyAi aXMgdXNlZCIgInVuY29uZGl0aW9uYWwiIH0gKi8KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjU5MjA1MmE5ZTlkMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMTQuYwpAQCAtMCwwICsxLDIwIEBACisvKiBQUiAyNDkzMSAqLwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxp emVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHAgeworICAg ICAgICBzaG9ydCB4LCB5OworfTsKKworc3RydWN0IHMgeworICAgICAgICBpbnQgaTsKKyAgICAg ICAgc3RydWN0IHAgcDsKK307CisKK3N0cnVjdCBzIGYoKQoreworICAgICAgICBzdHJ1Y3QgcyBz OworICAgICAgICBzLnAgPSAoc3RydWN0IHApe307CisgICAgICAgIHMuaSA9IChzLnAueCB8fCBz LnAueSk7CisgICAgICAgIHJldHVybiBzOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC0xNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1p bml0LXVuaW5pdC0xNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MTIxZjBjZmYyNzRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC0xNS5jCkBAIC0wLDAgKzEsMjYgQEAKKy8qIFBSIHRyZWUtb3B0aW1pemF0 aW9uLzE3NTA2CisgICBXZSBpc3N1ZSBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcg YXQgYSB3cm9uZyBsb2NhdGlvbiBhdAorICAgbGluZSAxMSwgd2hpY2ggaXMgdmVyeSBjb25mdXNp bmcuICBNYWtlIHN1cmUgd2UgcHJpbnQgb3V0IGEgbm90ZSB0bworICAgbWFrZSBpdCBsZXNzIGNv bmZ1c2luZy4gIChub3QgeGZhaWxlZCBhbHRlcm5hdGl2ZSkKKyAgIEJ1dCBpdCBpcyBvZiBjb3Vy c2Ugb2sgaWYgd2Ugd2FybiBpbiBiYXIgYWJvdXQgdW5pbml0aWFsaXplZCB1c2UKKyAgIG9mIGou ICAobm90IHhmYWlsZWQgYWx0ZXJuYXRpdmUpICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8xIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK2lubGluZSBpbnQKK2ZvbyAoaW50IGkpCit7CisgIGlmIChpKSAv KiB7IGRnLXdhcm5pbmcgInVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICAgIHJldHVybiAxOwor ICByZXR1cm4gMDsKK30KKwordm9pZCBiYXogKHZvaWQpOworCit2b2lkCitiYXIgKHZvaWQpCit7 CisgIGludCBqOyAvKiB7IGRnLW1lc3NhZ2UgIm5vdGU6ICdqJyB3YXMgZGVjbGFyZWQgaGVyZSIg IiIgfSAqLworICBmb3IgKDsgZm9vIChqKTsgKytqKSAgLyogeyBkZy13YXJuaW5nICInaicgaXMg dXNlZCB1bmluaXRpYWxpemVkIiAiIiB7IHhmYWlsICotKi0qIH0gfSAqLworICAgIGJheiAoKTsK K30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBlNGYzMzZmNzI2ZgotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTYuYwpAQCAtMCww ICsxLDIzIEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworaW50 IGZvbywgYmFyOworCitzdGF0aWMKK3ZvaWQgZGVjb2RlX3JlbG9jKGludCByZWxvYywgaW50ICpp c19hbHQpCit7CisgIGlmIChyZWxvYyA+PSAyMCkKKyAgICAgICppc19hbHQgPSAxOworICBlbHNl IGlmIChyZWxvYyA+PSAxMCkKKyAgICAgICppc19hbHQgPSAwOworfQorCit2b2lkIHRlc3RmdW5j KCkKK3sKKyAgaW50IGFsdF9yZWxvYzsKKworICBkZWNvZGVfcmVsb2MoZm9vLCAmYWx0X3JlbG9j KTsKKworICBpZiAoYWx0X3JlbG9jKSAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5p dGlhbGl6ZWQiIH0gKi8KKyAgICBiYXIgPSA0MjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjllZWM5NDQwYzc1ZQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMTcuYwpAQCAtMCwwICsxLDE1IEBACisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1 dG8tdmFyLWluaXQ9emVybyIgfSAqLworCit0eXBlZGVmIF9Db21wbGV4IGZsb2F0IEM7CitDIGZv byhpbnQgY29uZCkKK3sKKyAgQyBmOworICBfX2ltYWdfXyBmID0gMDsKKyAgaWYgKGNvbmQpCisg ICAgeworICAgICAgX19yZWFsX18gZiA9IDE7CisgICAgICByZXR1cm4gZjsKKyAgICB9CisgIHJl dHVybiBmOwkvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIiAidW5jb25kaXRpb25hbCIgfSAq LworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0x OC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDkyMjg0OGY2ZGM3Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOC5jCkBAIC0w LDAgKzEsMjQgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICAqLworLyogeyBkZy1vcHRpb25zICIt TyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitj aGFyICpmb28oaW50IGJhciwgY2hhciAqYmF6KQoreworICBjaGFyICp0bXA7CisKKyAgaWYgKGJh ciAmIDMpCisgICAgdG1wID0gYmF6OworCisgIHN3aXRjaCAoYmFyKSB7CisgIGNhc2UgMToKKyAg ICB0bXBbNV0gPSA3OyAgICAvKiB7IGRnLWJvZ3VzICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVk IiB9ICovCisgICAgYnJlYWs7CisgIGNhc2UgMjoKKyAgICB0bXBbMTFdID0gMTU7ICAvKiB7IGRn LWJvZ3VzICJtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9ICovCisgICAgYnJlYWs7CisgIGRl ZmF1bHQ6CisgICAgdG1wID0gMDsKKyAgICBicmVhazsKKyAgfQorCisgIHJldHVybiB0bXA7ICAg ICAgLyogeyBkZy1ib2d1cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzhkMjdlNGY5NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0xOS5jCkBAIC0wLDAgKzEsMjYg QEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0 aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLWZpbmxpbmUtc21hbGwtZnVuY3Rpb25zIiB7IHRhcmdldCBhdnItKi0q IH0gfSAqLworCitpbnQgYSwgbCwgbTsKK2Zsb2F0ICpiOworZmxvYXQgYywgZCwgZSwgZywgaDsK K3Vuc2lnbmVkIGNoYXIgaSwgazsKK3ZvaWQKK2ZuMSAoaW50IHAxLCBmbG9hdCAqZjEsIGZsb2F0 ICpmMiwgZmxvYXQgKmYzLCB1bnNpZ25lZCBjaGFyICpjMSwgZmxvYXQgKmY0LAorICAgICB1bnNp Z25lZCBjaGFyICpjMiwgZmxvYXQgKnAxMCkKK3sKKyAgaWYgKHAxICYgOCkKKyAgICBiWzNdID0g cDEwW2FdOworICAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiICIi IHsgdGFyZ2V0IHsgeyBub25waWMgfHwgcGllX2VuYWJsZWQgfSB8fCB7IGhwcGEqNjQqLSotKiAq LSotZGFyd2luKiB9IH0gfSAuLTEgfSAqLworfQorCit2b2lkCitmbjIgKCkKK3sKKyAgZmxvYXQg Km47CisgIGlmIChsICYgNikKKyAgICBuID0gJmMgKyBtOworICBmbjEgKGwsICZkLCAmZSwgJmcs ICZpLCAmaCwgJmssIG4pOworICAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1c2VkIHVuaW5pdGlh bGl6ZWQiICIiIHsgdGFyZ2V0IHsgISB7IHsgbm9ucGljIHx8IHBpZV9lbmFibGVkIH0gfHwgeyBo cHBhKjY0Ki0qLSogKi0qLWRhcndpbiogfSB9IH0gfSAuLTEgfSAqLworfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmRhMDNiZjhmNmQ5OAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMi5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qIFNwdXJp b3VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MsIGNhc2UgMi4KKyAgIFRha2VuIGZy b20gY3BwaGFzaC5jIChtYWNyb2V4cGFuZCkgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5p dD16ZXJvIiB9ICovCisKK3N0cnVjdCBkZWZpbml0aW9uCit7CisgIGludCBuYXJnczsKKyAgaW50 IHJlc3RfYXJnczsKK307CisKK3N0cnVjdCBjcHBfcmVhZGVyOworCitlbnVtIGNwcF90b2tlbgor eworICBDUFBfRU9GLCBDUFBfUE9QLCBDUFBfQ09NTUEsIENQUF9SUEFSRU4KK307CisKK2V4dGVy biBlbnVtIGNwcF90b2tlbiBtYWNhcmcgKHN0cnVjdCBjcHBfcmVhZGVyICosIGludCk7CisKK3Zv aWQKK21hY3JvZXhwYW5kIChzdHJ1Y3QgY3BwX3JlYWRlciAqcGZpbGUsIHN0cnVjdCBkZWZpbml0 aW9uICpkZWZuKQoreworICBpbnQgbmFyZ3MgPSBkZWZuLT5uYXJnczsKKworICBpZiAobmFyZ3Mg Pj0gMCkKKyAgICB7CisgICAgICBlbnVtIGNwcF90b2tlbiB0b2tlbjsgIC8qIHsgZGctYm9ndXMg InRva2VuIiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisgICAgICBpbnQg aSwgcmVzdF9hcmdzOworICAgICAgaSA9IDA7CisgICAgICByZXN0X2FyZ3MgPSAwOworICAgICAg ZG8KKwl7CisJICBpZiAocmVzdF9hcmdzKQorCSAgICBjb250aW51ZTsKKwkgIGlmIChpIDwgbmFy Z3MgfHwgKG5hcmdzID09IDAgJiYgaSA9PSAwKSkKKwkgICAgeworCSAgICAgIC8qIGlmIHdlIGFy ZSB3b3JraW5nIG9uIGxhc3QgYXJnIHdoaWNoIGFic29yYnMgcmVzdCBvZiBhcmdzLi4uICovCisJ ICAgICAgaWYgKGkgPT0gbmFyZ3MgLSAxICYmIGRlZm4tPnJlc3RfYXJncykKKwkJcmVzdF9hcmdz ID0gMTsKKwkgICAgICB0b2tlbiA9IG1hY2FyZyAocGZpbGUsIHJlc3RfYXJncyk7CisJICAgIH0K KwkgIGVsc2UKKwkgICAgdG9rZW4gPSBtYWNhcmcgKHBmaWxlLCAwKTsKKwkgIGlmICh0b2tlbiA9 PSBDUFBfRU9GIHx8IHRva2VuID09IENQUF9QT1ApCisJICAgIHJldHVybjsKKworCSAgaSsrOwor CX0KKyAgICAgIHdoaWxlICh0b2tlbiA9PSBDUFBfQ09NTUEpOworICAgIH0KK30KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmY1MzNjZTljNzBlNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjAuYwpAQCAtMCwwICsxLDE4IEBACisv KiBTcHVyaW91cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLCBmcm9tIGdkYiAqLwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1XdW5pbml0aWFs aXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCitzdHJ1Y3Qgb3MgeyBzdHJ1 Y3QgbyAqbzsgfTsKK3N0cnVjdCBvIHsgc3RydWN0IG8gKm5leHQ7IHN0cnVjdCBvcyAqc2U7IH07 Cit2b2lkIGYoc3RydWN0IG8gKm8peworICBzdHJ1Y3Qgb3MgKnM7CisgIGlmKG8pIHMgPSBvLT5z ZTsKKyAgd2hpbGUobyAmJiBzID09IG8tPnNlKXsKKyAgICBzKys7IC8vIGhlcmUgYG8nIGlzIG5v bi16ZXJvIGFuZCB0aHVzIHMgaXMgaW5pdGlhbGl6ZWQKKyAgICBzID09IG8tPnNlICAvLyBgPycg aXMgZXNzZW50aWFsLCBgaWYnIGRvZXMgbm90IHRyaWdnZXIgdGhlIHdhcm5pbmcKKyAgICAgID8g KG8gPSBvLT5uZXh0LCBvID8gcyA9IG8tPnNlIDogMCkKKyAgICAgIDogMDsKKyAgfQorfQorCisK KwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjA0NGVhYjI3ODcwCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yMS5jCkBAIC0wLDAg KzEsMzMgQEAKKy8qIFBSNjk1MzcsIHNwdXJpb3VzIHdhcm5pbmcgYmVjYXVzZSBvZiBhIG1pc3Nl ZCBvcHRpbWl6YXRpb24uICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLWZuby1zaG9ydC1lbnVtcyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyIgfSAqLworCitlbnVtIGNsbnRfc3RhdCB7CisgUlBDX1NVQ0NFU1M9MCwK KyBSUENfQ0FOVEVOQ09ERUFSR1M9MSwKK307CisgCitpbnQgZG9feXBjYWxsX3RyICgpOworIAor c3RhdGljIGludAoreXBfbWFzdGVyIChjaGFyICoqb3V0bmFtZSkKK3sKKyAgLy8gUmVwbGFjaW5n IGVudW0gY2xudF9zdGF0IHdpdGggaW50IGF2b2lkcyB0aGUgd2FybmluZy4KKyAgZW51bSBjbG50 X3N0YXQgcmVzdWx0OworICByZXN1bHQgPSBkb195cGNhbGxfdHIgKCk7CisgIGlmIChyZXN1bHQg IT0gMCkKKyAgICByZXR1cm4gcmVzdWx0OworICAqb3V0bmFtZSA9IF9fYnVpbHRpbl9zdHJkdXAg KCJmb28iKTsKKyAgcmV0dXJuIDA7Cit9CisgCitpbnQKK3lwX3VwZGF0ZSAodm9pZCkKK3sKKyAg Y2hhciAqbWFzdGVyOworICBpbnQgcjsKKyAgaWYgKChyID0geXBfbWFzdGVyICgmbWFzdGVyKSkg IT0gMCkKKyAgICByZXR1cm4gcjsKKyAgX19idWlsdGluX2ZyZWUgKG1hc3Rlcik7IC8qIHsgZGct Ym9ndXMgInVuaW5pdGlhbGl6ZWQiIH0gKi8KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4wMjAwZDczNGEyYzMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTIyLmMKQEAgLTAsMCArMSw2OSBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1XdW5pbml0aWFsaXplZCAt LXBhcmFtIHZlY3QtbWF4LXZlcnNpb24tZm9yLWFsaWFzLWNoZWNrcz0yMCAtZnRyaXZpYWwtYXV0 by12YXItaW5pdD16ZXJvIiB9ICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2RlZmluZSBB MSAgMjg5NiAvKiAoMS9zcXJ0KDIpKTw8MTIgKi8KKyNkZWZpbmUgQTIgIDIyMTcKKyNkZWZpbmUg QTMgIDM3ODQKKyNkZWZpbmUgQTQgLTUzNTIKKworI2RlZmluZSBJRENUX1RSQU5TRk9STShkZXN0 LHMwLHMxLHMyLHMzLHM0LHM1LHM2LHM3LGQwLGQxLGQyLGQzLGQ0LGQ1LGQ2LGQ3LG11bmdlLHNy Yykge1wKKyAgICBjb25zdCBpbnQgYTAgPSAoc3JjKVtzMF0gKyAoc3JjKVtzNF07IFwKKyAgICBj b25zdCBpbnQgYTEgPSAoc3JjKVtzMF0gLSAoc3JjKVtzNF07IFwKKyAgICBjb25zdCBpbnQgYTIg PSAoc3JjKVtzMl0gKyAoc3JjKVtzNl07IFwKKyAgICBjb25zdCBpbnQgYTMgPSAoQTEqKChzcmMp W3MyXSAtIChzcmMpW3M2XSkpID4+IDExOyBcCisgICAgY29uc3QgaW50IGE0ID0gKHNyYylbczVd ICsgKHNyYylbczNdOyBcCisgICAgY29uc3QgaW50IGE1ID0gKHNyYylbczVdIC0gKHNyYylbczNd OyBcCisgICAgY29uc3QgaW50IGE2ID0gKHNyYylbczFdICsgKHNyYylbczddOyBcCisgICAgY29u c3QgaW50IGE3ID0gKHNyYylbczFdIC0gKHNyYylbczddOyBcCisgICAgY29uc3QgaW50IGIwID0g YTQgKyBhNjsgXAorICAgIGNvbnN0IGludCBiMSA9IChBMyooYTUgKyBhNykpID4+IDExOyBcCisg ICAgY29uc3QgaW50IGIyID0gKChBNCphNSkgPj4gMTEpIC0gYjAgKyBiMTsgXAorICAgIGNvbnN0 IGludCBiMyA9IChBMSooYTYgLSBhNCkgPj4gMTEpIC0gYjI7IFwKKyAgICBjb25zdCBpbnQgYjQg PSAoKEEyKmE3KSA+PiAxMSkgKyBiMyAtIGIxOyBcCisgICAgKGRlc3QpW2QwXSA9IG11bmdlKGEw K2EyICAgK2IwKTsgXAorICAgIChkZXN0KVtkMV0gPSBtdW5nZShhMSthMy1hMitiMik7IFwKKyAg ICAoZGVzdClbZDJdID0gbXVuZ2UoYTEtYTMrYTIrYjMpOyBcCisgICAgKGRlc3QpW2QzXSA9IG11 bmdlKGEwLWEyICAgLWI0KTsgXAorICAgIChkZXN0KVtkNF0gPSBtdW5nZShhMC1hMiAgICtiNCk7 IFwKKyAgICAoZGVzdClbZDVdID0gbXVuZ2UoYTEtYTMrYTItYjMpOyBcCisgICAgKGRlc3QpW2Q2 XSA9IG11bmdlKGExK2EzLWEyLWIyKTsgXAorICAgIChkZXN0KVtkN10gPSBtdW5nZShhMCthMiAg IC1iMCk7IFwKK30KKworI2RlZmluZSBNVU5HRV9OT05FKHgpICh4KQorI2RlZmluZSBJRENUX0NP TChkZXN0LHNyYykgSURDVF9UUkFOU0ZPUk0oZGVzdCwwLDgsMTYsMjQsMzIsNDAsNDgsNTYsMCw4 LDE2LDI0LDMyLDQwLDQ4LDU2LE1VTkdFX05PTkUsc3JjKQorCisjZGVmaW5lIE1VTkdFX1JPVyh4 KSAoKCh4KSArIDB4N0YpPj44KQorI2RlZmluZSBJRENUX1JPVyhkZXN0LHNyYykgSURDVF9UUkFO U0ZPUk0oZGVzdCwwLDEsMiwzLDQsNSw2LDcsMCwxLDIsMyw0LDUsNiw3LE1VTkdFX1JPVyxzcmMp CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBiaW5rX2lkY3RfY29sKGludCAqZGVzdCwgY29uc3QgaW50 MzJfdCAqc3JjKQoreworICAgIGlmICgoc3JjWzhdfHNyY1sxNl18c3JjWzI0XXxzcmNbMzJdfHNy Y1s0MF18c3JjWzQ4XXxzcmNbNTZdKT09MCkgeworICAgICAgICBkZXN0WzBdICA9CisgICAgICAg IGRlc3RbOF0gID0KKyAgICAgICAgZGVzdFsxNl0gPQorICAgICAgICBkZXN0WzI0XSA9CisgICAg ICAgIGRlc3RbMzJdID0KKyAgICAgICAgZGVzdFs0MF0gPQorICAgICAgICBkZXN0WzQ4XSA9Cisg ICAgICAgIGRlc3RbNTZdID0gc3JjWzBdOworICAgIH0gZWxzZSB7CisgICAgICAgIElEQ1RfQ09M KGRlc3QsIHNyYyk7CisgICAgfQorfQorCitpbnQgYmlua19pZGN0X3B1dF9jKHVpbnQ4X3QgKmRl c3QsIGludCBsaW5lc2l6ZSwgaW50MzJfdCAqYmxvY2spCit7CisgICAgaW50IGk7CisgICAgaW50 IHRlbXBbNjRdOworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisgICAgICAgIGJpbmtfaWRj dF9jb2woJnRlbXBbaV0sICZibG9ja1tpXSk7CisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykg eworICAgICAgICBJRENUX1JPVyggKCZkZXN0W2kqbGluZXNpemVdKSwgKCZ0ZW1wWzgqaV0pICk7 CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8t aW5pdC11bmluaXQtMjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmYxZjc4Mzk3M2FlNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMjMuYwpAQCAtMCwwICsxLDI3IEBACisvKiBQUiB0cmVlLW9wdGltaXph dGlvbi83ODQ1NSAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1XdW5pbml0aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisK K2ludCBpajsKKwordm9pZAorcWwgKHZvaWQpCit7CisgIGludCBtNSA9IDA7CisKKyAgZm9yICg7 OykKKyAgeworICAgIGlmICgwKQorICAgICAgZm9yICg7OykKKyAgICAgIHsKKyAgICAgICAgaW50 ICpnbzsKKyAgICAgICAgaW50ICp0NCA9IGdvOyAvKiB7IGRnLXdhcm5pbmcgImlzIHVzZWQgdW5p bml0aWFsaXplZCIgfSAqLworCisgbDE6CisgICAgICAgICp0NCA9ICgqdDQgIT0gMCkgPyAwIDog MjsgLyogeyBkZy13YXJuaW5nICJpcyB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KKyAgICAgIH0K KworICAgIGlmIChpaiAhPSAwKQorICAgICAgZ290byBsMTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMWY2NzQwYzEyM2FkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0yNC5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XbWF5YmUtdW5pbml0aWFs aXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2ludCBmb28gKGludCB4 KQoreworICBpbnQgeTsKKyAgaWYgKHgpCisgICAgcmV0dXJuICooJnkgKyAxKTsgLyogeyBkZy1i b2d1cyAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYzNmQ5NWY5ZDI3OQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjUuYwpAQCAtMCwwICsxLDIz IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV21heWJl LXVuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitleHRl cm4gdW5zaWduZWQgYmFyICh2b2lkKTsKK2V4dGVybiB2b2lkIHF1dXggKHZvaWQpOworCit1bnNp Z25lZCBmb28gKHVuc2lnbmVkIHYpCit7CisgIHVuc2lnbmVkIHU7CisgIGlmICh2ICE9IDEpCisg ICAgdSA9IGJhciAoKTsKKworICAvLyBQcmV2ZW50IHRoZSAiZG9tIiBwYXNzIGZyb20gY2hhbmdp bmcgdGhlIENGRyBsYXlvdXQgYmFzZWQgb24gdGhlIGluZmVyZW5jZQorICAvLyAnaWYgKHYgIT0g MSkgaXMgZmFsc2UgdGhlbiAodiAhPSAyKSBpcyB0cnVlJy4gIChOb3cgaXQgd291bGQgaGF2ZSB0 bworICAvLyBkdXBsaWNhdGUgdGhlIGxvb3AgaW4gb3JkZXIgdG8gZG8gc28sIHdoaWNoIGlzIGRl ZW1lZCBleHBlbnNpdmUuKQorICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisgICAgcXV1 eCAoKTsKKworICBpZiAodiAhPSAyKQorICAgIHJldHVybiB1OyAgICAgICAvKiB7IGRnLXdhcm5p bmcgIm1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0gKi8KKworICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFlOTdlY2ZhNzFlMQotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMjYuYwpAQCAtMCwwICsxLDIz IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV21heWJl LXVuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCitleHRl cm4gdW5zaWduZWQgYmFyICh2b2lkKTsKK2V4dGVybiB2b2lkIHF1dXggKHZvaWQpOworCit1bnNp Z25lZCBmb28gKHVuc2lnbmVkIHYpCit7CisgIHVuc2lnbmVkIHU7CisgIGlmICh2ICE9IDEwMCkK KyAgICB1ID0gYmFyICgpOworCisgIC8vIFByZXZlbnQgdGhlICJkb20iIHBhc3MgZnJvbSBjaGFu Z2luZyB0aGUgQ0ZHIGxheW91dCBiYXNlZCBvbiB0aGUgaW5mZXJlbmNlCisgIC8vICdpZiAodiAh PSAxMDApIGlzIGZhbHNlIHRoZW4gKHYgPCAxMDUpIGlzIHRydWUnLiAgKE5vdyBpdCB3b3VsZCBo YXZlIHRvCisgIC8vIGR1cGxpY2F0ZSB0aGUgbG9vcCBpbiBvcmRlciB0byBkbyBzbywgd2hpY2gg aXMgZGVlbWVkIGV4cGVuc2l2ZS4pCisgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAg ICBxdXV4ICgpOworCisgIGlmICh2IDwgMTA1KSAvKiB2ID09IDEwMCBmYWxscyBpbnRvIHRoaXMg cmFuZ2UuICAqLworICAgIHJldHVybiB1OyAgICAgICAvKiB7IGRnLXdhcm5pbmcgIm1heSBiZSB1 c2VkIHVuaW5pdGlhbGl6ZWQiIH0gICovCisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTMuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL2F1dG8taW5pdC11bmluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uN2ZmMjI4NTAxZjhkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zLmMKQEAgLTAsMCArMSwzMyBAQAorLyogU3B1cmlv dXMgdW5pbml0IHZhcmlhYmxlIHdhcm5pbmdzLCBjYXNlIDMuCisgICBJbnNwaXJlZCBieSBjcHBl eHAuYyAocGFyc2VfY2hhcmNvbnN0KSAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8gLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXpl cm8iIH0gKi8KKworZXh0ZXJuIHZvaWQgZXJyb3IgKGNoYXIgKik7CisKK2ludAorcGFyc2VfY2hh cmNvbnN0IChjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kKQoreworICBpbnQgYzsg LyogeyBkZy1ib2d1cyAiYyIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLwor ICBpbnQgbmNoYXJzLCByZXR2YWw7CisKKyAgbmNoYXJzID0gMDsKKyAgcmV0dmFsID0gMDsKKyAg d2hpbGUgKHN0YXJ0IDwgZW5kKQorICAgIHsKKyAgICAgIGMgPSAqc3RhcnQrKzsKKyAgICAgIGlm IChjID09ICdcJycpCisJYnJlYWs7CisgICAgICBuY2hhcnMrKzsKKyAgICAgIHJldHZhbCArPSBj OworICAgICAgcmV0dmFsIDw8PSA4OworICAgIH0KKworICBpZiAobmNoYXJzID09IDApCisgICAg cmV0dXJuIDA7CisKKyAgaWYgKGMgIT0gJ1wnJykKKyAgICBlcnJvciAoIm1hbGZvcm1lZCBjaGFy YWN0ZXIgY29uc3RhbnQiKTsKKworICByZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uOThmYzM2NmM4NzFmCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC0zNC5jCkBAIC0wLDAgKzEsNTggQEAKKy8qIFBSIG1p ZGRsZS1lbmQvMTAxMzggLSB3YXJuIGZvciB1bmluaXRpYWxpemVkIGFycmF5cyBwYXNzZWQgYXMg Y29uc3QqCisgICBhcmd1bWVudHMKKyAgIFZlcmlmeSB0aGF0IHBhc3NpbmcgcG9pbnRlcnMgdG8g dW5pbml0aWFsaXplZCBvYmplY3RzIHRvIGFyZ3VtZW50cworICAgdG8gZnVuY3Rpb25zIGRlY2xh cmVkIHdpdGggYXR0cmlidXRlIGFjY2VzcyBpcyBkaWFnbm9zZWQgd2hlcmUgZXhwZWN0ZWQuCisg ICB7IGRnLWRvIGNvbXBpbGUgfQorICAgeyBkZy1vcHRpb25zICItTyAtV2FsbCAtZnRyaXZpYWwt YXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKKyNkZWZpbmUgUlcoLi4uKSBfX2F0dHJpYnV0ZV9f ICgoYWNjZXNzIChyZWFkX3dyaXRlLCBfX1ZBX0FSR1NfXykpKQorCitSVyAoMSkgUlcgKDMpIHZv aWQKK2Y0cGkgKGludCosIGludCosIGludCosIGludCopOyAgICAvLyB7IGRnLW1lc3NhZ2UgImlu IGEgY2FsbCB0byAnZjRwaScgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgJ2FjY2VzcyBcXFwocmVh ZF93cml0ZSwgXFsxM1xdXFxcKSciIH0KKworCit2b2lkIG5vd2Fybl9zY2FsYXIgKHZvaWQpCit7 CisgIGludCBpMSA9IDAsIGkyLCBpMyA9IDEsIGk0OworICBmNHBpICgmaTEsICZpMiwgJmkzLCAm aTQpOworfQorCit2b2lkIHdhcm5fc2NhbGFyXzEgKHZvaWQpCit7CisgIGludCBpMTsgICAgICAg ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICJkZWNsYXJlZCBoZXJlIiB9CisgIGlu dCBpMiwgaTMgPSAxLCBpNDsKKworICBmNHBpICgmaTEsICZpMiwgJmkzLCAmaTQpOyAgICAgIC8v IHsgZGctd2FybmluZyAiJ2kxJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9CisKK3Zv aWQgd2Fybl9zY2FsYXJfMiAodm9pZCkKK3sKKyAgaW50IGoxID0gMCwgajIsIGo0OworICBpbnQg ajM7CisKKyAgZjRwaSAoJmoxLCAmajIsICZqMywgJmo0KTsgICAgICAvLyB7IGRnLXdhcm5pbmcg IidqMycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCisKK3ZvaWQgbm93YXJuX2Fy cmF5X2luaXQgKHZvaWQpCit7CisgIGludCBhMVs0XSA9IHsgMCB9LCBhMls1XSwgYTNbNl0gPSB7 IDAgfSwgYTRbN107CisKKyAgZjRwaSAoYTEsIGEyLCBhMywgYTQpOworfQorCit2b2lkIHdhcm5f YXJyYXlfMSAodm9pZCkKK3sKKyAgaW50IGExWzRdOyAgICAgICAgICAgICAgICAgIC8vIHsgZGct bWVzc2FnZSAiJ2ExJyBkZWNsYXJlZCBoZXJlIiB9CisgIGludCBhMls1XSwgYTNbNl0gPSB7IDAg fSwgYTRbN107CisKKyAgZjRwaSAoYTEsIGEyLCBhMywgYTQpOyAgICAgIC8vIHsgZGctd2Fybmlu ZyAiJ2ExJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9CisKK3ZvaWQgd2Fybl9hcnJh eV8yICh2b2lkKQoreworICBpbnQgYTFbNF0gPSB7IDAgfSwgYTJbNV0sIGE0WzddOworICBpbnQg YTNbNl07ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICInYTMnIGRlY2xhcmVkIGhl cmUiIH0KKworICBmNHBpIChhMSwgYTIsIGEzLCBhNCk7ICAgICAgLy8geyBkZy13YXJuaW5nICIn YTMnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQiIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMzYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjY0Mzc3ZDM4MGVlOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL2F1dG8taW5pdC11bmluaXQtMzYuYwpAQCAtMCwwICsxLDIzOCBAQAorLyogUFIgbWlkZGxl LWVuZC8xMDEzOCAtIHdhcm4gZm9yIHVuaW5pdGlhbGl6ZWQgYXJyYXlzIHBhc3NlZCBhcyBjb25z dCoKKyAgIGFyZ3VtZW50cworICAgVmVyaWZ5IHRoYXQgcGFzc2luZyBwb2ludGVycyB0byB1bmlu aXRpYWxpemVkIG9iamVjdHMgdG8gY29uc3QKKyAgIGFyZ3VtZW50cyB0byBidWlsdC1pbnMgaXMg ZGlhZ25vc2VkIHdoZXJlIGV4cGVjdGVkLgorICAgeyBkZy1kbyBjb21waWxlIH0KKyAgIHsgZGct b3B0aW9ucyAiLU8gLVdhbGwgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfQorICAgeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgYWxsb2NhIH0gKi8KKwordHlwZWRlZiBfX1NJWkVf VFlQRV9fIHNpemVfdDsKKwordm9pZCogYWxsb2NhIChzaXplX3QpOwordm9pZCogbWFsbG9jIChz aXplX3QpOwordm9pZCogcmVhbGxvYyAodm9pZCosIHNpemVfdCk7CisKK3ZvaWQqIG1lbWNweSAo dm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3QpOworY2hhciogc3RyY3B5IChjaGFyKiwgY29uc3Qg Y2hhciopOworc2l6ZV90IHN0cmxlbiAoY29uc3QgY2hhciopOworCit2b2lkIHNpbmsgKHZvaWQq KTsKKwordm9pZCBub3dhcm5fYXJyYXlfbWVtY3B5ICh2b2lkICpkLCB1bnNpZ25lZCBuKQorewor ICBpbnQgYVsyXTsKKyAgLyogRGlhZ25vc2UgdGhpcz8gICovCisgIG1lbWNweSAoZCwgYSwgbiAv KiBOb24tY29uc3RhbnQgdG8gYXZvaWQgZm9sZGluZyBpbnRvIE1FTV9SRUYuICAqLyk7Cit9CisK K3ZvaWQgbm93YXJuX2FycmF5X3BsdXNfY3N0X21lbWNweSAodm9pZCAqZCwgdW5zaWduZWQgbikK K3sKKyAgaW50IGFbM107CisgIC8qIERpYWdub3NlIHRoaXM/ICAqLworICBtZW1jcHkgKGQsIGEg KyAxLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlfcGx1c192YXJfbWVtY3B5ICh2b2lkICpk LCB1bnNpZ25lZCBuLCBpbnQgaSkKK3sKKyAgaW50IGFbNF07CisgIC8qIERpYWdub3NlIHRoaXM/ ICAqLworICBtZW1jcHkgKGQsIGEgKyBpLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlfYXNz aWduX21lbWNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAgaW50IGFbM107CisgIGFbMV0g PSAzOworICBtZW1jcHkgKGQsIGEsIG4pOworfQorCit2b2lkIG5vd2Fybl9hcnJheV9pbml0X21l bWNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAgaW50IGFbNF0gPSB7IDAgfTsKKyAgbWVt Y3B5IChkLCBhLCBuKTsKK30KKwordm9pZCBub3dhcm5fYXJyYXlfY29tcG91bmRfbWVtY3B5ICh2 b2lkICpkLCB1bnNpZ25lZCBuKQoreworICBtZW1jcHkgKGQsIChpbnRbMl0peyAwIH0sIG4pOwor fQorCit2b2lkIG5vd2Fybl9zdHJ1Y3RfYXNzaWduX21lbWNweSAodm9pZCAqZCwgdW5zaWduZWQg bikKK3sKKyAgc3RydWN0IFMgeyBpbnQgYSwgYiwgYywgZDsgfSBzOworICBzLmIgPSAxOworICBz LmQgPSAyOworICBtZW1jcHkgKGQsICZzLCBuKTsKK30KKworCit2b2lkIG5vd2Fybl9hcnJheV9p bml0X3N0cmNweSAoY2hhciAqZFtdLCB1bnNpZ25lZCBuKQoreworICBjaGFyIGFbOF0gPSAiMDEy IjsKKworICBzdHJjcHkgKGRbMF0sIGEpOworICBzdHJjcHkgKGRbMV0sIGEgKyAxKTsKKyAgc3Ry Y3B5IChkWzFdLCBhICsgMik7CisgIHN0cmNweSAoZFsxXSwgYSArIDMpOworICBzdHJjcHkgKGRb MV0sIGEgKyA0KTsKKyAgc3RyY3B5IChkWzFdLCBhICsgNSk7CisgIHN0cmNweSAoZFsxXSwgYSAr IDYpOworICBzdHJjcHkgKGRbMV0sIGEgKyA3KTsKK30KKworCit2b2lkIG5vd2Fybl9hcnJheV9h c3NpZ25fc3RyY3B5IChjaGFyICpkW10sIHVuc2lnbmVkIG4pCit7CisgIGNoYXIgYVs4XTsKKyAg YVswXSA9ICcwJzsKKyAgYVsxXSA9ICcxJzsKKyAgYVsyXSA9ICcyJzsKKyAgYVszXSA9ICdcMCc7 CisKKyAgc3RyY3B5IChkWzBdLCBhKTsKKyAgc3RyY3B5IChkWzFdLCBhICsgMSk7CisgIHN0cmNw eSAoZFsxXSwgYSArIDIpOworICBzdHJjcHkgKGRbMV0sIGEgKyAzKTsKK30KKwordm9pZCB3YXJu X2FycmF5X3BsdXNfY3N0X3N0cmNweSAoY2hhciAqZCwgdW5zaWduZWQgbikKK3sKKyAgY2hhciBh WzhdOworICBhWzBdID0gJzEnOworICBhWzFdID0gJzInOworICBhWzJdID0gJzMnOworICBhWzNd ID0gJ1wwJzsKKworICBzdHJjcHkgKGQsIGEgKyA0KTsgICAgICAgICAgLy8geyBkZy13YXJuaW5n ICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CisgIHN0cmNweSAoZCwgYSArIDUpOyAgICAgICAgICAv LyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KKyAgc3RyY3B5IChkLCBhICsg Nik7ICAgICAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorICBz dHJjcHkgKGQsIGEgKyA3KTsgICAgICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRp YWxpemVkIiB9Cit9CisKK3ZvaWQgbm93YXJuX2FycmF5X3BsdXNfdmFyX3N0cmNweSAoY2hhciAq ZCwgaW50IGkpCit7CisgIGNoYXIgYVs4XTsKKyAgYVswXSA9ICcxJzsKKyAgYVsxXSA9ICcyJzsK KyAgYVsyXSA9ICczJzsKKyAgYVszXSA9ICdcMCc7CisKKyAgc3RyY3B5IChkLCBhICsgaSk7Cit9 CisKKworc2l6ZV90IG5vd2Fybl9hcnJheV9hc3NpZ25fc3RybGVuIChjb25zdCBjaGFyICpzKQor eworICBjaGFyIGFbOF07CisgIGFbMF0gPSBzWzBdOworICBhWzFdID0gc1sxXTsKKyAgYVsyXSA9 IHNbMl07CisgIGFbM10gPSBzWzNdOworCisgIHNpemVfdCBuID0gMDsKKworICBuICs9IHN0cmxl biAoYSk7CisgIG4gKz0gc3RybGVuIChhICsgMSk7CisgIG4gKz0gc3RybGVuIChhICsgMik7Cisg IG4gKz0gc3RybGVuIChhICsgMyk7CisgIHJldHVybiBuOworfQorCitzaXplX3Qgd2Fybl9hcnJh eV9wbHVzX2NzdF9zdHJsZW4gKGNvbnN0IGNoYXIgKnMpCit7CisgIGNoYXIgYVs4XTsKKyAgYVsw XSA9IHNbMF07CisgIGFbMV0gPSBzWzFdOworICBhWzJdID0gc1syXTsKKyAgYVszXSA9IHNbM107 CisKKyAgcmV0dXJuIHN0cmxlbiAoYSArIDQpOyAgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1X dW5pbml0aWFsaXplZCIgfQorfQorCitzaXplX3Qgbm93YXJuX2FycmF5X3BsdXNfdmFyX3N0cmxl biAoY29uc3QgY2hhciAqcywgaW50IGkpCit7CisgIGNoYXIgYVs4XTsKKyAgYVswXSA9IHNbMF07 CisgIGFbMV0gPSBzWzFdOworICBhWzJdID0gc1syXTsKKyAgYVszXSA9IHNbM107CisKKyAgcmV0 dXJuIHN0cmxlbiAoYSArIGkpOworfQorCisKK3NpemVfdCBub3dhcm5fYWxsb2NhX2Fzc2lnbl9z dHJsZW4gKGludCBpKQoreworICBjaGFyICpwID0gKGNoYXIqKWFsbG9jYSAoOCk7CisgIHBbaV0g PSAnXDAnOworICByZXR1cm4gc3RybGVuIChwKTsKK30KKworc2l6ZV90IG5vd2Fybl9hbGxvY2Ff ZXNjYXBlX3N0cmxlbiAoaW50IGkpCit7CisgIGNoYXIgKnAgPSAoY2hhciopYWxsb2NhICg4KTsK KyAgc2luayAocCk7CisgIHJldHVybiBzdHJsZW4gKHApOworfQorCitzaXplX3Qgd2Fybl9hbGxv Y2Ffc3RybGVuICh2b2lkKQoreworICBjaGFyICpwID0gKGNoYXIqKWFsbG9jYSAoOCk7CisgIHJl dHVybiBzdHJsZW4gKHApOyAgICAgICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlh bGl6ZWQiIH0KK30KKworCitzaXplX3Qgbm93YXJuX21hbGxvY19hc3NpZ25fc3RybGVuIChpbnQg aSkKK3sKKyAgY2hhciAqcCA9IChjaGFyKiltYWxsb2MgKDgpOworICBwW2ldID0gJ1wwJzsKKyAg cmV0dXJuIHN0cmxlbiAocCk7Cit9CisKK3NpemVfdCBub3dhcm5fbWFsbG9jX2VzY2FwZV9zdHJs ZW4gKGludCBpKQoreworICBjaGFyICpwID0gKGNoYXIqKW1hbGxvYyAoOCk7CisgIHNpbmsgKHAp OworICByZXR1cm4gc3RybGVuIChwKTsKK30KKworc2l6ZV90IHdhcm5fbWFsbG9jX3N0cmxlbiAo dm9pZCkKK3sKKyAgY2hhciAqcCA9IChjaGFyKiltYWxsb2MgKDgpOworICByZXR1cm4gc3RybGVu IChwKTsgICAgICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9Cit9 CisKKworc2l6ZV90IG5vd2Fybl9yZWFsbG9jX3N0cmxlbiAodm9pZCAqcCkKK3sKKyAgY2hhciAq cSA9IChjaGFyKilyZWFsbG9jIChwLCA4KTsKKyAgcmV0dXJuIHN0cmxlbiAocSk7Cit9CisKKwor c2l6ZV90IG5vd2Fybl92bGFfYXNzaWduX3N0cmxlbiAoaW50IG4sIGludCBpKQoreworICBjaGFy IHZsYVtuXTsKKyAgdmxhW2ldID0gJ1wwJzsKKyAgcmV0dXJuIHN0cmxlbiAodmxhKTsKK30KKwor c2l6ZV90IG5vd2Fybl92bGFfc3RyY3B5X3N0cmxlbiAoaW50IG4sIGNvbnN0IGNoYXIgKnMsIGlu dCBpKQoreworICBjaGFyIHZsYVtuXTsKKyAgc3RyY3B5ICh2bGEsIHMpOworICByZXR1cm4gc3Ry bGVuICh2bGEgKyBpKTsKK30KKworc2l6ZV90IG5vd2Fybl92bGFfZXNjYXBlX3N0cmxlbiAoaW50 IG4sIGludCBpKQoreworICBjaGFyIHZsYVtuXTsKKyAgc2luayAodmxhKTsKKyAgcmV0dXJuIHN0 cmxlbiAodmxhKTsKK30KKworc2l6ZV90IHdhcm5fdmxhX3N0cmxlbiAodW5zaWduZWQgbikKK3sK KyAgY2hhciB2bGFbbl07CisgIHJldHVybiBzdHJsZW4gKHZsYSk7ICAgICAgICAvLyB7IGRnLXdh cm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtMzcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtMzcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmRhM2M5ZGIxODQwYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtMzcuYwpAQCAtMCwwICsxLDE1NCBAQAorLyogUFIgbWlkZGxlLWVu ZC8xMDEzOCAtIHdhcm4gZm9yIHVuaW5pdGlhbGl6ZWQgYXJyYXlzIHBhc3NlZCBhcyBjb25zdCBh cmd1bWVudHMKKyAgIFZlcmlmeSB0aGF0IC1XdW5pbml0aWFsaXplZCBhbmQgLVdtYXliZS11bmlu aXRpYWxpemVkIHRyaWdnZXIgKG9yIGRvbid0KQorICAgd2hlbiBwYXNzaW5nIHVuaW5pdGlhbGl6 ZWQgdmFyaWFibGVzIGJ5IHJlZmVyZW5jZSB0byBmdW5jdGlvbnMgZGVjbGFyZWQKKyAgIHdpdGgg b3Igd2l0aG91dCBhdHRyaWJ1dGUgYWNjZXNzIGFuZCB3aXRoIChvciB3aXRob3V0KSBjb25zdCBx dWFsaWZpZWQKKyAgIGFyZ3VtZW50cyBvZiBhcnJheSwgVkxBLCBvciBwb2ludGVyIHR5cGVzLgor ICAgeyBkZy1kbyBjb21waWxlIH0KKyAgIHsgZGctb3B0aW9ucyAiLU8yIC1XYWxsIC1mdHJhY2st bWFjcm8tZXhwYW5zaW9uPTAgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisj ZGVmaW5lIE5PTkUgICAgLyogbm9uZSAqLworI2RlZmluZSBSTyguLi4pIF9fYXR0cmlidXRlX18g KChhY2Nlc3MgKHJlYWRfb25seSwgX19WQV9BUkdTX18pKSkKKyNkZWZpbmUgUlcoLi4uKSBfX2F0 dHJpYnV0ZV9fICgoYWNjZXNzIChyZWFkX3dyaXRlLCBfX1ZBX0FSR1NfXykpKQorI2RlZmluZSBX TyguLi4pIF9fYXR0cmlidXRlX18gKChhY2Nlc3MgKHdyaXRlX29ubHksIF9fVkFfQVJHU19fKSkp CisjZGVmaW5lIFgoLi4uKSAgX19hdHRyaWJ1dGVfXyAoKGFjY2VzcyAobm9uZSwgX19WQV9BUkdT X18pKSkKKworI2RlZmluZSBDT05DQVQoeCwgeSkgeCAjIyB5CisjZGVmaW5lIENBVCh4LCB5KSAg ICBDT05DQVQgKHgsIHkpCisjZGVmaW5lIFVOSVEocGZ4KSAgICBDQVQgKHBmeCwgX19MSU5FX18p CisKK2V4dGVybiB2b2lkIHNpbmsgKHZvaWQqKTsKKworCisjZGVmaW5lIFQxKGF0dHIsIG5hbWUs IHR5cGUpCQkJXAorICB2b2lkIFVOSVEgKENBVCAodGVzdF8sIG5hbWUpKSh2b2lkKSB7CQlcCisg ICAgZXh0ZXJuIGF0dHIgdm9pZCBVTklRIChuYW1lKSh0eXBlKTsJCVwKKyAgICBpbnQgeDsJCQkJ CVwKKyAgICBVTklRIChuYW1lKSgmeCk7CQkJCVwKKyAgICBzaW5rICgmeCk7CQkJCQlcCisgIH0K KworI2RlZmluZSBUMihhdHRyLCBuYW1lLCB0eXBlcykJCQlcCisgIHZvaWQgVU5JUSAoQ0FUICh0 ZXN0XywgbmFtZSkpKHZvaWQpIHsJCVwKKyAgICBleHRlcm4gYXR0ciB2b2lkIFVOSVEgKG5hbWUp KHR5cGVzKTsJXAorICAgIGludCB4OwkJCQkJXAorICAgIFVOSVEgKG5hbWUpKDEsICZ4KTsJCQkJ XAorICAgIHNpbmsgKCZ4KTsJCQkJCVwKKyAgfQorCisKK3R5cGVkZWYgaW50IElBX1tdOwordHlw ZWRlZiBjb25zdCBpbnQgQ0lBX1tdOworCitUMSAoTk9ORSwgICBmaWFfLCAgIElBXyk7CitUMSAo Tk9ORSwgICBmY2lhXywgIENJQV8pOyAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVu aW5pdGlhbGl6ZWQiIH0KK1QxIChSTyAoMSksIGZyb2lhXywgSUFfKTsgICAgIC8vIHsgZGctd2Fy bmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorVDEgKFJXICgxKSwgZnJ3aWFfLCBJQV8pOyAg ICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoV08g KDEpLCBmd29pYV8sIElBXyk7CitUMSAoWCAoMSksICBmeGlhXywgIElBXyk7CisKKwordHlwZWRl ZiBpbnQgSUExWzFdOwordHlwZWRlZiBjb25zdCBpbnQgQ0lBMVsxXTsKKworVDEgKE5PTkUsICAg ZmlhMSwgICBJQTEpOworVDEgKE5PTkUsICAgZmNpYTEsICBDSUExKTsgICAgLy8geyBkZy13YXJu aW5nICJcXFxbLVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMSAoUk8gKDEpLCBmcm9pYTEsIElB MSk7ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1QxIChSVyAo MSksIGZyd2lhMSwgSUExKTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0 aWFsaXplZCIgfQorVDEgKFdPICgxKSwgZndvaWExLCBJQTEpOworVDEgKFggKDEpLCAgZnhpYTEs ICBJQTEpOworCisKKyNkZWZpbmUgSUFSUzEgIGludFtyZXN0cmljdCBzdGF0aWMgMV0KKyNkZWZp bmUgQ0lBUlMxIGNvbnN0IGludFtyZXN0cmljdCBzdGF0aWMgMV0KKworVDEgKE5PTkUsICAgZmlh cnMxLCAgIElBUlMxKTsKK1QxIChOT05FLCAgIGZjaWFyczEsICBDSUFSUzEpOy8vIHsgZGctd2Fy bmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJvaWFyczEs IElBUlMxKTsgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVkIiB9CitUMSAoUlcg KDEpLCBmcndpYXJzMSwgSUFSUzEpOyAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV21heWJlLXVuaW5p dGlhbGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lhcnMxLCBJQVJTMSk7CitUMSAoWCAoMSksICBm eGlhcnMxLCAgSUFSUzEpOworCisKKyNkZWZpbmUgSUFTMSAgaW50W3N0YXRpYyAxXQorI2RlZmlu ZSBDSUFTMSBjb25zdCBpbnRbc3RhdGljIDFdCisKK1QxIChOT05FLCAgIGZpYXMxLCAgIElBUzEp OworVDEgKE5PTkUsICAgZmNpYXMxLCAgQ0lBUzEpOyAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1X bWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJvaWFzMSwgSUFTMSk7ICAgIC8v IHsgZGctd2FybmluZyAiXFxcWy1XdW5pbml0aWFsaXplZCIgfQorVDEgKFJXICgxKSwgZnJ3aWFz MSwgSUFTMSk7ICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIg fQorVDEgKFdPICgxKSwgZndvaWFzMSwgSUFTMSk7CitUMSAoWCAoMSksICBmeGlhczEsICBJQVMx KTsKKworCisjZGVmaW5lIElBWCAgaW50WypdCisjZGVmaW5lIENJQVggY29uc3QgaW50WypdCisK K1QxIChOT05FLCAgIGZpYXgsICAgSUFYKTsKK1QxIChOT05FLCAgIGZjaWF4LCAgQ0lBWCk7ICAg IC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgx KSwgZnJvaWF4LCBJQVgpOyAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVd1bmluaXRpYWxpemVk IiB9CitUMSAoUlcgKDEpLCBmcndpYXgsIElBWCk7ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFst V21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KK1QxIChXTyAoMSksIGZ3b2lheCwgSUFYKTsKK1QxIChY ICgxKSwgIGZ4aWF4LCAgSUFYKTsKKworCisjZGVmaW5lIElBTiAgaW50IG4sIGludFtuXQorI2Rl ZmluZSBDSUFOIGludCBuLCBjb25zdCBpbnRbbl0KKworVDIgKE5PTkUsICAgICAgZmlhbiwgICBJ QU4pOworVDIgKE5PTkUsICAgICAgZmNpYW4sICBDSUFOKTsgLy8geyBkZy13YXJuaW5nICJcXFxb LVdtYXliZS11bmluaXRpYWxpemVkIiB9CitUMiAoUk8gKDIsIDEpLCBmcm9pYW4sIElBTik7ICAv LyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1QyIChSVyAoMiwgMSksIGZy d2lhbiwgSUFOKTsgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIg fQorVDIgKFdPICgyLCAxKSwgZndvaWFuLCBJQU4pOworVDIgKFggKDIsIDEpLCAgZnhpYW4sICBJ QU4pOworCisKK3R5cGVkZWYgaW50KiBJUDsKK3R5cGVkZWYgY29uc3QgaW50KiBDSVA7CisKK1Qx IChOT05FLCAgIGZpcCwgICBJUCk7CitUMSAoTk9ORSwgICBmY2lwLCAgQ0lQKTsgICAgIC8vIHsg ZGctd2FybmluZyAiXFxcWy1XbWF5YmUtdW5pbml0aWFsaXplZCIgfQorVDEgKFJPICgxKSwgZnJv aXAsIElQKTsgICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV3VuaW5pdGlhbGl6ZWQiIH0KK1Qx IChSVyAoMSksIGZyd2lwLCBJUCk7ICAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdtYXliZS11 bmluaXRpYWxpemVkIiB9CitUMSAoV08gKDEpLCBmd29pcCwgSVApOworVDEgKFggKDEpLCAgZnhp cCwgIElQKTsKKworCisvKiBWZXJpZnkgdGhhdCB0aGUgbm90ZXMgcHJpbnRlZCBhZnRlciB0aGUg d2FybmluZyBtZW50aW9uIGF0dHJpYnV0ZQorICAgYWNjZXNzIG9ubHkgd2hlbiB0aGUgYXR0cmli dXRlIGlzIGV4cGxpY2l0bHkgdXNlZCBpbiB0aGUgZGVjbGFyYXRpb24KKyAgIGFuZCBub3Qgb3Ro ZXJ3aXNlLiAgKi8KKwordm9pZCB0ZXN0X25vdGVfY3N0X3Jlc3RyaWN0ICh2b2lkKQoreworICBl eHRlcm4gdm9pZAorICAgIGZjY2FyIChjb25zdCBjaGFyW3Jlc3RyaWN0XSk7ICAgLy8geyBkZy1t ZXNzYWdlICJieSBhcmd1bWVudCAxIG9mIHR5cGUgJ2NvbnN0IGNoYXJcXFxbcmVzdHJpY3RdJyB0 byAnZmNjYXInIiAibm90ZSIgfQorCisgIGNoYXIgYVsxXTsgICAgICAgICAgICAgICAgICAvLyB7 IGRnLW1lc3NhZ2UgIidhJyBkZWNsYXJlZCBoZXJlIiAibm90ZSIgfQorICBmY2NhciAoYSk7ICAg ICAgICAgICAgICAgICAgLy8geyBkZy13YXJuaW5nICInYScgbWF5IGJlIHVzZWQgdW5pbml0aWFs aXplZCIgfQorfQorCit2b2lkIHRlc3Rfbm90ZV92bGEgKGludCBuKQoreworICBleHRlcm4gdm9p ZAorICAgIGZjY3ZsYSAoY29uc3QgY2hhcltuXSk7ICAgLy8geyBkZy1tZXNzYWdlICJieSBhcmd1 bWVudCAxIG9mIHR5cGUgJ2NvbnN0IGNoYXJcXFxbbl0nIHRvICdmY2N2bGEnIiAibm90ZSIgfQor CisgIGNoYXIgYVsyXTsgICAgICAgICAgICAgICAgICAvLyB7IGRnLW1lc3NhZ2UgIidhJyBkZWNs YXJlZCBoZXJlIiAibm90ZSIgfQorICBmY2N2bGEgKGEpOyAgICAgICAgICAgICAgICAgLy8geyBk Zy13YXJuaW5nICInYScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCit2b2lkIHRl c3Rfbm90ZV9ybyAodm9pZCkKK3sKKyAgZXh0ZXJuIFJPICgxKSB2b2lkCisgICAgZnJvY2FyIChj aGFyW3Jlc3RyaWN0XSk7ICAvLyB7IGRnLW1lc3NhZ2UgImluIGEgY2FsbCB0byAnZnJvY2FyJyBk ZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnYWNjZXNzIFxcXChyZWFkX29ubHksIDFcXFwpJyIgIm5v dGUiIH0KKworICBjaGFyIGFbM107ICAgICAgICAgICAgICAgICAgLy8geyBkZy1tZXNzYWdlICIn YScgZGVjbGFyZWQgaGVyZSIgIm5vdGUiIH0KKyAgZnJvY2FyIChhKTsgICAgICAgICAgICAgICAg IC8vIHsgZGctd2FybmluZyAiJ2EnIGlzIHVzZWQgdW5pbml0aWFsaXplZCIgfQorfQorCit2b2lk IHRlc3Rfbm90ZV9ydyAodm9pZCkKK3sKKyAgZXh0ZXJuIFJXICgxKSB2b2lkCisgICAgZnJ3Y2Fy IChjaGFyW3Jlc3RyaWN0XSk7ICAvLyB7IGRnLW1lc3NhZ2UgImluIGEgY2FsbCB0byAnZnJ3Y2Fy JyBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnYWNjZXNzIFxcXChyZWFkX3dyaXRlLCAxXFxcKSci ICJub3RlIiB9CisKKyAgY2hhciBhWzRdOyAgICAgICAgICAgICAgICAgIC8vIHsgZGctbWVzc2Fn ZSAiJ2EnIGRlY2xhcmVkIGhlcmUiICJub3RlIiB9CisgIGZyd2NhciAoYSk7ICAgICAgICAgICAg ICAgICAvLyB7IGRnLXdhcm5pbmcgIidhJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIiB9Cit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM4LmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM4LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMTEyODRiOGQ5ZTAKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTM4LmMKQEAgLTAsMCAr MSwxNCBAQAorLyogUG9zaXRpdmUgdGVzdCBmb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuICAq LworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmluaXRp YWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHdlaXJk IHsKKyAgICAgICBpbnQgYml0IDogMTsKKyAgICAgICBpbnQgdmFsOworfTsKKworaW50IGZ1bmMo aW50IHZhbCkKK3sKKyAgICAgICBzdHJ1Y3Qgd2VpcmQgb2JqID0geyAudmFsID0gdmFsIH07IC8q IHsgZGctYm9ndXMgImlzIHVzZWQgdW5pbml0aWFsaXplZCIgfSAqLworICAgICAgIHJldHVybiBv YmoudmFsOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC00LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTQuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQ4MmM4MzdjYWNiMgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNC5jCkBA IC0wLDAgKzEsNTIgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdCB2YXJpYWJsZSB3YXJuaW5ncywgY2Fz ZSA0LgorICAgU2ltcGxpZmllZCB2ZXJzaW9uIG9mIGNwcGV4cC5jIChjcHBfcGFyc2VfZXhwciku CisKKyAgIFRoaXMgb25lIGlzIHJlYWxseSBmcmFnaWxlLCBpdCBnZXRzIGl0IHJpZ2h0IGlmIHlv dSB0YWtlIG91dCBjYXNlCisgICAxLCBvciBpZiB0aGUgc3RydWN0dXJlIGlzIHJlcGxhY2VkIGJ5 IGFuIGludCwgb3IgaWYgdGhlIHN0cnVjdHVyZQorICAgaGFzIGZld2VyIG1lbWJlcnMgKCEpICov CisKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0 aWFsaXplZCAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiB2b2lk IGFib3J0ICh2b2lkKTsKKworc3RydWN0IG9wZXJhdGlvbiB7CisgICAgc2hvcnQgb3A7CisgICAg Y2hhciBycHJpbzsKKyAgICBjaGFyIGZsYWdzOworICAgIGNoYXIgdW5zaWduZWRwOworICAgIGxv bmcgdmFsdWU7Cit9OworCitleHRlcm4gc3RydWN0IG9wZXJhdGlvbiBjcHBfbGV4ICh2b2lkKTsK Kwordm9pZAorY3BwX3BhcnNlX2V4cHIgKHZvaWQpCit7CisgIGludCBycHJpbzsgLyogeyBkZy1i b2d1cyAicnByaW8iICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcgUFIxOTgzMyIgfSAq LworICBzdHJ1Y3Qgb3BlcmF0aW9uIG9wOworCisgIGZvciAoOzspCisgICAgeworICAgICAgb3Ag PSBjcHBfbGV4ICgpOworCisgICAgICBzd2l0Y2ggKG9wLm9wKQorCXsKKwljYXNlIDA6CisJICBi cmVhazsKKwljYXNlIDE6CisJICByZXR1cm47CisJY2FzZSAyOgorCSAgcnByaW8gPSAxOworCSAg YnJlYWs7CisJZGVmYXVsdDoKKwkgIHJldHVybjsKKwl9CisKKyAgICAgIGlmIChvcC5vcCA9PSAw KQorCXJldHVybjsKKworICAgICAgaWYgKHJwcmlvICE9IDEpCisJYWJvcnQoKTsKKyAgICB9Cit9 CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTUuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtNS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWRhODFjOTEyYmRkCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC01LmMKQEAgLTAsMCArMSwz OSBAQAorLyogU3B1cmlvdXMgdW5pbml0aWFsaXplZC12YXJpYWJsZSB3YXJuaW5ncy4gICovCisv KiBEaXNhYmxlIGp1bXAgdGhyZWFkaW5nLCBldGMgdG8gdGVzdCBjb21waWxlciBhbmFseXNpcy4g ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5p dGlhbGl6ZWQgLWZuby10cmVlLWRjZSAtZm5vLXRyZWUtdnJwIC1mbm8tdHJlZS1kb21pbmF0b3It b3B0cyAtZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK2V4dGVybiB2b2lkIHVz ZShpbnQpOworZXh0ZXJuIHZvaWQgZm9vKHZvaWQpOworCit2b2lkCitmdW5jMShpbnQgY29uZCkK K3sKKyAgICBpbnQgeDsgIC8qIHsgZGctYm9ndXMgIngiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxl IHdhcm5pbmciIH0gKi8KKworICAgIGlmKGNvbmQpCisJeCA9IDE7CisKKyAgICBmb28oKTsKKwor ICAgIGlmKGNvbmQpCisJdXNlKHgpOworfQorCit2b2lkCitmdW5jMiAoaW50IGNvbmQpCit7Cisg ICAgaW50IHg7ICAvKiB7IGRnLWJvZ3VzICJ4IiAidW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJu aW5nIiB9ICovCisgICAgaW50IGZsYWcgPSAwOworCisgICAgaWYoY29uZCkKKyAgICB7CisJeCA9 IDE7CisJZmxhZyA9IDE7CisgICAgfQorCisgICAgZm9vKCk7CisKKyAgICBpZihmbGFnKQorCXVz ZSh4KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC02LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNmNiYTRlZjIyYzAKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LTYuYwpAQCAt MCwwICsxLDQ3IEBACisvKiBTcHVyaW91cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdz LgorICAgVGhpcyBvbmUgaW5zcGlyZWQgYnkgamF2YS9jbGFzcy5jOmJ1aWxkX3V0ZjhfcmVmLiAg Ki8KKworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLVd1bmlu aXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworI2luY2x1ZGUg PHN0ZGRlZi5oPgorCitzdHJ1Y3QgdHJlZQoreworICAgIHN0cnVjdCB0cmVlICpjYXI7CisgICAg c3RydWN0IHRyZWUgKmNkcjsKKyAgICBpbnQgdHlwZSwgZGF0YTsKK307CisKK2V4dGVybiB2b2lk ICptYWxsb2Moc2l6ZV90KTsKKworI2RlZmluZSBJTlRFR0VSX1QgMQorI2RlZmluZSBQVFJfVAkg IDIKKworI2RlZmluZSBBUFBFTkQoVFJFRSwgTEFTVCwgVFlQRSwgVkFMVUUpCQkJCVwKK2RvIHsJ CQkJCQkJCVwKKyAgICAgc3RydWN0IHRyZWUgKnRtcCA9IG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qg dHJlZSkpOwkJXAorICAgICB0bXAtPmNhciA9IDA7IHRtcC0+Y2RyID0gMDsgdG1wLT50eXBlID0g VFlQRTsJCVwKKyAgICAgdG1wLT5kYXRhID0gVkFMVUU7CQkJCQkJXAorICAgICBpZiAoVFJFRS0+ Y2FyKQkJCQkJCVwKKwkgTEFTVC0+Y2RyID0gdG1wOwkJCQkJXAorICAgICBlbHNlCQkJCQkJCVwK KwkgVFJFRS0+Y2FyID0gdG1wOwkJCQkJXAorICAgICBMQVNUID0gdG1wOwkJCQkJCVwKK30gd2hp bGUoMCkKKyAKK3N0cnVjdCB0cmVlICoKK21ha2Vfc29tZXRoaW5nKGludCBhLCBpbnQgYiwgaW50 IGMpCit7CisgICAgc3RydWN0IHRyZWUgKnJ2OworICAgIHN0cnVjdCB0cmVlICpmaWVsZDsKKwor ICAgIHJ2ID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCB0cmVlKSk7CisgICAgcnYtPmNhciA9IDA7 CisKKyAgICBBUFBFTkQocnYsIGZpZWxkLCBJTlRFR0VSX1QsIGEpOyAgLyogeyBkZy1ib2d1cyAi ZmllbGQiICJ1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmciIH0gKi8KKyAgICBBUFBFTkQo cnYsIGZpZWxkLCBQVFJfVCwgYik7CisgICAgQVBQRU5EKHJ2LCBmaWVsZCwgSU5URUdFUl9ULCBj KTsKKworICAgIHJldHVybiBydjsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L2F1dG8taW5pdC11bmluaXQtOC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVu aW5pdC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42YzI5ODg3 MGM2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LTguYwpAQCAtMCwwICsxLDMyIEBACisvKiBVbmluaXRpYWxpemVkIHZhcmlhYmxlIHdh cm5pbmcgdGVzdHMuLi4KKyAgIEluc3BpcmVkIGJ5IHBhcnQgb2Ygb3B0YWJzLmM6ZXhwYW5kX2Jp bm9wLgorICAgTWF5IGJlIHRoZSBzYW1lIGFzIHVuaW5pdC0xLmMuICAqLworCisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK3Zv aWQKK2FkZF9iaWdudW1zIChpbnQgKm91dCwgaW50ICp4LCBpbnQgKnkpCit7CisgICAgaW50IHAs IHN1bTsKKyAgICBpbnQgY2Fycnk7IC8qIHsgZGctYm9ndXMgImNhcnJ5IiAidW5pbml0aWFsaXpl ZCB2YXJpYWJsZSB3YXJuaW5nIiB9ICovCisKKyAgICBwID0gMDsKKyAgICBmb3IgKDsgKng7IHgr KywgeSsrLCBvdXQrKywgcCsrKQorICAgIHsKKwlpZiAocCkKKwkgICAgc3VtID0gKnggKyAqeSAr IGNhcnJ5OworCWVsc2UKKwkgICAgc3VtID0gKnggKyAqeTsKKworCWlmIChzdW0gPCAwKQorCXsK KwkgICAgY2FycnkgPSAxOworCSAgICBzdW0gLT0gSU5UX01BWDsKKwl9CisJZWxzZQorCSAgICBj YXJyeSA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LTkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlkNjU0OTNiZGUy YQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtOS5jCkBAIC0wLDAgKzEsNDIgQEAKKy8qIFNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgdmFyaWFi bGUgd2FybmluZ3MuICBTbGlnaHQgdmFyaWFudCBvbiB0aGUKKyAgIGRvY3VtZW50ZWQgY2FzZSwg aW5zcGlyZWQgYnkgcmVnLXN0YWNrLmM6cmVjb3JkX2FzbV9yZWdfbGlmZS4gICovCisKKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1XdW5pbml0aWFsaXplZCAt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0 aXZlLXRhcmdldCBhbGxvY2EgfSAqLworCitzdHJ1Y3QgZm9vCit7CisgICAgaW50IHR5cGU7Cisg ICAgc3RydWN0IGZvbyAqY2FyOworICAgIHN0cnVjdCBmb28gKmNkcjsKKyAgICBjaGFyICpkYXRh OworICAgIGludCBkYXRhMjsKK307CisKK2V4dGVybiB2b2lkIHVzZShzdHJ1Y3QgZm9vICopOwor CisjZGVmaW5lIENMT0JCRVIgNgorI2RlZmluZSBQQVJBTExFTCAzCisKK3ZvaWQKK2Z1bmMoc3Ry dWN0IGZvbyAqbGlzdCwgaW50IGNvdW50KQoreworICAgIGludCBuX2Nsb2JiZXJzID0gMDsKKyAg ICBpbnQgaTsKKyAgICBzdHJ1Y3QgZm9vICoqY2xvYl9saXN0OyAgIC8qIHsgZGctYm9ndXMgImNs b2JfbGlzdCIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworCisgICAgaWYo bGlzdFswXS50eXBlID09IFBBUkFMTEVMKQorICAgIHsKKwljbG9iX2xpc3QgPSBfX2J1aWx0aW5f YWxsb2NhKGNvdW50ICogc2l6ZW9mKHN0cnVjdCBmb28gKikpOworCQorCWZvcihpID0gMTsgaSA8 IGNvdW50OyBpKyspCisJeworCSAgICBpZihsaXN0W2ldLnR5cGUgPT0gQ0xPQkJFUikKKwkJY2xv Yl9saXN0W25fY2xvYmJlcnMrK10gPSAmbGlzdFtpXTsKKwl9CisgICAgfQorCisgICAgZm9yKGkg PSAwOyBpIDwgbl9jbG9iYmVyczsgaSsrKQorCXVzZShjbG9iX2xpc3RbaV0pOworfQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1BLmMgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjAxZmNmNTlmNDUwNAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtQS5jCkBAIC0wLDAgKzEsMTE3IEBACisv KiBJbnNwaXJlZCBieSBwYXJ0IG9mIGphdmEvcGFyc2UueS4KKyAgIE1heSBiZSBhIHJlYWwgYnVn IGluIENTRS4gKi8KKworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1XYWxsIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRy ZWUKK3sKKyAgICBzdHJ1Y3QgdHJlZSAqY2FyLCAqY2RyLCAqd2ZsOworICAgIGludCBjb2RlOwor ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCByZW5wOjE7CisgICAgICB1bnNpZ25lZCBpbnQgcnRu cDoxOworICAgICAgdW5zaWduZWQgaW50IHJwbnA6MTsgfSBmbGFnczsKK307Cit0eXBlZGVmIHN0 cnVjdCB0cmVlICp0cmVlOworI2RlZmluZSBOVUxMX1RSRUUgKCh0cmVlKTApCisKKy8qIENvZGVz ICovCitlbnVtCit7CisgICAgQ0FMTF9FWFBSLCBORVdfQVJSQVlfRVhQUiwgTkVXX0NMQVNTX0VY UFIsIENPTlZFUlRfRVhQUiwKKyAgICBBUlJBWV9SRUYsIENPTkRJVElPTkFMX0VYUFIsIFNUUklO R19DU1QsIEVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OCit9OworCisvKiBGbGFncyAqLworI2RlZmlu ZSBSRVNPTFZFX0VYUFJFU1NJT05fTkFNRV9QKHQpICgodCktPmZsYWdzLnJlbnApCisjZGVmaW5l IFJFU09MVkVfVFlQRV9OQU1FX1AodCkgKCh0KS0+ZmxhZ3MucnRucCkKKyNkZWZpbmUgUkVTT0xW RV9QQUNLQUdFX05BTUVfUCh0KSAoKHQpLT5mbGFncy5ycG5wKQorCisvKiBNYWNyb3MgKi8KKyNk ZWZpbmUgRVhQUl9XRkxfUVVBTElGSUNBVElPTih0KSAoKHQpLT53ZmwpCisjZGVmaW5lIFFVQUxf V0ZMKHQpICgodCktPndmbCkKKyNkZWZpbmUgRVhQUl9XRkxfTk9ERSh0KSAoKHQpLT53ZmwpCisj ZGVmaW5lIFRSRUVfQ09ERSh0KSAoKHQpLT5jb2RlKQorI2RlZmluZSBUUkVFX09QRVJBTkQodCx4 KSAoKHQpLT5jYXIpCisjZGVmaW5lIENMQVNTVFlQRV9TVVBFUih0KSAoKHQpLT5jYXIpCisjZGVm aW5lIElERU5USUZJRVJfTE9DQUxfVkFMVUUodCkgKCh0KS0+Y2FyKQorI2RlZmluZSBUUkVFX0NI QUlOKHQpICgodCktPmNkcikKKyNkZWZpbmUgUVVBTF9SRVNPTFVUSU9OKHQpICgodCktPmNkcikK KworZXh0ZXJuIHRyZWUgY3VycmVudF9jbGFzcywgdGhpc19pZGVudGlmaWVyX25vZGU7CitleHRl cm4gdHJlZSBzdXBlcl9pZGVudGlmaWVyX25vZGUsIGxlbmd0aF9pZGVudGlmaWVyX25vZGU7CisK K3RyZWUgcmVzb2x2ZV9hbmRfbGF5b3V0ICh0cmVlLCB0cmVlKTsKK3RyZWUgbG9va3VwX2ZpZWxk X3dyYXBwZXIgKHRyZWUsIHRyZWUpOworCit2b2lkCitxdWFsaWZ5X2FtYmlndW91c19uYW1lIChp ZCkKKyAgICAgdHJlZSBpZDsKK3sKKyAgdHJlZSBxdWFsLCBxdWFsX3dmbCwgZGVjbDsKKyAgdHJl ZSBuYW1lOwkgLyogeyBkZy1ib2d1cyAibmFtZSIgInVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2Fy bmluZyIgfSAqLworICB0cmVlIHB0cl90eXBlOyAvKiB7IGRnLWJvZ3VzICJwdHJfdHlwZSIgInVu aW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZyIgfSAqLworICBpbnQgYWdhaW4sIG5ld19hcnJh eV9mb3VuZCA9IDA7CisgIGludCBzdXBlcl9mb3VuZCA9IDAsIHRoaXNfZm91bmQgPSAwOworCisg IHF1YWwgPSBFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIChpZCk7CisgIGRvIHsKKyAgICBxdWFsX3dm bCA9IFFVQUxfV0ZMIChxdWFsKTsKKyAgICBzd2l0Y2ggKFRSRUVfQ09ERSAocXVhbF93ZmwpKQor ICAgICAgeworICAgICAgY2FzZSBDQUxMX0VYUFI6CisJcXVhbF93ZmwgPSBUUkVFX09QRVJBTkQg KHF1YWxfd2ZsLCAwKTsKKwlpZiAoVFJFRV9DT0RFIChxdWFsX3dmbCkgIT0gRVhQUl9XSVRIX0ZJ TEVfTE9DQVRJT04pCisJICB7CisJICAgIHF1YWwgPSBFWFBSX1dGTF9RVUFMSUZJQ0FUSU9OIChx dWFsX3dmbCk7CisJICAgIHF1YWxfd2ZsID0gUVVBTF9XRkwgKHF1YWwpOworCSAgfQorCWJyZWFr OworICAgICAgY2FzZSBORVdfQVJSQVlfRVhQUjoKKwlxdWFsID0gVFJFRV9DSEFJTiAocXVhbCk7 CisJbmV3X2FycmF5X2ZvdW5kID0gYWdhaW4gPSAxOworCWNvbnRpbnVlOworICAgICAgY2FzZSBO RVdfQ0xBU1NfRVhQUjoKKyAgICAgIGNhc2UgQ09OVkVSVF9FWFBSOgorCXF1YWxfd2ZsID0gVFJF RV9PUEVSQU5EIChxdWFsX3dmbCwgMCk7CisJYnJlYWs7CisgICAgICBjYXNlIEFSUkFZX1JFRjoK Kwl3aGlsZSAoVFJFRV9DT0RFIChxdWFsX3dmbCkgPT0gQVJSQVlfUkVGKQorCSAgcXVhbF93Zmwg PSBUUkVFX09QRVJBTkQgKHF1YWxfd2ZsLCAwKTsKKwlicmVhazsKKyAgICAgIGRlZmF1bHQ6CisJ YnJlYWs7CisgICAgICB9CisKKyAgICBuYW1lID0gRVhQUl9XRkxfTk9ERSAocXVhbF93ZmwpOwor ICAgIHB0cl90eXBlID0gY3VycmVudF9jbGFzczsKKyAgICBhZ2FpbiA9IDA7CisKKyAgfSB3aGls ZSAoYWdhaW4pOworCisgIC8qIElmIHlvdSBwdXQgc3RyYWlnaHRmb3J3YXJkIHVzZXMgb2YgbmFt ZSBhbmQgcHRyX3R5cGUgaGVyZQorICAgICBpbnN0ZWFkIG9mIHRoZSBpZi1lbHNlIHNlcXVlbmNl IGJlbG93LCB0aGUgd2FybmluZ3MgZ28gYXdheS4KKyAgICAgVGhlcmVmb3JlIEkgc3VzcGVjdCBh IHJlYWwgYnVnLiAqLworICAKKyAgaWYgKCF0aGlzX2ZvdW5kICYmICFzdXBlcl9mb3VuZCAmJiAo ZGVjbCA9IElERU5USUZJRVJfTE9DQUxfVkFMVUUgKG5hbWUpKSkKKyAgICB7CisgICAgICBSRVNP TFZFX0VYUFJFU1NJT05fTkFNRV9QIChxdWFsX3dmbCkgPSAxOworICAgICAgUVVBTF9SRVNPTFVU SU9OIChxdWFsKSA9IGRlY2w7CisgICAgfQorICBlbHNlIGlmICgoZGVjbCA9IGxvb2t1cF9maWVs ZF93cmFwcGVyIChwdHJfdHlwZSwgbmFtZSkpCisJICAgfHwgKG5ld19hcnJheV9mb3VuZCAmJiBu YW1lID09IGxlbmd0aF9pZGVudGlmaWVyX25vZGUpKQorICAgIHsKKyAgICAgIFJFU09MVkVfRVhQ UkVTU0lPTl9OQU1FX1AgKHF1YWxfd2ZsKSA9IDE7CisgICAgICBRVUFMX1JFU09MVVRJT04gKHF1 YWwpID0gKG5ld19hcnJheV9mb3VuZCA/IE5VTExfVFJFRSA6IGRlY2wpOworICAgIH0KKyAgZWxz ZSBpZiAoKGRlY2wgPSByZXNvbHZlX2FuZF9sYXlvdXQgKG5hbWUsIE5VTExfVFJFRSkpKQorICAg IHsKKyAgICAgIFJFU09MVkVfVFlQRV9OQU1FX1AgKHF1YWxfd2ZsKSA9IDE7CisgICAgICBRVUFM X1JFU09MVVRJT04gKHF1YWwpID0gZGVjbDsKKyAgICB9CisgIGVsc2UgaWYgKFRSRUVfQ09ERSAo UVVBTF9XRkwgKHF1YWwpKSA9PSBDQUxMX0VYUFIKKwkgICB8fCBUUkVFX0NPREUgKFFVQUxfV0ZM IChxdWFsKSkgPT0gQVJSQVlfUkVGKQorICAgIFJFU09MVkVfRVhQUkVTU0lPTl9OQU1FX1AgKHF1 YWxfd2ZsKSA9IDE7CisgIGVsc2UgCisgICAgUkVTT0xWRV9QQUNLQUdFX05BTUVfUCAocXVhbF93 ZmwpID0gMTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11 bmluaXQtQi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1CLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYjI4MzcxMjcyMDkKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0LUIuYwpA QCAtMCwwICsxLDE1IEBACisvKiBPcmlnaW46IFBSIGMvMTc5IGZyb20gR3JheSBXYXRzb24gPGdy YXlAMjU2LmNvbT4sIGFkYXB0ZWQgYXMgYSB0ZXN0Y2FzZQorICAgYnkgSm9zZXBoIE15ZXJzIDxq c20yOEBjYW0uYWMudWs+LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyIg fSAqLworZXh0ZXJuIHZvaWQgZm9vIChpbnQgKik7CitleHRlcm4gdm9pZCBiYXIgKGludCk7CisK K3ZvaWQKK2JheiAodm9pZCkKK3sKKyAgaW50IGk7CisgIGlmIChpKSAvKiB7IGRnLXdhcm5pbmcg ImlzIHVzZWQgdW5pbml0aWFsaXplZCIgInVuaW5pdCBpIHdhcm5pbmciIH0gKi8KKyAgICBiYXIg KGkpOworICBmb28gKCZpKTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1 dG8taW5pdC11bmluaXQtQy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5p dC1DLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNGFhNjI5YmY5 MzAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5p bml0LUMuYwpAQCAtMCwwICsxLDIxIEBACisvKiBTcHVyaW91cyB1bmluaXRpYWxpemVkIHZhcmlh YmxlIHdhcm5pbmcsIGluc3BpcmVkIGJ5IGxpYmdjYzIuYy4gICovCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV3VuaW5pdGlhbGl6ZWQgLWZ0cml2aWFsLWF1 dG8tdmFyLWluaXQ9emVybyIgfSAqLworCisvKiBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IFRJ bW9kZSBpbnRlZ2Vycy4gICovCisjaWYgZGVmaW5lZChfX0xQNjRfXykgJiYgIWRlZmluZWQoX19o cHBhX18pCit0eXBlZGVmIGludCBUSXR5cGUgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKFRJKSkpOwor I2Vsc2UKK3R5cGVkZWYgbG9uZyBUSXR5cGU7CisjZW5kaWYKKworCitUSXR5cGUKK19fc3VidmRp MyAoVEl0eXBlIGEsIFRJdHlwZSBiKQoreworICBUSXR5cGUgdzsKKyAgCisgIHcgPSBhIC0gYjsK KyAgCisgIHJldHVybiB3OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0 by1pbml0LXVuaW5pdC1ILmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQtdW5pbml0 LUguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcxZTJlMmQ2OGQ3 ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmlu aXQtSC5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qIFBSIDE0MjA0ICovCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItTyAtV2FsbCAtV2Vycm9yIC1mdHJpdmlhbC1hdXRv LXZhci1pbml0PXplcm8iIH0gKi8KKworI2lmIGRlZmluZWQgX19hbHBoYV9fCisjIGRlZmluZSBB U00gX19hc21fXygiJDMwIikKKyNlbGlmIGRlZmluZWQgX19pMzg2X18KKyMgZGVmaW5lIEFTTSBf X2FzbV9fKCJlc3AiKQorI2VsaWYgZGVmaW5lZCAoX19wb3dlcnBjX18pIHx8IGRlZmluZWQgKF9f UFBDX18pIHx8IGRlZmluZWQgKF9fcHBjX18pIHx8IGRlZmluZWQgKF9QT1dFUikKKyMgZGVmaW5l IEFTTSBfX2FzbV9fKCJyMSIpCisjZWxpZiBkZWZpbmVkIF9fczM5MF9fCisjIGRlZmluZSBBU00g X19hc21fXygicjE1IikKKyNlbGlmIGRlZmluZWQgX19taXBzCisjIGRlZmluZSBBU00gX19hc21f XygiJHNwIikKKyNlbGlmIGRlZmluZWQgX19zcGFyY19fCisjIGRlZmluZSBBU00gX19hc21fXygi c3AiKQorI2VsaWYgZGVmaW5lZCBfX2lhNjRfXworIyBkZWZpbmUgQVNNIF9fYXNtX18oInIxMiIp CisjZWxpZiBkZWZpbmVkIF9faHBwYV9fCisjIGRlZmluZSBBU00gX19hc21fXygiJXIzMCIpCisj ZWxpZiBkZWZpbmVkIF9feHRlbnNhX18KKyMgZGVmaW5lIEFTTSBfX2FzbV9fKCJzcCIpCisjZWxz ZQorLyogVGhlIHJlZ2lzdGVyIG5hbWUgc2hvdWxkIGJlIHRhcmdldC1kZXBlbmRlbnQgc28gZm9y IG90aGVyIHRhcmdldHMsCisgICB3ZSBqdXN0IHNpbGVuY2UgdGhlIHRlc3QuICAqLworIyBkZWZp bmUgQVNNID0gMAorI2VuZGlmCisKK3ZvaWQgKmxvYWRfUENCICh2b2lkKQoreworICByZWdpc3Rl ciB2b2lkICpzcCBBU007CisgIHJldHVybiBzcDsJCQkvKiB7IGRnLWJvZ3VzICJ1bmluaXRpYWxp emVkIiB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9hdXRvLWluaXQt dW5pbml0LUkuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2F1dG8taW5pdC11bmluaXQtSS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDk2ODBmZTk3OTBkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYXV0by1pbml0LXVuaW5pdC1JLmMK QEAgLTAsMCArMSw4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLVd1bmluaXRpYWxpemVkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8K KworaW50IHN5c19tc2djdGwgKHZvaWQpCit7CisgIHN0cnVjdCB7IGludCBtb2RlOyB9IHNldGJ1 ZjsKKyAgcmV0dXJuIHNldGJ1Zi5tb2RlOyAgLyogeyBkZy13YXJuaW5nICInc2V0YnVmXC5tb2Rl JyBpcyB1c2VkIiB9ICovCit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv YXV0by1pbml0LTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBm YTQ3MDg4MGJmNQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC0xLmMKQEAgLTAsMCArMSwzMiBAQAorLyogVmVyaWZ5IHplcm8gaW5p dGlhbGl6YXRpb24gZm9yIGludGVnZXIgYW5kIHBvaW50ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFi bGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworI2lmbmRl ZiBfX2NwbHVzcGx1cworIyBkZWZpbmUgYm9vbCBfQm9vbAorI2VuZGlmCisKK2VudW0gRSB7Cisg IE4xID0gMCwKKyAgTjIsCisgIE4zCit9OworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIHNob3J0 LCBpbnQsIGVudW0gRSwgbG9uZywgbG9uZyBsb25nLCBpbnQgKiwgYm9vbCk7CisKK3ZvaWQgZm9v KCkKK3sKKyAgY2hhciB0ZW1wMTsKKyAgc2hvcnQgdGVtcDI7CisgIGludCB0ZW1wMzsKKyAgZW51 bSBFIHRlbXA0OworICBsb25nIHRlbXA1OworICBsb25nIGxvbmcgdGVtcDY7CisgIGludCAqdGVt cDc7CisgIGJvb2wgdGVtcDg7CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwg dGVtcDUsIHRlbXA2LCB0ZW1wNywgdGVtcDgpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmlu YWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgMTEgImV4cGFuZCIgfSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQt Mi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTIuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJjNTRlNmQ2MDM4MgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0y LmMKQEAgLTAsMCArMSwzNSBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9y IGludGVnZXIgYW5kIHBvaW50ZXIgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PIC1mdHJpdmlhbC1hdXRvLXZh ci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworI2lmbmRlZiBfX2NwbHVz cGx1cworIyBkZWZpbmUgYm9vbCBfQm9vbAorI2VuZGlmCisKK2VudW0gRSB7CisgIE4xID0gMCwK KyAgTjIsCisgIE4zCit9OworCitleHRlcm4gdm9pZCBiYXIgKGNoYXIsIHNob3J0LCBpbnQsIGVu dW0gRSwgbG9uZywgbG9uZyBsb25nLCBpbnQgKiwgYm9vbCk7CisKK3ZvaWQgZm9vKCkKK3sKKyAg Y2hhciB0ZW1wMTsKKyAgc2hvcnQgdGVtcDI7CisgIGludCB0ZW1wMzsKKyAgZW51bSBFIHRlbXA0 OworICBsb25nIHRlbXA1OworICBsb25nIGxvbmcgdGVtcDY7CisgIGludCAqdGVtcDc7CisgIGJv b2wgdGVtcDg7CisKKyAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCB0ZW1wNCwgdGVtcDUsIHRl bXA2LCB0ZW1wNywgdGVtcDgpOworICByZXR1cm47Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXJ0bC1kdW1wLXRpbWVzICIweGZlXFxcXSIgMSAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZmZmZmZmZlZmUiIDEgImV4cGFuZCIg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZl ZmVmZWZlIiAyICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAt dGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZSIgMiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC0zLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWFkYzE0N2EzMDAwCi0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTMuYwpAQCAtMCwwICsx LDE3IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQg dHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1l eHBhbmQiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBmb28oKQor eworICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0ZW1wMzsK KyAgCisgIHJlc3VsdCA9IHRlbXAxICsgdGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImNvbnN0X2ludCAwIiA3 ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2Fh cmNoNjQvYXV0by1pbml0LTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1 dG8taW5pdC00LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZWU4 MzM1MDY1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtNC5jCkBAIC0wLDAgKzEsMTkgQEAKKy8qIFZlcmlmeSBwYXR0ZXJuIGlu aXRpYWxpemF0aW9uIGZvciBmbG9hdGluZyBwb2ludCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMu ICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZ0cml2 aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCitsb25n IGRvdWJsZSByZXN1bHQ7CisKK2xvbmcgZG91YmxlIGZvbygpCit7CisgIGZsb2F0IHRlbXAxOwor ICBkb3VibGUgdGVtcDI7CisgIGxvbmcgZG91YmxlIHRlbXAzOworICAKKyAgcmVzdWx0ID0gdGVt cDEgKyB0ZW1wMiArIHRlbXAzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1ydGwtZHVtcCAiZmVmZWZlZmUiICJleHBhbmQiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tcnRsLWR1bXAgImZlZmVmZWZlZmVmZWZlZmUiICJleHBhbmQiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAgImZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVm ZWZlIiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC01LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MTg3NGQ5NjFkNWRlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTUuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkgemVybyBp bml0aWFsaXphdGlvbiBmb3IgY29tcGxleCB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisKK19Db21wbGV4IGxvbmcg ZG91YmxlIHJlc3VsdDsKKworX0NvbXBsZXggbG9uZyBkb3VibGUgZm9vKCkKK3sKKyAgX0NvbXBs ZXggZmxvYXQgdGVtcDE7CisgIF9Db21wbGV4IGRvdWJsZSB0ZW1wMjsKKyAgX0NvbXBsZXggbG9u ZyBkb3VibGUgdGVtcDM7CisKKyAgcmVzdWx0ID0gdGVtcDEgKyB0ZW1wMiArIHRlbXAzOworICBy ZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAi Y29uc3RfaW50IDAiIDEyICJleHBhbmQiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjI3YzE2YjMzNjc4OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC02LmMKQEAgLTAsMCArMSwxOCBAQAorLyog VmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMg dmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8K KworCitfQ29tcGxleCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91Ymxl IGZvbygpCit7CisgIF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVt cDI7CisgIF9Db21wbGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsg dGVtcDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNj YW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZmZmZmZmZVxcXF1cXFwpIHJlcGVhdGVkIHgx NiIgMyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YWMyN2ZiZTkyZjRhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2FhcmNoNjQvYXV0by1pbml0LTcuYwpAQCAtMCwwICsxLDMyIEBACisvKiBWZXJpZnkgemVybyBp bml0aWFsaXphdGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQgc3RydWN0dXJlIHR5cGUgYXV0b21h dGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRp b25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICov CisKK3N0cnVjdCBTCit7CisgIGludCBmMTsKKyAgZmxvYXQgZjI7CisgIGNoYXIgZjNbMjBdOwor fTsKKwordW5pb24gVQoreworICBjaGFyIHUxWzVdOworICBpbnQgdTI7CisgIGZsb2F0IHUzOyAK K307CisKK2RvdWJsZSByZXN1bHQ7CisKK2RvdWJsZSBmb28oKQoreworICBpbnQgdGVtcDFbM107 CisgIGRvdWJsZSB0ZW1wMlszXTsKKyAgc3RydWN0IFMgdGVtcDM7CisgIHVuaW9uIFUgdGVtcDQ7 CisgIAorICByZXN1bHQgPSB0ZW1wMVsyXSArIHRlbXAyWzFdICsgdGVtcDMuZjIgKyB0ZW1wNC51 MzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAt dGltZXMgImNvbnN0X2ludCAwIiA4ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LTguYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi4zOTQzZjVhNGQ2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtOC5jCkBAIC0wLDAgKzEsMzIgQEAK Ky8qIFZlcmlmeSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciBhcnJheSwgdW5pb24sIGFuZCBz dHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4g LWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IFMKK3sKKyAgaW50IGYxOworICBmbG9h dCBmMjsKKyAgY2hhciBmM1syMF07Cit9OworCit1bmlvbiBVCit7CisgIGNoYXIgdTFbNV07Cisg IGludCB1MjsKKyAgZmxvYXQgdTM7IAorfTsKKworZG91YmxlIHJlc3VsdDsKKworZG91YmxlIGZv bygpCit7CisgIGludCB0ZW1wMVszXTsKKyAgZG91YmxlIHRlbXAyWzNdOworICBzdHJ1Y3QgUyB0 ZW1wMzsKKyAgdW5pb24gVSB0ZW1wNDsKKyAgCisgIHJlc3VsdCA9IHRlbXAxWzJdICsgdGVtcDJb MV0gKyB0ZW1wMy5mMiArIHRlbXA0LnUzOworICByZXR1cm4gcmVzdWx0OworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlXFxcXVxcXCkg cmVwZWF0ZWQgeDE2IiA0ICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDNhODhjNzI0NTQ1Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMS5j CkBAIC0wLDAgKzEsMTcgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1 Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHBhZGRpbmcuICAqLworLyog eyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFy LWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF9hbGlnbmVkIHsKKyAgICAgICAgaW50IGlu dGVybmFsMTsKKyAgICAgICAgbG9uZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAo KGFsaWduZWQoNjQpKSk7CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYWxpZ25lZCB2 YXI7CisgIHJldHVybiB2YXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInN0cFx0cTAsIHEwLCIgMiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjBmM2FjYjJmNTI4Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBh ZGRpbmctMTAuYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXph dGlvbiBmb3IgYXJyYXkgdHlwZSB3aXRoIHN0cnVjdHVyZSBlbGVtZW50IHdpdGgKKyAgIHBhZGRp bmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJp dmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3Ry dWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0 d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAi c2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307 CisKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhclsxMF07 IAorICByZXR1cm4gdmFyWzJdLmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1k dW1wLXRpbWVzICIweGZmZmZmZmZmZmZmZmZmZmVcXFxdXFxcKSByZXBlYXRlZCB4MTYiIDEgImV4 cGFuZCIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L2F1dG8taW5pdC1wYWRkaW5nLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFy Y2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMDJmN2VkYzUxMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctMTEuYwpAQCAtMCwwICsxLDI3 IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgdW5pb24gdHlwZSB3aXRoIHN0 cnVjdHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICov CisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAg ICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAg ICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUu ICovCit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgeworICBzdHJ1Y3QgdGVzdF90cmFp bGluZ19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9OworCisKK2ludCBmb28gKCkKK3sKKyAg dW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0dXJuIHZhci51MS5mb3VyOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInN0cFx0eHpyLCB4enIsIiB9IH0gKi8K KwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0 LXBhZGRpbmctMTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5p dC1wYWRkaW5nLTEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 NTU5NzJmMTcyOGYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv YWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy0xMi5jCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFZlcmlm eSBwYXR0ZXJuIGluaXRpYWxpemF0aW9uIGZvciB1bmlvbiB0eXBlIHdpdGggc3RydWN0dXJlIGZp ZWxkIHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1l eHBhbmQiIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBv bmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBm b3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5n IGhvbGUgaGVyZS4gKi8KK307CisKK3VuaW9uIHRlc3RfdW5pb25fcGFkZGluZyB7CisgIHN0cnVj dCB0ZXN0X3RyYWlsaW5nX2hvbGUgdTE7CisgIGxvbmcgbG9uZyB1MjsKK307CisKKworaW50IGZv byAoKQoreworICB1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgdmFyOworICByZXR1cm4gdmFyLnUx LmZvdXI7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZm ZmZmZmZmZmZmZmVcXFxdXFxcKSByZXBlYXRlZCB4MTYiIDEgImV4cGFuZCIgfSB9ICovCisKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRk aW5nLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRk aW5nLTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjZWNlYjg3 ZmJlMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTIuYwpAQCAtMCwwICsxLDE4IEBACisvKiBWZXJpZnkgcGF0dGVy biBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3 aXRoCisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8KKworc3RydWN0IHRl c3RfYWxpZ25lZCB7CisgICAgICAgIGludCBpbnRlcm5hbDE7CisgICAgICAgIGxvbmcgbG9uZyBp bnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitpbnQgZm9vICgp Cit7CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgdmFyOworICByZXR1cm4gdmFyLmludGVybmFsMTsK K30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJzdHBcdHEwLCBxMCwi IDIgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0 L2F1dG8taW5pdC1wYWRkaW5nLTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjA4NWMzODYyOTIxMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTMuYwpAQCAtMCwwICsxLDI3IEBACisv KiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgbmVzdGVkIHN0cnVjdHVyZSB0eXBlIGF1 dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9 ICovCisKK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbDE7 CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18g KChhbGlnbmVkKDY0KSkpOworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgICAgICAgIGNoYXIg b25lOworICAgICAgICBjaGFyIHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsKKyAgICAgICAgLyog NjEgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0IHRlc3RfYWxpZ25l ZCBmb3VyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworCitpbnQgZm9vICgp Cit7CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyLmludGVy bmFsMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJzdHBcdHEw LCBxMCwiIDQgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9h YXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjdhNmRkYmMyMGVlMQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpAQCAtMCwwICsxLDI3 IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgbmVzdGVkIHN0cnVjdHVy ZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD1wYXR0ZXJuIiB9ICovCisKK3N0cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICB1bnNpZ25l ZCBpbnRlcm5hbDE7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9f YXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7Cisg ICAgICAgIGNoYXIgb25lOworICAgICAgICBjaGFyIHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsK KyAgICAgICAgLyogNjEgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0 IHRlc3RfYWxpZ25lZCBmb3VyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKwor CitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZh ci5mb3VyLmludGVybmFsMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzICJzdHBcdHEwLCBxMCwiIDUgfSB9ICovCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNjNDVhNmM2Mjg4ZAotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTUuYwpA QCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0 dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisgICB0YWlsIHBhZGRpbmcuICAqLwor LyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8t dmFyLWluaXQ9emVybyIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAg ICAgY2hhciAqb25lOworICAgICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOwor ICAgICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAx IiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1 Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0eHpyLCB4enIsIiAyIH0gfSAq LworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8t aW5pdC1wYWRkaW5nLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L2F1dG8t aW5pdC1wYWRkaW5nLTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmJmZWYyM2Q1MmExMAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9hYXJjaDY0L2F1dG8taW5pdC1wYWRkaW5nLTYuYwpAQCAtMCwwICsxLDIwIEBACisvKiBWZXJp ZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZh cmlhYmxlcyB3aXRoCisgICB0YWlsIHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1 bXAtcnRsLWV4cGFuZCIgfSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAg ICAgY2hhciAqb25lOworICAgICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOwor ICAgICAgICBjaGFyIGZvdXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAx IiBieXRlIHBhZGRpbmcgaG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1 Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZmZmZmZmZlXFxcXVxc XCkgcmVwZWF0ZWQgeDE2IiAxICJleHBhbmQiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmctNy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2I5NmMzYTFlNGIyCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvYXV0by1pbml0LXBhZGRpbmct Ny5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBz dHJ1Y3R1cmUgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHBhZGRpbmcgYW5kIGhh cyBleHBsaWNpdCBpbml0aWFsaXphdGlvbi4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0 cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAgICBpbnQg dHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyog InNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9 OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgdmFyID0gey5v bmUgPSAxLC50d28gPSAyLCAuZm91ciA9ICdjJ307CisgIHJldHVybiB2YXIuZm91cjsKK30KKwor LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJzdHBcdHh6ciwgeHpyLCIgfSB9ICovCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFk ZGluZy04LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFk ZGluZy04LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZTdjN2Nk MzFjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC9hdXRvLWluaXQtcGFkZGluZy04LmMKQEAgLTAsMCArMSwyMiBAQAorLyogVmVyaWZ5IHBhdHRl cm4gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMg d2l0aAorICAgcGFkZGluZyBhbmQgaGFzIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLiAgKi8KKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZh ci1pbml0PXBhdHRlcm4iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAg ICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAg ICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0 ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRl c3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9uZSA9IDEsLnR3byA9IDIsIC5mb3VyID0gJ2MnfTsK KyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg InN0cFx0eHpyLCB4enIsIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODFlNWZmMjhiMGIKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9hdXRvLWluaXQtcGFkZGluZy05LmMKQEAg LTAsMCArMSwyMSBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5IHR5 cGUgd2l0aCBzdHJ1Y3R1cmUgZWxlbWVudCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5p dD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQg b25lOworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIg Zm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGlu ZyBob2xlIGhlcmUuICovCit9OworCisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJh aWxpbmdfaG9sZSB2YXJbMTBdOyAKKyAgcmV0dXJuIHZhclsyXS5mb3VyOworfQorCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInN0cFx0cTAsIHEwLCIgNSB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0xLmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMS5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjc2OTBkZjI0MDYwCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTEuYwpAQCAtMCwwICsx LDMyIEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9p bnRlciB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0g Ki8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAt cnRsLWV4cGFuZCIgfSAqLworCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9C b29sCisjZW5kaWYKKworZW51bSBFIHsKKyAgTjEgPSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4 dGVybiB2b2lkIGJhciAoY2hhciwgc2hvcnQsIGludCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcs IGludCAqLCBib29sKTsKKwordm9pZCBmb28oKQoreworICBjaGFyIHRlbXAxOworICBzaG9ydCB0 ZW1wMjsKKyAgaW50IHRlbXAzOworICBlbnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxv bmcgbG9uZyB0ZW1wNjsKKyAgaW50ICp0ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRl bXAxLCB0ZW1wMiwgdGVtcDMsIHRlbXA0LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7Cisg IHJldHVybjsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgImNvbnN0 X2ludCAwIiAxMCAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2F1dG8taW5pdC0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZTc2ZmMyNTY1MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvYXV0by1pbml0LTIuYwpAQCAtMCwwICsxLDM2IEBACisvKiBWZXJpZnkgcGF0dGVybiBp bml0aWFsaXphdGlvbiBmb3IgaW50ZWdlciBhbmQgcG9pbnRlciB0eXBlIGF1dG9tYXRpYyB2YXJp YWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLWZ0 cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIgfSAqLworCisj aWZuZGVmIF9fY3BsdXNwbHVzCisjIGRlZmluZSBib29sIF9Cb29sCisjZW5kaWYKKworZW51bSBF IHsKKyAgTjEgPSAwLAorICBOMiwKKyAgTjMKK307CisKK2V4dGVybiB2b2lkIGJhciAoY2hhciwg c2hvcnQsIGludCwgZW51bSBFLCBsb25nLCBsb25nIGxvbmcsIGludCAqLCBib29sKTsKKwordm9p ZCBmb28oKQoreworICBjaGFyIHRlbXAxOworICBzaG9ydCB0ZW1wMjsKKyAgaW50IHRlbXAzOwor ICBlbnVtIEUgdGVtcDQ7CisgIGxvbmcgdGVtcDU7CisgIGxvbmcgbG9uZyB0ZW1wNjsKKyAgaW50 ICp0ZW1wNzsKKyAgYm9vbCB0ZW1wODsKKworICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHRl bXA0LCB0ZW1wNSwgdGVtcDYsIHRlbXA3LCB0ZW1wOCk7CisgIHJldHVybjsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZmZmZmZmZSIgMiAiZXhw YW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZm ZmZmZmZmZmZlZmUiIDEgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwt ZHVtcC10aW1lcyAiMHhmZmZmZmZmZmZlZmVmZWZlIiAyICJleHBhbmQiIH0gfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZSIgMyAiZXhw YW5kIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYv YXV0by1pbml0LTIxLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQt MjEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjExOTJhOTA4Zjlk ZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC0yMS5jCkBAIC0wLDAgKzEsMTQgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9u IGZvciBWTEEgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAq LworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1y dGwtZXhwYW5kIiB9ICovCisKK2V4dGVybiB2b2lkIGJhciAoaW50KTsKKwordm9pZCBmb28oaW50 IG4pCit7CisgIGludCBhcnJbbl07CisgIGJhciAoYXJyWzJdKTsKKyAgcmV0dXJuOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcCAiX19idWlsdGluX21lbXNldCIgImV4cGFuZCIg fSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtMjIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0yMi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDMxZDk2NjRlOTRmCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIy LmMKQEAgLTAsMCArMSwxNCBAQAorLyogVmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIFZM QSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1l eHBhbmQiIH0gKi8KKworZXh0ZXJuIHZvaWQgYmFyIChpbnQpOworCit2b2lkIGZvbyhpbnQgbikK K3sKKyAgaW50IGFycltuXTsKKyAgYmFyIChhcnJbMl0pOworICByZXR1cm47Cit9CisKKy8qIHsg ZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJfX2J1aWx0aW5fbWVtc2V0IiAiZXhwYW5kIiB9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0y My5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTIzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MjA5NGY2YmRiOTIKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtMjMuYwpA QCAtMCwwICsxLDEzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlhbGl6YXRpb24gb2YgbmVz dGVkIFZMQS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICIt ZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3Zv aWQgZyh2b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAgaW50IHhbYV1bYV07CisgIGco eCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wICJfX2J1aWx0aW5fbWVtc2V0 IiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2F1dG8taW5pdC0yNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LTI0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41Y2MzYTc1 NmExYzUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9h dXRvLWluaXQtMjQuYwpAQCAtMCwwICsxLDEzIEBACisvKiBWZXJpZnkgdGhlIGF1dG8gaW5pdGlh bGl6YXRpb24gb2YgbmVzdGVkIFZMQS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyog eyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwt ZXhwYW5kIiB9ICovCisKK3ZvaWQgZyh2b2lkICopOworCit2b2lkIGZvbyhpbnQgYSkKK3sKKyAg aW50IHhbYV1bYV07CisgIGcoeCk7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1w ICJfX2J1aWx0aW5fbWVtc2V0IiAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9hdXRvLWluaXQtMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMTMwZTU1ZmUyZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTMuYwpAQCAtMCwwICsxLDE3IEBACisvKiBWZXJpZnkg emVybyBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9pbnQgdHlwZSBhdXRvbWF0aWMgdmFy aWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworbG9u ZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBmb28oKQoreworICBmbG9hdCB0ZW1wMTsK KyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1w MSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgMyAiZXhwYW5kIiB9IH0gKi8KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC00LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTUxMjViNTM3YmJkCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTQuYwpAQCAtMCwwICsx LDIwIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgZmxvYXRpbmcgcG9p bnQgdHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1w LXJ0bC1leHBhbmQiIH0gKi8KKworbG9uZyBkb3VibGUgcmVzdWx0OworCitsb25nIGRvdWJsZSBm b28oKQoreworICBmbG9hdCB0ZW1wMTsKKyAgZG91YmxlIHRlbXAyOworICBsb25nIGRvdWJsZSB0 ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7CisgIHJldHVybiByZXN1 bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZmZmZmZmZm ZmVmZWZlZmUiIDEgImV4cGFuZCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVt cC10aW1lcyAiXFxcWzB4ZmVmZWZlZmVmZWZlZmVmZVxcXF0iIDEgImV4cGFuZCIgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZWZlZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8KKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2F1dG8taW5pdC01LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4wNmMxNWJmOTM1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNS5jCkBAIC0wLDAgKzEsMjAgQEAKKy8qIFZlcmlmeSB6 ZXJvIGluaXRpYWxpemF0aW9uIGZvciBjb21wbGV4IHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4g ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwt YXV0by12YXItaW5pdD16ZXJvIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKKworX0NvbXBsZXgg bG9uZyBkb3VibGUgcmVzdWx0OworCitfQ29tcGxleCBsb25nIGRvdWJsZSBmb28oKQoreworICBf Q29tcGxleCBmbG9hdCB0ZW1wMTsKKyAgX0NvbXBsZXggZG91YmxlIHRlbXAyOworICBfQ29tcGxl eCBsb25nIGRvdWJsZSB0ZW1wMzsKKworICByZXN1bHQgPSB0ZW1wMSArIHRlbXAyICsgdGVtcDM7 CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRp bWVzICJjb25zdF9pbnQgMCIgNCAiZXhwYW5kIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjgwYmQ1NmJjYjlhNwotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC02LmMKQEAgLTAsMCArMSwxOSBAQAorLyogVmVy aWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIGNvbXBsZXggdHlwZSBhdXRvbWF0aWMgdmFy aWFibGVzLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1m dHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKwor CitfQ29tcGxleCBsb25nIGRvdWJsZSByZXN1bHQ7CisKK19Db21wbGV4IGxvbmcgZG91YmxlIGZv bygpCit7CisgIF9Db21wbGV4IGZsb2F0IHRlbXAxOworICBfQ29tcGxleCBkb3VibGUgdGVtcDI7 CisgIF9Db21wbGV4IGxvbmcgZG91YmxlIHRlbXAzOworCisgIHJlc3VsdCA9IHRlbXAxICsgdGVt cDIgKyB0ZW1wMzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4t cnRsLWR1bXAtdGltZXMgIlxcXFsweGZlZmVmZWZlZmVmZWZlZmVcXFxdIiAxICJleHBhbmQiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZl ZmVmZWZlZmVmZWZlZmVmZWZlZmUiIDMgImV4cGFuZCIgfSB9ICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmU5MWEwMjQ2MzFkYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC03LmMKQEAgLTAsMCArMSwzMiBAQAorLyogVmVy aWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5LCB1bmlvbiwgYW5kIHN0cnVjdHVyZSB0 eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyAtZmR1bXAtcnRsLWV4 cGFuZCIgfSAqLworCitzdHJ1Y3QgUworeworICBpbnQgZjE7CisgIGZsb2F0IGYyOworICBjaGFy IGYzWzIwXTsKK307CisKK3VuaW9uIFUKK3sKKyAgY2hhciB1MVs1XTsKKyAgaW50IHUyOworICBm bG9hdCB1MzsgCit9OworCitkb3VibGUgcmVzdWx0OworCitkb3VibGUgZm9vKCkKK3sKKyAgaW50 IHRlbXAxWzNdOworICBkb3VibGUgdGVtcDJbM107CisgIHN0cnVjdCBTIHRlbXAzOworICB1bmlv biBVIHRlbXA0OworICAKKyAgcmVzdWx0ID0gdGVtcDFbMl0gKyB0ZW1wMlsxXSArIHRlbXAzLmYy ICsgdGVtcDQudTM7CisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2Fu LXJ0bC1kdW1wLXRpbWVzICJjb25zdF9pbnQgMCIgNyAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC04LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtOC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNTVlNTViZTNiZGQyCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTguYwpAQCAtMCwwICsxLDM1IEBA CisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXksIHVuaW9uLCBhbmQg c3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcy4gICovCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJu IC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCBTCit7CisgIGludCBmMTsKKyAgZmxv YXQgZjI7CisgIGNoYXIgZjNbMjBdOworfTsKKwordW5pb24gVQoreworICBjaGFyIHUxWzVdOwor ICBpbnQgdTI7CisgIGZsb2F0IHUzOyAKK307CisKK2RvdWJsZSByZXN1bHQ7CisKK2RvdWJsZSBm b28oKQoreworICBpbnQgdGVtcDFbM107CisgIGRvdWJsZSB0ZW1wMlszXTsKKyAgc3RydWN0IFMg dGVtcDM7CisgIHVuaW9uIFUgdGVtcDQ7CisgIAorICByZXN1bHQgPSB0ZW1wMVsyXSArIHRlbXAy WzFdICsgdGVtcDMuZjIgKyB0ZW1wNC51MzsKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogeyBk Zy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmZmZmZmZmZmZWZlZmVmZSIgMSAiZXhw YW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICJcXFxbMHhm ZWZlZmVmZWZlZmVmZWZlXFxcXSIgMyAiZXhwYW5kIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLXJ0bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlIiAz ICJleHBhbmQiIH0gfSAqLworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5iNDA2OTc5N2Q5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xLmMKQEAgLTAsMCArMSwxOSBAQAorLyog VmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2 YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0 cnVjdCB0ZXN0X2FsaWduZWQgeworICAgICAgICBpbnQgaW50ZXJuYWwxOworICAgICAgICBsb25n IGxvbmcgaW50ZXJuYWwyOworfSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworaW50 IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIHZhcjsKKyAgcmV0dXJuIHZhci5pbnRl cm5hbDE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0 XFxcJDAsIiA4IH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uYWY3YTYwMjhjNWNlCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTAuYwpAQCAtMCwwICsxLDIxIEBA CisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgYXJyYXkgdHlwZSB3aXRoIHN0 cnVjdHVyZSBlbGVtZW50IHdpdGgKKyAgIHBhZGRpbmcuICAqLyAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4g LWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7Cisg ICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAg ICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIg Ynl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKKworaW50IGZvbyAoKQoreworICBzdHJ1 Y3QgdGVzdF90cmFpbGluZ19ob2xlIHZhclsxMF07IAorICByZXR1cm4gdmFyWzJdLmZvdXI7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLXJ0bC1kdW1wLXRpbWVzICIweGZlZmVmZWZlZmVmZWZl ZmVmZWZlZmVmZWZlZmVmZWZlIiAxMCAiZXhwYW5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTExLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFhM2VlMWZlOTcxCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTEu YwpAQCAtMCwwICsxLDI2IEBACisvKiBWZXJpZnkgemVybyBpbml0aWFsaXphdGlvbiBmb3IgdW5p b24gdHlwZSB3aXRoIHN0cnVjdHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBp bnQgb25lOworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNo YXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFk ZGluZyBob2xlIGhlcmUuICovCit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcgeworICBz dHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9OworCisKK2lu dCBmb28gKCkKK3sKKyAgdW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0dXJuIHZh ci51MS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1v dnFcdFxcXCQwLCIgMiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtcGFkZGluZy0xMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uYmY5ZWE1ZDYyOWEzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctMTIuYwpAQCAtMCwwICsxLDI2IEBA CisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgdW5pb24gdHlwZSB3aXRoIHN0 cnVjdHVyZSBmaWVsZCB3aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD1wYXR0ZXJuIC1m ZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAg ICAgICBpbnQgb25lOworICAgICAgICBpbnQgdHdvOworICAgICAgICBpbnQgdGhyZWU7CisgICAg ICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5 dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCit1bmlvbiB0ZXN0X3VuaW9uX3BhZGRpbmcg eworICBzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHUxOworICBsb25nIGxvbmcgdTI7Cit9Owor CisKK2ludCBmb28gKCkKK3sKKyAgdW5pb24gdGVzdF91bmlvbl9wYWRkaW5nIHZhcjsKKyAgcmV0 dXJuIHZhci51MS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1l cyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZSIgMSAiZXhwYW5kIiB9IH0gKi8K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRk aW5nLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJkYzJkMDM1YTZj OQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC1wYWRkaW5nLTIuYwpAQCAtMCwwICsxLDE5IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0 aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisg ICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4gLWZkdW1wLXJ0bC1leHBhbmQiIH0gKi8K Kworc3RydWN0IHRlc3RfYWxpZ25lZCB7CisgICAgICAgIGludCBpbnRlcm5hbDE7CisgICAgICAg IGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkpOwor CitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0ZXN0X2FsaWduZWQgdmFyOworICByZXR1cm4gdmFy LmludGVybmFsMTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4 ZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmUiIDQgImV4cGFuZCIgfSB9ICovCisKKwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRp bmctMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmct My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGE2ZDc2NGI5ZmE0 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1p bml0LXBhZGRpbmctMy5jCkBAIC0wLDAgKzEsMzAgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxp emF0aW9uIGZvciBuZXN0ZWQgc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRo CisgICBwYWRkaW5nLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfYWxp Z25lZCB7CisgICAgICAgIHVuc2lnbmVkIGludGVybmFsMTsKKyAgICAgICAgdW5zaWduZWQgbG9u ZyBsb25nIGludGVybmFsMjsKK30gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoNjQpKSk7CisKK3N0 cnVjdCB0ZXN0X2JpZ19ob2xlIHsKKyAgICAgICAgY2hhciBvbmU7CisgICAgICAgIGNoYXIgdHdv OworICAgICAgICBjaGFyIHRocmVlOworICAgICAgICAvKiA2MSBieXRlIHBhZGRpbmcgaG9sZSBo ZXJlLiAqLworICAgICAgICBzdHJ1Y3QgdGVzdF9hbGlnbmVkIGZvdXI7Cit9IF9fYXR0cmlidXRl X18gKChhbGlnbmVkKDY0KSkpOworCisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfYmln X2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXIuaW50ZXJuYWwxOworfQorCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxcdFxcXCQwLCIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxcdFxcXCQxNiwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJyZXAgc3Rvc3EiIH0gfSAqLworCisKZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFhZDYwMjQzYWE0YwotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5nLTQuYwpA QCAtMCwwICsxLDI4IEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0aWFsaXphdGlvbiBmb3IgbmVz dGVkIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZy4g ICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwt YXV0by12YXItaW5pdD1wYXR0ZXJuIC1mZHVtcC1ydGwtZXhwYW5kIiB9ICovCisKK3N0cnVjdCB0 ZXN0X2FsaWduZWQgeworICAgICAgICB1bnNpZ25lZCBpbnRlcm5hbDE7CisgICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyBpbnRlcm5hbDI7Cit9IF9fYXR0cmlidXRlX18gKChhbGlnbmVkKDY0KSkp OworCitzdHJ1Y3QgdGVzdF9iaWdfaG9sZSB7CisgICAgICAgIGNoYXIgb25lOworICAgICAgICBj aGFyIHR3bzsKKyAgICAgICAgY2hhciB0aHJlZTsKKyAgICAgICAgLyogNjEgYnl0ZSBwYWRkaW5n IGhvbGUgaGVyZS4gKi8KKyAgICAgICAgc3RydWN0IHRlc3RfYWxpZ25lZCBmb3VyOworfSBfX2F0 dHJpYnV0ZV9fICgoYWxpZ25lZCg2NCkpKTsKKworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0 ZXN0X2JpZ19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyLmludGVybmFsMTsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tcnRsLWR1bXAtdGltZXMgIjB4ZmVmZWZlZmVmZWZlZmVmZWZlZmVm ZWZlZmVmZWZlZmUiIDggImV4cGFuZCIgfSB9ICovCisKKwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTE4YmMzMDczZTE4Ci0tLSAvZGV2L251bGwKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYXV0by1pbml0LXBhZGRpbmctNS5jCkBAIC0w LDAgKzEsMjIgQEAKKy8qIFZlcmlmeSB6ZXJvIGluaXRpYWxpemF0aW9uIGZvciBzdHJ1Y3R1cmUg dHlwZSBhdXRvbWF0aWMgdmFyaWFibGVzIHdpdGgKKyAgIHRhaWwgcGFkZGluZy4gICovCisvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBj aGFyICpvbmU7CisgICAgICAgIGNoYXIgKnR3bzsKKyAgICAgICAgY2hhciAqdGhyZWU7CisgICAg ICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1bnNpZ25lZCBsb25nKSAtIDEiIGJ5 dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCitpbnQgZm9vICgpCit7CisgIHN0cnVjdCB0 ZXN0X3RyYWlsaW5nX2hvbGUgdmFyOworICByZXR1cm4gdmFyLmZvdXI7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVx0XFxcJDAsIiA0IH0gfSAqLworCisK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRk aW5nLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC1wYWRkaW5n LTYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjczOGEzNDBlZmI2 MQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2F1dG8t aW5pdC1wYWRkaW5nLTYuYwpAQCAtMCwwICsxLDIyIEBACisvKiBWZXJpZnkgcGF0dGVybiBpbml0 aWFsaXphdGlvbiBmb3Igc3RydWN0dXJlIHR5cGUgYXV0b21hdGljIHZhcmlhYmxlcyB3aXRoCisg ICB0YWlsIHBhZGRpbmcuICAqLworLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9cGF0dGVybiAtZmR1bXAtcnRsLWV4cGFuZCIg fSAqLworCitzdHJ1Y3QgdGVzdF90cmFpbGluZ19ob2xlIHsKKyAgICAgICAgY2hhciAqb25lOwor ICAgICAgICBjaGFyICp0d287CisgICAgICAgIGNoYXIgKnRocmVlOworICAgICAgICBjaGFyIGZv dXI7CisgICAgICAgIC8qICJzaXplb2YodW5zaWduZWQgbG9uZykgLSAxIiBieXRlIHBhZGRpbmcg aG9sZSBoZXJlLiAqLworfTsKKworaW50IGZvbyAoKQoreworICBzdHJ1Y3QgdGVzdF90cmFpbGlu Z19ob2xlIHZhcjsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1ydGwtZHVtcC10aW1lcyAiMHhmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZSIgMiAi ZXhwYW5kIiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtcGFkZGluZy03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4 Ni9hdXRvLWluaXQtcGFkZGluZy03LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5iNWFiZmZiMGZjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy03LmMKQEAgLTAsMCArMSwyMiBAQAorLyog VmVyaWZ5IHplcm8gaW5pdGlhbGl6YXRpb24gZm9yIHN0cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2 YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZyBhbmQgaGFzIGV4cGxpY2l0IGluaXRpYWxpemF0aW9u LiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlh bC1hdXRvLXZhci1pbml0PXplcm8iIH0gKi8KKworc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7 CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGludCB0d287CisgICAgICAgIGludCB0aHJlZTsK KyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAvKiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0g MSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8KK307CisKK2ludCBmb28gKCkKK3sKKyAgc3Ry dWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7Lm9uZSA9IDEsLnR3byA9IDIsIC5mb3VyID0g J2MnfTsKKyAgcmV0dXJuIHZhci5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItdGltZXMgIm1vdnFcdFxcXCQwLCIgMiB9IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NjU5MWNmZjQ0ODgKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWluaXQtcGFkZGluZy04LmMK QEAgLTAsMCArMSwyMiBAQAorLyogVmVyaWZ5IHBhdHRlcm4gaW5pdGlhbGl6YXRpb24gZm9yIHN0 cnVjdHVyZSB0eXBlIGF1dG9tYXRpYyB2YXJpYWJsZXMgd2l0aAorICAgcGFkZGluZyBhbmQgaGFz IGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLiAgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisv KiB7IGRnLW9wdGlvbnMgIi1mdHJpdmlhbC1hdXRvLXZhci1pbml0PXBhdHRlcm4iIH0gKi8KKwor c3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB7CisgICAgICAgIGludCBvbmU7CisgICAgICAgIGlu dCB0d287CisgICAgICAgIGludCB0aHJlZTsKKyAgICAgICAgY2hhciBmb3VyOworICAgICAgICAv KiAic2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSIgYnl0ZSBwYWRkaW5nIGhvbGUgaGVyZS4gKi8K K307CisKK2ludCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXIgPSB7 Lm9uZSA9IDEsLnR3byA9IDIsIC5mb3VyID0gJ2MnfTsKKyAgcmV0dXJuIHZhci5mb3VyOworfQor CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFcdFxcXCQwLCIgMiB9 IH0gKi8KKworCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRv LWluaXQtcGFkZGluZy05LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hdXRvLWlu aXQtcGFkZGluZy05LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40 MGZjY2FkZjkyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9hdXRvLWluaXQtcGFkZGluZy05LmMKQEAgLTAsMCArMSwyMyBAQAorLyogVmVyaWZ5IHpl cm8gaW5pdGlhbGl6YXRpb24gZm9yIGFycmF5IHR5cGUgd2l0aCBzdHJ1Y3R1cmUgZWxlbWVudCB3 aXRoCisgICBwYWRkaW5nLiAgKi8gCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1v cHRpb25zICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIiB9ICovCisKK3N0cnVjdCB0ZXN0 X3RyYWlsaW5nX2hvbGUgeworICAgICAgICBpbnQgb25lOworICAgICAgICBpbnQgdHdvOworICAg ICAgICBpbnQgdGhyZWU7CisgICAgICAgIGNoYXIgZm91cjsKKyAgICAgICAgLyogInNpemVvZih1 bnNpZ25lZCBsb25nKSAtIDEiIGJ5dGUgcGFkZGluZyBob2xlIGhlcmUuICovCit9OworCisKK2lu dCBmb28gKCkKK3sKKyAgc3RydWN0IHRlc3RfdHJhaWxpbmdfaG9sZSB2YXJbMTBdOyAKKyAgcmV0 dXJuIHZhclsyXS5mb3VyOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1v dmxcdFxcXCQwLCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIm1vdmxc dFxcXCQyMCwiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJyZXAgc3Rv c3EiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY2ZnLmMgYi9nY2MvdHJlZS1jZmcuYwpp bmRleCBjOGIwZjdiMzNlMTIuLjhkMzE4N2QxOTY2NSAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtY2Zn LmMKKysrIGIvZ2NjL3RyZWUtY2ZnLmMKQEAgLTM0NTcsMzEgKzM0NTcsOTIgQEAgdmVyaWZ5X2dp bXBsZV9jYWxsIChnY2FsbCAqc3RtdCkKIAl9CiAgICAgfQogCisgIC8qIEZvciBhIGNhbGwgdG8g LkRFRkVSUkVEX0lOSVQsIHdlIHNob3VsZCBndWFyYW50ZWUgdGhhdCB0aGUgMXN0IGFuZCB0aGUg M3JkCisgICAgIGFyZ3VtZW50IGlzIGNvbnNpc3RlbnQsIGkuZS46CisgICAgIDFzdCBhcmd1bWVu dDogU0laRSBvZiB0aGUgREVDTDsKKyAgICAgM3JkIGFyZ3VtZW50OiBJU19WTEEsIDAgTk8sIDEg WUVTOworCisgICAgIGlmIElTX1ZMQSBpcyBmYWxzZSwgdGhlIDFzdCBhcmd1bWVudCBzaG91bGQg YmUgYSBjb25zdGFudCBhbmQgdGhlIHNhbWUgYXMKKyAgICAgdGhlIHNpemUgb2YgdGhlIExIUy4g ICovCisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fREVGRVJSRURfSU5J VCkpCisgICAgeworICAgICAgdHJlZSBzaXplX29mX2FyZzAgPSBnaW1wbGVfY2FsbF9hcmcgKHN0 bXQsIDApOworICAgICAgdHJlZSBzaXplX29mX2xocyA9IFRZUEVfU0laRV9VTklUIChUUkVFX1RZ UEUgKGxocykpOworICAgICAgdHJlZSBpc192bGFfbm9kZSA9IGdpbXBsZV9jYWxsX2FyZyAoc3Rt dCwgMik7CisgICAgICBib29sIGlzX3ZsYSA9IChib29sKSBUUkVFX0lOVF9DU1RfTE9XIChpc192 bGFfbm9kZSk7CisKKyAgICAgIGlmIChUUkVFX0NPREUgKGxocykgPT0gU1NBX05BTUUpCisgICAg ICAgbGhzID0gU1NBX05BTUVfVkFSIChsaHMpOworCisgICAgICBwb2x5X3VpbnQ2NCBzaXplX2Zy b21fYXJnMCwgc2l6ZV9mcm9tX2xoczsKKyAgICAgIGJvb2wgaXNfY29uc3RhbnRfc2l6ZV9hcmcw ID0gcG9seV9pbnRfdHJlZV9wIChzaXplX29mX2FyZzAsCisJCQkJCQkgICAgJnNpemVfZnJvbV9h cmcwKTsKKyAgICAgIGJvb2wgaXNfY29uc3RhbnRfc2l6ZV9saHMgPSBwb2x5X2ludF90cmVlX3Ag KHNpemVfb2ZfbGhzLAorCQkJCQkJICAgJnNpemVfZnJvbV9saHMpOworICAgICAgaWYgKCFpc192 bGEpCisJeworCSAgaWYgKCFpc19jb25zdGFudF9zaXplX2FyZzApCisJICAgIHsKKwkgICAgICBl cnJvciAoIiU8REVGRkVSRURfSU5JVCU+IGNhbGxzIGZvciBub24tVkxBIHNob3VsZCBoYXZlICIK KwkJICAgICAiY29uc3RhbnQgc2l6ZSBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50Iik7CisJICAgICAg cmV0dXJuIHRydWU7CisJICAgIH0KKwkgIGVsc2UgaWYgKCFpc19jb25zdGFudF9zaXplX2xocykK KwkgICAgeworCSAgICAgIGVycm9yICgiJTxERUZGRVJFRF9JTklUJT4gY2FsbHMgZm9yIG5vbi1W TEEgc2hvdWxkIGhhdmUgIgorCQkgICAgICJjb25zdGFudCBzaXplIGZvciB0aGUgTEhTIik7CisJ ICAgICAgcmV0dXJuIHRydWU7CisJICAgIH0KKwkgIGVsc2UgaWYgKG1heWJlX25lIChzaXplX2Zy b21fYXJnMCwgc2l6ZV9mcm9tX2xocykpCisJICAgIHsKKwkgICAgICBlcnJvciAoIiU8REVGRkVS RURfSU5JVCU+IGNhbGxzIGZvciBub24tVkxBIHNob3VsZCBoYXZlIHNhbWUgIgorCQkgICAgICJj b25zdGFudCBzaXplIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIExIUyIpOworCSAgICAgIHJl dHVybiB0cnVlOworCSAgICB9CisJfQorICAgIH0KKworICAvKiBXZSB3aWxsIG5vdCB2ZXJpZnkg dGhlIGFyZ3VtZW50cyBmb3IgdGhlIGNhbGxzIHRvIC5ERUZFUlJFRF9JTklULgorICAgICBTdWNo IGNhbGwgaXMgbm90IGEgcmVhbCBjYWxsLCBqdXN0IGEgcGxhY2Vob2xkZXIgZm9yIGEgbGF0ZXIK KyAgICAgaW5pdGlhbGl6YXRpb24gZHVyaW5nIGV4cGFuZCBwaGFzZS4KKyAgICAgVGhpcyBpcyBt YWlubHkgdG8gYXZvaWQgYXNzZXJ0aW9uIGZhaWx1cmUgZm9yIHRoZSBmb2xsb3dpbmcKKyAgICAg Y2FzZToKKworICAgICB1bmlfdmFyID0gLkRFRkVSUkVEX0lOSVQgKHZhcl9zaXplLCBJTklUX1RZ UEUsIGlzX3ZsYSk7CisgICAgIGZvbyAoJnVuaV92YXIpOworCisgICAgIGluIHRoZSBhYm92ZSwg dGhlIHVuaW5pdGlhbGl6ZWQgYXV0byB2YXJpYWJsZSAidW5pX3ZhciIgaXMKKyAgICAgYWRkcmVz c2FibGUsIHRoZXJlZm9yZSBzaG91bGQgbm90IGJlIGluIHJlZ2lzdGVycywgcmVzdWx0aW5nCisg ICAgIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpbiB0aGUgZm9sbG93aW5nIGFyZ3VtZW50IHZlcmlm aWNhdGlvbi4gICovCisgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fREVG RVJSRURfSU5JVCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIC8qID8/PyAgVGhlIEMgZnJvbnRl bmQgcGFzc2VzIHVucHJvbW90ZWQgYXJndW1lbnRzIGluIGNhc2UgaXQKICAgICAgZGlkbid0IHNl ZSBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGJlZm9yZSB0aGUgY2FsbC4gIFNvIGZvciBub3cKICAg ICAgbGVhdmUgdGhlIGNhbGwgYXJndW1lbnRzIG1vc3RseSB1bnZlcmlmaWVkLiAgT25jZSB3ZSBn aW1wbGlmeQogICAgICB1bml0LWF0LWEtdGltZSB3ZSBoYXZlIGEgY2hhbmNlIHRvIGZpeCB0aGlz LiAgKi8KIAotICBmb3IgKGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyAr K2kpCi0gICAgewotICAgICAgdHJlZSBhcmcgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkpOwot ICAgICAgaWYgKChpc19naW1wbGVfcmVnX3R5cGUgKFRSRUVfVFlQRSAoYXJnKSkKLQkgICAmJiAh aXNfZ2ltcGxlX3ZhbCAoYXJnKSkKLQkgIHx8ICghaXNfZ2ltcGxlX3JlZ190eXBlIChUUkVFX1RZ UEUgKGFyZykpCi0JICAgICAgJiYgIWlzX2dpbXBsZV9sdmFsdWUgKGFyZykpKQotCXsKLQkgIGVy cm9yICgiaW52YWxpZCBhcmd1bWVudCB0byBnaW1wbGUgY2FsbCIpOwotCSAgZGVidWdfZ2VuZXJp Y19leHByIChhcmcpOwotCSAgcmV0dXJuIHRydWU7Ci0JfQotICAgICAgaWYgKCFpc19naW1wbGVf cmVnIChhcmcpKQotCXsKLQkgIGlmIChUUkVFX0NPREUgKGFyZykgPT0gV0lUSF9TSVpFX0VYUFIp Ci0JICAgIGFyZyA9IFRSRUVfT1BFUkFORCAoYXJnLCAwKTsKLQkgIGlmICh2ZXJpZnlfdHlwZXNf aW5fZ2ltcGxlX3JlZmVyZW5jZSAoYXJnLCBmYWxzZSkpCisgIGVsc2UKKyAgICBmb3IgKGkgPSAw OyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyArK2kpCisgICAgICB7CisJdHJlZSBh cmcgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIGkpOworCWlmICgoaXNfZ2ltcGxlX3JlZ190eXBl IChUUkVFX1RZUEUgKGFyZykpCisJICAgICAmJiAhaXNfZ2ltcGxlX3ZhbCAoYXJnKSkKKwkgICAg fHwgKCFpc19naW1wbGVfcmVnX3R5cGUgKFRSRUVfVFlQRSAoYXJnKSkKKwkJJiYgIWlzX2dpbXBs ZV9sdmFsdWUgKGFyZykpKQorCSAgeworCSAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgdG8g Z2ltcGxlIGNhbGwiKTsKKwkgICAgZGVidWdfZ2VuZXJpY19leHByIChhcmcpOwogCSAgICByZXR1 cm4gdHJ1ZTsKLQl9Ci0gICAgfQorCSAgfQorCWlmICghaXNfZ2ltcGxlX3JlZyAoYXJnKSkKKwkg IHsKKwkgICAgaWYgKFRSRUVfQ09ERSAoYXJnKSA9PSBXSVRIX1NJWkVfRVhQUikKKwkgICAgICBh cmcgPSBUUkVFX09QRVJBTkQgKGFyZywgMCk7CisJICAgIGlmICh2ZXJpZnlfdHlwZXNfaW5fZ2lt cGxlX3JlZmVyZW5jZSAoYXJnLCBmYWxzZSkpCisJICAgICAgcmV0dXJuIHRydWU7CisJICB9Cisg ICAgICB9CiAKICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3JhLmMg Yi9nY2MvdHJlZS1zcmEuYwppbmRleCBjMDVkMjJmM2U4ZjEuLjQ1YzllOTE2ZjU1YSAxMDA2NDQK LS0tIGEvZ2NjL3RyZWUtc3JhLmMKKysrIGIvZ2NjL3RyZWUtc3JhLmMKQEAgLTM4NCw2ICszODQs MTMgQEAgc3RhdGljIHN0cnVjdAogCiAgIC8qIE51bWJiZXIgb2YgY29tcG9uZW50cyBjcmVhdGVk IHdoZW4gc3BsaXR0aW5nIGFnZ3JlZ2F0ZSBwYXJhbWV0ZXJzLiAgKi8KICAgaW50IHBhcmFtX3Jl ZHVjdGlvbnNfY3JlYXRlZDsKKworICAvKiBOdW1iZXIgb2YgZGVmZXJyZWRfaW5pdCBjYWxscyB0 aGF0IGFyZSBtb2RpZmllZC4gICovCisgIGludCBkZWZlcnJlZF9pbml0OworCisgIC8qIE51bWJl ciBvZiBkZWZlcnJlZF9pbml0IGNhbGxzIHRoYXQgYXJlIGNyZWF0ZWQgYnkKKyAgICAgZ2VuZXJh dGVfc3VidHJlZV9kZWZlcnJlZF9pbml0LiAgKi8KKyAgaW50IHN1YnRyZWVfZGVmZXJyZWRfaW5p dDsKIH0gc3JhX3N0YXRzOwogCiBzdGF0aWMgdm9pZApAQCAtMTM4OCw3ICsxMzk1LDE0IEBAIHNj YW5fZnVuY3Rpb24gKHZvaWQpCiAKIAkgICAgICB0ID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsK IAkgICAgICBpZiAodCAmJiAhZGlzcXVhbGlmeV9pZl9iYWRfYmJfdGVybWluYXRpbmdfc3RtdCAo c3RtdCwgdCwgTlVMTCkpCi0JCXJldCB8PSBidWlsZF9hY2Nlc3NfZnJvbV9leHByICh0LCBzdG10 LCB0cnVlKTsKKwkJeworCQkgIC8qIElmIHRoZSBTVE1UIGlzIGEgY2FsbCB0byBERUZFUlJFRF9J TklULCBhdm9pZCBzZXR0aW5nCisJCSAgICAgY2Fubm90X3NjYWxhcml6ZV9hd2F5X2JpdG1hcC4g ICovCisJCSAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJFRF9J TklUKSkKKwkJICAgIHJldCB8PSAhIWJ1aWxkX2FjY2Vzc19mcm9tX2V4cHJfMSAodCwgc3RtdCwg dHJ1ZSk7CisJCSAgZWxzZQorCQkgICAgcmV0IHw9IGJ1aWxkX2FjY2Vzc19mcm9tX2V4cHIgKHQs IHN0bXQsIHRydWUpOworCQl9CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBHSU1QTEVfQVNN OgpAQCAtNDA5Niw2ICs0MTEwLDg4IEBAIGdldF9yZXBsX2RlZmF1bHRfZGVmX3NzYV9uYW1lIChz dHJ1Y3QgYWNjZXNzICpyYWNjLCB0cmVlIHJlZ190eXBlKQogICByZXR1cm4gZ2V0X29yX2NyZWF0 ZV9zc2FfZGVmYXVsdF9kZWYgKGNmdW4sIHJhY2MtPnJlcGxhY2VtZW50X2RlY2wpOwogfQogCisK Ky8qIEdlbmVyYXRlIHN0YXRlbWVudHMgdG8gY2FsbCAuREVGRVJSRURfSU5JVCB0byBpbml0aWFs aXplIHNjYWxhciByZXBsYWNlbWVudHMKKyAgIG9mIGFjY2Vzc2VzIHdpdGhpbiBhIHN1YnRyZWUg QUNDRVNTOyBhbGwgaXRzIGNoaWxkcmVuLCBzaWJsaW5ncyBhbmQgdGhlaXIKKyAgIGNoaWxkcmVu IGFyZSB0byBiZSBwcm9jZXNzZWQuCisgICBHU0kgaXMgYSBzdGF0ZW1lbnQgaXRlcmF0b3IgdXNl ZCB0byBwbGFjZSB0aGUgbmV3IHN0YXRlbWVudHMuICAqLworc3RhdGljIHZvaWQKK2dlbmVyYXRl X3N1YnRyZWVfZGVmZXJyZWRfaW5pdCAoc3RydWN0IGFjY2VzcyAqYWNjZXNzLAorCQkJCXRyZWUg aW5pdF90eXBlLAorCQkJCXRyZWUgaXNfdmxhLAorCQkJCWdpbXBsZV9zdG10X2l0ZXJhdG9yICpn c2ksCisJCQkJbG9jYXRpb25fdCBsb2MpCit7CisgIGRvCisgICAgeworICAgICAgaWYgKGFjY2Vz cy0+Z3JwX3RvX2JlX3JlcGxhY2VkKQorCXsKKwkgIHRyZWUgcmVwbCA9IGdldF9hY2Nlc3NfcmVw bGFjZW1lbnQgKGFjY2Vzcyk7CisJICBnaW1wbGUgKmNhbGwKKwkgICAgPSBnaW1wbGVfYnVpbGRf Y2FsbF9pbnRlcm5hbCAoSUZOX0RFRkVSUkVEX0lOSVQsIDMsCisJCQkJCSAgVFlQRV9TSVpFX1VO SVQgKFRSRUVfVFlQRSAocmVwbCkpLAorCQkJCQkgIGluaXRfdHlwZSwgaXNfdmxhKTsKKwkgIGdp bXBsZV9jYWxsX3NldF9saHMgKGNhbGwsIHJlcGwpOworCSAgZ3NpX2luc2VydF9iZWZvcmUgKGdz aSwgY2FsbCwgR1NJX1NBTUVfU1RNVCk7CisJICB1cGRhdGVfc3RtdCAoY2FsbCk7CisJICBnaW1w bGVfc2V0X2xvY2F0aW9uIChjYWxsLCBsb2MpOworCSAgc3JhX3N0YXRzLnN1YnRyZWVfZGVmZXJy ZWRfaW5pdCsrOworCX0KKyAgICAgIGlmIChhY2Nlc3MtPmZpcnN0X2NoaWxkKQorCWdlbmVyYXRl X3N1YnRyZWVfZGVmZXJyZWRfaW5pdCAoYWNjZXNzLT5maXJzdF9jaGlsZCwgaW5pdF90eXBlLAor CQkJCQlpc192bGEsIGdzaSwgbG9jKTsKKworICAgICAgYWNjZXNzID0gYWNjZXNzIC0+bmV4dF9z aWJsaW5nOworICAgIH0KKyAgd2hpbGUgKGFjY2Vzcyk7Cit9CisKKy8qIEZvciBhIGNhbGwgdG8g LkRFRkVSUkVEX0lOSVQ6CisgICB2YXIgPSAuREVGRVJSRURfSU5JVCAoc2l6ZV9vZl92YXIsIGlu aXRfdHlwZSwgaXNfdmxhKTsKKyAgIGV4YW1pbmUgdGhlIExIUyB2YXJpYWJsZSBWQVIgYW5kIHJl cGxhY2UgaXQgd2l0aCBhIHNjYWxhciByZXBsYWNlbWVudCBpZgorICAgdGhlcmUgaXMgb25lLCBh bHNvIHJlcGxhY2UgdGhlIFJIUyBjYWxsIHRvIGEgY2FsbCB0byAuREVGRVJSRURfSU5JVCBvZgor ICAgdGhlIGNvcnJlc3BvbmRpbmcgc2NhbGFyIHJlbGFjZW1lbnQgdmFyaWFibGUuICBFeGFtaW5l IHRoZSBzdWJ0cmVlIGFuZAorICAgZG8gdGhlIHNjYWxhciByZXBsYWNlbWVudHMgaW4gdGhlIHN1 YnRyZWUgdG9vLiAgU1RNVCBpcyB0aGUgY2FsbCwgR1NJIGlzCisgICB0aGUgc3RhdG1lbnQgaXRl cmF0b3IgdG8gcGxhY2UgbmV3bHkgY3JlYXRlZCBzdGF0ZW1lbnQuICAqLworCitzdGF0aWMgZW51 bSBhc3NpZ25tZW50X21vZF9yZXN1bHQKK3NyYV9tb2RpZnlfZGVmZXJyZWRfaW5pdCAoZ2ltcGxl ICpzdG10LCBnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpKQoreworICB0cmVlIGxocyA9IGdpbXBs ZV9jYWxsX2xocyAoc3RtdCk7CisgIHRyZWUgaW5pdF90eXBlID0gZ2ltcGxlX2NhbGxfYXJnIChz dG10LCAxKTsKKyAgdHJlZSBpc192bGEgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDIpOworCisg IHN0cnVjdCBhY2Nlc3MgKmxoc19hY2Nlc3MgPSBnZXRfYWNjZXNzX2Zvcl9leHByIChsaHMpOwor ICBpZiAoIWxoc19hY2Nlc3MpCisgICAgcmV0dXJuIFNSQV9BTV9OT05FOworCisgIGxvY2F0aW9u X3QgbG9jID0gZ2ltcGxlX2xvY2F0aW9uIChzdG10KTsKKworICBpZiAobGhzX2FjY2Vzcy0+Z3Jw X3RvX2JlX3JlcGxhY2VkKQorICAgIHsKKyAgICAgIHRyZWUgbGhzX3JlcGwgPSBnZXRfYWNjZXNz X3JlcGxhY2VtZW50IChsaHNfYWNjZXNzKTsKKyAgICAgIGdpbXBsZV9jYWxsX3NldF9saHMgKHN0 bXQsIGxoc19yZXBsKTsKKyAgICAgIHRyZWUgYXJnMF9yZXBsID0gVFlQRV9TSVpFX1VOSVQgKFRS RUVfVFlQRSAobGhzX3JlcGwpKTsKKyAgICAgIGdpbXBsZV9jYWxsX3NldF9hcmcgKHN0bXQsIDAs IGFyZzBfcmVwbCk7CisgICAgICBzcmFfc3RhdHMuZGVmZXJyZWRfaW5pdCsrOworICAgICAgZ2Nj X2Fzc2VydCAoIWxoc19hY2Nlc3MtPmZpcnN0X2NoaWxkKTsKKyAgICAgIHJldHVybiBTUkFfQU1f TU9ESUZJRUQ7CisgICAgfQorCisgIGlmIChsaHNfYWNjZXNzLT5maXJzdF9jaGlsZCkKKyAgICBn ZW5lcmF0ZV9zdWJ0cmVlX2RlZmVycmVkX2luaXQgKGxoc19hY2Nlc3MtPmZpcnN0X2NoaWxkLAor CQkJCSAgICBpbml0X3R5cGUsIGlzX3ZsYSwgZ3NpLCBsb2MpOworICBpZiAobGhzX2FjY2Vzcy0+ Z3JwX2NvdmVyZWQpCisgICAgeworICAgICAgdW5saW5rX3N0bXRfdmRlZiAoc3RtdCk7CisgICAg ICBnc2lfcmVtb3ZlIChnc2ksIHRydWUpOworICAgICAgcmVsZWFzZV9kZWZzIChzdG10KTsKKyAg ICAgIHJldHVybiBTUkFfQU1fUkVNT1ZFRDsKKyAgICB9CisKKyAgcmV0dXJuIFNSQV9BTV9NT0RJ RklFRDsKK30KKwogLyogRXhhbWluZSBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IHN0YXRl bWVudCBwb2ludGVkIHRvIGJ5IFNUTVQsIHJlcGxhY2UKICAgIHRoZW0gd2l0aCBhIHNjYWxhcmUg cmVwbGFjZW1lbnQgaWYgdGhlcmUgaXMgb25lIGFuZCBnZW5lcmF0ZSBjb3B5aW5nIG9mCiAgICBy ZXBsYWNlbWVudHMgaWYgc2NhbGFyaXplZCBhZ2dyZWdhdGVzIGhhdmUgYmVlbiB1c2VkIGluIHRo ZSBhc3NpZ25tZW50LiAgR1NJCkBAIC00NDYwLDE3ICs0NTU2LDI3IEBAIHNyYV9tb2RpZnlfZnVu Y3Rpb25fYm9keSAodm9pZCkKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEdJTVBMRV9DQUxM OgotCSAgICAgIC8qIE9wZXJhbmRzIG11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgbGhzLiAg Ki8KLQkgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQpOyBp KyspCisJICAgICAgLyogSGFuZGxlIGNhbGxzIHRvIC5ERUZFUlJFRF9JTklUIHNwZWNpYWxseS4g ICovCisJICAgICAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9ERUZFUlJF RF9JTklUKSkKIAkJewotCQkgIHQgPSBnaW1wbGVfY2FsbF9hcmdfcHRyIChzdG10LCBpKTsKLQkJ ICBtb2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4cHIgKHQsICZnc2ksIGZhbHNlKTsKKwkJICBhc3Np Z25fcmVzdWx0ID0gc3JhX21vZGlmeV9kZWZlcnJlZF9pbml0IChzdG10LCAmZ3NpKTsKKwkJICBt b2RpZmllZCB8PSBhc3NpZ25fcmVzdWx0ID09IFNSQV9BTV9NT0RJRklFRDsKKwkJICBkZWxldGVk ID0gYXNzaWduX3Jlc3VsdCA9PSBTUkFfQU1fUkVNT1ZFRDsKIAkJfQotCi0JICAgICAgaWYgKGdp bXBsZV9jYWxsX2xocyAoc3RtdCkpCisJICAgICAgZWxzZQogCQl7Ci0JCSAgdCA9IGdpbXBsZV9j YWxsX2xoc19wdHIgKHN0bXQpOwotCQkgIG1vZGlmaWVkIHw9IHNyYV9tb2RpZnlfZXhwciAodCwg JmdzaSwgdHJ1ZSk7CisJCSAgLyogT3BlcmFuZHMgbXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRo ZSBsaHMuICAqLworCQkgIGZvciAoaSA9IDA7IGkgPCBnaW1wbGVfY2FsbF9udW1fYXJncyAoc3Rt dCk7IGkrKykKKwkJICAgIHsKKwkJICAgICAgdCA9IGdpbXBsZV9jYWxsX2FyZ19wdHIgKHN0bXQs IGkpOworCQkgICAgICBtb2RpZmllZCB8PSBzcmFfbW9kaWZ5X2V4cHIgKHQsICZnc2ksIGZhbHNl KTsKKwkJICAgIH0KKworCSAgICAgIAkgIGlmIChnaW1wbGVfY2FsbF9saHMgKHN0bXQpKQorCQkg ICAgeworCQkgICAgICB0ID0gZ2ltcGxlX2NhbGxfbGhzX3B0ciAoc3RtdCk7CisJCSAgICAgIG1v ZGlmaWVkIHw9IHNyYV9tb2RpZnlfZXhwciAodCwgJmdzaSwgdHJ1ZSk7CisJCSAgICB9CiAJCX0K IAkgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMg Yi9nY2MvdHJlZS1zc2Etc3RydWN0YWxpYXMuYwppbmRleCBjNjk0OTI2ODg4MTAuLjg1ZGNhZTFj ZjY3ZCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMKKysrIGIvZ2NjL3Ry ZWUtc3NhLXN0cnVjdGFsaWFzLmMKQEAgLTQ5MDgsNiArNDkwOCw5IEBAIGZpbmRfZnVuY19hbGlh c2VzX2Zvcl9jYWxsIChzdHJ1Y3QgZnVuY3Rpb24gKmZuLCBnY2FsbCAqdCkKICAgICAgICYmIGZp bmRfZnVuY19hbGlhc2VzX2Zvcl9idWlsdGluX2NhbGwgKGZuLCB0KSkKICAgICByZXR1cm47CiAK KyAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHQsIElGTl9ERUZFUlJFRF9JTklUKSkKKyAg ICByZXR1cm47CisKICAgZmkgPSBnZXRfZmlfZm9yX2NhbGxlZSAodCk7CiAgIGlmICghaW5faXBh X21vZGUKICAgICAgIHx8IChmaS0+ZGVjbCAmJiBmbmRlY2wgJiYgIWZpLT5pc19mbl9pbmZvKSkK ZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS11bmluaXQuYyBiL2djYy90cmVlLXNzYS11bmluaXQu YwppbmRleCA1ZDdiYzgwMDQxOTYuLjIxNTkyYjBkOTA0NCAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUt c3NhLXVuaW5pdC5jCisrKyBiL2djYy90cmVlLXNzYS11bmluaXQuYwpAQCAtMTUyLDYgKzE1Miw0 MiBAQCB3YXJuX3VuaW5pdCAoZW51bSBvcHRfY29kZSB3YywgdHJlZSB0LCB0cmVlIGV4cHIsIHRy ZWUgdmFyLAogICBpZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoY29udGV4dCkKICAgICAgICYmIGdpbXBs ZV9hc3NpZ25fcmhzX2NvZGUgKGNvbnRleHQpID09IENPTVBMRVhfRVhQUikKICAgICByZXR1cm47 CisKKyAgLyogSWdub3JlIFJFQUxQQVJUX0VYUFIgb3IgSU1BR1BBUlRfRVhQUiBpZiBpdHMgb3Bl cmFuZCBpcyBhIGNhbGwgdG8KKyAgICAgLkRFRkVSUkVEX0lOSVQuICBUaGlzIGlzIGZvciBoYW5k bGluZyB0aGUgZm9sbG93aW5nIGNhc2UgY29ycmVjdGx5OgorCisgIDEgdHlwZWRlZiBfQ29tcGxl eCBmbG9hdCBDOworICAyIEMgZm9vIChpbnQgY29uZCkKKyAgMyB7CisgIDQgICBDIGY7CisgIDUg ICBfX2ltYWdfXyBmID0gMDsKKyAgNiAgIGlmIChjb25kKQorICA3ICAgICB7CisgIDggICAgICAg X19yZWFsX18gZiA9IDE7CisgIDkgICAgICAgcmV0dXJuIGY7CisgMTAgICAgIH0KKyAxMSAgIHJl dHVybiBmOworIDEyIH0KKworICAgIHdpdGggLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQsIGNvbXBp bGVyIHdpbGwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcKKyAgICBhcnRpZmljaWFsIGluaXRpYWxpemF0 aW9uIGF0IGxpbmUgNDoKKyAgZiA9IC5ERUZFUlJFRF9JTklUIChmLCAyKTsKKyAgXzEgPSBSRUFM UEFSVF9FWFBSIDxmPjsKKworICAgIHdpdGhvdXQgdGhlIGZvbGxvd2luZyBzcGVjaWFsIGhhbmRs aW5nLCBfMSA9IFJFQUxQQVJUX0VYUFIgPGY+IHdpbGwKKyAgICBiZSB0cmVhdGVkIGFzIHRoZSB1 bmluaXRpYWxpemVkIHVzZSBwb2ludCwgd2hpY2ggaXMgaW5jb3JyZWN0LiAodGhlCisgICAgcmVh bCB1bmluaXRpYWxpemVkIHVzZSBwb2ludCBpcyBhdCBsaW5lIDExKS4gICovCisgIGlmIChpc19n aW1wbGVfYXNzaWduIChjb250ZXh0KQorICAgICAgJiYgKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUg KGNvbnRleHQpID09IFJFQUxQQVJUX0VYUFIKKwkgIHx8IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUg KGNvbnRleHQpID09IElNQUdQQVJUX0VYUFIpKQorICAgIHsKKyAgICAgIHRyZWUgdiA9IGdpbXBs ZV9hc3NpZ25fcmhzMSAoY29udGV4dCk7CisgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX09QRVJB TkQgKHYsIDApKSA9PSBTU0FfTkFNRQorCSAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoU1NB X05BTUVfREVGX1NUTVQgKFRSRUVfT1BFUkFORCAodiwgMCkpLAorCQkJCSAgICAgSUZOX0RFRkVS UkVEX0lOSVQpKQorCXJldHVybjsKKyAgICB9CisKICAgaWYgKCFoYXNfdW5kZWZpbmVkX3ZhbHVl X3AgKHQpKQogICAgIHJldHVybjsKIApAQCAtMjkxLDYgKzMyNywxMSBAQCBjaGVja19kZWZzIChh b19yZWYgKnJlZiwgdHJlZSB2ZGVmLCB2b2lkICpkYXRhXykKICAgY2hlY2tfZGVmc19kYXRhICpk YXRhID0gKGNoZWNrX2RlZnNfZGF0YSAqKWRhdGFfOwogICBnaW1wbGUgKmRlZl9zdG10ID0gU1NB X05BTUVfREVGX1NUTVQgKHZkZWYpOwogCisgIC8qIElnbm9yZSB0aGUgdmRlZiBpZiB0aGUgZGVm aW5pdGlvbiBzdGF0ZW1lbnQgaXMgYSBjYWxsCisgICAgIHRvIC5ERUZFUlJFRF9JTklUIGZ1bmN0 aW9uLiAgKi8KKyAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKGRlZl9zdG10LCBJRk5fREVG RVJSRURfSU5JVCkpCisgICAgcmV0dXJuIGZhbHNlOworCiAgIC8qIFRoZSBBU0FOX01BUksgaW50 cmluc2ljIGRvZXNuJ3QgbW9kaWZ5IHRoZSB2YXJpYWJsZS4gICovCiAgIGlmIChpc19naW1wbGVf Y2FsbCAoZGVmX3N0bXQpKQogICAgIHsKQEAgLTgwNCw2ICs4NDUsMTIgQEAgd2Fybl91bmluaXRp YWxpemVkX3ZhcnMgKGJvb2wgd21heWJlX3VuaW5pdCkKIAkgIHNzYV9vcF9pdGVyIG9wX2l0ZXI7 CiAJICB0cmVlIHVzZTsKIAorCSAgLyogVGhlIGNhbGwgaXMgYW4gYXJ0aWZpY2lhbCB1c2UsIHdp bGwgbm90IHByb3ZpZGUgbWVhbmluZ2Z1bAorCSAgICAgZXJyb3IgbWVzc2FnZS4gIElmIHRoZSBy ZXN1bHQgb2YgdGhlIGNhbGwgaXMgdXNlZCBzb21ld2hlcmUKKwkgICAgIGVsc2UsIHdlIHdhcm4g dGhlcmUgaW5zdGVhZC4gICovCisJICBpZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwg SUZOX0RFRkVSUkVEX0lOSVQpKQorCSAgICBjb250aW51ZTsKKwogCSAgaWYgKGlzX2dpbXBsZV9k ZWJ1ZyAoc3RtdCkpCiAJICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2Eu YyBiL2djYy90cmVlLXNzYS5jCmluZGV4IDRjYzQwMGQzYzJlYi4uMGZiYTQwNGJhYmU5IDEwMDY0 NAotLS0gYS9nY2MvdHJlZS1zc2EuYworKysgYi9nY2MvdHJlZS1zc2EuYwpAQCAtMTMyNSw2ICsx MzI1LDQ2IEBAIHNzYV91bmRlZmluZWRfdmFsdWVfcCAodHJlZSB0LCBib29sIHBhcnRpYWwpCiAg IGlmIChnaW1wbGVfbm9wX3AgKGRlZl9zdG10KSkKICAgICByZXR1cm4gdHJ1ZTsKIAorICAvKiBU aGUgdmFsdWUgaXMgdW5kZWZpbmVkIGlmIHRoZSBkZWZpbml0aW9uIHN0YXRlbWVudCBpcyBhIGNh bGwKKyAgICAgdG8gLkRFRkVSUkVEX0lOSVQgZnVuY3Rpb24uICAqLworICBpZiAoZ2ltcGxlX2Nh bGxfaW50ZXJuYWxfcCAoZGVmX3N0bXQsIElGTl9ERUZFUlJFRF9JTklUKSkKKyAgICByZXR1cm4g dHJ1ZTsKKworICAvKiBUaGUgdmFsdWUgaXMgcGFydGlhbGx5IHVuZGVmaW5lZCBpZiB0aGUgZGVm aW5pdGlvbiBzdGF0ZW1lbnQgaXMKKyAgICAgYSBSRUFMUEFSVF9FWFBSIG9yIElNQUdQQVJUX0VY UFIgYW5kIGl0cyBvcGVyYW5kIGlzIGRlZmluZWQgYnkKKyAgICAgdGhlIGNhbGwgdG8gLkRFRkVS UkVEX0lOSVQgZnVuY3Rpb24uICBUaGlzIGlzIGZvciBoYW5kbGluZyB0aGUKKyAgICAgZm9sbG93 aW5nIGNhc2U6CisKKyAgMSB0eXBlZGVmIF9Db21wbGV4IGZsb2F0IEM7CisgIDIgQyBmb28gKGlu dCBjb25kKQorICAzIHsKKyAgNCAgIEMgZjsKKyAgNSAgIF9faW1hZ19fIGYgPSAwOworICA2ICAg aWYgKGNvbmQpCisgIDcgICAgIHsKKyAgOCAgICAgICBfX3JlYWxfXyBmID0gMTsKKyAgOSAgICAg ICByZXR1cm4gZjsKKyAxMCAgICAgfQorIDExICAgcmV0dXJuIGY7CisgMTIgfQorCisgICAgd2l0 aCAtZnRyaXZpYWwtYXV0by12YXItaW5pdCwgY29tcGlsZXIgd2lsbCBpbnNlcnQgdGhlIGZvbGxv d2luZworICAgIGFydGlmaWNpYWwgaW5pdGlhbGl6YXRpb246CisgIGYgPSAuREVGRVJSRURfSU5J VCAoZiwgMik7CisgIF8xID0gUkVBTFBBUlRfRVhQUiA8Zj47CisKKyAgICB3ZSBzaG91bGQgdHJl YXQgdGhlIGRlZmluaXRpb24gXzEgPSBSRUFMUEFSVF9FWFBSIDxmPiBhcyB1bmRlZmluZWQuICAq LworICBpZiAocGFydGlhbCAmJiBpc19naW1wbGVfYXNzaWduIChkZWZfc3RtdCkKKyAgICAgICYm IChnaW1wbGVfYXNzaWduX3Joc19jb2RlIChkZWZfc3RtdCkgPT0gUkVBTFBBUlRfRVhQUgorCSAg fHwgZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoZGVmX3N0bXQpID09IElNQUdQQVJUX0VYUFIpKQor ICAgIHsKKyAgICAgIHRyZWUgcmVhbF9pbWFnX3BhcnQgPSBUUkVFX09QRVJBTkQgKGdpbXBsZV9h c3NpZ25fcmhzMSAoZGVmX3N0bXQpLCAwKTsKKyAgICAgIGlmIChUUkVFX0NPREUgKHJlYWxfaW1h Z19wYXJ0KSA9PSBTU0FfTkFNRQorCSAmJiBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChTU0FfTkFN RV9ERUZfU1RNVCAocmVhbF9pbWFnX3BhcnQpLAorCQkJCSAgICBJRk5fREVGRVJSRURfSU5JVCkp CisJcmV0dXJuIHRydWU7CisgICAgfQorCiAgIC8qIENoZWNrIGlmIHRoZSBjb21wbGV4IHdhcyBu b3Qgb25seSBwYXJ0aWFsbHkgZGVmaW5lZC4gICovCiAgIGlmIChwYXJ0aWFsICYmIGlzX2dpbXBs ZV9hc3NpZ24gKGRlZl9zdG10KQogICAgICAgJiYgZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoZGVm X3N0bXQpID09IENPTVBMRVhfRVhQUikKLS0gCjIuMjcuMAoK --_002_68155224CCA84108AE7335C698D95402oraclecom_--