Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phluk-0003eG-KR for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Mar 2023 06:37:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1phluj-0003AK-AO for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Mar 2023 06:37:37 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phluh-0003A4-KA for pgsql-hackers@lists.postgresql.org; Thu, 30 Mar 2023 06:37:36 +0000 Received: from esa9.fujitsucc.c3s2.iphmx.com ([68.232.159.90]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1phluX-0007ko-Cr for pgsql-hackers@lists.postgresql.org; Thu, 30 Mar 2023 06:37:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1680158246; x=1711694246; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=p+W8Yl/9OspL6H9mRYUYENbTAZCkqAMG+YGF6sGjb/Q=; b=aRp/U3BiLCxkBDkaIntEu3uaeuqGw40yxw1OUWLgXWgPNwYTPdX+q2II WeRfo/+wc71CAa2V7MjWTOrxWdw/lKck95Az9dCb7kKTRkpkK4H5OEcJx gMg3j657y8svjr40rFr9J7vxuisgha+6KBPTusl6acUx15K3/7segeePQ rNLY6LET9XKNPE7nN3ZdQbWTG7QP6MMzWaedipPvAR4cY1DLflu8Y+gM3 5WQ/KjMOIGCAw6bM3IO5Sfl0dfZiporR367T+tMilTMJfMz+I6Rut6+nb cpv++kMTWJui6vfWx8+cllfVZYyBeMCdRAvqHxgl0W1vUBzWFKzRmdN+C g==; X-IronPort-AV: E=McAfee;i="6600,9927,10664"; a="80724351" X-IronPort-AV: E=Sophos;i="5.98,303,1673881200"; d="scan'208,223";a="80724351" Received: from mail-os0jpn01lp2105.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.105]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2023 15:37:17 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m5r85+uS1/1knw7fOuz1HM9utHnDM9+YokkCiRd6+eCflmaQ0XT6V88/T+01VQfupP3565AWQVE8xKiS+HosIa6zVfylMFB4Xom53bcy0rLNOJmPQauUgaQa+kDEr/XbOxZ2Wv1AW/xokM978GZrdsTNW7uhJ7y5m2O2ACP84JWSM3iqhWPKpsbaR7KKQowesQnT/bWZ4iTMBUsEn5pu2pRx512MJKfDg18/My1j6sGR7ZWUoAEgmLLMlAENmAl+VdDtBb/reVY/dyVVc79EPBxJS6Z/v3wQREhRluiXW22LFJyWhe6CcQtX13emSS9GpaacCIll/Rz5JMfmYm2GEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iD96/f76GMPrqX8Y3foYLBu27TPmfynxwia9hscX6MA=; b=YwJtAOvsSexo064+hIC/YyLfQn+ihDkMGyCV+g4FACjiGu6ryHjaivxgVInlgnNlwVNJpxeFY2k0G4Cgi882hwWiwbtTKFyRJVHpywyRmbOBVVFoNARLS3L/VtXCe2B/dj3ulRzdHwVGJRzR/4QF5d0KZvvlcQcLQettaczUCGa54mE2N7Q5iXsCXfUC4OTWoHt6GVqdeQYIdZcSkxeR3cnbrVXUGxl5x/6HsvkysyTb5f9UHtIcizKR/ZZHQG5voBXwHtd4o3RX0f8oOuVK6Y+SmfPo2wStJknc/KfvnmbN1x4y9Oi6qlDaR5F+mImtWQWaZ3PUSm4B0sKdGzJOCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS3PR01MB5751.jpnprd01.prod.outlook.com (2603:1096:604:b4::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.34; Thu, 30 Mar 2023 06:37:10 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::4110:d425:fa9b:cfe8%3]) with mapi id 15.20.6222.035; Thu, 30 Mar 2023 06:37:10 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: vignesh C , Ajin Cherian , "wangw.fnst@fujitsu.com" , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li Subject: RE: Support logical replication of DDLs Thread-Topic: Support logical replication of DDLs Thread-Index: AQHYJz33AxvYRe/sGky7b41i8Vgxg6y9TlgAgAVZmgCAAA2xAIABMlkAgACE3QCAAKgDAIAAduOAgABm6oCABIs+AIACG98AgBfo2QCABsLLgIAyhVqAgBOd9QCAAOYWgIAAPoOAgAUH2oCABQvawIAPYMWAgAHJ99CAAn9yAIAAPzmAgAQqm4CAA6XiQIACJNSQgAsCywCAAPmNAIAAalXwgAAWjQCACT8UwIAEWbkAgAam+gCADNiE8IAMBWyAgAZSRYCAAW8VgIAE96WAgA0v9QCABHneQIAUEVWAgAuHbACAD5tTgIAIApwAgAGzQoCAB27XgIAGHO6AgAoC5QCAAAoEgIAARwGAgAAqS4CAACxlgIAAKQwAgAUIbgCAAc2DgIABFqCAgAr6zICACEvUAIADrYYAgAI89ICABMyogIAEr42AgAxiJwCANjIaAIAF3niAgAC/BoCAAuB0gIALWfiAgAACQgCACustgIAEUHmAgAjYlQCAAvxsgIABgogAgACtfoCABGf7gIAXCh4AgAoIzICACRPpgIAd/kGAgABvmoCABhsgAIAAzN0AgAKqbICAAmpWAIADCo0AgAa3EiCABFx7AIAAox8AgAS/ZwCAAHmiAIAAm1WAgABcKACAAQzjUIADR9Ew Date: Thu, 30 Mar 2023 06:37:10 +0000 Message-ID: References: <3032112.1679865718@sss.pgh.pa.us> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZmQxZGI5NzEtZGMxNy00YTY0LThmNDEtYzg1ZDNlZWVh?= =?utf-8?B?MmZmO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMy0wMy0yOFQwNDoxMDowOFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|OS3PR01MB5751:EE_ x-ms-office365-filtering-correlation-id: 721b6f85-302a-49bf-254e-08db30e93099 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WYIvBj9P0chwtCZnGfpdoG3RZPM7m/lGn/R9YSBU9AqeveQohOSTrgs9VwkzcDYkqDMZXBwxkylnk92neQY+PqvJRtLdRu77cNI8KM2tt1t+DA1zBmc3Rp4TkPJ5OizmFpkdJkE/Y8/6sELv8PeurecB2Ty6aw1QDBZ1T06QZQRKH6WztmIaZH9mG1FLwI+VWLdK1oH+aGice7PY24tV+ux0N2DgDkIun8y26s7k++W3gGr3F8wjMu4zXs5UHV3G4TA/WqQclAGwjBOgyAIrLax3ah8bfjLMZ+QErA60TX2ddTpMpdA0NTULnLy4wNa2zpA3Oa981AnGdRVHo5e+8S6twHNax/y3x60G4wUSh2ctgtZxNh1JL3Acp38vyl02h5dzaYcTpUXF6Xea+sdJDZ70gsnp86wm/suawkchQ6rT2G+7VY5H7F3Zgvvh0IwztPxzp2Nqdgg1X3pnUtuE6PQM6k8cBfnFFZtL0M5ik8bNgvdmFuIuNNUTnZHCS14zk6jsbYbAtorS/HV4Epg+XLPqAzJ1HtqJ0spgriCa6KJDHHCs4eNQUBd2MzN27aCJNK3S04u2T27ICmtIBqJORLFCiqgEfpE1xrsz8ZhnVJnbT3sbCTfqIuMy2+aCbSxWJY+f19msAoIsA3wNn3PIvw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(366004)(39860400002)(136003)(396003)(346002)(451199021)(1590799018)(316002)(53546011)(186003)(6506007)(66476007)(9686003)(26005)(6916009)(66946007)(66446008)(76116006)(64756008)(4326008)(41300700001)(83380400001)(7416002)(52536014)(54906003)(8676002)(478600001)(5660300002)(45080400002)(71200400001)(7696005)(2906002)(966005)(66556008)(82960400001)(1580799015)(122000001)(38100700002)(99936003)(86362001)(38070700005)(85182001)(8936002)(33656002)(55016003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MEU2MmVOL1VkV2JBVGhBZjV2NG5JOW1rRnJNaWt2Z2hrQ3lYVVpuQlp1R2N6?= =?utf-8?B?NTAvSVBxWG0yVmUzZFdkMUJrUThvbjVibTdXVldmQWFIdGhoNHYycHRVSVFm?= =?utf-8?B?RnFwSzBVSndyT09qM0RubFVRUGdjdDdoNzZmYUZFRWJpRGJCVlJtNHR4U2M4?= =?utf-8?B?Y3ZlUWpINVVUenlDdVVLaHNrSEY4MlZndENXYmFSR3pwSmhOZTNsT2daamtY?= =?utf-8?B?VWo2bTlrMy93bzFQQTFhVmtOY2FqeDVreHVYOVNDQnVVUEU4ekxnMnB1T1Fy?= =?utf-8?B?dWJrb0hmcXZ1d1lsR05nSlZYekNjOThXT29FczcrSmszcnJ3KzVjYWFmR1FQ?= =?utf-8?B?akRmNHI3YjI4Z0FkVmtHTkgra1cwc0xlNzJTdENBQ3RZa1ZxZHBqMjhjaDUr?= =?utf-8?B?akQxa25MOW9GcXBoWGxxcTlhS1RUSmR1Tm1rRjkveURieXdXYm5OSklGajdZ?= =?utf-8?B?Z21qK3M3NkszeDRudEcvUlhObWhPYkhIMTVmQmQ5MmpaaXNla0NTeUtGOE9C?= =?utf-8?B?NlRhQWk2Z2hpMzQ0ZmMwcU9RWitsaUNORlVhdk0yUURqQ01lRDYyeTFFZUx4?= =?utf-8?B?MlZTQnozY3c1TVlUNXJjNXkyWk5JVVNFSFJaU25vWnEwTW51WXFKeTNKWTZj?= =?utf-8?B?VDZOcTQxS2dsYnFCTlFCNVZzSGFpUlFkR2MxVnRDZ1d0bXpWdmtmTnJKQnpR?= =?utf-8?B?REk0SzZBcXpDcS9ZckRFRU1EYXhwQnQrMU5iTmFIT0dMak9ha05TOUJnZ05S?= =?utf-8?B?aGp0NXVTdDczbXUxdU0xSVY4NE1BQWYxVlBSTlBPS2JHVmFRVlBGaXBQa3cw?= =?utf-8?B?a0ZMbVRXMm5nWHUxTk4zeWdySnFtTFgrS2NPWUhvRjFIUy84WEQ2V0ZWVWJz?= =?utf-8?B?ZzcxWGVVVlIzMjgvWkJWeldwWExtc25PclFBTlJBK1AydVRXN3AwMW9ORmJ4?= =?utf-8?B?a1VKRWYzMklWTmVJeTc2TkdhZUdKK2VUUlBvRjVYTXJsWFAxV2ExcjgvakVn?= =?utf-8?B?UWhRbUNLU3dNUnQrNWMwZmVQZjhWbzBMVmdPTjdqWGFEVDRlbEExSjBQTDNR?= =?utf-8?B?YjY0Y2ZPc20vbTB6TEk0QUVQa3FPR1JsSnhQejNCWitHbmhRQ0xTK0FqY251?= =?utf-8?B?eDU0aGJNdm5Vd3VlNXBHM05lVnZxdnhQSW1VVE9qMHJvOFBENENQVk5KS1gx?= =?utf-8?B?eHN6alJnR29YL3ZJMzBWUENpTFpCQ3ErQTJOME9wUXBuKzNCT25FRnZYeCtW?= =?utf-8?B?R1ltQlZaTklNTU00em90NGpPVWhFR2t3eFJMRVZVT09mN09IU1dsOFViVFc1?= =?utf-8?B?RWVQeW9hRHZpRlY0ZmhKNXBiYTNGZFpWZXJFOFhsUE16b29CTGFDUUdxcUQv?= =?utf-8?B?eDNGTkZ0YnlSdmhSZ0o3YkMyK05IdDlhN3NZUkxKWDFyRHA2SHdma3VPdzB5?= =?utf-8?B?T2cyNkN4bnIrTVp1ckdtNGtYRm1yd09GUkdxQWhScVNrZ3ZqcE1QVWRSdFFD?= =?utf-8?B?eWIzRk5wREtUbC9BUEtLZ3l5R3ZQd2ZnMWVxSUpBVzR4dXdHV3FnVU16WW1K?= =?utf-8?B?OWZKb2U4anh0RWxucU5GZjFpSGFCcXBDQzlGM2xha2M3WHc3WStQaHR2YW5j?= =?utf-8?B?dDdRc1h3c3E5TzBMK0RtRVBtZUhYaUE5OVBOSVJtOWR4QnF1VDVta0lYRHZZ?= =?utf-8?B?TS9yZlRZa05rQ3pWZDV5ZGtQWmVaelBOeVpyaVU0VEQrU0RSaFZQZVJ0eVc2?= =?utf-8?B?UGRBdW1sUTZRUG4wblJoYlZ1U0EyQ3FFcEp0NGtjVUhScjhiRGRyTDlNRTRD?= =?utf-8?B?V1lQazBRY3NQTjM1NXNibUZVVkc5Z2ViN3lZVDJTWnZ2OEo2SWlHdmpCNmJ5?= =?utf-8?B?Z0pDRWhiSUR6dlVkRWs4TDhKRFJEWHBESXE1ay90TUI2K0luT1d5dnJDeWJ3?= =?utf-8?B?UzBaSkEybjQrVFIzM2RNYVZydDBhVllGRnhncVVEZmRua3drL3lLMlhEYUJU?= =?utf-8?B?dDYzM1BHUXl0YWNkWG9zSzFtcWlFRjZGZnN2YnNaL3VWV1F0ZUJkcWc2K2w4?= =?utf-8?B?eHFqMmNkOC9qUHNyeXIybG9ER2pjNTl6QVJadmNUUm10ZDUzV0pCd3pDcWVQ?= =?utf-8?Q?jUJIiWxqFP6Qv/kmSQ1dDIH6o?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4Kd4/rmpRdMbFWMZnfPDsTHwd1jFdEmb1016/oP1SGH9L7DBSkXG+TF1PxDqFqt/Ud59UzaGd1NFBRsdFIhryBZtVfD8sbV8N0jFb3btaD8Z8GvD7sYvOfZ75CnASGvNJ3syFamv7SoOD4z8MMnBNGAMr3ODzEVZUwb9tL0msHHadFhtGBtfJ9ENY30MIWx6O918l61klOs5858ky5y0G3WADZdACnh6lfTVqKsMU+/4x/pKgwplCmagp3JmHvsLUKt63oAm5xpirqE9zDnjE+OiUoVcAjdD4v70UhSQTuF9z0opOFPgxziUhFzPO6CX0IiAZ3vXdVf9i+a1xxoCfMOVnQd2z3RLJhkueHE5urOHNstUECdMq6hJwTZW86UsBLBuSm/BJ7FQDU6sqo56Hi38Vyg9GaXx0pWrHYW/ojhpTGoRmEPK2nXVNxNaVQLMJFYIReanio/T1IB5xn5KKPGNxGoAsyyKwJidxRgbHSYD0qGpMMUPuJpolpp1vjwnAdJVm3n1FBjAZEaBnT8v+erIbp/MS8nFE5kiIMMYRg6SsW8ORCP7sn763VrVVYIYcM/pvmY1r5gE4ZkzxjnPd5OAy0wzT1kUR8/0Q8cdFimoKB8J8h0NIT0OOWA6mURXaG0S/NKqrTHTa5lLeOw8Erttw6vsnCTQijv9MhqYrS7E97AiIWeqan1y7zLKAxGVF1XYGqrADAca1vS6bGeNJ3aYbW0QCwREe7rRcxdNnQH6tfj1TRPd+T+OVxPkXCaaf1y8IgBTwRVBrggOyVrHBZhex8trZA4v6n/PKdSBQVeRaG2LQxTn4oC1m4uSn3E1KxIUqSpaXVXBWyig2Oot4j2Z/dqHKQdZgWeOJdMd9ooWZXe8qknU/YgrAOj81jUxCUrjc6BNKyDyrvvhiR0Zz3KweAR9yWCai0ORnUPeuek= X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 721b6f85-302a-49bf-254e-08db30e93099 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Mar 2023 06:37:10.3485 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: SHjaD/8/QWsNRSbjkw0OGFDIrzX/XSUWcaGTF4HDt6mH4IYumKKQLKNuTlPj16EfmzNo59N02j3Y9U7H3FRSmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB5751 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgTWFyY2ggMjgsIDIwMjMgMTI6MTMgUE0gaG91emouZm5zdEBmdWppdHN1LmNv bSA8aG91emouZm5zdEBmdWppdHN1LmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBNb25kYXksIE1hcmNo IDI3LCAyMDIzIDg6MDggUE0gQW1pdCBLYXBpbGEgPGFtaXQua2FwaWxhMTZAZ21haWwuY29tPg0K PiB3cm90ZToNCj4gPiBPbiBNb24sIE1hciAyNywgMjAyMyBhdCAxMjowN+KAr1BNIEFtaXQgS2Fw aWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gPiB3cm90ZToNCj4gPiA+DQo+ID4gPiBP biBNb24sIE1hciAyNywgMjAyMyBhdCAyOjUy4oCvQU0gVG9tIExhbmUgPHRnbEBzc3MucGdoLnBh LnVzPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiA+IEkgc3VnZ2VzdCB0YWtpbmcgYSBj b3VwbGUgb2Ygc3RlcHMgYmFjayBmcm9tIHRoZSBtaW51dGlhZSBvZiB0aGUNCj4gPiA+ID4gcGF0 Y2gsIGFuZCBzcGVuZGluZyBzb21lIGhhcmQgZWZmb3J0IHRoaW5raW5nIGFib3V0IGhvdyB0aGUg dGhpbmcNCj4gPiA+ID4gd291bGQgYmUgY29udHJvbGxlZCBpbiBhIHVzZWZ1bCBmYXNoaW9uICh0 aGF0IGlzLCBhIHJlYWwgZGVzaWduDQo+ID4gPiA+IGZvciB0aGUgZmlsdGVyaW5nIHRoYXQgd2Fz IG1lbnRpb25lZCBhdCB0aGUgdmVyeSBvdXRzZXQpLCBhbmQNCj4gPiA+ID4gYWJvdXQgdGhlIHNl Y3VyaXR5IGlzc3VlcywgYW5kIGFib3V0IGhvdyB3ZSBjb3VsZCBnZXQgdG8gYSBjb21taXR0YWJs ZQ0KPiBwYXRjaC4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBBZ3JlZWQuIEknbGwgdHJ5IHRvIHN1 bW1hcml6ZSB0aGUgZGlzY3Vzc2lvbiB3ZSBoYXZlIHRpbGwgbm93IG9uDQo+ID4gPiB0aGlzIGFu ZCBzaGFyZSBteSB0aG91Z2h0cyBvbiB0aGUgc2FtZSBpbiBhIHNlcGFyYXRlIGVtYWlsLg0KPiA+ ID4NCj4gPg0KPiA+IFRoZSBpZGVhIHRvIGNvbnRyb2wgd2hhdCBjb3VsZCBiZSByZXBsaWNhdGVk IGlzIHRvIGludHJvZHVjZSBhIG5ldw0KPiA+IHB1YmxpY2F0aW9uIG9wdGlvbiAnZGRsJyBhbG9u ZyB3aXRoIGN1cnJlbnQgb3B0aW9ucyAncHVibGlzaCcgYW5kDQo+ID4gJ3B1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290Jy4gVGhlIHZhbHVlcyBvZiB0aGlzIG5ldyBvcHRpb24gY291bGQgYmUNCj4g PiAndGFibGUnLCAnZnVuY3Rpb24nLCAnYWxsJywgZXRjLiBIZXJlICdhbGwnIGVuYWJsZXMgdGhl IHJlcGxpY2F0aW9uIG9mDQo+ID4gYWxsIHN1cHBvcnRlZCBEREwgY29tbWFuZHMuIEV4YW1wbGUg dXNhZ2UgZm9yIHRoaXMgd291bGQgYmU6DQo+ID4gRXhhbXBsZToNCj4gPiBDcmVhdGUgYSBuZXcg cHVibGljYXRpb24gd2l0aCBhbGwgZGRsIHJlcGxpY2F0aW9uIGVuYWJsZWQ6DQo+ID4gICBDUkVB VEUgUFVCTElDQVRJT04gcHViMSBGT1IgQUxMIFRBQkxFUyB3aXRoIChkZGwgPSAnYWxsJyk7DQo+ ID4NCj4gPiBFbmFibGUgdGFibGUgZGRsIHJlcGxpY2F0aW9uIGZvciBhbiBleGlzdGluZyBQdWJs aWNhdGlvbjoNCj4gPiAgIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YjIgU0VUIChkZGwgPSAndGFibGUn KTsNCj4gPg0KPiA+IFRoaXMgaXMgd2hhdCBzZWVtcyB0byBoYXZlIGJlZW4gZGlzY3Vzc2VkIGJ1 dCBJIHRoaW5rIHdlIGNhbiBldmVuDQo+ID4gZXh0ZW5kIGl0IHRvIHN1cHBvcnQgYmFzZWQgb24g b3BlcmF0aW9ucy9jb21tYW5kcywgc2F5IG9uZSB3b3VsZCBsaWtlDQo+ID4gdG8gcHVibGlzaCBv bmx5ICdjcmVhdGUnIGFuZCAnZHJvcCcgb2YgdGFibGVzLiBUaGVuIHdlIGNhbiBleHRlbmQgdGhl DQo+ID4gZXhpc3RpbmcgcHVibGlzaCBvcHRpb24gdG8gaGF2ZSB2YWx1ZXMgbGlrZSAnY3JlYXRl JywgJ2FsdGVyJywgYW5kICdkcm9wJy4NCj4gPg0KPiA+IEFub3RoZXIgdGhpbmcgd2UgYXJlIGNv bnNpZGVyaW5nIHJlbGF0ZWQgdG8gdGhpcyBpcyBhdCB3aGF0IGxldmVsDQo+ID4gdGhlc2UgYWRk aXRpb25hbCBvcHRpb25zIHNob3VsZCBiZSBzcGVjaWZpZWQuIFdlIGhhdmUgdGhyZWUgdmFyaWFu dHMNCj4gPiBGT1IgVEFCTEUsIEZPUiBBTEwgVEFCTEVTLCBhbmQgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgdGhhdCBlbmFibGVzDQo+ID4gcmVwbGljYXRpb24uIE5vdywgZm9yIHRoZSBzYWtlIG9mIHNp bXBsaWNpdHksIHRoaXMgbmV3IG9wdGlvbiBpcw0KPiA+IGRpc2N1c3NlZCB0byBiZSBwcm92aWRl ZCBvbmx5IHdpdGggRk9SIEFMTCBUQUJMRVMgdmFyaWFudCBidXQgSSB0aGluaw0KPiA+IHdlIGNh biBwcm92aWRlIGl0IHdpdGggb3RoZXIgdmFyaWFudHMgd2l0aCBzb21lIGFkZGl0aW9uYWwNCj4g PiByZXN0cmljdGlvbnMgbGlrZSB3aXRoIEZPUiBUQUJMRSwgd2UgY2FuIG9ubHkgc3BlY2lmeSAn YWx0ZXInIGFuZA0KPiA+ICdkcm9wJyBmb3IgcHVibGlzaCBvcHRpb24uIE5vdywgdGhvdWdoIHBv c3NpYmxlLCBpdCBicmluZ3MgYWRkaXRpb25hbA0KPiA+IGNvbXBsZXhpdHkgdG8gc3VwcG9ydCBp dCB3aXRoIHZhcmlhbnRzIG90aGVyIHRoYW4gRk9SIEFMTCBUQUJMRVMNCj4gPiBiZWNhdXNlIHRo ZW4gd2UgbmVlZCB0byBlbnN1cmUgYWRkaXRpb25hbCBmaWx0ZXJpbmcgYW5kIHBvc3NpYmxlDQo+ ID4gbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250ZW50IHdlIGhhdmUgdG8gc2VuZCB0byBkb3duc3Ry ZWFtLiBTbywgd2UgY2FuIGV2ZW4NCj4gZGVjaWRlIHRvIGZpcnN0IHN1cHBvcnQgaXQgb25seSBG T1IgQUxMIFRBQkxFUyB2YXJpYW50Lg0KPiA+DQo+ID4gVGhlIG90aGVyIHBvaW50IHRvIGNvbnNp ZGVyIGZvciBwdWJsaXNoIG9wdGlvbiAnZGRsID0gdGFibGUnIGlzDQo+ID4gd2hldGhlciB3ZSBu ZWVkIHRvIGFsbG93IHJlcGxpY2F0aW5nIGRlcGVuZGVudCBvYmplY3RzIGxpa2Ugc2F5IHNvbWUN Cj4gPiB1c2VyLWRlZmluZWQgdHlwZSBpcyB1c2VkIGluIHRoZSB0YWJsZS4gSSBndWVzcyB0aGUg ZGlmZmljdWx0eSBoZXJlDQo+ID4gd291bGQgYmUgdG8gaWRlbnRpZnkgd2hpY2ggZGVwZW5kZW50 cyB3ZSB3YW50IHRvIGFsbG93Lg0KPiA+DQo+ID4gSSB0aGluayBpbiB0aGUgZmlyc3QgdmVyc2lv biB3ZSBzaG91bGQgYWxsb3cgdG8gcmVwbGljYXRlIG9ubHkgc29tZSBvZg0KPiA+IHRoZSBvYmpl Y3RzIGluc3RlYWQgb2YgZXZlcnl0aGluZy4gRm9yIGV4YW1wbGUsIGNhbiB3ZSBjb25zaWRlciBv bmx5DQo+ID4gYWxsb3dpbmcgdGFibGVzIGFuZCBpbmRleGVzIGluIHRoZSBmaXJzdCB2ZXJzaW9u PyBUaGVuIGV4dGVuZCBpdCBpbiBhIHBoYXNlZA0KPiBtYW5uZXI/DQo+IA0KPiBJIHRoaW5rIHN1 cHBvcnRpbmcgdGFibGUgcmVsYXRlZCBzdHVmZiBpbiB0aGUgZmlyc3QgdmVyc2lvbiBtYWtlcyBz ZW5zZSBhbmQgdGhlDQo+IHBhdGNoIHNpemUgY291bGQgYmUgcmVkdWNlZCB0byBhIHN1aXRhYmxl IHNpemUuDQoNCkJhc2VkIG9uIHRoZSBkaXNjdXNzaW9uLCBJIHNwbGl0IHRoZSBwYXRjaCBpbnRv IGZvdXIgcGFydHM6IFRhYmxlIERETA0KcmVwbGljYXRpb24oMDAwMSwwMDAyKSwgSW5kZXggRERM IHJlcGxpY2F0aW9uKDAwMDMpLCBvd25lcnNoaXAgc3R1ZmYgZm9yIHRhYmxlDQphbmQgaW5kZXgo MDAwNCksIG90aGVyIERETCdzIHJlcGxpY2F0aW9uKDAwMDUpLg0KDQpJbiB0aGlzIHZlcnNpb24s IEkgbWFpbmx5IHRyaWVkIHRvIHNwbGl0IHRoZSBwYXRjaCBzZXQsIGFuZCB0aGVyZSBhcmUgZmV3 DQpPUEVOIGl0ZW1zIHdlIG5lZWQgdG8gYWRkcmVzcyBsYXRlcjoNCg0KMSkgVGhlIGN1cnJlbnQg cHVibGljYXRpb24gImRkbCIgb3B0aW9uIG9ubHkgaGF2ZSB0d28gdmFsdWVzOiB0YWJsZSwgYWxs LiBXZQ0KICAgYWxzbyBuZWVkIHRvIGFkZCBpbmRleCBhbmQgbWF5YmUgb3RoZXIgb2JqZWN0cyBp biB0aGUgbGlzdC4NCg0KMikgTmVlZCB0byBpbXByb3ZlIHRoZSBzeW50YXggc3R1ZmYuIEN1cnJl bnRseSwgd2Ugc3RvcmUgdGhlIG9wdGlvbiB2YWx1ZSBvZg0KICAgdGhlICJ3aXRoIChkZGwgPSB4 eCkiIHZpYSBkaWZmZXJlbnQgY29sdW1ucyBpbiB0aGUgY2F0YWxvZywgdGhlDQogICBjYXRhbG9n KHBnX3B1YmxpY2F0aW9uKSB3aWxsIGhhdmUgbW9yZSBhbmQgbW9yZSBjb2x1bW5zIGFzIHdlIGFk ZCBzdXBwb3J0DQogICBmb3IgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBvdGhlciBvYmplY3RzIGlu IHRoZSBmdXR1cmUuIFdlIGNvdWxkIHN0b3JlIGl0IGFzDQogICBhbiB0ZXh0IGFycmF5IGluc3Rl YWQuDQoNCiAgIE9UT0gsIHNpbmNlIHdlIGhhdmUgcHJvcG9zZWQgc29tZSBvdGhlciBtb3JlIGZs ZXhpYmxlIHN5bnRheCB0byAtaGFja2VycywgdGhlIGN1cnJlbnQNCiAgIHN5bnRheCBtaWdodCBi ZSBjaGFuZ2VkIHdoaWNoIG1pZ2h0IGFsc28gc29sdmUgdGhpcyBwcm9ibGVtLg0KDQozKSBUaGUg dGVzdF9kZGxfZGVwYXJzZV9yZWdyZXNzIHRlc3QgbW9kdWxlIGlzIG5vdCBpbmNsdWRlZCBpbiB0 aGUgc2V0LCBiZWNhdXNlDQogICBJIHRoaW5rIHdlIGFsc28gbmVlZCB0byBzcGxpdCBpdCBpbnRv IHRhYmxlIHN0dWZmLCBpbmRleCBzdHVmZiBhbmQgb3RoZXJzLA0KICAgd2UgY2FuIHNoYXJlIGl0 IGFmdGVyIGZpbmlzaGluZyB0aGF0Lg0KDQo0KSBUaGUgcGF0Y2ggc2V0IGNvdWxkIGJlIHNwaXR0 ZWQgZnVydGhlciB0byBtYWtlIGl0IGVhc2llciBmb3IgcmV2aWV3ZXIgbGlrZToNCiAgIGluZnJh c3RydWN0dXJlIGZvciBkZXBhcnNlciwgZGVwYXJzZXIsIGxvZ2ljYWwtZGVjb2RpbmcsIGJ1aWx0 LWluIGxvZ2ljYWwNCiAgIHJlcGxpY2F0aW9uLCBXZSBjYW4gZG8gaXQgYWZ0ZXIgc29tZSBhbmFs eXNpcy4NCg0KWzFdIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvT1MwUFIw MU1CNTcxNjQ2ODc0QTNFMTY1RDkzOTk5QTlEOTQ4ODklNDBPUzBQUjAxTUI1NzE2LmpwbnByZDAx LnByb2Qub3V0bG9vay5jb20NCg0KQmVzdCBSZWdhcmRzLA0KSG91IHpqDQo= --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0005-Deparser-and-DDL-replication-for-the-rest-2023_03_30.patch" Content-Description: 0005-Deparser-and-DDL-replication-for-the-rest-2023_03_30.patch Content-Disposition: attachment; filename="0005-Deparser-and-DDL-replication-for-the-rest-2023_03_30.patch"; size=338833; creation-date="Thu, 30 Mar 2023 06:36:10 GMT"; modification-date="Thu, 30 Mar 2023 06:37:05 GMT" Content-Transfer-Encoding: base64 RnJvbSBkOTJmMDkwZDk1MjdiNzIyZTU4Y2Y5MDczZjdiN2JmY2FlZTE2MmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYW5nIFdlaSA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0 ZTogVGh1LCAzMCBNYXIgMjAyMyAwOTozNjoyOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggNS81XSBE ZXBhcnNlciBhbmQgRERMIHJlcGxpY2F0aW9uIGZvciB0aGUgcmVzdCBjb21tYW5kcy4KCi0tLQog ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgfCAgMjExICstCiBz cmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KIHNy Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgIHwgICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMgICAgICAgICB8ICAgMjEgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMgICAgICAgICAgIHwgNjYzOCArKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgIHwg ICAzNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICB8ICAg MzIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgICAgICAgICAgICAgIHwgICAg NiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyB8ICAgIDUg Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgfCAgICA0ICst CiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMgICAgICAgICAgICAgIHwgICA1MSArCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICB8ICAyOTMgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgIHwgICAgMSArCiBzcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMzIgKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmlu L3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgIHwgICAgNCArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmggICAgICAgICB8ICAgIDMgKy0KIHNyYy9pbmNsdWRl L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS90 Y29wL2RkbF9kZXBhcnNlLmggICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvdGNv cC9kZXBhcnNlX3V0aWxpdHkuaCAgICAgICAgICAgfCAgICA4ICsKIHNyYy9pbmNsdWRlL3V0aWxz L2FjbC5oICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS91dGlscy9h Y2xjaGtfaW50ZXJuYWwuaCAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvYnVp bHRpbnMuaCAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3J1bGV1 dGlscy5oICAgICAgICAgICAgICAgIHwgICAxMCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BzcWwub3V0ICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0ICAgIHwgIDQyMCArLQogMjggZmlsZXMgY2hhbmdlZCwgNzI2NSBpbnNl cnRpb25zKCspLCA1NTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKaW5kZXggZDkxNjYxMGI0Ni4uNmUwNjVlOTUxZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDczLDYgKzE0NzMsMTEgQEAgdGVzdF9zdWI9IyBTRUxFQ1Qg KiBGUk9NIHQxIE9SREVSIEJZIGlkOwogICA8L3BhcmE+CiAKICAgPGl0ZW1pemVkbGlzdD4KKyAg ICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAgYWxsOiB0aGlzIG9wdGlvbiBlbmFi bGVzIHJlcGxpY2F0aW9uIG9mIGFsbCBzdXBwb3J0ZWQgRERMIGNvbW1hbmRzLgorICAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CiAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAg ICAgIHRhYmxlOiB0aGlzIG9wdGlvbiBlbmFibGVzIHJlcGxpY2F0aW9uIG9mIFRhYmxlIERETCBj b21tYW5kcywKQEAgLTE1MzksMjIgKzE1NDQsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIg U0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgIDx0Ym9keT4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEFHR1JFR0FURTwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBDQVNUPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIENPTExBVElPTjwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBDT05WRVJTSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpA QCAtMTU2NCwxMiArMTU2OSwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9 ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgREVGQVVMVCBQUklWSUxFR0VTPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkFMVEVSIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE1 NzksMjIgKzE1ODQsMjIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFi bGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEVYVEVOU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAg ICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBGT1JF SUdOIERBVEEgV1JBUFBFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBGT1JFSUdOIFRBQkxFPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkFMVEVSIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgpAQCAtMTYwNCw3ICsxNjA5LDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIExBTkdVQUdFPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgpAQCAtMTYxNCwzMiArMTYxOSwzMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBt eXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTUFURVJJQUxJWkVEIFZJ RVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BF UkFUT1IgQ0xBU1M8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFs PjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAg ICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIFBPTElDWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBQUk9DRURVUkU8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xNjU0LDMyICsxNjU5LDMyIEBAIEFMVEVS IFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBS T1VUSU5FPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFJVTEVSPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFND SEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTRVFVRU5DRTwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBT RVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU1RBVElTVElDUzwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KQEAgLTE3MDQsMjIgKzE3MDksMjIgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNIIENP TkZJR1VSQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWTwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5BTFRFUiBURVhUIFNFQVJDSCBQQVJTRVI8L2xpdGVyYWw+PC9lbnRyeT4K LSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93 PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxU RVIgVEVYVCBTRUFSQ0ggVEVNUExBVEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CkBAIC0xNzI5LDIyICsxNzM0LDIyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRs ID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUUklHR0VSPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVS IFRZUEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVVNFUiBNQVBQSU5HPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0xNzg5LDcgKzE3 OTQsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q09NTUVOVDwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE4MTQs MzIgKzE4MTksMzIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUn KTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkNSRUFURSBBQ0NFU1MgTUVUSE9EPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBB R0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENBU1Q8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRF IENPTExBVElPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQ09OU1RSQUlOVDwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5DUkVBVEUgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAg LTE4NDksNyArMTg1NCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3Rh YmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRE9NQUlOPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAg ICA8cm93PgpAQCAtMTg1OSwyMiArMTg2NCwyMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBT RVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD48 L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0 ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEZP UkVJR04gVEFCTEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMTg4NCwzNyArMTg4OSwzNyBAQCBBTFRFUiBQVUJMSUNB VElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIExBTkdVQUdF PC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBNQVRFUklBTElaRUQgVklFVzwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5D UkVBVEUgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIE9QRVJBVE9SIENMQVNTPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBPUEVSQVRPUiBGQU1JTFk8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFBP TElDWTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgUFJPQ0VEVVJFPC9saXRlcmFsPjwvZW50cnk+Ci0g ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50 cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgpAQCAtMTkyOSwyNyArMTkzNCwyNyBAQCBBTFRFUiBQVUJMSUNBVElPTiBt eXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFJVTEU8L2xpdGVyYWw+ PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xp dGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAg ICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU0VRVUVOQ0U8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIFNFUlZFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgU1RBVElTVElDUzwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTE5NzQsNDcgKzE5NzksNDcgQEAg QUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNS RUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAg ICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhU IFNFQVJDSCBESUNUSU9OQVJZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNFQVJDSCBQQVJT RVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRl cmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAg ICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkNSRUFURSBUUkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRSSUdHRVI8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIFRZUEU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFVTRVIgTUFQUElORzwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KQEAgLTIwNDQsNyArMjA0OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRs ID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5ESVNDQVJEIEFMTDwvbGl0ZXJhbD48L2VudHJ5PgotICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAg ICAgICAgPHJvdz4KQEAgLTIwNjksMzIgKzIwNzQsMzIgQEAgQUxURVIgUFVCTElDQVRJT04gbXlw dWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQUNDRVNTIE1FVEhPRDwvbGl0 ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIEFHR1JFR0FURTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENBU1Q8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDT05TVFJBSU5UPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KQEAgLTIxMDQsNyArMjEwOSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAo ZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIERPTUFJTjwvbGl0ZXJhbD48L2VudHJ5Pgot ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2Vu dHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+ CiAgICAgICAgPHJvdz4KQEAgLTIxMTQsMjIgKzIxMTksMjIgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRVhURU5TSU9OPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBG T1JFSUdOIFRBQkxFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRlVOQ1RJT048L2xpdGVyYWw+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgIDxyb3c+CkBAIC0yMTM5LDI3ICsyMTQ0LDI3IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIExBTkdVQUdFPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgTUFURVJJQUxJWkVEIFZJRVc8L2xpdGVyYWw+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93Pgog ICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBP UEVSQVRPUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9QRVJBVE9SIENMQVNTPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkRST1AgT1BFUkFUT1IgRkFNSUxZPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpA QCAtMjE2OSwxMiArMjE3NCwxMiBAQCBBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQgKGRkbCA9 ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAg ICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBQUk9D RURVUkU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CkBAIC0yMTg5LDMyICsyMTk0 LDMyIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAg ICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5EUk9QIFJPVVRJTkU8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBSVUxFPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkRST1AgU0NIRU1BPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgU0VRVUVOQ0U8L2xpdGVyYWw+PC9lbnRy eT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+ PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ RFJPUCBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTVEFUSVNUSUNTPC9saXRlcmFsPjwvZW50 cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFs PjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8 L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjIzNCw0NyArMjIzOSw0NyBAQCBBTFRFUiBQVUJMSUNB VElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOwogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBURVhUIFNFQVJD SCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVYVCBTRUFSQ0ggRElDVElPTkFS WTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFBBUlNFUjwvbGl0ZXJhbD48L2VudHJ5 PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48 L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5E Uk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93 PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJBTlNGT1JNPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjxsaXRlcmFsPkRST1AgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRZUEU8L2xpdGVy YWw+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8 L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgog ICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBVU0VSIE1BUFBJTkc8L2xpdGVyYWw+PC9lbnRyeT4KLSAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgogICAgICAgIDwvcm93PgogICAgICAgIDxy b3c+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjI5NCw3ICsyMjk5LDcgQEAgQUxURVIg UFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkdSQU5UPC9s aXRlcmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJh bD5YPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRy eT4KICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpAQCAtMjMwNCw3ICsyMzA5LDcgQEAgQUxU RVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4K ICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPklNUE9S VCBGT1JFSUdOIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTIz NTksNyArMjM2NCw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxl Jyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5SRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+ Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwv ZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jv dz4KICAgICAgICA8cm93PgpAQCAtMjM3OSw3ICsyMzg0LDcgQEAgQUxURVIgUFVCTElDQVRJT04g bXlwdWIgU0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93Pgog ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJFVk9LRTwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTI0MDQsNyArMjQwOSw3IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRUNVUklUWSBMQUJFTDwv bGl0ZXJhbD48L2VudHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJvdz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IDQ1 Y2RjZDNkYzYuLjRiNWEzYmE5NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNs Y2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwpAQCAtMTI5LDcgKzEyOSw2 IEBAIHN0YXRpYyB2b2lkIGV4cGFuZF9hbGxfY29sX3ByaXZpbGVnZXMoT2lkIHRhYmxlX29pZCwg Rm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0sCiAJCQkJCQkJCQkgIEFjbE1vZGUgKmNvbF9wcml2aWxl Z2VzLAogCQkJCQkJCQkJICBpbnQgbnVtX2NvbF9wcml2aWxlZ2VzKTsKIHN0YXRpYyBBY2xNb2Rl IHN0cmluZ190b19wcml2aWxlZ2UoY29uc3QgY2hhciAqcHJpdm5hbWUpOwotc3RhdGljIGNvbnN0 IGNoYXIgKnByaXZpbGVnZV90b19zdHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpOwogc3RhdGljIEFj bE1vZGUgcmVzdHJpY3RfYW5kX2NoZWNrX2dyYW50KGJvb2wgaXNfZ3JhbnQsIEFjbE1vZGUgYXZh aWxfZ29wdGlvbnMsCiAJCQkJCQkJCQkJYm9vbCBhbGxfcHJpdnMsIEFjbE1vZGUgcHJpdmlsZWdl cywKIAkJCQkJCQkJCQlPaWQgb2JqZWN0SWQsIE9pZCBncmFudG9ySWQsCkBAIC0zODUsMTEgKzM4 NCwxMCBAQCBFeGVjdXRlR3JhbnRTdG10KEdyYW50U3RtdCAqc3RtdCkKIAlMaXN0Q2VsbCAgICpj ZWxsOwogCWNvbnN0IGNoYXIgKmVycm9ybXNnOwogCUFjbE1vZGUJCWFsbF9wcml2aWxlZ2VzOwor CU9pZAkJCWdyYW50b3IgPSBJbnZhbGlkT2lkOwogCiAJaWYgKHN0bXQtPmdyYW50b3IpCiAJewot CQlPaWQJCQlncmFudG9yOwotCiAJCWdyYW50b3IgPSBnZXRfcm9sZXNwZWNfb2lkKHN0bXQtPmdy YW50b3IsIGZhbHNlKTsKIAogCQkvKgpAQCAtNDA4LDYgKzQwNiw5IEBAIEV4ZWN1dGVHcmFudFN0 bXQoR3JhbnRTdG10ICpzdG10KQogCWlzdG10LmlzX2dyYW50ID0gc3RtdC0+aXNfZ3JhbnQ7CiAJ aXN0bXQub2JqdHlwZSA9IHN0bXQtPm9ianR5cGU7CiAKKwkvKiBDb3B5IHRoZSBncmFudG9yIGlk IG5lZWRlZCBmb3IgRERMIGRlcGFyc2luZyBvZiBHcmFudCAqLworCWlzdG10LmdyYW50b3JfdWlk ID0gZ3JhbnRvcjsKKwogCS8qIENvbGxlY3QgdGhlIE9JRHMgb2YgdGhlIHRhcmdldCBvYmplY3Rz ICovCiAJc3dpdGNoIChzdG10LT50YXJndHlwZSkKIAl7CkBAIC0yNjIyLDcgKzI2MjMsNyBAQCBz dHJpbmdfdG9fcHJpdmlsZWdlKGNvbnN0IGNoYXIgKnByaXZuYW1lKQogCXJldHVybiAwOwkJCQkJ LyogYXBwZWFzZSBjb21waWxlciAqLwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqCitjb25zdCBj aGFyICoKIHByaXZpbGVnZV90b19zdHJpbmcoQWNsTW9kZSBwcml2aWxlZ2UpCiB7CiAJc3dpdGNo IChwcml2aWxlZ2UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggZDIwOTYw MmUyOC4uNWIxZTI5ZTM4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAt MTAyOCw2ICsxMDI4LDcgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+cHViYWN0 aW9ucy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1 YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNh dGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRsX2FsbCA9 IHB1YmZvcm0tPnB1YmRkbF9hbGw7CiAJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9IHB1 YmZvcm0tPnB1YmRkbF90YWJsZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFy b290OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmMKaW5kZXggNDVkZTc4MzUyYy4u MTJmODk2MDdkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29sbGF0aW9uY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbGxhdGlvbmNtZHMuYwpAQCAtNTAsOSAr NTAsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogLyoKICAqIENSRUFURSBDT0xMQVRJT04KKyAqCisg KiBwc3RhdGU6IHBhcnNlIHN0YXRlLgorICogbmFtZXM6IHF1YWxpZmllZCBjb2xsYXRpb24gbmFt ZXMgKGEgbGlzdCBvZiBTdHJpbmcpLgorICogcGFyYW1ldGVyczogY29sbGF0aW9uIGF0dHJpYnV0 ZXMgKGEgbGlzdCBvZiBEZWZFbGVtKS4KKyAqIGlmX25vdF9leGlzdHM6IGlmIHRydWUsIGRvbid0 IGZhaWwgb24gZHVwbGljYXRlIG5hbWUsIGp1c3QgcHJpbnQgYSBub3RpY2UKKyAqIGFuZCByZXR1 cm4gSW52YWxpZE9pZC4KKyAqIGZyb21fZXhpc3RpbmdfY29sbGlkOiBvdXRwdXQgYXJndW1lbnQg d2hpY2gsIGlmIG5vdCBOVUxMLCBpcyBzZXQgdG8gdGhlCisgKiBhZGRyZXNzIG9mIGV4aXN0aW5n IGNvbGxhdGlvbiB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSBpbiBjYXNlIG9mCisgKiBDUkVBVEUg Q09MTEFUSU9OIGFueV9uYW1lIEZST00gZXhpc3RpbmdfY29sbGF0aW9uLgorICoKKyAqIElmIHN1 Y2Nlc3NmdWwsIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhlIG5ldyBjb2xsYXRpb24uCiAgKi8K IE9iamVjdEFkZHJlc3MKLURlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9leGlzdHMpCitEZWZpbmVDb2xs YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpuYW1lcywgTGlzdCAqcGFyYW1ldGVycywK KwkJCQlib29sIGlmX25vdF9leGlzdHMsIE9iamVjdEFkZHJlc3MgKmZyb21fZXhpc3RpbmdfY29s bGlkKQogewogCWNoYXIJICAgKmNvbGxOYW1lOwogCU9pZAkJCWNvbGxOYW1lc3BhY2U7CkBAIC0x NDMsNiArMTU1LDEzIEBAIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9lCiAJCWlmICghSGVhcFR1cGxl SXNWYWxpZCh0cCkpCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29s bGF0aW9uICV1IiwgY29sbGlkKTsKIAorCQkvKgorCQkgKiBNYWtlIGZyb20gZXhpc3RpbmcgY29s bGF0aW9uaWQgYXZhaWxhYmxlIHRvIGNhbGxlcnMgZm9yIHN0YXRlbWVudHMKKwkJICogc3VjaCBh cyBDUkVBVEUgQ09MTEFUSU9OIGFueV9uYW1lIEZST00gZXhpc3RpbmdfY29sbGF0aW9uLgorCQkg Ki8KKwkJaWYgKGZyb21fZXhpc3RpbmdfY29sbGlkICYmIE9pZElzVmFsaWQoY29sbGlkKSkKKwkJ CU9iamVjdEFkZHJlc3NTZXQoKmZyb21fZXhpc3RpbmdfY29sbGlkLCBDb2xsYXRpb25SZWxhdGlv bklkLCBjb2xsaWQpOworCiAJCWNvbGxwcm92aWRlciA9ICgoRm9ybV9wZ19jb2xsYXRpb24pIEdF VFNUUlVDVCh0cCkpLT5jb2xscHJvdmlkZXI7CiAJCWNvbGxpc2RldGVybWluaXN0aWMgPSAoKEZv cm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QodHApKS0+Y29sbGlzZGV0ZXJtaW5pc3RpYzsKIAkJ Y29sbGVuY29kaW5nID0gKChGb3JtX3BnX2NvbGxhdGlvbikgR0VUU1RSVUNUKHRwKSktPmNvbGxl bmNvZGluZzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCmluZGV4IDdjNDE5OGJmNDYuLjA4 OWM5NjBkNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwpAQCAtNTksNiArNTksOCBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlv bl9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19yZXdyaXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zZXF1ZW5jZS5oIgpA QCAtNzEsNiArNzMsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdXNlcl9tYXBwaW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVk ZSAiZm9yZWlnbi9mb3JlaWduLmgiCkBAIC0xNTIsNiArMTU1LDcgQEAgYm9vbAkJdmVyYm9zZSA9 IHRydWU7CiAKIHN0YXRpYyB2b2lkIGFwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJlZSwg Y2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpOwogc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xfb2Jq ZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpOworc3RhdGljIHZv aWQgYXBwZW5kX2Zsb2F0X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBmbG9h dDggdmFsdWUpOwogc3RhdGljIHZvaWQgYXBwZW5kX251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUs IGNoYXIgKnN1Yl9mbXQpOwogc3RhdGljIHZvaWQgYXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJl ZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgT2JqVHJlZSAqdmFsdWUpOwogc3RhdGljIGNoYXIgKmFw cGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyhPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10 KTsKQEAgLTE2MSwxMSArMTY1LDIxIEBAIHN0YXRpYyB2b2lkIGFwcGVuZF9zdHJpbmdfb2JqZWN0 KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGNoYXIgKm5hbWUsCiBzdGF0aWMgdm9pZCBm b3JtYXRfdHlwZV9kZXRhaWxlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCiAJCQkJCQkJ CSBPaWQgKm5zcGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCiAJCQkJCQkJ CSBib29sICp0eXBhcnJheSk7CitzdGF0aWMgTGlzdCAqRnVuY3Rpb25HZXREZWZhdWx0cyh0ZXh0 ICpwcm9hcmdkZWZhdWx0cyk7CiBzdGF0aWMgT2JqRWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5 cGUsIGNoYXIgKm5hbWUpOwogc3RhdGljIE9ialRyZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZV9pZChPaWQgY2xhc3NJZCwgT2lkIG9iamVjdElkKTsKK3N0YXRpYyBPYmpUcmVlICpuZXdfb2Jq dHJlZV9mb3Jfcm9sZXNwZWMoUm9sZVNwZWMgKnNwZWMpOwogc3RhdGljIE9iakVsZW0gKm5ld19v YmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVlKTsKIHN0YXRpYyBPYmpUcmVlICpuZXdfb2JqdHJl ZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4uLik7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29i anRyZWUoY2hhciAqZm10KTsKK3N0YXRpYyBPYmpFbGVtICpuZXdfc3RyaW5nX29iamVjdChjaGFy ICp2YWx1ZSk7CiBzdGF0aWMgSnNvbmJWYWx1ZSAqb2JqdHJlZV90b19qc29uYl9yZWMoT2JqVHJl ZSAqdHJlZSwgSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqb3duZXIpOworc3RhdGljIHZv aWQgcGdfZ2V0X2luZGV4ZGVmX2RldGFpbGVkKE9pZCBpbmRleHJlbGlkLAorCQkJCQkJCQkJIGNo YXIgKippbmRleF9hbSwKKwkJCQkJCQkJCSBjaGFyICoqZGVmaW5pdGlvbiwKKwkJCQkJCQkJCSBj aGFyICoqcmVsb3B0aW9ucywKKwkJCQkJCQkJCSBjaGFyICoqdGFibGVzcGFjZSwKKwkJCQkJCQkJ CSBjaGFyICoqd2hlcmVDbGF1c2UpOwogc3RhdGljIGNoYXIgKlJlbGF0aW9uR2V0Q29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCiAJCQkJCQkJCQkgIExpc3QgKmRw Y29udGV4dCwgTGlzdCAqKmV4cHJzKTsKIApAQCAtMTczLDggKzE4NywxOCBAQCBzdGF0aWMgT2Jq VHJlZSAqZGVwYXJzZV9Db2x1bW5EZWYoUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKmRwY29udGV4 dCwgYm9vbCBjb21wbwogCQkJCQkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBib29sIGlzX2FsdGVy LCBMaXN0ICoqZXhwcnMpOwogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfQ29sdW1uSWRlbnRpdHko T2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBP YmpUcmVlICpkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJUYWJsZUNtZCAqc3ViY21kKTsK K3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfQWdncmVnYXRlKE9pZCBvYmplY3RJ ZCwgRGVmaW5lU3RtdCAqZGVmaW5lKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0 bXRfQ29sbGF0aW9uKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lLAorCQkJCQkJCQkJ CQkgT2JqZWN0QWRkcmVzcyBmcm9tQ29sbGlkKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0Rl ZmluZVN0bXRfT3BlcmF0b3IoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3Rh dGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5lU3RtdF9UeXBlKE9pZCBvYmplY3RJZCwgRGVmaW5l U3RtdCAqZGVmaW5lKTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVFNDb25m aWcoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUsIE9iamVjdEFkZHJlc3MgY29waWVk KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0RlZmluZVN0bXRfVFNQYXJzZXIoT2lkIG9iamVj dElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5l U3RtdF9UU0RpY3Rpb25hcnkoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpOworc3Rh dGljIE9ialRyZWUgKmRlcGFyc2VfRGVmaW5lU3RtdF9UU1RlbXBsYXRlKE9pZCBvYmplY3RJZCwg RGVmaW5lU3RtdCAqZGVmaW5lKTsKIAogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmRWxlbShE ZWZFbGVtICplbGVtLCBib29sIGlzX3Jlc2V0KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0Z1 bmN0aW9uU2V0KFZhcmlhYmxlU2V0S2luZCBraW5kLCBjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSk7 CiBzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9PbkNvbW1pdENsYXVzZShPbkNvbW1pdEFjdGlvbiBv cHRpb24pOwogc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfUmVsU2V0T3B0aW9ucyhBbHRlclRhYmxl Q21kICpzdWJjbWQpOwogCkBAIC0xODMsNiArMjA3LDcgQEAgc3RhdGljIGlubGluZSBPYmpFbGVt ICpkZXBhcnNlX1NlcV9DeWNsZShGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJf dGEKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfSW5jcmVtZW50QnkoRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBpbmxpbmUgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfTWludmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29s IGFsdGVyX3RhYmxlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWF4dmFs dWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBP YmpFbGVtICpkZXBhcnNlX1NlcV9Pd25lZEJ5KE9pZCBzZXF1ZW5jZUlkLCBib29sIGFsdGVyX3Rh YmxlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfUmVzdGFydChpbnQ2NCBs YXN0X3ZhbHVlKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfU3RhcnR3aXRo KEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSk7CiBzdGF0aWMgaW5s aW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0FzKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSk7CkBA IC0xOTQsMTAgKzIxOSwxNSBAQCBzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9U eXBtb2RfT3V0KEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsKIHN0YXRpYyBpbmxpbmUgT2JqRWxlbSAq ZGVwYXJzZV9UeXBlX0FuYWx5emUoRm9ybV9wZ190eXBlIHR5cEZvcm0pOwogc3RhdGljIGlubGlu ZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfU3Vic2NyaXB0KEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsK IAorc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRmR3T3B0aW9ucyhMaXN0ICpvcHRpb25zLCBjaGFy ICpjb2xuYW1lLAorCQkJCQkJCQkgICBib29sIGFsdGVyY29sb3B0aW9ucyk7CisKIHN0YXRpYyBM aXN0ICpkZXBhcnNlX0luaFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpOwogc3RhdGljIExpc3QgKmRl cGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50 cywgTGlzdCAqZHBjb250ZXh0LAogCQkJCQkJCQkgICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0 ZSk7CiAKK3N0YXRpYyBjaGFyICpEb21haW5HZXREZWZhdWx0KEhlYXBUdXBsZSBkb21UdXAsIGJv b2wgbWlzc2luZ19vayk7CisKIC8qCiAgKiBBcHBlbmQgcHJlc2VudCBhcyBmYWxzZSB0byBhIHRy ZWUuCiAgKi8KQEAgLTIwNyw2ICsyMzcsNDIgQEAgYXBwZW5kX25vdF9wcmVzZW50KE9ialRyZWUg KnRyZWUpCiAJYXBwZW5kX2Jvb2xfb2JqZWN0KHRyZWUsICJwcmVzZW50IiwgZmFsc2UpOwogfQog CisvKgorICogQXBwZW5kIGFuIGludDMyIHBhcmFtZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRp YyB2b2lkCithcHBlbmRfaW50X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBp bnQzMiB2YWx1ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFt ZTsKKworCUFzc2VydChzdWJfZm10KTsKKworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90 b19mb3JtYXRfc3RyaW5nKHRyZWUsIHN1Yl9mbXQpOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9i alR5cGVJbnRlZ2VyLCBvYmplY3RfbmFtZSk7CisJcGFyYW0tPnZhbHVlLmZsdCA9IHZhbHVlOwor CWFwcGVuZF9wcmVtYWRlX29iamVjdCh0cmVlLCBwYXJhbSk7Cit9CisKKy8qCisgKiBBcHBlbmQg YSBmbG9hdDggcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9m bG9hdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgZmxvYXQ4IHZhbHVlKQor eworCU9iakVsZW0gICAgKnBhcmFtOworCWNoYXIJICAgKm9iamVjdF9uYW1lOworCisJQXNzZXJ0 KHN1Yl9mbXQpOworCisJb2JqZWN0X25hbWUgPSBhcHBlbmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJp bmcodHJlZSwgc3ViX2ZtdCk7CisKKwlwYXJhbSA9IG5ld19vYmplY3QoT2JqVHlwZUZsb2F0LCBv YmplY3RfbmFtZSk7CisJcGFyYW0tPnZhbHVlLmZsdCA9IHZhbHVlOworCWFwcGVuZF9wcmVtYWRl X29iamVjdCh0cmVlLCBwYXJhbSk7Cit9CisKIC8qCiAgKiBBcHBlbmQgYW4gYXJyYXkgcGFyYW1l dGVyIHRvIGEgdHJlZS4KICAqLwpAQCAtNDEzLDYgKzQ3OSwzNCBAQCBhcHBlbmRfc3RyaW5nX29i amVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICogb2JqZWN0X25hbWUsCiAJ YXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFtKTsKIH0KIAorLyoKKyAqIEFwcGVuZCBh IE5VTEwtb3ItcXVvdGVkLWxpdGVyYWwgY2xhdXNlLiAgVXNlZnVsIGZvciBDT01NRU5UIGFuZCBT RUNVUklUWQorICogTEFCRUwuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqICV7bnVsbH1zICV7 bGl0ZXJhbH1zCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfbGl0ZXJhbF9vcl9udWxsKE9ialRy ZWUgKnBhcmVudCwgY2hhciAqZWxlbW5hbWUsIGNoYXIgKnZhbHVlKQoreworCU9ialRyZWUgICAg KnRvcDsKKwlPYmpUcmVlICAgICpwYXJ0OworCisJdG9wID0gbmV3X29ianRyZWUoIiIpOworCXBh cnQgPSBuZXdfb2JqdHJlZV9WQSgiTlVMTCIsIDEsCisJCQkJCQkgICJwcmVzZW50IiwgT2JqVHlw ZUJvb2wsICF2YWx1ZSk7CisJYXBwZW5kX29iamVjdF9vYmplY3QodG9wLCAiJXtudWxsfXMiLCBw YXJ0KTsKKworCXBhcnQgPSBuZXdfb2JqdHJlZV9WQSgiIiwgMSwKKwkJCQkJCSAgInByZXNlbnQi LCBPYmpUeXBlQm9vbCwgdmFsdWUgIT0gTlVMTCk7CisKKwlpZiAodmFsdWUpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KHBhcnQsICIle3ZhbHVlfUwiLCAidmFsdWUiLCB2YWx1ZSk7CisJYXBwZW5k X29iamVjdF9vYmplY3QodG9wLCAiJXtsaXRlcmFsfXMiLCBwYXJ0KTsKKworCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHBhcmVudCwgZWxlbW5hbWUsIHRvcCk7Cit9CisKIC8qCiAgKiBTaW1pbGFyIHRv IGZvcm1hdF90eXBlX2V4dGVuZGVkLCBleGNlcHQgd2UgcmV0dXJuIGVhY2ggYml0IG9mIGluZm9y bWF0aW9uCiAgKiBzZXBhcmF0ZWx5OgpAQCAtNTE1LDYgKzYwOSwzMSBAQCBmb3JtYXRfdHlwZV9k ZXRhaWxlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCiAJUmVsZWFzZVN5c0NhY2hlKHR1 cGxlKTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgYXJndW1lbnRz IHRvIGEgZnVuY3Rpb24sIGFzIGEgbGlzdCBvZgorICogZGVwYXJzZWQgZXhwcmVzc2lvbnMuCisg Ki8KK3N0YXRpYyBMaXN0ICoKK0Z1bmN0aW9uR2V0RGVmYXVsdHModGV4dCAqcHJvYXJnZGVmYXVs dHMpCit7CisJTGlzdAkgICAqbm9kZWRlZnM7CisJTGlzdAkgICAqc3RyZGVmcyA9IE5JTDsKKwlM aXN0Q2VsbCAgICpjZWxsOworCisJbm9kZWRlZnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUodGV4 dF90b19jc3RyaW5nKHByb2FyZ2RlZmF1bHRzKSk7CisJaWYgKCFJc0Eobm9kZWRlZnMsIExpc3Qp KQorCQllbG9nKEVSUk9SLCAicHJvYXJnZGVmYXVsdHMgaXMgbm90IGEgbGlzdCIpOworCisJZm9y ZWFjaChjZWxsLCBub2RlZGVmcykKKwl7CisJCU5vZGUJICAgKm9uZWRlZiA9IGxmaXJzdChjZWxs KTsKKworCQlzdHJkZWZzID0gbGFwcGVuZChzdHJkZWZzLCBkZXBhcnNlX2V4cHJlc3Npb24ob25l ZGVmLCBOSUwsIGZhbHNlLCBmYWxzZSkpOworCX0KKworCXJldHVybiBzdHJkZWZzOworfQorCiAv KgogICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFJFTFBF UlNJU1RFTkNFIHZhbHVlLgogICovCkBAIC03MDQsNiArODIzLDU3IEBAIG5ld19vYmp0cmVlX2Zv cl90eXBlKE9pZCB0eXBlSWQsIGludDMyIHR5cG1vZCkKIAkJCQkJCSAgInR5cGFycmF5IiwgT2Jq VHlwZUJvb2wsIHR5cGVfYXJyYXkpOwogfQogCisvKgorICogSGVscGVyIHJvdXRpbmUgZm9yICV7 fVIgb2JqZWN0cywgd2l0aCByb2xlIHNwZWNpZmllZCBieSBSb2xlU3BlYyBub2RlLgorICogU3Bl Y2lhbCB2YWx1ZXMgc3VjaCBhcyBST0xFU1BFQ19DVVJSRU5UX1VTRVIgYXJlIGV4cGFuZGVkIHRv IHRoZWlyIGZpbmFsCisgKiBuYW1lcy4KKyAqLworc3RhdGljIE9ialRyZWUgKgorbmV3X29ianRy ZWVfZm9yX3JvbGVzcGVjKFJvbGVTcGVjICpzcGVjKQoreworCWNoYXIJICAgKnJvbGV0eXBlOwor CisJaWYgKHNwZWMtPnJvbGV0eXBlICE9IFJPTEVTUEVDX1BVQkxJQykKKwkJcm9sZXR5cGUgPSBn ZXRfcm9sZXNwZWNfbmFtZShzcGVjKTsKKwllbHNlCisJCXJvbGV0eXBlID0gcHN0cmR1cCgiIik7 CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEoTlVMTCwgMiwKKwkJCQkJCSAgImlzX3B1YmxpYyIs IE9ialR5cGVCb29sLCBzcGVjLT5yb2xldHlwZSA9PSBST0xFU1BFQ19QVUJMSUMsCisJCQkJCQkg ICJyb2xlbmFtZSIsIE9ialR5cGVTdHJpbmcsIHJvbGV0eXBlKTsKK30KKworLyoKKyAqIEhlbHBl ciByb3V0aW5lIGZvciAle31SIG9iamVjdHMsIHdpdGggcm9sZSBzcGVjaWZpZWQgYnkgT0lELiAo QUNMX0lEX1BVQkxJQworICogbWVhbnMgdG8gdXNlICJwdWJsaWMiKS4KKyAqLworc3RhdGljIE9i alRyZWUgKgorbmV3X29ianRyZWVfZm9yX3JvbGVfaWQoT2lkIHJvbGVvaWQpCit7CisJT2JqVHJl ZSAgICAqcm9sZTsKKworCWlmIChyb2xlb2lkICE9IEFDTF9JRF9QVUJMSUMpCisJeworCQlIZWFw VHVwbGUJcm9sdHVwOworCQljaGFyCSAgICpyb2xlX25hbWU7CisKKwkJcm9sdHVwID0gU2VhcmNo U3lzQ2FjaGUxKEFVVEhPSUQsIE9iamVjdElkR2V0RGF0dW0ocm9sZW9pZCkpOworCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocm9sdHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciByb2xlIHdpdGggT0lEICV1Iiwgcm9sZW9pZCk7CisKKwkJcm9sZV9uYW1lID0gTmFt ZVN0cigoKEZvcm1fcGdfYXV0aGlkKSBHRVRTVFJVQ1Qocm9sdHVwKSktPnJvbG5hbWUpOworCQly b2xlID0gbmV3X29ianRyZWVfVkEoIiV7cm9sZW5hbWV9SSIsIDEsCisJCQkJCQkJICAicm9sZW5h bWUiLCBPYmpUeXBlU3RyaW5nLCBwc3RyZHVwKHJvbGVfbmFtZSkpOworCisJCVJlbGVhc2VTeXND YWNoZShyb2x0dXApOworCX0KKwllbHNlCisJCXJvbGUgPSBuZXdfb2JqdHJlZV9WQSgiJXtyb2xl bmFtZX1JIiwgMSwKKwkJCQkJCQkgICJyb2xlbmFtZSIsIE9ialR5cGVTdHJpbmcsICJwdWJsaWMi KTsKKworCXJldHVybiByb2xlOworfQorCiAvKgogICogQWxsb2NhdGUgYSBuZXcgb2JqZWN0IHRy ZWUgdG8gc3RvcmUgcGFyYW1ldGVyIHZhbHVlcyAtLSB2YXJhcmdzIHZlcnNpb24uCiAgKgpAQCAt NzgxLDYgKzk1MSwyMiBAQCBuZXdfb2JqdHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4u LikKIAlyZXR1cm4gdHJlZTsKIH0KIAorLyoKKyAqIEFsbG9jYXRlIGEgbmV3IHN0cmluZyBvYmpl Y3QuCisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK25ld19zdHJpbmdfb2JqZWN0KGNoYXIgKnZhbHVl KQoreworCU9iakVsZW0gICAgKnBhcmFtOworCisJQXNzZXJ0KHZhbHVlKTsKKworCXBhcmFtID0g bmV3X29iamVjdChPYmpUeXBlU3RyaW5nLCBOVUxMKTsKKwlwYXJhbS0+dmFsdWUuc3RyaW5nID0g dmFsdWU7CisKKwlyZXR1cm4gcGFyYW07Cit9CisKIC8qCiAgKiBQcm9jZXNzIHRoZSBwcmUtYnVp bHQgZm9ybWF0IHN0cmluZyBmcm9tIHRoZSBPYmpUcmVlIGludG8gdGhlIG91dHB1dCBwYXJzZQog ICogc3RhdGUuCkBAIC0xOTI3LDYgKzIxMTMsODMgQEAgZGVwYXJzZV9TZXFfTWludmFsdWUoRm9y bV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQogCXJldHVybiBuZXdfb2Jq ZWN0X29iamVjdChyZXQpOwogfQogCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgT1dORUQg QlkgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogT1dORUQgQlkgJXtvd25lcn1E CisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX093bmVkQnkoT2lkIHNlcXVlbmNl SWQsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0ID0gTlVMTDsKKwlSZWxh dGlvbglkZXBSZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXlzWzNdOwor CUhlYXBUdXBsZQl0dXBsZTsKKworCWRlcFJlbCA9IHRhYmxlX29wZW4oRGVwZW5kUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5c1swXSwKKwkJCQlBbnVtX3Bn X2RlcGVuZF9jbGFzc2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJ CQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uUmVsYXRpb25JZCkpOworCVNjYW5LZXlJbml0KCZr ZXlzWzFdLAorCQkJCUFudW1fcGdfZGVwZW5kX29iamlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51 bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHNlcXVlbmNlSWQpKTsKKwlTY2Fu S2V5SW5pdCgma2V5c1syXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9vYmpzdWJpZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfSU5UNEVRLAorCQkJCUludDMyR2V0RGF0dW0oMCkpOworCisJ c2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZERlcGVuZGVySW5kZXhJZCwg dHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDMsIGtleXMpOworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlPaWQJCQlvd25lcklkOwor CQlGb3JtX3BnX2RlcGVuZCBkZXBmb3JtOworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCQljaGFy CSAgICpjb2xuYW1lOworCisJCWRlcGZvcm0gPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVCh0 dXBsZSk7CisKKwkJLyogT25seSBjb25zaWRlciBBVVRPIGRlcGVuZGVuY2llcyBvbiBwZ19jbGFz cyAqLworCQlpZiAoZGVwZm9ybS0+ZGVwdHlwZSAhPSBERVBFTkRFTkNZX0FVVE8pCisJCQljb250 aW51ZTsKKwkJaWYgKGRlcGZvcm0tPnJlZmNsYXNzaWQgIT0gUmVsYXRpb25SZWxhdGlvbklkKQor CQkJY29udGludWU7CisJCWlmIChkZXBmb3JtLT5yZWZvYmpzdWJpZCA8PSAwKQorCQkJY29udGlu dWU7CisKKwkJb3duZXJJZCA9IGRlcGZvcm0tPnJlZm9iamlkOworCQljb2xuYW1lID0gZ2V0X2F0 dG5hbWUob3duZXJJZCwgZGVwZm9ybS0+cmVmb2Jqc3ViaWQsIGZhbHNlKTsKKwkJaWYgKGNvbG5h bWUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLCBvd25lcklkKTsKKwkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iaiwgImF0dHJuYW1lIiwgImF0dHJuYW1lIiwgY29sbmFtZSk7CisJCXJl dCA9IG5ld19vYmp0cmVlX1ZBKCJPV05FRCBCWSAle293bmVyfUQiLCAyLAorCQkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgIm93bmVkIiwKKwkJCQkJCQkgIm93bmVyIiwgT2JqVHlwZU9i amVjdCwgdG1wX29iaik7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwlyZWxhdGlv bl9jbG9zZShkZXBSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIElmIHRoZXJlJ3Mg bm8gb3duZXIgY29sdW1uLCBlbWl0IGFuIGVtcHR5IE9XTkVEIEJZIGVsZW1lbnQsIHNldCB1cCBz bworCSAqIHRoYXQgaXQgd29uJ3QgcHJpbnQgYW55dGhpbmcuCisJICovCisJaWYgKCFyZXQpCisJ CS8qIFhYWCB0aGlzIHNob3VsZG4ndCBoYXBwZW4gLi4uICovCisJCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJPV05FRCBCWSAle293bmVyfUQiLCAzLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0 cmluZywgIm93bmVkIiwKKwkJCQkJCQkgIm93bmVyIiwgT2JqVHlwZU51bGwsCisJCQkJCQkJICJw cmVzZW50IiwgT2JqVHlwZUJvb2wsIGZhbHNlKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVj dChyZXQpOworfQorCiAvKgogICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgUkVTVEFSVCBvcHRpb24u CiAgKgpAQCAtMjE5MSw2ICsyNDU0LDY0IEBAIGRlcGFyc2VfVGFibGVFbGVtZW50cyhSZWxhdGlv biByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywgTGlzdCAqZHBjb250ZXh0LAogCXJldHVy biBlbGVtZW50czsKIH0KIAorLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVTZXFTdG10LgorICoKKyAq IEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQs IHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQu CisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle3BlcnNpc3RlbmNlfXMgU0VRVUVO Q0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9DcmVhdGVTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQorewor CU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlMaXN0CSAgICplbGVtcyA9 IE5JTDsKKwlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2 YWx1ZXM7CisJQ3JlYXRlU2VxU3RtdCAqY3JlYXRlU2VxU3RtdCA9IChDcmVhdGVTZXFTdG10ICop IHBhcnNldHJlZTsKKworCS8qCisJICogU2VxdWVuY2UgZm9yIElERU5USVRZIENPTFVNTiBvdXRw dXQgc2VwYXJhdGVseSAodmlhIENSRUFURSBUQUJMRSBvcgorCSAqIEFMVEVSIFRBQkxFKTsgcmV0 dXJuIGVtcHR5IGhlcmUuCisJICovCisJaWYgKGNyZWF0ZVNlcVN0bXQtPmZvcl9pZGVudGl0eSkK KwkJcmV0dXJuIE5VTEw7CisKKwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2VfdmFsdWVzKG9iamVj dElkKTsKKwlzZXFmb3JtID0gc2VxdmFsdWVzLT5zZXFmb3JtOworCisJLyogRGVmaW5pdGlvbiBl bGVtZW50cyAqLworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfQ2FjaGUoc2Vx Zm9ybSwgZmFsc2UpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX0N5Y2xl KHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9J bmNyZW1lbnRCeShzZXFmb3JtLCBmYWxzZSkpOworCWVsZW1zID0gbGFwcGVuZChlbGVtcywgZGVw YXJzZV9TZXFfTWludmFsdWUoc2VxZm9ybSwgZmFsc2UpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxl bXMsIGRlcGFyc2VfU2VxX01heHZhbHVlKHNlcWZvcm0sIGZhbHNlKSk7CisJZWxlbXMgPSBsYXBw ZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9TdGFydHdpdGgoc2VxZm9ybSwgZmFsc2UpKTsKKwllbGVt cyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX1Jlc3RhcnQoc2VxdmFsdWVzLT5sYXN0X3Zh bHVlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9BcyhzZXFmb3JtKSk7 CisKKwkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkgaGVyZSAqLworCisJ cmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ cmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgU0VRVUVOQ0UgJXtp Zl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMiLCA0LAorCQkJCQkJ ICJwZXJzaXN0ZW5jZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0X3BlcnNpc3RlbmNlX3N0 cihyZWxhdGlvbi0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSksCisJCQkJCQkgImlmX25vdF9leGlz dHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIGNyZWF0ZVNlcVN0bXQtPmlmX25vdF9leGlzdHMg PyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0 LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxu YW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSksCisJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlQXJyYXksIGVsZW1zKTsKKworCXJlbGF0 aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30K KwogLyoKICAqIERlcGFyc2UgYW4gSW5kZXhTdG10LgogICoKQEAgLTI1MzQsNyArMjg1NSw3IEBA IGRlcGFyc2VfQWx0ZXJSZWxhdGlvbihDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAKIAlBc3NlcnQo Y21kLT50eXBlID09IFNDVF9BbHRlclRhYmxlKTsKIAlzdG10ID0gKEFsdGVyVGFibGVTdG10ICop IGNtZC0+cGFyc2V0cmVlOwotCUFzc2VydChJc0Eoc3RtdCwgQWx0ZXJUYWJsZVN0bXQpKTsKKwlB c3NlcnQoSXNBKHN0bXQsIEFsdGVyVGFibGVTdG10KSB8fCBJc0Eoc3RtdCwgVmlld1N0bXQpKTsK IAogCS8qCiAJICogQUxURVIgVEFCTEUgc3ViY29tbWFuZHMgZ2VuZXJhdGVkIGZvciBUYWJsZUxp a2VDbGF1c2UgaXMgcHJvY2Vzc2VkIGluCkBAIC0yNTc3LDggKzI4OTgsMTAgQEAgZGVwYXJzZV9B bHRlclJlbGF0aW9uKENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIHJlbGtpbmQgJWQiLCByZWwtPnJkX3JlbC0+cmVsa2luZCk7CiAJfQogCi0JcmV0ID0g bmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCIsIDIsCisJcmV0 ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCIsIDMsCiAJ CQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLCByZWx0eXBlLAorCQkJCQkJICJvbmx5Iiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSBzdG10LT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIs CiAJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKIAkJCQkJCSBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWUocmVsLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKIAkJCQkJCQkJCQkJCSAgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOwpAQCAtMzAxMCwxMyArMzMzMywxMiBAQCBkZXBh cnNlX0FsdGVyUmVsYXRpb24oQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJCX0KIAkJCQlicmVh azsKIAotI2lmZGVmIFRPRE9MSVNUCiAJCQljYXNlIEFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlv bnM6CiAJCQkJdG1wX29iaiA9IGRlcGFyc2VfRmR3T3B0aW9ucygoTGlzdCAqKSBzdWJjbWQtPmRl ZiwKLQkJCQkJCQkJCQkJc3ViY21kLT5uYW1lKTsKKwkJCQkJCQkJCQkJc3ViY21kLT5uYW1lLCB0 cnVlKTsKIAkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CiAJCQkJYnJlYWs7Ci0jZW5kaWYKKwogCQkJY2FzZSBBVF9DaGFuZ2VPd25lcjoK IAkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIk9XTkVSIFRPICV7b3duZXJ9SSIsIDIsCiAJ CQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY2hhbmdlIG93bmVyIiwKQEAgLTM0MDcs NiArMzcyOSwyMDAgQEAgZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3QgY2hhciAqb2JqaWRlbnRp dHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJcmV0dXJuIGNvbW1hbmQ7CiB9CiAKKy8qCisg KiBEZXBhcnNlIGFuIEFsdGVyQ29sbGF0aW9uU3RtdCAoQUxURVIgQ09MTEFUSU9OKQorICoKKyAq IEdpdmVuIGEgY29sbGF0aW9uIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0 LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4OgorICogQUxURVIgQ09MTEFUSU9OICV7aWRlbnRpdHl9TyBS RUZSRVNIIFZFUlNJT04KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckNvbGxh dGlvbihPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7 CisJSGVhcFR1cGxlCWNvbFR1cDsKKwlGb3JtX3BnX2NvbGxhdGlvbiBjb2xGb3JtOworCisJY29s VHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQp KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29sVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlj b2xGb3JtID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QoY29sVHVwKTsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xMQVRJT04gJXtpZGVudGl0eX1PIFJFRlJFU0ggVkVS U0lPTiIsIDEsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWUoY29sRm9ybS0+Y29sbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CSAgTmFtZVN0cihjb2xGb3JtLT5jb2xsbmFtZSkpKTsKKworCVJlbGVhc2VTeXNDYWNoZShjb2xU dXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEhhbmRsZSBkZXBhcnNpbmcgc2V0dGlu ZyBvZiBGdW5jdGlvbgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNFVCBBTEwKKyAqIE9S CisgKiBTRVQgJXtzZXRfbmFtZX1JIFRPICV7c2V0X3ZhbHVlfXMKKyAqIE9SCisgKiBSRVNFVCAl e3NldF9uYW1lfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9GdW5jdGlvblNldChW YXJpYWJsZVNldEtpbmQga2luZCwgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpCit7CisJT2JqVHJl ZSAgICAqcmV0OworCisJaWYgKGtpbmQgPT0gVkFSX1JFU0VUX0FMTCkKKwkJcmV0ID0gbmV3X29i anRyZWUoIlJFU0VUIEFMTCIpOworCWVsc2UgaWYgKGtpbmQgPT0gVkFSX1NFVF9WQUxVRSkKKwl7 CisJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTRVQgJXtzZXRfbmFtZX1JIiwgMSwKKwkJCQkJCQkg InNldF9uYW1lIiwgT2JqVHlwZVN0cmluZywgbmFtZSk7CisKKwkJLyoKKwkJICogU29tZSBHVUMg dmFyaWFibGUgbmFtZXMgYXJlICdMSVNUJyB0eXBlIGFuZCBoZW5jZSBtdXN0IG5vdCBiZQorCQkg KiBxdW90ZWQuCisJCSAqLworCQlpZiAoR2V0Q29uZmlnT3B0aW9uRmxhZ3MobmFtZSwgdHJ1ZSkg JiBHVUNfTElTVF9RVU9URSkKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlRPICV7c2V0 X3ZhbHVlfXMiLCAic2V0X3ZhbHVlIiwgdmFsdWUpOworCQllbHNlCisJCQlhcHBlbmRfc3RyaW5n X29iamVjdChyZXQsICJUTyAle3NldF92YWx1ZX1MIiwgInNldF92YWx1ZSIsIHZhbHVlKTsKKwl9 CisJZWxzZQorCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiUkVTRVQgJXtzZXRfbmFtZX1JIiwgMSwK KwkJCQkJCQkgInNldF9uYW1lIiwgT2JqVHlwZVN0cmluZywgbmFtZSk7CisKKwlyZXR1cm4gcmV0 OworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlckZ1bmN0aW9uU3RtdCAoQUxURVIgRlVOQ1RJ T04vUk9VVElORS9QUk9DRURVUkUpCisgKgorICogR2l2ZW4gYSBmdW5jdGlvbiBPSUQgYW5kIHRo ZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJl c2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheDoKKyAqIEFM VEVSIEZVTkNUSU9OL1JPVVRJTkUvUFJPQ0VEVVJFICV7c2lnbmF0dXJlfXMgJXtkZWZpbml0aW9u OiB9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRnVuY3Rpb24oT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJGdW5jdGlvblN0bXQgKm5vZGUgPSAo QWx0ZXJGdW5jdGlvblN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpU cmVlICAgICpzaWduOworCUhlYXBUdXBsZQlwcm9jVHVwOworCUZvcm1fcGdfcHJvYyBwcm9jRm9y bTsKKwlMaXN0CSAgICpwYXJhbXMgPSBOSUw7CisJTGlzdAkgICAqZWxlbXMgPSBOSUw7CisJTGlz dENlbGwgICAqY2VsbDsKKwlpbnQJCQlpOworCisJLyogR2V0IHRoZSBwZ19wcm9jIHR1cGxlICov CisJcHJvY1R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBvYmplY3RJZCk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHByb2NUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgZnVuY3Rpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJcHJvY0Zvcm0gPSAo Rm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QocHJvY1R1cCk7CisKKwlpZiAocHJvY0Zvcm0tPnByb2tp bmQgPT0gUFJPS0lORF9QUk9DRURVUkUpCisJCXJldCA9IG5ld19vYmp0cmVlKCJBTFRFUiBQUk9D RURVUkUiKTsKKwllbHNlCisJCXJldCA9IG5ld19vYmp0cmVlKG5vZGUtPm9ianR5cGUgPT0gT0JK RUNUX1JPVVRJTkUgPworCQkJCQkJICAiQUxURVIgUk9VVElORSIgOiAiQUxURVIgRlVOQ1RJT04i KTsKKworCS8qCisJICogQUxURVIgRlVOQ1RJT04gZG9lcyBub3QgY2hhbmdlIHNpZ25hdHVyZSBz byB3ZSBjYW4gdXNlIGNhdGFsb2cgdG8gZ2V0CisJICogaW5wdXQgdHlwZSBPaWRzLgorCSAqLwor CWZvciAoaSA9IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwl7CisJCU9ialRyZWUg ICAgKnRtcF9vYmo7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCIle3R5cGV9VCIsIDEs CisJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9y X3R5cGUocHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXSwgLTEpKTsKKwkJcGFyYW1zID0g bGFwcGVuZChwYXJhbXMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwl9CisKKwlzaWdu ID0gbmV3X29ianRyZWVfVkEoIiV7aWRlbnRpdHl9RCAoJXthcmd1bWVudHM6LCB9cykiLCAyLAor CQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwgb2JqZWN0SWQpLAorCQkJCQkJICAi YXJndW1lbnRzIiwgT2JqVHlwZUFycmF5LCBwYXJhbXMpOworCisJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiJXtzaWduYXR1cmV9cyIsIHNpZ24pOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5h Y3Rpb25zKQorCXsKKwkJRGVmRWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2Vs bCk7CisJCU9ialRyZWUgICAgKnRtcF9vYmogPSBOVUxMOworCisJCWlmIChzdHJjbXAoZGVmZWwt PmRlZm5hbWUsICJ2b2xhdGlsaXR5IikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShz dHJWYWwoZGVmZWwtPmFyZykpOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJz dHJpY3QiKSA9PSAwKQorCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKGJvb2xWYWwoZGVmZWwtPmFy ZykgPworCQkJCQkJCQkgIlJFVFVSTlMgTlVMTCBPTiBOVUxMIElOUFVUIiA6CisJCQkJCQkJCSAi Q0FMTEVEIE9OIE5VTEwgSU5QVVQiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAic2VjdXJpdHkiKSA9PSAwKQorCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKGJvb2xWYWwoZGVm ZWwtPmFyZykgPworCQkJCQkJCQkgIlNFQ1VSSVRZIERFRklORVIiIDogIlNFQ1VSSVRZIElOVk9L RVIiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibGVha3Byb29mIikgPT0g MCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZShib29sVmFsKGRlZmVsLT5hcmcpID8KKwkJCQkJ CQkJICJMRUFLUFJPT0YiIDogIk5PVCBMRUFLUFJPT0YiKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAiY29zdCIpID09IDApCisJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEo IkNPU1QgJXtjb3N0fW4iLCAxLAorCQkJCQkJCQkJImNvc3QiLCBPYmpUeXBlRmxvYXQsCisJCQkJ CQkJCQlkZWZHZXROdW1lcmljKGRlZmVsKSk7CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInJvd3MiKSA9PSAwKQorCQl7CisJCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIlJPV1Mi KTsKKwkJCWlmIChkZWZHZXROdW1lcmljKGRlZmVsKSA9PSAwKQorCQkJCWFwcGVuZF9ub3RfcHJl c2VudCh0bXBfb2JqKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRfZmxvYXRfb2JqZWN0KHRtcF9vYmos ICIle3Jvd3N9biIsCisJCQkJCQkJCQlkZWZHZXROdW1lcmljKGRlZmVsKSk7CisJCX0KKwkJZWxz ZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2V0IikgPT0gMCkKKwkJeworCQkJVmFyaWFi bGVTZXRTdG10ICpzc3RtdCA9IChWYXJpYWJsZVNldFN0bXQgKikgZGVmZWwtPmFyZzsKKwkJCWNo YXIJICAgKnZhbHVlID0gRXh0cmFjdFNldFZhcmlhYmxlQXJncyhzc3RtdCk7CisKKwkJCXRtcF9v YmogPSBkZXBhcnNlX0Z1bmN0aW9uU2V0KHNzdG10LT5raW5kLCBzc3RtdC0+bmFtZSwgdmFsdWUp OworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInN1cHBvcnQiKSA9PSAw KQorCQl7CisJCQlPaWQJCQlhcmd0eXBlc1sxXTsKKworCQkJdG1wX29iaiA9IG5ld19vYmp0cmVl KCJTVVBQT1JUIik7CisKKwkJCUFzc2VydChwcm9jRm9ybS0+cHJvc3VwcG9ydCk7CisKKwkJCS8q CisJCQkgKiBXZSBzaG91bGQgcXVhbGlmeSB0aGUgc3VwcG9ydCBmdW5jdGlvbidzIG5hbWUgaWYg aXQgd291bGRuJ3QgYmUKKwkJCSAqIHJlc29sdmVkIGJ5IGxvb2t1cCBpbiB0aGUgY3VycmVudCBz ZWFyY2ggcGF0aC4KKwkJCSAqLworCQkJYXJndHlwZXNbMF0gPSBJTlRFUk5BTE9JRDsKKwkJCWFw cGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle25hbWV9cyIsICJuYW1lIiwKKwkJCQkJCQkJ IGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUocHJvY0Zvcm0tPnByb3N1cHBvcnQsIDEsCisJCQkJCQkJ CQkJCQkJCU5JTCwgYXJndHlwZXMsCisJCQkJCQkJCQkJCQkJCWZhbHNlLCBOVUxMLAorCQkJCQkJ CQkJCQkJCQlFWFBSX0tJTkRfTk9ORSkpOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInBhcmFsbGVsIikgPT0gMCkKKwkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi UEFSQUxMRUwgJXt2YWx1ZX1zIiwgMSwKKwkJCQkJCQkJCSJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcs IHN0clZhbChkZWZlbC0+YXJnKSk7CisKKwkJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisJfQorCisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIl e2RlZmluaXRpb246IH1zIiwgZWxlbXMpOworCisJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOwor CisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIERlcGFyc2UgYW4gQWx0ZXJPYmplY3RTY2hlbWFT dG10IChBTFRFUiAuLi4gU0VUIFNDSEVNQSBjb21tYW5kKQogICoKQEAgLTM0NTIsMjIgKzM5Njgs NDk5IEBAIGRlcGFyc2VfQWx0ZXJPYmplY3RTY2hlbWFTdG10KE9iamVjdEFkZHJlc3MgYWRkcmVz cywgTm9kZSAqcGFyc2V0cmVlLAogfQogCiAvKgotICogRGVwYXJzZSBhbiBBbHRlck93bmVyU3Rt dCAoQUxURVIgLi4uIE9XTkVSIFRPIC4uLikuCi0gKgotICogR2l2ZW4gdGhlIG9iamVjdCBhZGRy ZXNzIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgotICogT2Jq VHJlZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKiBEZXBhcnNlIGEgR1JBTlQv UkVWT0tFIGNvbW1hbmQuCiAgKgogICogVmVyYm9zZSBzeW50YXgKLSAqIEFMVEVSICV7b2JqdHlw ZX1zICV7aWRlbnRpdHl9cyBPV05FUiBUTyAle25ld293bmVyfUkKKyAqIEdSQU5UICV7cHJpdmls ZWdlczosIH1zIE9OIiAle29ianR5cGV9cyAle3ByaXZ0YXJnZXQ6LCB9cyBUTyAle2dyYW50ZWVz OiwgfXMKKyAqICV7Z3JhbnRfb3B0aW9ufXMgR1JBTlRFRCBCWSAle3JvbGVuYW1lfXMKKyAqIAkJ T1IKKyAqIFJFVk9LRSAle3ByaXZpbGVnZXM6LCB9cyBPTiIgJXtvYmp0eXBlfXMgJXtwcml2dGFy Z2V0OiwgfXMKKyAqIEZST00gJXtncmFudGVlczosIH1zICV7Z3JhbnRfb3B0aW9ufXMgJXtjYXNj YWRlfXMKICAqLwogc3RhdGljIE9ialRyZWUgKgotZGVwYXJzZV9BbHRlck93bmVyU3RtdChPYmpl Y3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKK2RlcGFyc2VfR3JhbnRTdG10KENv bGxlY3RlZENvbW1hbmQgKmNtZCkKIHsKLQlBbHRlck93bmVyU3RtdCAqbm9kZSA9IChBbHRlck93 bmVyU3RtdCAqKSBwYXJzZXRyZWU7CisJSW50ZXJuYWxHcmFudCAqaXN0bXQ7CisJT2JqVHJlZSAg ICAqcmV0OworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlPaWQJ CQljbGFzc0lkOworCU9ialRyZWUgICAgKnRtcDsKIAotCXJldHVybiBuZXdfb2JqdHJlZV9WQSgi QUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIE9XTkVSIFRPICV7bmV3b3duZXJ9SSIsIDMs Ci0JCQkJCQkgICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKLQkJCQkJCSAgc3RyaW5naWZ5X29i anR5cGUobm9kZS0+b2JqZWN0VHlwZSwgZmFsc2UpLAorCS8qIERvbid0IGRlcGFyc2UgU1FMIGNv bW1hbmRzIGdlbmVyYXRlZCB3aGlsZSBjcmVhdGluZyBleHRlbnNpb24gKi8KKwlpZiAoY21kLT5p bl9leHRlbnNpb24pCisJCXJldHVybiBOVUxMOworCisJaXN0bXQgPSBjbWQtPmQuZ3JhbnQuaXN0 bXQ7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBvYmplY3RzIGZyb20gIkFMTCAuLi4gSU4g U0NIRU1BIiB0byBiZSBncmFudGVkLCB0aGVuCisJICogbm90aGluZyB0byBkby4KKwkgKi8KKwlp ZiAoaXN0bXQtPm9iamVjdHMgPT0gTklMKQorCQlyZXR1cm4gTlVMTDsKKworCXN3aXRjaCAoaXN0 bXQtPm9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9DT0xVTU46CisJCWNhc2UgT0JKRUNUX1RB QkxFOgorCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJCWNsYXNzSWQgPSBSZWxhdGlvblJlbGF0 aW9uSWQ7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfRE9NQUlOOgorCQljYXNlIE9CSkVDVF9U WVBFOgorCQkJY2xhc3NJZCA9IFR5cGVSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JK RUNUX0ZEVzoKKwkJCWNsYXNzSWQgPSBGb3JlaWduRGF0YVdyYXBwZXJSZWxhdGlvbklkOworCQkJ YnJlYWs7CisJCWNhc2UgT0JKRUNUX0ZPUkVJR05fU0VSVkVSOgorCQkJY2xhc3NJZCA9IEZvcmVp Z25TZXJ2ZXJSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX0ZVTkNUSU9OOgor CQljYXNlIE9CSkVDVF9QUk9DRURVUkU6CisJCWNhc2UgT0JKRUNUX1JPVVRJTkU6CisJCQljbGFz c0lkID0gUHJvY2VkdXJlUmVsYXRpb25JZDsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9MQU5H VUFHRToKKwkJCWNsYXNzSWQgPSBMYW5ndWFnZVJlbGF0aW9uSWQ7CisJCQlicmVhazsKKwkJY2Fz ZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CisJCQljbGFzc0lkID0gTGFyZ2VPYmplY3RSZWxhdGlvbklk OworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1NDSEVNQToKKwkJCWNsYXNzSWQgPSBOYW1lc3Bh Y2VSZWxhdGlvbklkOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX0RBVEFCQVNFOgorCQljYXNl IE9CSkVDVF9UQUJMRVNQQUNFOgorCQkJY2xhc3NJZCA9IEludmFsaWRPaWQ7CisJCQllbG9nKEVS Uk9SLCAiZ2xvYmFsIG9iamVjdHMgbm90IHN1cHBvcnRlZCIpOworCQkJYnJlYWs7CisJCWRlZmF1 bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBPQkpFQ1QgdmFsdWUgJWQiLCBpc3RtdC0+b2Jq dHlwZSk7CisJfQorCisJLyogR1JBTlQgVE8gb3IgUkVWT0tFIEZST00gKi8KKwlyZXQgPSBuZXdf b2JqdHJlZShpc3RtdC0+aXNfZ3JhbnQgPyAiR1JBTlQiIDogIlJFVk9LRSIpOworCisJLyogQnVp bGQgYSBsaXN0IG9mIHByaXZpbGVnZXMgdG8gZ3JhbnQvcmV2b2tlICovCisJaWYgKGlzdG10LT5h bGxfcHJpdnMpCisJeworCQl0bXAgPSBuZXdfb2JqdHJlZSgiQUxMIFBSSVZJTEVHRVMiKTsKKwkJ bGlzdCA9IGxpc3RfbWFrZTEobmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCWVsc2UKKwl7 CisJCWNoYXIgKnByaXY7CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9JTlNFUlQpCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0lOU0VSVCk7CisJ CQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJ aWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1NFTEVDVCkKKwkJeworCQkJcHJpdiA9IChjaGFy ICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfU0VMRUNUKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19zdHJpbmdfb2JqZWN0KHByaXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVn ZXMgJiBBQ0xfVVBEQVRFKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3Ry aW5nKEFDTF9VUERBVEUpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmpl Y3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFDTF9ERUxFVEUpCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0RFTEVURSk7CisJ CQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJ aWYgKGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1RSVU5DQVRFKQorCQl7CisJCQlwcml2ID0gKGNo YXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9UUlVOQ0FURSk7CisJCQlsaXN0ID0gbGFwcGVu ZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2 aWxlZ2VzICYgQUNMX1JFRkVSRU5DRVMpCisJCXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVn ZV90b19zdHJpbmcoQUNMX1JFRkVSRU5DRVMpOworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X3N0cmluZ19vYmplY3QocHJpdikpOworCQl9CisJCWlmIChpc3RtdC0+cHJpdmlsZWdlcyAmIEFD TF9UUklHR0VSKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxlZ2VfdG9fc3RyaW5nKEFD TF9UUklHR0VSKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHBy aXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfRVhFQ1VURSkKKwkJewor CQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfRVhFQ1VURSk7CisJCQls aXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYg KGlzdG10LT5wcml2aWxlZ2VzICYgQUNMX1VTQUdFKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilw cml2aWxlZ2VfdG9fc3RyaW5nKEFDTF9VU0FHRSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5wcml2aWxlZ2VzICYg QUNMX0NSRUFURSkKKwkJeworCQkJcHJpdiA9IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhB Q0xfQ1JFQVRFKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHBy aXYpKTsKKwkJfQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfQ1JFQVRFX1RFTVApCisJ CXsKKwkJCXByaXYgPSAoY2hhciAqKXByaXZpbGVnZV90b19zdHJpbmcoQUNMX0NSRUFURV9URU1Q KTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KHByaXYpKTsKKwkJ fQorCQlpZiAoaXN0bXQtPnByaXZpbGVnZXMgJiBBQ0xfQ09OTkVDVCkKKwkJeworCQkJcHJpdiA9 IChjaGFyICopcHJpdmlsZWdlX3RvX3N0cmluZyhBQ0xfQ09OTkVDVCk7CisJCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKwkJaWYgKGlzdG10LT5w cml2aWxlZ2VzICYgQUNMX01BSU5UQUlOKQorCQl7CisJCQlwcml2ID0gKGNoYXIgKilwcml2aWxl Z2VfdG9fc3RyaW5nKEFDTF9NQUlOVEFJTik7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf c3RyaW5nX29iamVjdChwcml2KSk7CisJCX0KKworCQlpZiAoIWlzdG10LT5pc19ncmFudCAmJiBp c3RtdC0+Z3JhbnRfb3B0aW9uKQorCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtncmFu dF9vcHRpb259cyIsICJncmFudF9vcHRpb24iLAorCQkJCQkJCQkgaXN0bXQtPmdyYW50X29wdGlv biA/ICJHUkFOVCBPUFRJT04gRk9SIiA6ICIiKTsKKworCQlpZiAoaXN0bXQtPmNvbF9wcml2cyAh PSBOSUwpCisJCXsKKwkJCUxpc3RDZWxsICAgKm9jZWxsOworCisJCQlmb3JlYWNoKG9jZWxsLCBp c3RtdC0+Y29sX3ByaXZzKQorCQkJeworCQkJCUFjY2Vzc1ByaXYgKnByaXYgPSBsZmlyc3Qob2Nl bGwpOworCQkJCUxpc3QJICAgKmNvbHMgPSBOSUw7CisKKwkJCQlmb3JlYWNoKGNlbGwsIHByaXYt PmNvbHMpCisJCQkJeworCQkJCQlTdHJpbmcJICAgKmNvbG5hbWUgPSBsZmlyc3Rfbm9kZShTdHJp bmcsIGNlbGwpOworCisJCQkJCWNvbHMgPSBsYXBwZW5kKGNvbHMsCisJCQkJCQkJCSAgIG5ld19z dHJpbmdfb2JqZWN0KHN0clZhbChjb2xuYW1lKSkpOworCQkJCX0KKworCQkJCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCIoJXtjb2xzOiwgfXMpICV7cHJpdn1zIiwgMiwKKwkJCQkJCQkJCSAiY29scyIs IE9ialR5cGVBcnJheSwgY29scywKKwkJCQkJCQkJCSAicHJpdiIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCQkgIHByaXYtPnByaXZfbmFtZSA/IHByaXYtPnByaXZfbmFtZSA6ICJBTEwgUFJJVklM RUdFUyIpOworCisJCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisJCQl9CisJCX0KKwl9CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle3ByaXZpbGVn ZXM6LCB9cyBPTiIsIGxpc3QpOworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtvYmp0 eXBlfXMiLCAib2JqdHlwZSIsCisJCQkJCQkgKGNoYXIgKilzdHJpbmdpZnlfb2JqdHlwZShpc3Rt dC0+b2JqdHlwZSwgdHJ1ZSkpOworCisJLyogVGFyZ2V0IG9iamVjdHMuICBXZSB1c2Ugb2JqZWN0 IGlkZW50aXRpZXMgaGVyZSAqLworCWxpc3QgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBpc3RtdC0+ b2JqZWN0cykKKwl7CisJCU9pZAkJCW9iamlkID0gbGZpcnN0X29pZChjZWxsKTsKKwkJT2JqZWN0 QWRkcmVzcyBhZGRyOworCisJCWFkZHIuY2xhc3NJZCA9IGNsYXNzSWQ7CisJCWFkZHIub2JqZWN0 SWQgPSBvYmppZDsKKwkJYWRkci5vYmplY3RTdWJJZCA9IDA7CisKKwkJdG1wID0gbmV3X29ianRy ZWVfVkEoIiV7aWRlbnRpdHl9cyIsIDEsCisJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkJIGdldE9iamVjdElkZW50aXR5KCZhZGRyLCBmYWxzZSkpOworCisJCWxpc3Qg PSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKwlhcHBlbmRfYXJy YXlfb2JqZWN0KHJldCwgIiV7cHJpdnRhcmdldDosIH1zIiwgbGlzdCk7CisKKwlhcHBlbmRfZm9y bWF0X3N0cmluZyhyZXQsIGlzdG10LT5pc19ncmFudCA/ICJUTyIgOiAiRlJPTSIpOworCisJLyog TGlzdCBvZiBncmFudGVlcyAqLworCWxpc3QgPSBOSUw7CisJZm9yZWFjaChjZWxsLCBpc3RtdC0+ Z3JhbnRlZXMpCisJeworCQlPaWQJCQlncmFudGVlID0gbGZpcnN0X29pZChjZWxsKTsKKworCQl0 bXAgPSBuZXdfb2JqdHJlZV9mb3Jfcm9sZV9pZChncmFudGVlKTsKKwkJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCisJYXBwZW5kX2FycmF5X29iamVj dChyZXQsICIle2dyYW50ZWVzOiwgfXMiLCBsaXN0KTsKKworCS8qIFRoZSB3b3JkaW5nIG9mIHRo ZSBncmFudCBvcHRpb24gaXMgdmFyaWFibGUgLi4uICovCisJaWYgKGlzdG10LT5pc19ncmFudCkK KwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtncmFudF9vcHRpb259cyIsICJncmFudF9v cHRpb24iLAorCQkJCQkJCSBpc3RtdC0+Z3JhbnRfb3B0aW9uID8gIldJVEggR1JBTlQgT1BUSU9O IiA6ICIiKTsKKworCWlmIChpc3RtdC0+Z3JhbnRvcl91aWQpCisJeworCQlIZWFwVHVwbGUJcm9s dHVwOworCQljaGFyCSAgICpyb2xlbmFtZTsKKworCQlyb2x0dXAgPSBTZWFyY2hTeXNDYWNoZTEo QVVUSE9JRCwgT2JqZWN0SWRHZXREYXR1bShpc3RtdC0+Z3JhbnRvcl91aWQpKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHJvbHR1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3Igcm9sZSB3aXRoIE9JRCAldSIsCisJCQkJIGlzdG10LT5ncmFudG9yX3VpZCk7CisK KwkJcm9sZW5hbWUgPSBOYW1lU3RyKCgoRm9ybV9wZ19hdXRoaWQpIEdFVFNUUlVDVChyb2x0dXAp KS0+cm9sbmFtZSk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkdSQU5URUQgQlkgJXty b2xlbmFtZX1zIiwKKwkJCQkJCQkgInJvbGVuYW1lIiwgcm9sZW5hbWUpOworCQlSZWxlYXNlU3lz Q2FjaGUocm9sdHVwKTsKKwl9CisKKwlpZiAoIWlzdG10LT5pc19ncmFudCkKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiJXtjYXNjYWRlfXMiLCAiY2FzY2FkZSIsCisJCQkJCQkJIGlzdG10 LT5iZWhhdmlvciA9PSBEUk9QX0NBU0NBREUgPyAiQ0FTQ0FERSIgOiAiIik7CisKKwlyZXR1cm4g cmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck9wZXJhdG9yU3RtdCAoQUxURVIgT1BF UkFUT1IgLi4uIFNFVCAuLi4pLgorICoKKyAqIEdpdmVuIGFuIG9wZXJhdG9yIE9JRCBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVz ZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRF UiBPUEVSQVRPUiAle2lkZW50aXR5fU8gKCV7bGVmdF90eXBlfVQsICV7cmlnaHRfdHlwZX1UKQor ICogU0VUICgle2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0 ZXJPcGVyYXRvclN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1 cGxlCW9wclR1cDsKKwlBbHRlck9wZXJhdG9yU3RtdCAqbm9kZSA9IChBbHRlck9wZXJhdG9yU3Rt dCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCUZvcm1fcGdfb3BlcmF0b3Igb3By Rm9ybTsKKwlMaXN0Q2VsbCAgICpjZWxsOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisKKwlvcHJU dXAgPSBTZWFyY2hTeXNDYWNoZTEoT1BFUk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcHJUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUg bG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3Igd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJb3By Rm9ybSA9IChGb3JtX3BnX29wZXJhdG9yKSBHRVRTVFJVQ1Qob3ByVHVwKTsKKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBPUEVSQVRPUiAle2lkZW50aXR5fU8iLCAxLAorCQkJCQkJICJp ZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l KG9wckZvcm0tPm9wcm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihvcHJGb3JtLT5v cHJuYW1lKSkpOworCisJLyogTEVGVEFSRyAqLworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9w cmxlZnQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIoJXtsZWZ0X3R5cGV9VCIsCisJ CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcmxlZnQsIC0xKSk7CisJZWxz ZQorCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIoJXtsZWZ0X3R5cGV9cyIsICJsZWZ0X3R5 cGUiLCAiTk9ORSIpOworCisJLyogUklHSFRBUkcgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChvcHJG b3JtLT5vcHJsZWZ0KSk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiLCAle3JpZ2h0X3R5 cGV9VCkiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcnJpZ2h0LCAt MSkpOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAgICAq ZWxlbSA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwkJT2JqVHJlZSAgICAqdG1wX29iaiA9 IE5VTEw7CisKKwkJaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAicmVzdHJpY3QiKSA9PSAwKQor CQl7CisJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlJFU1RSSUNUPSIsIDEsCisJCQkJCQkJ CQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInJlc3RyaWN0Iik7CisJCQlpZiAoT2lkSXNWYWxp ZChvcHJGb3JtLT5vcHJyZXN0KSkKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAi JXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFBy b2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIG9wckZvcm0tPm9wcnJlc3QpKTsK KwkJCWVsc2UKKwkJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9 cyIsICJwcm9jZWR1cmUiLAorCQkJCQkJCQkJICJOT05FIik7CisJCX0KKwkJZWxzZSBpZiAoc3Ry Y21wKGVsZW0tPmRlZm5hbWUsICJqb2luIikgPT0gMCkKKwkJeworCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJKT0lOPSIsIDEsCisJCQkJCQkJCQkiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywg ImpvaW4iKTsKKwkJCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcmpvaW4pKQorCQkJCWFwcGVu ZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkJCSBuZXdf b2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJ CQkJCQkgb3ByRm9ybS0+b3Byam9pbikpOworCQkJZWxzZQorCQkJCWFwcGVuZF9zdHJpbmdfb2Jq ZWN0KHRtcF9vYmosICIle3Byb2NlZHVyZX1zIiwgInByb2NlZHVyZSIsCisJCQkJCQkJCQkgIk5P TkUiKTsKKwkJfQorCisJCUFzc2VydCh0bXBfb2JqKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwg bmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCX0KKworCWFwcGVuZF9hcnJheV9vYmplY3Qo cmV0LCAiU0VUICgle2VsZW1zOiwgfXMpIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUob3By VHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFMVEVSIE9QRVJB VE9SIEZBTUlMWSBBREQvRFJPUCBjb21tYW5kLgorICoKKyAqIEdpdmVuIHRoZSBDb2xsZWN0ZWRD b21tYW5kLCByZXR1cm4gYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIEFsdGVyCisgKiBPcGVy YXRvciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBPUEVSQVRPUiBG QU1JTFkgJXtpZGVudGl0eX1EIFVTSU5HICV7YW1uYW1lfUkgQUREL0RST1AgJXtpdGVtczosfXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlck9wRmFtaWx5KENvbGxlY3RlZENv bW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJQWx0ZXJPcEZhbWlseVN0bXQgKnN0 bXQgPSAoQWx0ZXJPcEZhbWlseVN0bXQgKikgY21kLT5wYXJzZXRyZWU7CisJSGVhcFR1cGxlCWZ0 cDsKKwlGb3JtX3BnX29wZmFtaWx5IG9wZkZvcm07CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlM aXN0Q2VsbCAgICpjZWxsOworCisJLyogRG9uJ3QgZGVwYXJzZSBTUUwgY29tbWFuZHMgZ2VuZXJh dGVkIHdoaWxlIGNyZWF0aW5nIGV4dGVuc2lvbiAqLworCWlmIChjbWQtPmluX2V4dGVuc2lvbikK KwkJcmV0dXJuIE5VTEw7CisKKwlmdHAgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsCisJ CQkJCQkgIE9iamVjdElkR2V0RGF0dW0oY21kLT5kLm9wZmFtLmFkZHJlc3Mub2JqZWN0SWQpKTsK KwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZnRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIG9wZXJhdG9yIGZhbWlseSB3aXRoIE9JRCAldSIsCisJCQkgY21kLT5kLm9w ZmFtLmFkZHJlc3Mub2JqZWN0SWQpOworCW9wZkZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkgR0VU U1RSVUNUKGZ0cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgT1BFUkFUT1IgRkFN SUxZICV7aWRlbnRpdHl9RCBVU0lORyAle2FtbmFtZX1JIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHki LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShvcGZGb3Jt LT5vcGZuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3BmRm9ybS0+b3BmbmFtZSkp LAorCQkJCQkJICJhbW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBzdG10LT5hbW5hbWUpOworCisJZm9y ZWFjaChjZWxsLCBjbWQtPmQub3BmYW0ub3BlcmF0b3JzKQorCXsKKwkJT3BGYW1pbHlNZW1iZXIg Km9wZXIgPSBsZmlyc3QoY2VsbCk7CisJCU9ialRyZWUgICAgKnRtcF9vYmo7CisKKwkJLyoKKwkJ ICogVmVyYm9zZSBzeW50YXgKKwkJICoKKwkJICogT1BFUkFUT1IgJXtudW19biAle29wZXJhdG9y fU8oJXtsdHlwZX1ULCAle3J0eXBlfVQpICV7cHVycG9zZX1zCisJCSAqLworCQl0bXBfb2JqID0g bmV3X29ianRyZWVfVkEoIk9QRVJBVE9SICV7bnVtfW4iLCAxLAorCQkJCQkJCQkibnVtIiwgT2Jq VHlwZUludGVnZXIsIG9wZXItPm51bWJlcik7CisKKwkJLyogQWRkIHRoZSBvcGVyYXRvciBuYW1l OyB0aGUgRFJPUCBjYXNlIGRvZXNuJ3QgaGF2ZSB0aGlzICovCisJCWlmICghc3RtdC0+aXNEcm9w KQorCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7b3BlcmF0b3J9TyIsCisJCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkJIG9wZXItPm9iamVjdCkpOworCisJCS8qIEFkZCB0aGUgdHlwZXMgKi8KKwkJ YXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIigle2x0eXBlfVQsIiwKKwkJCQkJCQkgbmV3 X29ianRyZWVfZm9yX3R5cGUob3Blci0+bGVmdHR5cGUsIC0xKSk7CisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHRtcF9vYmosICIle3J0eXBlfVQpIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5 cGUob3Blci0+cmlnaHR0eXBlLCAtMSkpOworCisJCS8qIEFkZCB0aGUgRk9SIFNFQVJDSCAvIEZP UiBPUkRFUiBCWSBjbGF1c2U7IG5vdCBpbiB0aGUgRFJPUCBjYXNlICovCisJCWlmICghc3RtdC0+ aXNEcm9wKQorCQl7CisJCQlpZiAob3Blci0+c29ydGZhbWlseSA9PSBJbnZhbGlkT2lkKQorCQkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle3B1cnBvc2V9cyIsICJwdXJwb3NlIiwK KwkJCQkJCQkJCSAiRk9SIFNFQVJDSCIpOworCQkJZWxzZQorCQkJeworCQkJCU9ialRyZWUgICAg Km9yZGVyYnlfb2JqOworCisJCQkJb3JkZXJieV9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRk9SIE9S REVSIEJZICV7b3BmYW1pbHl9RCIsIDEsCisJCQkJCQkJCQkJCSJvcGZhbWlseSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPcGVyYXRvckZh bWlseVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJCQlvcGVyLT5zb3J0ZmFtaWx5KSk7CisJ CQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7cHVycG9zZX1zIiwgb3JkZXJieV9v YmopOworCQkJfQorCQl9CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCX0KKworCWZvcmVhY2goY2VsbCwgY21kLT5kLm9wZmFtLnByb2NlZHVy ZXMpCisJeworCQlPcEZhbWlseU1lbWJlciAqcHJvYyA9IGxmaXJzdChjZWxsKTsKKwkJT2JqVHJl ZSAgICAqdG1wX29iajsKKworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZVTkNUSU9OICV7 bnVtfW4gKCV7bHR5cGV9VCwgJXtydHlwZX1UKSIsIDMsCisJCQkJCQkJCSJudW0iLCBPYmpUeXBl SW50ZWdlciwgcHJvYy0+bnVtYmVyLAorCQkJCQkJCQkibHR5cGUiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9jLT5sZWZ0dHlwZSwgLTEpLAorCQkJCQkJ CQkicnR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZShw cm9jLT5yaWdodHR5cGUsIC0xKSk7CisKKwkJLyoKKwkJICogQWRkIHRoZSBmdW5jdGlvbiBuYW1l IGFuZCBhcmcgdHlwZXM7IHRoZSBEUk9QIGNhc2UgZG9lc24ndCBoYXZlCisJCSAqIHRoaXMKKwkJ ICovCisJCWlmICghc3RtdC0+aXNEcm9wKQorCQl7CisJCQlIZWFwVHVwbGUJcHJvY1R1cDsKKwkJ CUZvcm1fcGdfcHJvYyBwcm9jRm9ybTsKKwkJCU9pZAkJICAgKnByb2FyZ3R5cGVzOworCQkJTGlz dAkgICAqYXJnbGlzdCA9IE5JTDsKKwkJCWludAkJCWk7CisKKwkJCXByb2NUdXAgPSBTZWFyY2hT eXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShwcm9jLT5vYmplY3QpKTsKKwkJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcHJvY2VkdXJlIHdpdGggT0lEICV1IiwKKwkJCQkJIHByb2MtPm9iamVj dCk7CisJCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKwor CQkJcHJvYXJndHlwZXMgPSBwcm9jRm9ybS0+cHJvYXJndHlwZXMudmFsdWVzOworCQkJZm9yIChp ID0gMDsgaSA8IHByb2NGb3JtLT5wcm9uYXJnczsgaSsrKQorCQkJeworCQkJCU9ialRyZWUgICAg KmFyZzsKKworCQkJCWFyZyA9IG5ld19vYmp0cmVlX2Zvcl90eXBlKHByb2FyZ3R5cGVzW2ldLCAt MSk7CisJCQkJYXJnbGlzdCA9IGxhcHBlbmQoYXJnbGlzdCwgbmV3X29iamVjdF9vYmplY3QoYXJn KSk7CisJCQl9CisKKwkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle2Z1bmN0aW9u fUQiLAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHByb2NGb3JtLT5wcm9uYW1l c3BhY2UsCisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihwcm9jRm9ybS0+cHJvbmFtZSkpKTsKKwor CQkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1wX29iaiwgIigiKTsKKwkJCWFwcGVuZF9hcnJheV9v YmplY3QodG1wX29iaiwgIiV7YXJndHlwZXM6LCB9VCIsIGFyZ2xpc3QpOworCQkJYXBwZW5kX2Zv cm1hdF9zdHJpbmcodG1wX29iaiwgIikiKTsKKworCQkJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXAp OworCQl9CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29i aikpOworCX0KKworCWlmIChzdG10LT5pc0Ryb3ApCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJl dCwgIkRST1AiKTsKKwllbHNlCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIkFERCIpOwor CisJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIle2l0ZW1zOiwgfXMiLCBsaXN0KTsKKworCVJl bGVhc2VTeXNDYWNoZShmdHApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2Ug YW4gQWx0ZXJPd25lclN0bXQgKEFMVEVSIC4uLiBPV05FUiBUTyAuLi4pLgorICoKKyAqIEdpdmVu IHRoZSBvYmplY3QgYWRkcmVzcyBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCBy ZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dO RVIgVE8gJXtuZXdvd25lcn1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJP d25lclN0bXQoT2JqZWN0QWRkcmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0 ZXJPd25lclN0bXQgKm5vZGUgPSAoQWx0ZXJPd25lclN0bXQgKikgcGFyc2V0cmVlOworCisJcmV0 dXJuIG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgT1dORVIg VE8gJXtuZXdvd25lcn1JIiwgMywKKwkJCQkJCSAgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAor CQkJCQkJICBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5vYmplY3RUeXBlLCBmYWxzZSksCiAJCQkJ CQkgICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsCiAJCQkJCQkgIGdldE9iamVjdElkZW50aXR5 KCZhZGRyZXNzLCBmYWxzZSksCiAJCQkJCQkgICJuZXdvd25lciIsIE9ialR5cGVTdHJpbmcsCkBA IC0zNDc1LDE0OCArNDQ2OCw1MzgyIEBAIGRlcGFyc2VfQWx0ZXJPd25lclN0bXQoT2JqZWN0QWRk cmVzcyBhZGRyZXNzLCBOb2RlICpwYXJzZXRyZWUpCiB9CiAKIC8qCi0gKiBEZXBhcnNlIGEgUmVu YW1lU3RtdC4KKyAqIERlcGFyc2UgYW4gQWx0ZXJTZXFTdG10LgorICoKKyAqIEdpdmVuIGEgc2Vx dWVuY2UgT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhhdCBtb2RpZmllZCBpdCwgcmV0dXJuIGFuIE9i alRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogQUxURVIgU0VRVUVOQ0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElk LCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCVJlbGF0aW9uCXJlbGF0 aW9uOworCUxpc3QJICAgKmVsZW1zID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJRm9ybV9w Z19zZXF1ZW5jZSBzZXFmb3JtOworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCUFsdGVy U2VxU3RtdCAqYWx0ZXJTZXFTdG10ID0gKEFsdGVyU2VxU3RtdCAqKSBwYXJzZXRyZWU7CisKKwkv KgorCSAqIFNlcXVlbmNlIGZvciBJREVOVElUWSBDT0xVTU4gb3V0cHV0IHNlcGFyYXRlbHkgKHZp YSBDUkVBVEUgVEFCTEUgb3IKKwkgKiBBTFRFUiBUQUJMRSk7IHJldHVybiBlbXB0eSBoZXJlLgor CSAqLworCWlmIChhbHRlclNlcVN0bXQtPmZvcl9pZGVudGl0eSkKKwkJcmV0dXJuIE5VTEw7CisK KwlzZXF2YWx1ZXMgPSBnZXRfc2VxdWVuY2VfdmFsdWVzKG9iamVjdElkKTsKKwlzZXFmb3JtID0g c2VxdmFsdWVzLT5zZXFmb3JtOworCisJZm9yZWFjaChjZWxsLCAoKEFsdGVyU2VxU3RtdCAqKSBw YXJzZXRyZWUpLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbSA9IChEZWZFbGVtICop IGxmaXJzdChjZWxsKTsKKwkJT2JqRWxlbSAgICAqbmV3ZWxtOworCisJCWlmIChzdHJjbXAoZWxl bS0+ZGVmbmFtZSwgImNhY2hlIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2VxX0NhY2hl KHNlcWZvcm0sIGZhbHNlKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJjeWNs ZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9DeWNsZShzZXFmb3JtLCBmYWxzZSk7 CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiaW5jcmVtZW50IikgPT0gMCkKKwkJ CW5ld2VsbSA9IGRlcGFyc2VfU2VxX0luY3JlbWVudEJ5KHNlcWZvcm0sIGZhbHNlKTsKKwkJZWxz ZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJtaW52YWx1ZSIpID09IDApCisJCQluZXdlbG0g PSBkZXBhcnNlX1NlcV9NaW52YWx1ZShzZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNt cChlbGVtLT5kZWZuYW1lLCAibWF4dmFsdWUiKSA9PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9T ZXFfTWF4dmFsdWUoc2VxZm9ybSwgZmFsc2UpOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVm bmFtZSwgInN0YXJ0IikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfU2VxX1N0YXJ0d2l0aChz ZXFmb3JtLCBmYWxzZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAicmVzdGFy dCIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1NlcV9SZXN0YXJ0KHNlcXZhbHVlcy0+bGFz dF92YWx1ZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAib3duZWRfYnkiKSA9 PSAwKQorCQkJbmV3ZWxtID0gZGVwYXJzZV9TZXFfT3duZWRCeShvYmplY3RJZCwgZmFsc2UpOwor CQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImFzIikgPT0gMCkKKwkJCW5ld2VsbSA9 IGRlcGFyc2VfU2VxX0FzKHNlcWZvcm0pOworCQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBzZXF1ZW5jZSBvcHRpb24gJXMiLCBlbGVtLT5kZWZuYW1lKTsKKworCQllbGVtcyA9IGxhcHBl bmQoZWxlbXMsIG5ld2VsbSk7CisJfQorCisJcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVj dElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFNF UVVFTkNFICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zIiwgMiwKKwkJCQkJCSAiaWRlbnRp dHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShyZWxh dGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbGF0aW9uKSksCisJCQkJCQkgImRlZmluaXRpb24iLCBPYmpUeXBlQXJyYXks IGVsZW1zKTsKKworCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJUeXBlU3RtdC4KKyAq CisgKiBHaXZlbiBhIHR5cGUgT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhhdCBtb2RpZmllZCBpdCwg cmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgdHlwZS4KKyAqCisg KiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVFlQRSAle2lkZW50aXR5fUQgU0VUICgle2RlZmlu aXRpb246IH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyVHlwZVNldFN0 bXQoT2lkIG9iamVjdElkLCBOb2RlICpjbWQpCit7CisJQWx0ZXJUeXBlU3RtdCAqYWx0ZXJUeXBl U2V0U3RtdCA9IChBbHRlclR5cGVTdG10ICopIGNtZDsKKwlMaXN0Q2VsbCAgICpwbDsKKwlMaXN0 CSAgICplbGVtcyA9IE5JTDsKKwlIZWFwVHVwbGUJdHlwVHVwOworCUZvcm1fcGdfdHlwZSB0eXBG b3JtOworCisJdHlwVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0 dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwVHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBPSUQgJXUiLCBvYmplY3RJ ZCk7CisJdHlwRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0eXBUdXApOworCisJZm9y ZWFjaChwbCwgYWx0ZXJUeXBlU2V0U3RtdC0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRl ZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KHBsKTsKKwkJT2JqRWxlbSAgICAqbmV3ZWxtOworCisJ CWlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzdG9yYWdlIikgPT0gMCkKKwkJCW5ld2VsbSA9 IGRlcGFyc2VfVHlwZV9TdG9yYWdlKHR5cEZvcm0pOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwt PmRlZm5hbWUsICJyZWNlaXZlIikgPT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9SZWNl aXZlKHR5cEZvcm0pOworCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJzZW5kIikg PT0gMCkKKwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9TZW5kKHR5cEZvcm0pOworCQllbHNlIGlm IChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0eXBtb2RfaW4iKSA9PSAwKQorCQkJbmV3ZWxtID0g ZGVwYXJzZV9UeXBlX1R5cG1vZF9Jbih0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVs LT5kZWZuYW1lLCAidHlwbW9kX291dCIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVf VHlwbW9kX091dCh0eXBGb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAi YW5hbHl6ZSIpID09IDApCisJCQluZXdlbG0gPSBkZXBhcnNlX1R5cGVfQW5hbHl6ZSh0eXBGb3Jt KTsKKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic3Vic2NyaXB0IikgPT0gMCkK KwkJCW5ld2VsbSA9IGRlcGFyc2VfVHlwZV9TdWJzY3JpcHQodHlwRm9ybSk7CisJCWVsc2UKKwkJ CWVsb2coRVJST1IsICJpbnZhbGlkIHR5cGUgb3B0aW9uICVzIiwgZGVmZWwtPmRlZm5hbWUpOwor CisJCWVsZW1zID0gbGFwcGVuZChlbGVtcywgbmV3ZWxtKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2Fj aGUodHlwVHVwKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQUxURVIgVFlQRSAle2lkZW50 aXR5fUQgU0VUICgle2RlZmluaXRpb246LCB9cykiLCAyLAorCQkJCQkJICAiaWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVHlwZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJICBvYmplY3RJZCksCisJCQkJCQkgICJkZWZpbml0aW9u IiwgT2JqVHlwZUFycmF5LCBlbGVtcyk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ29tcG9zaXRl VHlwZVN0bXQgKENSRUFURSBUWVBFIEFTKQorICoKKyAqIEdpdmVuIGEgQ29tcG9zaXRlIHR5cGUg T0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2Jq VHJlZSByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBz eW50YXgKKyAqIENSRUFURSBUWVBFICV7aWRlbnRpdHl9RCBBUyAoJXtjb2x1bW5zOiwgfXMpCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ29tcG9zaXRlVHlwZVN0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ29tcG9zaXRlVHlwZVN0bXQgKm5vZGUgPSAoQ29t cG9zaXRlVHlwZVN0bXQgKikgcGFyc2V0cmVlOworCUhlYXBUdXBsZQl0eXB0dXA7CisJRm9ybV9w Z190eXBlIHR5cGZvcm07CisJUmVsYXRpb24JdHlwZXJlbDsKKwlMaXN0CSAgICpkcGNvbnRleHQ7 CisJTGlzdAkgICAqdGFibGVlbHRzID0gTklMOworCisJLyogRmluZCB0aGUgcGdfdHlwZSBlbnRy eSBhbmQgb3BlbiB0aGUgY29ycmVzcG9uZGluZyByZWxhdGlvbiAqLworCXR5cHR1cCA9IFNlYXJj aFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR5cHR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciB0eXBlIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXR5cGZvcm0gPSAoRm9ybV9w Z190eXBlKSBHRVRTVFJVQ1QodHlwdHVwKTsKKwl0eXBlcmVsID0gcmVsYXRpb25fb3Blbih0eXBm b3JtLT50eXByZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWRwY29udGV4dCA9IGRlcGFyc2Vf Y29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodHlwZXJlbCksCisJCQkJCQkJCQlS ZWxhdGlvbkdldFJlbGlkKHR5cGVyZWwpKTsKKworCXRhYmxlZWx0cyA9IGRlcGFyc2VfVGFibGVF bGVtZW50cyh0eXBlcmVsLCBub2RlLT5jb2xkZWZsaXN0LCBkcGNvbnRleHQsCisJCQkJCQkJCQkg IGZhbHNlLAkvKiBub3QgdHlwZWQgKi8KKwkJCQkJCQkJCSAgdHJ1ZSk7CS8qIGNvbXBvc2l0ZSB0 eXBlICovCisKKwl0YWJsZV9jbG9zZSh0eXBlcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCVJlbGVh c2VTeXNDYWNoZSh0eXB0dXApOworCisJcmV0dXJuIG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgVFlQ RSAle2lkZW50aXR5fUQgQVMgKCV7Y29sdW1uczosIH1zKSIsIDIsCisJCQkJCQkgICJpZGVudGl0 eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChU eXBlUmVsYXRpb25JZCwgb2JqZWN0SWQpLAorCQkJCQkJICAiY29sdW1ucyIsIE9ialR5cGVBcnJh eSwgdGFibGVlbHRzKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVDb252ZXJzaW9uU3Rt dAorICoKKyAqIEdpdmVuIGEgY29udmVyc2lvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQg Y3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRp b24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFICV7ZGVmYXVsdH1z IENPTlZFUlNJT04gJXtpZGVudGl0eX1EIEZPUiAle3NvdXJjZX1MIFRPICV7ZGVzdH1MCisgKiBG Uk9NICV7ZnVuY3Rpb259RAorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUNv bnZlcnNpb24oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1cGxlCWNv blR1cDsKKwlSZWxhdGlvbgljb252cmVsOworCUZvcm1fcGdfY29udmVyc2lvbiBjb25Gb3JtOwor CU9ialRyZWUgICAgKnJldDsKKworCWNvbnZyZWwgPSB0YWJsZV9vcGVuKENvbnZlcnNpb25SZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCWNvblR1cCA9IGdldF9jYXRhbG9nX29iamVjdF9i eV9vaWQoY29udnJlbCwgQW51bV9wZ19jb252ZXJzaW9uX29pZCwgb2JqZWN0SWQpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChjb25UdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgY29udmVyc2lvbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwljb25Gb3JtID0g KEZvcm1fcGdfY29udmVyc2lvbikgR0VUU1RSVUNUKGNvblR1cCk7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFICV7ZGVmYXVsdH1zIENPTlZFUlNJT04gJXtpZGVudGl0eX1EIEZPUiAl e3NvdXJjZX1MIFRPICV7ZGVzdH1MIEZST00gJXtmdW5jdGlvbn1EIiwgNSwKKwkJCQkJCSAgImRl ZmF1bHQiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBjb25Gb3JtLT5jb25kZWZhdWx0ID8gIkRF RkFVTFQiIDogIiIsCisJCQkJCQkgICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkg IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShjb25Gb3JtLT5jb25uYW1lc3BhY2UsCisJCQkJCQkJ CQkJCQkgICBOYW1lU3RyKGNvbkZvcm0tPmNvbm5hbWUpKSwKKwkJCQkJCSAgInNvdXJjZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgIChjaGFyICopcGdfZW5jb2RpbmdfdG9fY2hhcihjb25Gb3Jt LT5jb25mb3JlbmNvZGluZyksCisJCQkJCQkgICJkZXN0IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJ CSAgKGNoYXIgKilwZ19lbmNvZGluZ190b19jaGFyKGNvbkZvcm0tPmNvbnRvZW5jb2RpbmcpLAor CQkJCQkJICAiZnVuY3Rpb24iLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9m b3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgIGNvbkZv cm0tPmNvbnByb2MpKTsKKworCXRhYmxlX2Nsb3NlKGNvbnZyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZUVudW1TdG10IChD UkVBVEUgVFlQRSBBUyBFTlVNKQorICoKKyAqIEdpdmVuIGEgRW51bSB0eXBlIE9JRCBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVz ZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBD UkVBVEUgVFlQRSAle2lkZW50aXR5fUQgQVMgRU5VTSAoJXt2YWx1ZXM6LCB9TCkKKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVFbnVtU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUg KnBhcnNldHJlZSkKK3sKKwlDcmVhdGVFbnVtU3RtdCAqbm9kZSA9IChDcmVhdGVFbnVtU3RtdCAq KSBwYXJzZXRyZWU7CisJTGlzdAkgICAqdmFsdWVzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7 CisKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPnZhbHMpCisJCXZhbHVlcyA9IGxhcHBlbmQodmFsdWVz LCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwobGZpcnN0X25vZGUoU3RyaW5nLCBjZWxsKSkpKTsK KworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EIEFTIEVO VU0gKCV7dmFsdWVzOiwgfUwpIiwgMiwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCSAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVSZWxhdGlvbklkLCBv YmplY3RJZCksCisJCQkJCQkgICJ2YWx1ZXMiLCBPYmpUeXBlQXJyYXksIHZhbHVlcyk7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRXh0ZW5zaW9uU3RtdAorICoKKyAqIEdpdmVuIGFuIGV4 dGVuc2lvbiBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFu IE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBW ZXJib3NlIHN5bnRheAorICogQ1JFQVRFIEVYVEVOU0lPTiAle2lmX25vdF9leGlzdHN9cyAle25h bWV9SSAle29wdGlvbnM6IH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRl RXh0ZW5zaW9uU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVF eHRlbnNpb25TdG10ICpub2RlID0gKENyZWF0ZUV4dGVuc2lvblN0bXQgKikgcGFyc2V0cmVlOwor CVJlbGF0aW9uCXBnX2V4dGVuc2lvbjsKKwlIZWFwVHVwbGUJZXh0VHVwOworCUZvcm1fcGdfZXh0 ZW5zaW9uIGV4dEZvcm07CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7 CisJTGlzdENlbGwgICAqY2VsbDsKKworCXBnX2V4dGVuc2lvbiA9IHRhYmxlX29wZW4oRXh0ZW5z aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlleHRUdXAgPSBnZXRfY2F0YWxvZ19v YmplY3RfYnlfb2lkKHBnX2V4dGVuc2lvbiwgQW51bV9wZ19leHRlbnNpb25fb2lkLCBvYmplY3RJ ZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGV4dFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBleHRlbnNpb24gd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJ ZXh0Rm9ybSA9IChGb3JtX3BnX2V4dGVuc2lvbikgR0VUU1RSVUNUKGV4dFR1cCk7CisKKwkvKiBM aXN0IG9mIG9wdGlvbnMgKi8KKwlmb3JlYWNoKGNlbGwsIG5vZGUtPm9wdGlvbnMpCisJeworCQlE ZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0cmNt cChvcHQtPmRlZm5hbWUsICJzY2hlbWEiKSA9PSAwKQorCQl7CisJCQkvKiBTa2lwIHRoaXMgb25l OyB3ZSBhZGQgb25lIHVuY29uZGl0aW9uYWxseSBiZWxvdyAqLworCQkJY29udGludWU7CisJCX0K KwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgIm5ld192ZXJzaW9uIikgPT0gMCkKKwkJ eworCQkJdG1wID0gbmV3X29ianRyZWVfVkEoIlZFUlNJT04gJXt2ZXJzaW9ufUwiLCAyLAorCQkJ CQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAidmVyc2lvbiIsCisJCQkJCQkJCSAidmVyc2lv biIsIE9ialR5cGVTdHJpbmcsIGRlZkdldFN0cmluZyhvcHQpKTsKKwkJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChv cHQtPmRlZm5hbWUsICJvbGRfdmVyc2lvbiIpID09IDApCisJCXsKKwkJCXRtcCA9IG5ld19vYmp0 cmVlX1ZBKCJGUk9NICV7dmVyc2lvbn1MIiwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0 cmluZywgImZyb20iLAorCQkJCQkJCQkgInZlcnNpb24iLCBPYmpUeXBlU3RyaW5nLCBkZWZHZXRT dHJpbmcob3B0KSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb3B0aW9uICVz Iiwgb3B0LT5kZWZuYW1lKTsKKwl9CisKKwkvKiBBZGQgdGhlIFNDSEVNQSBvcHRpb24gKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiU0NIRU1BICV7c2NoZW1hfUkiLCAyLAorCQkJCQkJICJ0eXBl IiwgT2JqVHlwZVN0cmluZywgInNjaGVtYSIsCisJCQkJCQkgInNjaGVtYSIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkgZ2V0X25hbWVzcGFjZV9uYW1lKGV4dEZvcm0tPmV4dG5hbWVzcGFjZSkpOwor CWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCXRhYmxlX2Ns b3NlKHBnX2V4dGVuc2lvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBuZXdfb2JqdHJl ZV9WQSgiQ1JFQVRFIEVYVEVOU0lPTiAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSAle29wdGlv bnM6IH1zIiwgMywKKwkJCQkJCSAgImlmX25vdF9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJ CQkJICBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkg ICJuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+ZXh0bmFtZSwKKwkJCQkJCSAgIm9wdGlvbnMi LCBPYmpUeXBlQXJyYXksIGxpc3QpOworfQorCisvKgorICogSWYgYSBjb2x1bW4gbmFtZSBpcyBz cGVjaWZpZWQsIGFkZCBhbiBlbGVtZW50IGZvciBpdDsgb3RoZXJ3aXNlIGl0J3MgYQorICogdGFi bGUtbGV2ZWwgb3B0aW9uLgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0Zkd09wdGlv bnMoTGlzdCAqb3B0aW9ucywgY2hhciAqY29sbmFtZSwgYm9vbCBhbHRlcmNvbG9wdGlvbnMpCit7 CisJT2JqVHJlZSAgICAqcmV0OworCisJaWYgKGNvbG5hbWUpCisJCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSAle29wdGlvbnN9cyIsIDIsCisJCQkJCQkJICJj b2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBjb2xuYW1lLAorCQkJCQkJCSAib3B0aW9ucyIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJIGFsdGVyY29sb3B0aW9ucyA/ICJPUFRJT05TIiA6ICIiKTsKKwll bHNlCisJCXJldCA9IG5ld19vYmp0cmVlKCJPUFRJT05TIik7CisKKwlpZiAob3B0aW9ucyAhPSBO SUwpCisJeworCQlMaXN0CSAgICpvcHRvdXQgPSBOSUw7CisJCUxpc3RDZWxsICAgKmNlbGw7CisK KwkJZm9yZWFjaChjZWxsLCBvcHRpb25zKQorCQl7CisJCQlEZWZFbGVtICAgICplbGVtOworCQkJ T2JqVHJlZSAgICAqb3B0OworCisJCQllbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOwor CisJCQlzd2l0Y2ggKGVsZW0tPmRlZmFjdGlvbikKKwkJCXsKKwkJCQljYXNlIERFRkVMRU1fVU5T UEVDOgorCQkJCQlvcHQgPSBuZXdfb2JqdHJlZV9WQSgiJXtsYWJlbH1JICV7dmFsdWV9TCIsIDIs CisJCQkJCQkJCQkJICJsYWJlbCIsIE9ialR5cGVTdHJpbmcsIGVsZW0tPmRlZm5hbWUsCisJCQkJ CQkJCQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJIGVsZW0tPmFyZyA/IGRl ZkdldFN0cmluZyhlbGVtKSA6CisJCQkJCQkJCQkJIGRlZkdldEJvb2xlYW4oZWxlbSkgPyAiVFJV RSIgOiAiRkFMU0UiKTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBERUZFTEVNX1NFVDoKKwkJCQkJ b3B0ID0gbmV3X29ianRyZWVfVkEoIlNFVCAle2xhYmVsfUkgJXt2YWx1ZX1MIiwgMiwKKwkJCQkJ CQkJCQkgImxhYmVsIiwgT2JqVHlwZVN0cmluZywgZWxlbS0+ZGVmbmFtZSwKKwkJCQkJCQkJCQkg InZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkgZWxlbS0+YXJnID8gZGVmR2V0U3Ry aW5nKGVsZW0pIDoKKwkJCQkJCQkJCQkgZGVmR2V0Qm9vbGVhbihlbGVtKSA/ICJUUlVFIiA6ICJG QUxTRSIpOworCQkJCQlicmVhazsKKwkJCQljYXNlIERFRkVMRU1fQUREOgorCQkJCQlvcHQgPSBu ZXdfb2JqdHJlZV9WQSgiQUREICV7bGFiZWx9SSAle3ZhbHVlfUwiLCAyLAorCQkJCQkJCQkJCSAi bGFiZWwiLCBPYmpUeXBlU3RyaW5nLCBlbGVtLT5kZWZuYW1lLAorCQkJCQkJCQkJCSAidmFsdWUi LCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCSBlbGVtLT5hcmcgPyBkZWZHZXRTdHJpbmcoZWxl bSkgOgorCQkJCQkJCQkJCSBkZWZHZXRCb29sZWFuKGVsZW0pID8gIlRSVUUiIDogIkZBTFNFIik7 CisJCQkJCWJyZWFrOworCQkJCWNhc2UgREVGRUxFTV9EUk9QOgorCQkJCQlvcHQgPSBuZXdfb2Jq dHJlZV9WQSgiRFJPUCAle2xhYmVsfUkiLCAxLAorCQkJCQkJCQkJCSAibGFiZWwiLCBPYmpUeXBl U3RyaW5nLCBlbGVtLT5kZWZuYW1lKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgZGVmIGFjdGlvbiAlZCIsIGVsZW0tPmRlZmFjdGlvbik7CisJ CQkJCW9wdCA9IE5VTEw7CisJCQl9CisKKwkJCW9wdG91dCA9IGxhcHBlbmQob3B0b3V0LCBuZXdf b2JqZWN0X29iamVjdChvcHQpKTsKKwkJfQorCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAi KCV7b3B0aW9uOiAsfXMpIiwgb3B0b3V0KTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQocmV0KTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRmR3 U3RtdCAoQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSKQorICoKKyAqIEdpdmVuIGFuIEZEVyBP SUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUK KyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5 bnRheAorICogQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSICV7aWRlbnRpdHl9SSAle2hhbmRs ZXJ9cyAle3ZhbGlkYXRvcn1zICV7Z2VuZXJpY19vcHRpb25zfXMKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9DcmVhdGVGZHdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCUNyZWF0ZUZkd1N0bXQgKm5vZGUgPSAoQ3JlYXRlRmR3U3RtdCAqKSBwYXJzZXRyZWU7 CisJSGVhcFR1cGxlCWZkd1R1cDsKKwlGb3JtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyIGZkd0Zv cm07CisJUmVsYXRpb24JcmVsOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7 CisKKwlyZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCisJZmR3VHVwID0gU2VhcmNoU3lzQ2FjaGUxKEZPUkVJR05EQVRBV1JB UFBFUk9JRCwKKwkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZChmZHdUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgZm9yZWlnbi1kYXRhIHdyYXBwZXIgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsK KworCWZkd0Zvcm0gPSAoRm9ybV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcikgR0VUU1RSVUNUKGZk d1R1cCk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQ UEVSICV7aWRlbnRpdHl9SSIsIDEsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywg TmFtZVN0cihmZHdGb3JtLT5mZHduYW1lKSk7CisKKwkvKiBBZGQgSEFORExFUiBjbGF1c2UgKi8K KwlpZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3aGFuZGxlcikpCisJCXRtcCA9IG5ld19vYmp0 cmVlKCJOTyBIQU5ETEVSIik7CisJZWxzZQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkhB TkRMRVIgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2Jq ZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd2hhbmRsZXIpKTsKKwl9CisJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiJXtoYW5kbGVyfXMiLCB0bXApOworCisJLyogQWRkIFZBTElE QVRPUiBjbGF1c2UgKi8KKwlpZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3dmFsaWRhdG9yKSkK KwkJdG1wID0gbmV3X29ianRyZWUoIk5PIFZBTElEQVRPUiIpOworCWVsc2UKKwl7CisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJWQUxJREFUT1IgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJICJw cm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd3Zh bGlkYXRvcikpOworCX0KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3ZhbGlkYXRvcn1z IiwgdG1wKTsKKworCS8qIEFkZCBhbiBPUFRJT05TIGNsYXVzZSwgaWYgYW55ICovCisJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiJXtnZW5lcmljX29wdGlvbnN9cyIsCisJCQkJCQkgZGVwYXJz ZV9GZHdPcHRpb25zKG5vZGUtPm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7CisKKwlSZWxlYXNlU3lz Q2FjaGUoZmR3VHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ cmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJGZHdTdG10IChBTFRFUiBG T1JFSUdOIERBVEEgV1JBUFBFUikKKyAqCisgKiBHaXZlbiBhbiBGRFcgT0lEIGFuZCB0aGUgcGFy c2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRp bmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIEZP UkVJR04gREFUQSBXUkFQUEVSICV7aWRlbnRpdHl9SSAle2Zkd19vcHRpb25zOiB9cyAle2dlbmVy aWNfb3B0aW9uc31ECisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJGZHdTdG10 KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyRmR3U3RtdCAqbm9kZSA9 IChBbHRlckZkd1N0bXQgKikgcGFyc2V0cmVlOworCUhlYXBUdXBsZQlmZHdUdXA7CisJRm9ybV9w Z19mb3JlaWduX2RhdGFfd3JhcHBlciBmZHdGb3JtOworCVJlbGF0aW9uCXJlbDsKKwlPYmpUcmVl ICAgICpyZXQ7CisJTGlzdAkgICAqZmR3X29wdGlvbnMgPSBOSUw7CisJTGlzdENlbGwgICAqY2Vs bDsKKworCXJlbCA9IHRhYmxlX29wZW4oRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlmZHdUdXAgPSBTZWFyY2hTeXNDYWNoZTEoRk9SRUlHTkRBVEFX UkFQUEVST0lELAorCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKGZkd1R1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBmb3JlaWduLWRhdGEgd3JhcHBlciB3aXRoIE9JRCAldSIsCisJCQkgb2JqZWN0SWQp OworCisJZmR3Rm9ybSA9IChGb3JtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyKSBHRVRTVFJVQ1Qo ZmR3VHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBGT1JFSUdOIERBVEEgV1JB UFBFUiAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcs IE5hbWVTdHIoZmR3Rm9ybS0+ZmR3bmFtZSkpOworCisJLyoKKwkgKiBJdGVyYXRlIHRocm91Z2gg b3B0aW9ucywgdG8gc2VlIHdoYXQgY2hhbmdlZCwgYnV0IHVzZSBjYXRhbG9nIGFzIGEKKwkgKiBi YXNpcyBmb3IgbmV3IHZhbHVlcy4KKwkgKi8KKwlmb3JlYWNoKGNlbGwsIG5vZGUtPmZ1bmNfb3B0 aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmVsZW07CisJCU9ialRyZWUgICAgKnRtcDsKKworCQll bGVtID0gbGZpcnN0KGNlbGwpOworCisJCWlmIChwZ19zdHJjYXNlY21wKGVsZW0tPmRlZm5hbWUs ICJoYW5kbGVyIikgPT0gMCkKKwkJeworCQkJLyogYWRkIEhBTkRMRVIgY2xhdXNlICovCisJCQlp ZiAoIU9pZElzVmFsaWQoZmR3Rm9ybS0+ZmR3aGFuZGxlcikpCisJCQkJdG1wID0gbmV3X29ianRy ZWUoIk5PIEhBTkRMRVIiKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQl0bXAgPSBuZXdfb2JqdHJlZV9W QSgiSEFORExFUiAle3Byb2NlZHVyZX1EIiwgMSwKKwkJCQkJCQkJCSAicHJvY2VkdXJlIiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQkgZmR3Rm9ybS0+ZmR3aGFuZGxlcikpOwor CQkJfQorCQkJZmR3X29wdGlvbnMgPSBsYXBwZW5kKGZkd19vcHRpb25zLCBuZXdfb2JqZWN0X29i amVjdCh0bXApKTsKKwkJfQorCQllbHNlIGlmIChwZ19zdHJjYXNlY21wKGVsZW0tPmRlZm5hbWUs ICJ2YWxpZGF0b3IiKSA9PSAwKQorCQl7CisJCQkvKiBhZGQgVkFMSURBVE9SIGNsYXVzZSAqLwor CQkJaWYgKCFPaWRJc1ZhbGlkKGZkd0Zvcm0tPmZkd3ZhbGlkYXRvcikpCisJCQkJdG1wID0gbmV3 X29ianRyZWUoIk5PIFZBTElEQVRPUiIpOworCQkJZWxzZQorCQkJeworCQkJCXRtcCA9IG5ld19v Ymp0cmVlX1ZBKCJWQUxJREFUT1IgJXtwcm9jZWR1cmV9RCIsIDEsCisJCQkJCQkJCQkgInByb2Nl ZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1l X2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJIGZkd0Zvcm0tPmZkd3Zh bGlkYXRvcikpOworCQkJfQorCQkJZmR3X29wdGlvbnMgPSBsYXBwZW5kKGZkd19vcHRpb25zLCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwkJfQorCX0KKworCS8qIEFkZCBIQU5ETEVSL1ZBTElE QVRPUiBpZiBzcGVjaWZpZWQgKi8KKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7ZmR3X29w dGlvbnM6IH1zIiwgZmR3X29wdGlvbnMpOworCisJLyogQWRkIGFuIE9QVElPTlMgY2xhdXNlLCBp ZiBhbnkgKi8KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dlbmVyaWNfb3B0aW9uc31E IiwKKwkJCQkJCSBkZXBhcnNlX0Zkd09wdGlvbnMobm9kZS0+b3B0aW9ucywgTlVMTCwgZmFsc2Up KTsKKworCVJlbGVhc2VTeXNDYWNoZShmZHdUdXApOworCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENSRUFU RSBUWVBFIEFTIFJBTkdFIHN0YXRlbWVudAorICoKKyAqIEdpdmVuIGEgUmFuZ2UgdHlwZSBPSUQg YW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAq IHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQ1JFQVRFIFRZUEUgJXtpZGVudGl0eX1EIEFTIFJBTkdFICgle2RlZmluaXRpb246LCB9 cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVSYW5nZVN0bXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAg KmRlZmluaXRpb24gPSBOSUw7CisJUmVsYXRpb24JcGdfcmFuZ2U7CisJSGVhcFR1cGxlCXJhbmdl VHVwOworCUZvcm1fcGdfcmFuZ2UgcmFuZ2VGb3JtOworCVNjYW5LZXlEYXRhIGtleVsxXTsKKwlT eXNTY2FuRGVzYyBzY2FuOworCisJcGdfcmFuZ2UgPSB0YWJsZV9vcGVuKFJhbmdlUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1f cGdfcmFuZ2Vfcm5ndHlwaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAor CQkJCU9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdp bnNjYW4ocGdfcmFuZ2UsIFJhbmdlVHlwaWRJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwg MSwga2V5KTsKKworCXJhbmdlVHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQocmFuZ2VUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcmFuZ2Ugd2l0aCB0eXBlIE9JRCAldSIsCisJCQkgb2JqZWN0SWQpOworCisJcmFu Z2VGb3JtID0gKEZvcm1fcGdfcmFuZ2UpIEdFVFNUUlVDVChyYW5nZVR1cCk7CisKKwkvKiBTVUJU WVBFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNVQlRZUEUgPSAle3R5cGV9RCIsIDIsCisJ CQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdWJ0eXBlIiwKKwkJCQkJCSAidHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVS ZWxhdGlvbklkLCByYW5nZUZvcm0tPnJuZ3N1YnR5cGUpKTsKKwlkZWZpbml0aW9uID0gbGFwcGVu ZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFNVQlRZUEVfT1BD TEFTUyAqLworCWlmIChPaWRJc1ZhbGlkKHJhbmdlRm9ybS0+cm5nc3Vib3BjKSkKKwl7CisJCXRt cCA9IG5ld19vYmp0cmVlX1ZBKCJTVUJUWVBFX09QQ0xBU1MgPSAle29wY2xhc3N9RCIsIDIsCisJ CQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAib3BjbGFzcyIsCisJCQkJCQkJICJvcGNs YXNzIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KE9wZXJhdG9yQ2xhc3NSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgcmFuZ2VGb3JtLT5ybmdz dWJvcGMpKTsKKwkJZGVmaW5pdGlvbiA9IGxhcHBlbmQoZGVmaW5pdGlvbiwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisJfQorCisJLyogQ09MTEFUSU9OICovCisJaWYgKE9pZElzVmFsaWQocmFu Z2VGb3JtLT5ybmdjb2xsYXRpb24pKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkNPTExB VElPTiA9ICV7Y29sbGF0aW9ufUQiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmlu ZywgImNvbGxhdGlvbiIsCisJCQkJCQkJICJjb2xsYXRpb24iLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoQ29sbGF0aW9uUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkJIHJhbmdlRm9ybS0+cm5nY29sbGF0aW9uKSk7CisJCWRlZmluaXRpb24gPSBs YXBwZW5kKGRlZmluaXRpb24sIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0KKworCS8qIENB Tk9OSUNBTCAqLworCWlmIChPaWRJc1ZhbGlkKHJhbmdlRm9ybS0+cm5nY2Fub25pY2FsKSkKKwl7 CisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJDQU5PTklDQUwgPSAle2Nhbm9uaWNhbH1EIiwgMiwK KwkJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjYW5vbmljYWwiLAorCQkJCQkJCSAi Y2Fub25pY2FsIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSByYW5nZUZvcm0tPnJu Z2Nhbm9uaWNhbCkpOworCQlkZWZpbml0aW9uID0gbGFwcGVuZChkZWZpbml0aW9uLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBTVUJUWVBFX0RJRkYgKi8KKwlpZiAoT2lkSXNW YWxpZChyYW5nZUZvcm0tPnJuZ3N1YmRpZmYpKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEo IlNVQlRZUEVfRElGRiA9ICV7c3VidHlwZV9kaWZmfUQiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwg T2JqVHlwZVN0cmluZywgInN1YnR5cGVfZGlmZiIsCisJCQkJCQkJICJzdWJ0eXBlX2RpZmYiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHJhbmdlRm9ybS0+cm5nc3ViZGlmZikpOwor CQlkZWZpbml0aW9uID0gbGFwcGVuZChkZWZpbml0aW9uLCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnX3Jhbmdl LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRZ UEUgJXtpZGVudGl0eX1EIEFTIFJBTkdFICgle2RlZmluaXRpb246LCB9cykiLCAyLAorCQkJCQkJ ICAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWVfaWQoVHlwZVJlbGF0aW9uSWQsIG9iamVjdElkKSwKKwkJCQkJCSAgImRlZmluaXRpb24i LCBPYmpUeXBlQXJyYXksIGRlZmluaXRpb24pOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRl ckVudW1TdG10LgorICoKKyAqIEdpdmVuIGFuIGVudW0gT0lEIGFuZCBhIHBhcnNlIHRyZWUgdGhh dCBtb2RpZmllZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgYWx0 ZXIgdHlwZS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVFlQRSAle2lkZW50aXR5 fUQgQUREIFZBTFVFICV7aWZfbm90X2V4aXN0c31zICV7dmFsdWV9TAorICogJXthZnRlcl9vcl9i ZWZvcmV9cyAle25laWdoYm9yfUwKKyAqIAlPUgorICogQUxURVIgVFlQRSAle2lkZW50aXR5fUQg UkVOQU1FIFZBTFVFICV7dmFsdWV9TCBUTyAle25ld3ZhbHVlfUwKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9BbHRlckVudW1TdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCUFsdGVyRW51bVN0bXQgKm5vZGUgPSAoQWx0ZXJFbnVtU3RtdCAqKSBwYXJzZXRyZWU7 CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRZUEUg JXtpZGVudGl0eX1EIiwgMSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUeXBlUmVsYXRpb25JZCwKKwkJCQkJCQkJ CQkJCQkgb2JqZWN0SWQpKTsKKworCWlmICghbm9kZS0+b2xkVmFsKQorCXsKKwkJYXBwZW5kX2Zv cm1hdF9zdHJpbmcocmV0LCAiQUREIFZBTFVFIik7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJl dCwgIiV7aWZfbm90X2V4aXN0c31zIiwgImlmX25vdF9leGlzdHMiLAorCQkJCQkJCSBub2RlLT5z a2lwSWZOZXdWYWxFeGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIik7CisKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QocmV0LCAiJXt2YWx1ZX1MIiwgInZhbHVlIiwgbm9kZS0+bmV3VmFsKTsKKwor CQlpZiAobm9kZS0+bmV3VmFsTmVpZ2hib3IpCisJCXsKKwkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0 KHJldCwgIiV7YWZ0ZXJfb3JfYmVmb3JlfXMiLAorCQkJCQkJCQkgImFmdGVyX29yX2JlZm9yZSIs CisJCQkJCQkJCSBub2RlLT5uZXdWYWxJc0FmdGVyID8gIkFGVEVSIiA6ICJCRUZPUkUiKTsKKwkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bmVpZ2hib3J9TCIsICJuZWlnaGJvciIsCisJ CQkJCQkJCSBub2RlLT5uZXdWYWxOZWlnaGJvcik7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJYXBw ZW5kX3N0cmluZ19vYmplY3QocmV0LCAiUkVOQU1FIFZBTFVFICV7dmFsdWV9TCBUTyIsICJ2YWx1 ZSIsCisJCQkJCQkJIG5vZGUtPm9sZFZhbCk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwg IiV7bmV3dmFsdWV9TCIsICJuZXd2YWx1ZSIsIG5vZGUtPm5ld1ZhbCk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0ZXJFeHRlbnNpb25TdG10IChBTFRFUiBF WFRFTlNJT04gLi4gVVBEQVRFIFRPIFZFUlNJT04pCisgKgorICogR2l2ZW4gYW4gZXh0ZW5zaW9u IE9JRCBhbmQgYSBwYXJzZSB0cmVlIHRoYXQgbW9kaWZpZWQgaXQsIHJldHVybiBhbiBPYmpUcmVl CisgKiByZXByZXNlbnRpbmcgdGhlIGFsdGVyIHR5cGUuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSIEVYVEVOU0lPTiAle2lkZW50aXR5fUkgVVBEQVRFICV7b3B0aW9uczogfXMKKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckV4dGVuc2lvblN0bXQoT2lkIG9iamVj dElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJFeHRlbnNpb25TdG10ICpub2RlID0gKEFs dGVyRXh0ZW5zaW9uU3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JcGdfZXh0ZW5zaW9uOwor CUhlYXBUdXBsZQlleHRUdXA7CisJRm9ybV9wZ19leHRlbnNpb24gZXh0Rm9ybTsKKwlPYmpUcmVl ICAgICpyZXQ7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCURl ZkVsZW0gICAgKmRfbmV3X3ZlcnNpb24gPSBOVUxMOworCisJcGdfZXh0ZW5zaW9uID0gdGFibGVf b3BlbihFeHRlbnNpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCWV4dFR1cCA9IGdl dF9jYXRhbG9nX29iamVjdF9ieV9vaWQocGdfZXh0ZW5zaW9uLCBBbnVtX3BnX2V4dGVuc2lvbl9v aWQsIG9iamVjdElkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZXh0VHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGV4dGVuc2lvbiB3aXRoIE9JRCAldSIsCisJ CQkgb2JqZWN0SWQpOworCWV4dEZvcm0gPSAoRm9ybV9wZ19leHRlbnNpb24pIEdFVFNUUlVDVChl eHRUdXApOworCisJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAg ICAqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCWlmIChzdHJjbXAob3B0LT5k ZWZuYW1lLCAibmV3X3ZlcnNpb24iKSA9PSAwKQorCQl7CisJCQlPYmpUcmVlICAgICp0bXA7CisK KwkJCWlmIChkX25ld192ZXJzaW9uKQorCQkJCWVsb2coRVJST1IsICJjb25mbGljdGluZyBvciBy ZWR1bmRhbnQgb3B0aW9ucyBmb3IgZXh0ZW5zaW9uIHdpdGggT0lEICV1IiwKKwkJCQkJIG9iamVj dElkKTsKKworCQkJZF9uZXdfdmVyc2lvbiA9IG9wdDsKKworCQkJdG1wID0gbmV3X29ianRyZWVf VkEoIlRPICV7dmVyc2lvbn1MIiwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywg InZlcnNpb24iLAorCQkJCQkJCQkgInZlcnNpb24iLCBPYmpUeXBlU3RyaW5nLCBkZWZHZXRTdHJp bmcob3B0KSk7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb3B0aW9uICVzIiwg b3B0LT5kZWZuYW1lKTsKKwl9CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRVhURU5T SU9OICV7aWRlbnRpdHl9SSBVUERBVEUgJXtvcHRpb25zOiB9cyIsIDIsCisJCQkJCQkgImlkZW50 aXR5IiwgT2JqVHlwZVN0cmluZywgTmFtZVN0cihleHRGb3JtLT5leHRuYW1lKSwKKwkJCQkJCSAi b3B0aW9ucyIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisKKwl0YWJsZV9jbG9zZShwZ19leHRlbnNp b24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJz ZSBhbiBBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdCAoQUxURVIgRVhURU5TSU9OIGV4dCBBREQv RFJPUCBvYmplY3QpCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIEVYVEVOU0lPTiAl e2V4dGlkZW50aXR5fUkgJXtleHRvcHRpb259cyAle2V4dG9ianR5cGV9cworICogQUREL0RST1Ag JXtvYmppZGVudGl0eX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJFeHRl bnNpb25Db250ZW50c1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsCisJCQkJCQkJ CSAgIE9iamVjdEFkZHJlc3Mgb2JqZWN0QWRkcmVzcykKK3sKKwlBbHRlckV4dGVuc2lvbkNvbnRl bnRzU3RtdCAqbm9kZSA9IChBbHRlckV4dGVuc2lvbkNvbnRlbnRzU3RtdCAqKSBwYXJzZXRyZWU7 CisKKwlBc3NlcnQobm9kZS0+YWN0aW9uID09ICsxIHx8IG5vZGUtPmFjdGlvbiA9PSAtMSk7CisK KwlyZXR1cm4gbmV3X29ianRyZWVfVkEoIkFMVEVSIEVYVEVOU0lPTiAle2V4dGlkZW50aXR5fUkg JXtleHRvcHRpb259cyAle2V4dG9ianR5cGV9cyAle29iamlkZW50aXR5fXMiLCA0LAorCQkJCQkJ ICAiZXh0aWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5leHRuYW1lLAorCQkJCQkJICAi ZXh0b3B0aW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgbm9kZS0+YWN0aW9uID09ICsxID8g IkFERCIgOiAiRFJPUCIsCisJCQkJCQkgICJleHRvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSAgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+b2JqdHlwZSwgZmFsc2UpLAorCQkJCQkJICAi b2JqaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJICBnZXRPYmplY3RJZGVudGl0eSgm b2JqZWN0QWRkcmVzcywgZmFsc2UpKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQ3JlYXRlQ2Fz dFN0bXQuCisgKgorICogR2l2ZW4gYSBzZXF1ZW5jZSBPSUQgYW5kIGEgcGFyc2UgdHJlZSB0aGF0 IG1vZGlmaWVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVh dGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgQ0FTVCAoJXtz b3VyY2V0eXBlfVQgQVMgJXt0YXJnZXR0eXBlfVQpICV7bWVjaGFuaXNtfXMgJXtjb250ZXh0fXMK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVDYXN0U3RtdChPaWQgb2JqZWN0 SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVDYXN0U3RtdCAqbm9kZSA9IChDcmVhdGVD YXN0U3RtdCAqKSBwYXJzZXRyZWU7CisJUmVsYXRpb24JY2FzdHJlbDsKKwlIZWFwVHVwbGUJY2Fz dFR1cDsKKwlGb3JtX3BnX2Nhc3QgY2FzdEZvcm07CisJT2JqVHJlZSAgICAqcmV0OworCWNoYXIJ ICAgKmNvbnRleHQ7CisKKwljYXN0cmVsID0gdGFibGVfb3BlbihDYXN0UmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKwljYXN0VHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChjYXN0 cmVsLCBBbnVtX3BnX2Nhc3Rfb2lkLCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNhc3RUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY2FzdCB3 aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwljYXN0Rm9ybSA9IChGb3JtX3BnX2Nhc3QpIEdFVFNU UlVDVChjYXN0VHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgQ0FTVCAoJXtz b3VyY2V0eXBlfVQgQVMgJXt0YXJnZXR0eXBlfVQpIiwgMiwKKwkJCQkJCSAic291cmNldHlwZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUoY2FzdEZvcm0tPmNh c3Rzb3VyY2UsIC0xKSwKKwkJCQkJCSAidGFyZ2V0dHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3R5cGUoY2FzdEZvcm0tPmNhc3R0YXJnZXQsIC0xKSk7CisKKwlp ZiAobm9kZS0+aW5vdXQpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bWVjaGFuaXNt fXMiLCAibWVjaGFuaXNtIiwKKwkJCQkJCQkgIldJVEggSU5PVVQiKTsKKwllbHNlIGlmIChub2Rl LT5mdW5jID09IE5VTEwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bWVjaGFuaXNt fXMiLCAibWVjaGFuaXNtIiwKKwkJCQkJCQkgIldJVEhPVVQgRlVOQ1RJT04iKTsKKwllbHNlCisJ eworCQlPYmpUcmVlICAgICp0bXBfb2JqOworCQlTdHJpbmdJbmZvRGF0YSBmdW5jOworCQlIZWFw VHVwbGUJZnVuY1R1cDsKKwkJRm9ybV9wZ19wcm9jIGZ1bmNGb3JtOworCQlpbnQJCQlpOworCisJ CWZ1bmNUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgY2FzdEZvcm0tPmNhc3RmdW5jKTsK KwkJZnVuY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJVQ1QoZnVuY1R1cCk7CisKKwkJaW5p dFN0cmluZ0luZm8oJmZ1bmMpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZmdW5jLCAiJXMoIiwKKwkJ CQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoZnVuY0Zv cm0tPnByb25hbWVzcGFjZSksCisJCQkJCQkJCQkJCQkJTmFtZVN0cihmdW5jRm9ybS0+cHJvbmFt ZSkpKTsKKwkJZm9yIChpID0gMDsgaSA8IGZ1bmNGb3JtLT5wcm9uYXJnczsgaSsrKQorCQl7CisJ CQlpZiAoaSAhPSAwKQorCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZmdW5jLCAnLCcpOworCisJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmdW5jLAorCQkJCQkJCQkgICBmb3JtYXRfdHlwZV9i ZV9xdWFsaWZpZWQoZnVuY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXSkpOworCQl9CisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZmdW5jLCAnKScpOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiV0lUSCBGVU5DVElPTiAle2Nhc3RmdW5jdGlvbn1zIiwgMSwKKwkJCQkJCQkJImNhc3Rm dW5jdGlvbiIsIE9ialR5cGVTdHJpbmcsIGZ1bmMuZGF0YSk7CisJCWFwcGVuZF9vYmplY3Rfb2Jq ZWN0KHJldCwgIiV7bWVjaGFuaXNtfXMiLCB0bXBfb2JqKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUo ZnVuY1R1cCk7CisJfQorCisJc3dpdGNoIChub2RlLT5jb250ZXh0KQorCXsKKwkJY2FzZSBDT0VS Q0lPTl9JTVBMSUNJVDoKKwkJCWNvbnRleHQgPSAiQVMgSU1QTElDSVQiOworCQkJYnJlYWs7CisJ CWNhc2UgQ09FUkNJT05fQVNTSUdOTUVOVDoKKwkJCWNvbnRleHQgPSAiQVMgQVNTSUdOTUVOVCI7 CisJCQlicmVhazsKKwkJY2FzZSBDT0VSQ0lPTl9FWFBMSUNJVDoKKwkJCWNvbnRleHQgPSAiIjsK KwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgY29lcmNpb24g Y29kZSAlYyIsIG5vZGUtPmNvbnRleHQpOworCQkJcmV0dXJuIE5VTEw7CQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCisJfQorCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7Y29udGV4dH1z IiwgImNvbnRleHQiLCBjb250ZXh0KTsKKworCXRhYmxlX2Nsb3NlKGNhc3RyZWwsIEFjY2Vzc1No YXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBTFRFUiBE RUZBVUxUIFBSSVZJTEVHRVMgc3RhdGVtZW50LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBB TFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgJXtpbl9zY2hlbWF9cyAle2Zvcl9yb2xlc31zICV7Z3Jh bnR9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyRGVmYXVsdFByaXZpbGVn ZXNTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJQWx0 ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnN0bXQgPSAoQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0 bXQgKikgY21kLT5wYXJzZXRyZWU7CisJTGlzdAkgICAqcm9sZXMgPSBOSUw7CisJTGlzdAkgICAq c2NoZW1hcyA9IE5JTDsKKwlMaXN0CSAgICpncmFudGVlczsKKwlMaXN0CSAgICpwcml2czsKKwlM aXN0Q2VsbCAgICpjZWxsOworCU9ialRyZWUgICAgKnRtcDsKKwlPYmpUcmVlICAgICpncmFudDsK KwljaGFyCSAgICpvYmp0eXBlOworCisJcmV0ID0gbmV3X29ianRyZWUoIkFMVEVSIERFRkFVTFQg UFJJVklMRUdFUyIpOworCisJLyogU2NhbiB0aGUgcGFyc2Ugbm9kZSB0byBkaWcgb3V0IHRoZSBG T1IgUk9MRSBhbmQgSU4gU0NIRU1BIGNsYXVzZXMgKi8KKwlmb3JlYWNoKGNlbGwsIHN0bXQtPm9w dGlvbnMpCisJeworCQlEZWZFbGVtICAgICpvcHQgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7 CisJCUxpc3RDZWxsICAgKmNlbGwyOworCisJCUFzc2VydChJc0Eob3B0LCBEZWZFbGVtKSk7CisJ CUFzc2VydChJc0Eob3B0LT5hcmcsIExpc3QpKTsKKwkJaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUs ICJyb2xlcyIpID09IDApCisJCXsKKwkJCWZvcmVhY2goY2VsbDIsIChMaXN0ICopIG9wdC0+YXJn KQorCQkJeworCQkJCVJvbGVTcGVjICAgKnJvbGVzcGVjID0gbGZpcnN0KGNlbGwyKTsKKwkJCQlP YmpUcmVlICAgICpvYmogPSBuZXdfb2JqdHJlZV9mb3Jfcm9sZXNwZWMocm9sZXNwZWMpOworCisJ CQkJcm9sZXMgPSBsYXBwZW5kKHJvbGVzLCBuZXdfb2JqZWN0X29iamVjdChvYmopKTsKKwkJCX0K KwkJfQorCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAic2NoZW1hcyIpID09IDApCisJ CXsKKwkJCWZvcmVhY2goY2VsbDIsIChMaXN0ICopIG9wdC0+YXJnKQorCQkJeworCQkJCVN0cmlu ZwkgICAqdmFsID0gbGZpcnN0X25vZGUoU3RyaW5nLCBjZWxsMik7CisKKwkJCQlzY2hlbWFzID0g bGFwcGVuZChzY2hlbWFzLCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwodmFsKSkpOworCQkJfQor CQl9CisJfQorCisJLyogQWRkIHRoZSBJTiBTQ0hFTUEgY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAg PSBuZXdfb2JqdHJlZSgiSU4gU0NIRU1BIik7CisJYXBwZW5kX2FycmF5X29iamVjdCh0bXAsICIl e3NjaGVtYXM6LCB9SSIsIHNjaGVtYXMpOworCWlmIChzY2hlbWFzID09IE5JTCkKKwkJYXBwZW5k X25vdF9wcmVzZW50KHRtcCk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpbl9zY2hl bWF9cyIsIHRtcCk7CisKKwkvKiBBZGQgdGhlIEZPUiBST0xFIGNsYXVzZSwgaWYgYW55ICovCisJ dG1wID0gbmV3X29ianRyZWUoIkZPUiBST0xFIik7CisJYXBwZW5kX2FycmF5X29iamVjdCh0bXAs ICIle3JvbGVzOiwgfVIiLCByb2xlcyk7CisJaWYgKHJvbGVzID09IE5JTCkKKwkJYXBwZW5kX25v dF9wcmVzZW50KHRtcCk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtmb3Jfcm9sZXN9 cyIsIHRtcCk7CisKKwkvKgorCSAqIEFkZCB0aGUgR1JBTlQgc3ViY29tbWFuZAorCSAqIFZlcmJv c2Ugc3ludGF4CisJICogR1JBTlQgJXtwcml2aWxlZ2VzOiwgfXMgT04gJXt0YXJnZXR9cyBUTyAl e2dyYW50ZWVzOiwgfVIgJXtncmFudF9vcHRpb259cworCSAqIG9yCisJICogUkVWT0tFICV7Z3Jh bnRfb3B0aW9ufXMgJXtwcml2aWxlZ2VzOiwgfXMgT04gJXt0YXJnZXR9cyBGUk9NICV7Z3JhbnRl ZXM6LCB9UgorCSAqLworCWlmIChzdG10LT5hY3Rpb24tPmlzX2dyYW50KQorCQlncmFudCA9IG5l d19vYmp0cmVlKCJHUkFOVCIpOworCWVsc2UKKwl7CisJCWdyYW50ID0gbmV3X29ianRyZWUoIlJF Vk9LRSIpOworCisJCS8qIEFkZCB0aGUgR1JBTlQgT1BUSU9OIGNsYXVzZSBmb3IgUkVWT0tFIHN1 YmNvbW1hbmQgKi8KKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkdSQU5UIE9QVElPTiBGT1IiLCAx LAorCQkJCQkJCSAicHJlc2VudCIsIE9ialR5cGVCb29sLAorCQkJCQkJCSBzdG10LT5hY3Rpb24t PmdyYW50X29wdGlvbik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGdyYW50LCAiJXtncmFudF9v cHRpb259cyIsIHRtcCk7CisJfQorCisJLyoKKwkgKiBBZGQgdGhlIHByaXZpbGVnZXMgbGlzdC4g IFRoaXMgdXNlcyB0aGUgcGFyc2VyIHN0cnVjdCwgYXMgb3Bwb3NlZCB0bworCSAqIHRoZSBJbnRl cm5hbEdyYW50IGZvcm1hdCB1c2VkIGJ5IEdSQU5ULiAgVGhlcmUgYXJlIGVub3VnaCBvdGhlcgor CSAqIGRpZmZlcmVuY2VzIHRoYXQgdGhpcyBkb2Vzbid0IHNlZW0gd29ydGggaW1wcm92aW5nLgor CSAqLworCWlmIChzdG10LT5hY3Rpb24tPnByaXZpbGVnZXMgPT0gTklMKQorCQlwcml2cyA9IGxp c3RfbWFrZTEobmV3X3N0cmluZ19vYmplY3QoIkFMTCBQUklWSUxFR0VTIikpOworCWVsc2UKKwl7 CisJCXByaXZzID0gTklMOworCisJCWZvcmVhY2goY2VsbCwgc3RtdC0+YWN0aW9uLT5wcml2aWxl Z2VzKQorCQl7CisJCQlBY2Nlc3NQcml2ICpwcml2ID0gbGZpcnN0KGNlbGwpOworCisJCQlBc3Nl cnQocHJpdi0+Y29scyA9PSBOSUwpOworCQkJcHJpdnMgPSBsYXBwZW5kKHByaXZzLCBuZXdfc3Ry aW5nX29iamVjdChwcml2LT5wcml2X25hbWUpKTsKKwkJfQorCX0KKworCWFwcGVuZF9hcnJheV9v YmplY3QoZ3JhbnQsICIle3ByaXZpbGVnZXM6LCB9cyIsIHByaXZzKTsKKworCXN3aXRjaCAoY21k LT5kLmRlZnByaXZzLm9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCW9ianR5 cGUgPSAiVEFCTEVTIjsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9GVU5DVElPTjoKKwkJCW9i anR5cGUgPSAiRlVOQ1RJT05TIjsKKwkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9ST1VUSU5FOgor CQkJb2JqdHlwZSA9ICJST1VUSU5FUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1RfU0VRVUVO Q0U6CisJCQlvYmp0eXBlID0gIlNFUVVFTkNFUyI7CisJCQlicmVhazsKKwkJY2FzZSBPQkpFQ1Rf VFlQRToKKwkJCW9ianR5cGUgPSAiVFlQRVMiOworCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1ND SEVNQToKKwkJCW9ianR5cGUgPSAiU0NIRU1BUyI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJpbnZhbGlkIE9CSkVDVCB2YWx1ZSAlZCBmb3IgZGVmYXVsdCBwcml2aWxl Z2VzIiwgY21kLT5kLmRlZnByaXZzLm9ianR5cGUpOworCX0KKworCS8qIEFkZCB0aGUgdGFyZ2V0 IG9iamVjdCB0eXBlICovCisJYXBwZW5kX3N0cmluZ19vYmplY3QoZ3JhbnQsICJPTiAle3Rhcmdl dH1zIiwgInRhcmdldCIsIG9ianR5cGUpOworCisJLyogQWRkIHRoZSBncmFudGVlIGxpc3QgKi8K KwlncmFudGVlcyA9IE5JTDsKKwlmb3JlYWNoKGNlbGwsIHN0bXQtPmFjdGlvbi0+Z3JhbnRlZXMp CisJeworCQlSb2xlU3BlYyAgICpzcGVjID0gKFJvbGVTcGVjICopIGxmaXJzdChjZWxsKTsKKwkJ T2JqVHJlZSAgICAqb2JqID0gbmV3X29ianRyZWVfZm9yX3JvbGVzcGVjKHNwZWMpOworCisJCWdy YW50ZWVzID0gbGFwcGVuZChncmFudGVlcywgbmV3X29iamVjdF9vYmplY3Qob2JqKSk7CisJfQor CisJaWYgKHN0bXQtPmFjdGlvbi0+aXNfZ3JhbnQpCisJeworCQlhcHBlbmRfYXJyYXlfb2JqZWN0 KGdyYW50LCAiVE8gJXtncmFudGVlczosIH1SIiwgZ3JhbnRlZXMpOworCisJCS8qIEFkZCB0aGUg V0lUSCBHUkFOVCBPUFRJT04gY2xhdXNlIGZvciBHUkFOVCBzdWJjb21tYW5kICovCisJCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJXSVRIIEdSQU5UIE9QVElPTiIsIDEsCisJCQkJCQkJICJwcmVzZW50 IiwgT2JqVHlwZUJvb2wsCisJCQkJCQkJIHN0bXQtPmFjdGlvbi0+Z3JhbnRfb3B0aW9uKTsKKwkJ YXBwZW5kX29iamVjdF9vYmplY3QoZ3JhbnQsICIle2dyYW50X29wdGlvbn1zIiwgdG1wKTsKKwl9 CisJZWxzZQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KGdyYW50LCAiRlJPTSAle2dyYW50ZWVzOiwg fVIiLCBncmFudGVlcyk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2dyYW50fXMi LCBncmFudCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgQ1JFQVRF IERPTUFJTgorICoKKyAqIEdpdmVuIGEgZnVuY3Rpb24gT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0 aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNy ZWF0aW9uIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBET01BSU4g JXtpZGVudGl0eX1EIEFTICV7dHlwZX1UICV7bm90X251bGx9cyAle2NvbnN0cmFpbnRzfXMKKyAq ICV7Y29sbGF0aW9ufXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVEb21h aW4oT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2JqVHJlZSAgICAqcmV0Owor CU9ialRyZWUgICAgKnRtcF9vYmo7CisJSGVhcFR1cGxlCXR5cFR1cDsKKwlGb3JtX3BnX3R5cGUg dHlwRm9ybTsKKwlMaXN0CSAgICpjb25zdHJhaW50czsKKwljaGFyCSAgICpkZWZ2YWw7CisKKwl0 eXBUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgb2JqZWN0SWQpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0eXBUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgZG9tYWluIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXR5cEZvcm0gPSAoRm9ybV9wZ190 eXBlKSBHRVRTVFJVQ1QodHlwVHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUg RE9NQUlOICV7aWRlbnRpdHl9RCBBUyAle3R5cGV9VCAle25vdF9udWxsfXMiLCAzLAorCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lX2lkKFR5cGVSZWxhdGlvbklkLCBvYmplY3RJZCksCisJCQkJCQkgInR5cGUiLCBPYmpUeXBl T2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHR5cEZvcm0tPnR5cGJhc2V0eXBl LAorCQkJCQkJCQkJCQkgIHR5cEZvcm0tPnR5cHR5cG1vZCksCisJCQkJCQkgIm5vdF9udWxsIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSB0eXBGb3JtLT50eXBub3RudWxsID8gIk5PVCBOVUxMIiA6 ICIiKTsKKworCWNvbnN0cmFpbnRzID0gb2J0YWluQ29uc3RyYWludHMoTklMLCBJbnZhbGlkT2lk LCBvYmplY3RJZCk7CisJaWYgKGNvbnN0cmFpbnRzID09IE5JTCkKKwl7CisJCXRtcF9vYmogPSBu ZXdfb2JqdHJlZSgiIik7CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwl9CisJZWxz ZQorCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIiV7ZWxlbWVudHM6LCB9cyIsIDEsCisJCQkJ CQkJCSJlbGVtZW50cyIsIE9ialR5cGVBcnJheSwgY29uc3RyYWludHMpOworCWFwcGVuZF9vYmpl Y3Rfb2JqZWN0KHJldCwgIiV7Y29uc3RyYWludHN9cyIsIHRtcF9vYmopOworCisJdG1wX29iaiA9 IG5ld19vYmp0cmVlKCJDT0xMQVRFIik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwY29s bGF0aW9uKSkKKwl7CisJCU9ialRyZWUgICAgKmNvbGxuYW1lOworCisJCWNvbGxuYW1lID0gbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKENvbGxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJ CSAgIHR5cEZvcm0tPnR5cGNvbGxhdGlvbik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9v YmosICIle25hbWV9RCIsIGNvbGxuYW1lKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wX29iaik7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjb2xsYXRpb259cyIs IHRtcF9vYmopOworCisJZGVmdmFsID0gRG9tYWluR2V0RGVmYXVsdCh0eXBUdXAsIHRydWUpOwor CWlmIChkZWZ2YWwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkRFRkFVTFQgJXtkZWZh dWx0fXMiLCAiZGVmYXVsdCIsIGRlZnZhbCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHlwVHVwKTsK KworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlRnVuY3Rpb25TdG10 IChDUkVBVEUgRlVOQ1RJT04pCisgKgorICogR2l2ZW4gYSBmdW5jdGlvbiBPSUQgYW5kIHRoZSBw YXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2Vu dGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICoKKyAq IENSRUFURSAle29yX3JlcGxhY2V9cyBGVU5DVElPTiAle3NpZ25hdHVyZX1zIFJFVFVSTlMgJXty ZXR1cm5fdHlwZX1zCisgKiBMQU5HVUFHRSAle3RyYW5zZm9ybV90eXBlfXMgJXtsYW5ndWFnZX1J ICV7d2luZG93fXMgJXt2b2xhdGlsaXR5fXMKKyAqICV7cGFyYWxsZWxfc2FmZXR5fXMgJXtsZWFr cHJvb2Z9cyAle3N0cmljdH1zICV7c2VjdXJpdHlfZGVmaW5lcn1zCisgKiAle2Nvc3R9cyAle3Jv d3N9cyAle3N1cHBvcnR9cyAle3NldF9vcHRpb25zOiB9cyBBUyAle29iamZpbGV9TCwKKyAqICV7 c3ltYm9sfUwKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9DcmVhdGVGdW5jdGlvbihP aWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlDcmVhdGVGdW5jdGlvblN0bXQgKm5v ZGUgPSAoQ3JlYXRlRnVuY3Rpb25TdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7 CisJT2JqVHJlZSAgICAqdG1wX29iajsKKwlEYXR1bQkJdG1wZGF0dW07CisJY2hhcgkgICAqc291 cmNlOworCWNoYXIJICAgKnByb2JpbiA9IE5VTEw7CisJTGlzdAkgICAqcGFyYW1zOworCUxpc3QJ ICAgKmRlZmF1bHRzOworCUxpc3QJICAgKnNldHMgPSBOSUw7CisJTGlzdAkgICAqdHlwZXMgPSBO SUw7CisJTGlzdENlbGwgICAqY2VsbDsKKwlMaXN0Q2VsbCAgICpjdXJkZWY7CisJTGlzdENlbGwg ICAqdGFibGVfcGFyYW1zID0gTlVMTDsKKwlIZWFwVHVwbGUJcHJvY1R1cDsKKwlGb3JtX3BnX3By b2MgcHJvY0Zvcm07CisJSGVhcFR1cGxlCWxhbmdUdXA7CisJT2lkCQkgICAqdHlwYXJyYXk7CisJ T2lkCQkgICAqdHJmdHlwZXM7CisJRm9ybV9wZ19sYW5ndWFnZSBsYW5nRm9ybTsKKwlpbnQJCQlp OworCWludAkJCXR5cG51bTsKKwlpbnQJCQludHlwZXM7CisJaW50CQkJcGFyYW1jb3VudCA9IGxp c3RfbGVuZ3RoKG5vZGUtPnBhcmFtZXRlcnMpOworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlpc2Z1 bmN0aW9uOworCisJLyogR2V0IHRoZSBwZ19wcm9jIHR1cGxlICovCisJcHJvY1R1cCA9IFNlYXJj aFN5c0NhY2hlMShQUk9DT0lELCBvYmplY3RJZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBy b2NUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24g d2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2Mp IEdFVFNUUlVDVChwcm9jVHVwKTsKKworCS8qIEdldCB0aGUgY29ycmVzcG9uZGluZyBwZ19sYW5n dWFnZSB0dXBsZSAqLworCWxhbmdUdXAgPSBTZWFyY2hTeXNDYWNoZTEoTEFOR09JRCwgcHJvY0Zv cm0tPnByb2xhbmcpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChsYW5nVHVwKSkKKwkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGxhbmd1YWdlIHdpdGggT0lEICV1IiwKKwkJ CSBwcm9jRm9ybS0+cHJvbGFuZyk7CisJbGFuZ0Zvcm0gPSAoRm9ybV9wZ19sYW5ndWFnZSkgR0VU U1RSVUNUKGxhbmdUdXApOworCisJLyoKKwkgKiBEZXRlcm1pbmUgdXNlZnVsIHZhbHVlcyBmb3Ig cHJvc3JjIGFuZCBwcm9iaW4uICBXZSBjb3BlIHdpdGggcHJvYmluCisJICogYmVpbmcgZWl0aGVy IE5VTEwgb3IgIi0iLCBidXQgcHJvc3JjIG11c3QgaGF2ZSBhIHZhbGlkIHZhbHVlLgorCSAqLwor CXRtcGRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBST0NPSUQsIHByb2NUdXAsCisJCQkJCQkJICAg QW51bV9wZ19wcm9jX3Byb3NyYywgJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJP UiwgIm51bGwgcHJvc3JjIGluIGZ1bmN0aW9uIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCXNv dXJjZSA9IFRleHREYXR1bUdldENTdHJpbmcodG1wZGF0dW0pOworCisJLyogRGV0ZXJtaW5lIGEg dXNlZnVsIHZhbHVlIGZvciBwcm9iaW4gKi8KKwl0bXBkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQ Uk9DT0lELCBwcm9jVHVwLAorCQkJCQkJCSAgIEFudW1fcGdfcHJvY19wcm9iaW4sICZpc251bGwp OworCWlmICghaXNudWxsKQorCXsKKwkJcHJvYmluID0gVGV4dERhdHVtR2V0Q1N0cmluZyh0bXBk YXR1bSk7CisJCWlmIChwcm9iaW5bMF0gPT0gJ1wwJyB8fCBzdHJjbXAocHJvYmluLCAiLSIpID09 IDApCisJCQlwcm9iaW4gPSBOVUxMOworCX0KKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVB VEUgJXtvcl9yZXBsYWNlfXMiLCAxLAorCQkJCQkJICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmlu ZywKKwkJCQkJCSBub2RlLT5yZXBsYWNlID8gIk9SIFJFUExBQ0UiIDogIiIpOworCisJLyoKKwkg KiBUbyBjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBhcnJheSwgZXh0cmFjdCB0aGUgdHlwZSBPSURz IGZyb20gdGhlCisJICogZnVuY3Rpb24ncyBwZ19wcm9jIGVudHJ5LiAgSWYgcHJvbmFyZ3MgZXF1 YWxzIHRoZSBwYXJhbWV0ZXIgbGlzdAorCSAqIGxlbmd0aCwgdGhlcmUgYXJlIG5vIE9VVCBwYXJh bWV0ZXJzIGFuZCB0aHVzIHdlIGNhbiBleHRyYWN0IHRoZSB0eXBlCisJICogT0lEIGZyb20gcHJv YXJndHlwZXM7IG90aGVyd2lzZSB3ZSBuZWVkIHRvIGRlY29kZSBwcm9hbGxhcmd0eXBlcywgd2hp Y2gKKwkgKiBpcyBhIGJpdCBtb3JlIGludm9sdmVkLgorCSAqLworCXR5cGFycmF5ID0gcGFsbG9j KHBhcmFtY291bnQgKiBzaXplb2YoT2lkKSk7CisJaWYgKHBhcmFtY291bnQgPiBwcm9jRm9ybS0+ cHJvbmFyZ3MpCisJeworCQlEYXR1bQkJYWxsdHlwZXM7CisJCURhdHVtCSAgICp2YWx1ZXM7CisJ CWJvb2wJICAgKm51bGxzOworCQlpbnQJCQluZWxlbXM7CisKKwkJYWxsdHlwZXMgPSBTeXNDYWNo ZUdldEF0dHIoUFJPQ09JRCwgcHJvY1R1cCwKKwkJCQkJCQkJICAgQW51bV9wZ19wcm9jX3Byb2Fs bGFyZ3R5cGVzLCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJCWVsb2coRVJST1IsICJudWxs IHByb2FsbGFyZ3R5cGVzLCBtb3JlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRoYW4gYXJncyBpbiBm dW5jdGlvbiB3aXRoIE9JRCAldSIsCisJCQkJIG9iamVjdElkKTsKKwkJZGVjb25zdHJ1Y3RfYXJy YXkoRGF0dW1HZXRBcnJheVR5cGVQKGFsbHR5cGVzKSwKKwkJCQkJCSAgT0lET0lELCA0LCAndCcs ICdpJywKKwkJCQkJCSAgJnZhbHVlcywgJm51bGxzLCAmbmVsZW1zKTsKKwkJaWYgKG5lbGVtcyAh PSBwYXJhbWNvdW50KQorCQkJZWxvZyhFUlJPUiwgIm1pc21hdGNoZWQgcHJvYWxsYXJnYXR5cGVz Iik7CisJCWZvciAoaSA9IDA7IGkgPCBwYXJhbWNvdW50OyBpKyspCisJCQl0eXBhcnJheVtpXSA9 IHZhbHVlc1tpXTsKKwl9CisJZWxzZQorCXsKKwkJZm9yIChpID0gMDsgaSA8IHBhcmFtY291bnQ7 IGkrKykKKwkJCXR5cGFycmF5W2ldID0gcHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVlc1tpXTsK Kwl9CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgZGVmYXVsdCBleHByZXNzaW9ucywgd2Ug cmVhZCB0aGUgZGVwYXJzZWQgZXhwcmVzc2lvbgorCSAqIGFzIGEgbGlzdCBzbyB0aGF0IHdlIGNh biBhdHRhY2ggdGhlbSB0byBlYWNoIGFyZ3VtZW50LgorCSAqLworCXRtcGRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyKFBST0NPSUQsIHByb2NUdXAsCisJCQkJCQkJICAgQW51bV9wZ19wcm9jX3Byb2Fy Z2RlZmF1bHRzLCAmaXNudWxsKTsKKwlpZiAoIWlzbnVsbCkKKwl7CisJCWRlZmF1bHRzID0gRnVu Y3Rpb25HZXREZWZhdWx0cyhEYXR1bUdldFRleHRQKHRtcGRhdHVtKSk7CisJCWN1cmRlZiA9IGxp c3RfaGVhZChkZWZhdWx0cyk7CisJfQorCWVsc2UKKwl7CisJCWRlZmF1bHRzID0gTklMOworCQlj dXJkZWYgPSBOVUxMOworCX0KKworCS8qCisJICogTm93IGl0ZXJhdGUgb3ZlciBlYWNoIHBhcmFt ZXRlciBpbiB0aGUgcGFyc2UgdHJlZSB0byBjcmVhdGUgdGhlCisJICogcGFyYW1ldGVycyBhcnJh eS4KKwkgKi8KKwlwYXJhbXMgPSBOSUw7CisJdHlwbnVtID0gMDsKKwlmb3JlYWNoKGNlbGwsIG5v ZGUtPnBhcmFtZXRlcnMpCisJeworCQlGdW5jdGlvblBhcmFtZXRlciAqcGFyYW0gPSAoRnVuY3Rp b25QYXJhbWV0ZXIgKikgbGZpcnN0KGNlbGwpOworCQlPYmpUcmVlICAgICpwYXJhbV9vYmo7CisJ CU9ialRyZWUgICAgKmRlZmF1bHR2YWw7CisJCU9ialRyZWUgICAgKm5hbWU7CisKKwkJLyoKKwkJ ICogQSBQQVJBTV9UQUJMRSBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBlbmQgb2YgaW5wdXQgYXJn dW1lbnRzOyB0aGUKKwkJICogZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHBhcnQgb2YgdGhlIHJl dHVybiB0eXBlLiAgV2UgaWdub3JlIHRoZW0KKwkJICogaGVyZSwgYnV0IGtlZXAgdHJhY2sgb2Yg dGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGxpc3Qgc28gdGhhdCB3ZQorCQkgKiBjYW4gZWFz aWx5IHByb2R1Y2UgdGhlIHJldHVybiB0eXBlIGJlbG93LgorCQkgKi8KKwkJaWYgKHBhcmFtLT5t b2RlID09IEZVTkNfUEFSQU1fVEFCTEUpCisJCXsKKwkJCXRhYmxlX3BhcmFtcyA9IGNlbGw7CisJ CQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIFZlcmJvc2Ugc3ludGF4IGZvciBwYXJhbWF0ZXI6 ICV7bW9kZX1zICV7bmFtZX1zICV7dHlwZX1UCisJCSAqICV7ZGVmYXVsdH1zCisJCSAqLworCQlw YXJhbV9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXttb2RlfXMiLCAxLAorCQkJCQkJCQkgICJtb2Rl IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJICBwYXJhbS0+bW9kZSA9PSBGVU5DX1BBUkFNX09V VCA/ICJPVVQiIDoKKwkJCQkJCQkJICBwYXJhbS0+bW9kZSA9PSBGVU5DX1BBUkFNX0lOT1VUID8g IklOT1VUIiA6CisJCQkJCQkJCSAgcGFyYW0tPm1vZGUgPT0gRlVOQ19QQVJBTV9WQVJJQURJQyA/ ICJWQVJJQURJQyIgOgorCQkJCQkJCQkgICJJTiIpOworCisJCS8qIE9wdGlvbmFsIHdob2xlc2Fs ZSBzdXBwcmVzc2lvbiBvZiAibmFtZSIgb2NjdXJzIGhlcmUgKi8KKwkJbmFtZSA9IG5ld19vYmp0 cmVlKCIiKTsKKwkJaWYgKHBhcmFtLT5uYW1lKQorCQkJYXBwZW5kX3N0cmluZ19vYmplY3QobmFt ZSwgIiV7bmFtZX1JIiwgIm5hbWUiLCBwYXJhbS0+bmFtZSk7CisJCWVsc2UKKwkJeworCQkJYXBw ZW5kX251bGxfb2JqZWN0KG5hbWUsICIle25hbWV9SSIpOworCQkJYXBwZW5kX25vdF9wcmVzZW50 KG5hbWUpOworCQl9CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocGFyYW1fb2JqLCAiJXtuYW1l fXMiLCBuYW1lKTsKKworCQlkZWZhdWx0dmFsID0gbmV3X29ianRyZWUoIkRFRkFVTFQiKTsKKwkJ aWYgKFBvaW50ZXJJc1ZhbGlkKHBhcmFtLT5kZWZleHByKSkKKwkJeworCQkJY2hhcgkgICAqZXhw cjsKKworCQkJaWYgKGN1cmRlZiA9PSBOVUxMKQorCQkJCWVsb2coRVJST1IsICJwcm9hcmdkZWZh dWx0cyBsaXN0IHRvbyBzaG9ydCIpOworCQkJZXhwciA9IGxmaXJzdChjdXJkZWYpOworCisJCQlh cHBlbmRfc3RyaW5nX29iamVjdChkZWZhdWx0dmFsLCAiJXt2YWx1ZX1zIiwgInZhbHVlIiwgZXhw cik7CisJCQljdXJkZWYgPSBsbmV4dChkZWZhdWx0cywgY3VyZGVmKTsKKwkJfQorCQllbHNlCisJ CQlhcHBlbmRfbm90X3ByZXNlbnQoZGVmYXVsdHZhbCk7CisKKwkJYXBwZW5kX29iamVjdF9vYmpl Y3QocGFyYW1fb2JqLCAiJXt0eXBlfVQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0 eXBhcnJheVt0eXBudW0rK10sIC0xKSk7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocGFyYW1f b2JqLCAiJXtkZWZhdWx0fXMiLCBkZWZhdWx0dmFsKTsKKworCQlwYXJhbXMgPSBsYXBwZW5kKHBh cmFtcywgbmV3X29iamVjdF9vYmplY3QocGFyYW1fb2JqKSk7CisJfQorCisJdG1wX29iaiA9IG5l d19vYmp0cmVlX1ZBKCIle2lkZW50aXR5fUQiLCAxLAorCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCW9iamVjdElkKSk7CisKKwlhcHBlbmRfZm9ybWF0X3N0 cmluZyh0bXBfb2JqLCAiKCIpOworCWFwcGVuZF9hcnJheV9vYmplY3QodG1wX29iaiwgIiV7YXJn dW1lbnRzOiwgfXMiLCBwYXJhbXMpOworCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHRtcF9vYmosICIp Iik7CisKKwlpc2Z1bmN0aW9uID0gKHByb2NGb3JtLT5wcm9raW5kICE9IFBST0tJTkRfUFJPQ0VE VVJFKTsKKworCWlmIChpc2Z1bmN0aW9uKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJG VU5DVElPTiAle3NpZ25hdHVyZX1zIiwgdG1wX29iaik7CisJZWxzZQorCQlhcHBlbmRfb2JqZWN0 X29iamVjdChyZXQsICJQUk9DRURVUkUgJXtzaWduYXR1cmV9cyIsIHRtcF9vYmopOworCisJLyoK KwkgKiBBIHJldHVybiB0eXBlIGNhbiBhZG9wdCBvbmUgb2YgdHdvIGZvcm1zOiBlaXRoZXIgYSBb U0VUT0ZdIHNvbWVfdHlwZSwKKwkgKiBvciBhIFRBQkxFKGxpc3Qtb2YtdHlwZXMpLiAgV2UgY2Fu IHRlbGwgdGhlIHNlY29uZCBmb3JtIGJlY2F1c2Ugd2Ugc2F3CisJICogYSB0YWJsZSBwYXJhbSBh Ym92ZSB3aGlsZSBzY2FubmluZyB0aGUgYXJndW1lbnQgbGlzdC4KKwkgKi8KKwlpZiAodGFibGVf cGFyYW1zID09IE5VTEwpCisJeworCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIiIsIDEsCisJ CQkJCQkJCSJyZXR1cm5fZm9ybSIsIE9ialR5cGVTdHJpbmcsICJwbGFpbiIpOworCQlhcHBlbmRf c3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtzZXRvZn1zIiwgInNldG9mIiwKKwkJCQkJCQkgcHJv Y0Zvcm0tPnByb3JldHNldCA/ICJTRVRPRiIgOiAiIik7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHRtcF9vYmosICIle3JldHR5cGV9VCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKHBy b2NGb3JtLT5wcm9yZXR0eXBlLCAtMSkpOworCX0KKwllbHNlCisJeworCQlMaXN0CSAgICpyZXR0 eXBlcyA9IE5JTDsKKwkJT2JqVHJlZSAgICAqcGFyYW1fb2JqOworCisJCXRtcF9vYmogPSBuZXdf b2JqdHJlZV9WQSgiVEFCTEUiLCAxLAorCQkJCQkJCQkicmV0dXJuX2Zvcm0iLCBPYmpUeXBlU3Ry aW5nLCAidGFibGUiKTsKKwkJZm9yICg7IHRhYmxlX3BhcmFtcyAhPSBOVUxMOyB0YWJsZV9wYXJh bXMgPSBsbmV4dChub2RlLT5wYXJhbWV0ZXJzLCB0YWJsZV9wYXJhbXMpKQorCQl7CisJCQlGdW5j dGlvblBhcmFtZXRlciAqcGFyYW0gPSBsZmlyc3QodGFibGVfcGFyYW1zKTsKKworCQkJcGFyYW1f b2JqID0gbmV3X29ianRyZWVfVkEoIiV7bmFtZX1JICV7dHlwZX1UIiwgMiwKKwkJCQkJCQkJCSAg Im5hbWUiLCBPYmpUeXBlU3RyaW5nLCBwYXJhbS0+bmFtZSwKKwkJCQkJCQkJCSAgInR5cGUiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJICBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBhcnJheVt0 eXBudW0rK10sIC0xKSk7CisJCQlyZXR0eXBlcyA9IGxhcHBlbmQocmV0dHlwZXMsIG5ld19vYmpl Y3Rfb2JqZWN0KHBhcmFtX29iaikpOworCQl9CisKKwkJYXBwZW5kX2FycmF5X29iamVjdCh0bXBf b2JqLCAiKCV7cmV0dHlwZXM6LCB9cykiLCByZXR0eXBlcyk7CisJfQorCisJaWYgKGlzZnVuY3Rp b24pCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIlJFVFVSTlMgJXtyZXR1cm5fdHlwZX1z IiwgdG1wX29iaik7CisKKwkvKiBUUkFOU0ZPUk0gRk9SIFRZUEUgKi8KKwl0bXBfb2JqID0gbmV3 X29ianRyZWUoIlRSQU5TRk9STSIpOworCisJbnR5cGVzID0gZ2V0X2Z1bmNfdHJmdHlwZXMocHJv Y1R1cCwgJnRyZnR5cGVzKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnR5cGVzOyBpKyspCisJeworCQl0 bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZPUiBUWVBFICV7dHlwZX1UIiwgMSwKKwkJCQkJCQkJ InR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfdHlwZSh0cmZ0 eXBlc1tpXSwgLTEpKTsKKwkJdHlwZXMgPSBsYXBwZW5kKHR5cGVzLCB0bXBfb2JqKTsKKwl9CisK KwlpZiAodHlwZXMpCisJCWFwcGVuZF9hcnJheV9vYmplY3QodG1wX29iaiwgIiV7Zm9yX3R5cGU6 LCB9cyIsIHR5cGVzKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwor CWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dHJhbnNmb3JtX3R5cGV9cyIsIHRtcF9vYmop OworCisJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiTEFOR1VBR0UgJXtsYW5ndWFnZX1JIiwg Imxhbmd1YWdlIiwKKwkJCQkJCSBOYW1lU3RyKGxhbmdGb3JtLT5sYW5uYW1lKSk7CisKKwlpZiAo aXNmdW5jdGlvbikKKwl7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7d2luZG93fXMi LCAid2luZG93IiwKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb2tpbmQgPT0gUFJPS0lORF9XSU5ET1cg PyAiV0lORE9XIiA6ICIiKTsKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXt2b2xhdGls aXR5fXMiLCAidm9sYXRpbGl0eSIsCisJCQkJCQkJIHByb2NGb3JtLT5wcm92b2xhdGlsZSA9PSBQ Uk9WT0xBVElMRV9WT0xBVElMRSA/CisJCQkJCQkJICJWT0xBVElMRSIgOgorCQkJCQkJCSBwcm9j Rm9ybS0+cHJvdm9sYXRpbGUgPT0gUFJPVk9MQVRJTEVfU1RBQkxFID8KKwkJCQkJCQkgIlNUQUJM RSIgOiAiSU1NVVRBQkxFIik7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtwYXJh bGxlbF9zYWZldHl9cyIsCisJCQkJCQkJICJwYXJhbGxlbF9zYWZldHkiLAorCQkJCQkJCSBwcm9j Rm9ybS0+cHJvcGFyYWxsZWwgPT0gUFJPUEFSQUxMRUxfU0FGRSA/CisJCQkJCQkJICJQQVJBTExF TCBTQUZFIiA6CisJCQkJCQkJIHByb2NGb3JtLT5wcm9wYXJhbGxlbCA9PSBQUk9QQVJBTExFTF9S RVNUUklDVEVEID8KKwkJCQkJCQkgIlBBUkFMTEVMIFJFU1RSSUNURUQiIDogIlBBUkFMTEVMIFVO U0FGRSIpOworCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7bGVha3Byb29mfXMiLCAi bGVha3Byb29mIiwKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb2xlYWtwcm9vZiA/ICJMRUFLUFJPT0Yi IDogIiIpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle3N0cmljdH1zIiwgInN0cmlj dCIsCisJCQkJCQkJIHByb2NGb3JtLT5wcm9pc3N0cmljdCA/CisJCQkJCQkJICJSRVRVUk5TIE5V TEwgT04gTlVMTCBJTlBVVCIgOgorCQkJCQkJCSAiQ0FMTEVEIE9OIE5VTEwgSU5QVVQiKTsKKwor CQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle3NlY3VyaXR5X2RlZmluZXJ9cyIsCisJCQkJ CQkJICJzZWN1cml0eV9kZWZpbmVyIiwKKwkJCQkJCQkgcHJvY0Zvcm0tPnByb3NlY2RlZiA/CisJ CQkJCQkJICJTRUNVUklUWSBERUZJTkVSIiA6ICJTRUNVUklUWSBJTlZPS0VSIik7CisKKwkJYXBw ZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjb3N0fXMiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9W QSgiQ09TVCAle2Nvc3R9biIsIDEsCisJCQkJCQkJCQkJCSJjb3N0IiwgT2JqVHlwZUZsb2F0LAor CQkJCQkJCQkJCQlwcm9jRm9ybS0+cHJvY29zdCkpOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZSgiUk9XUyIpOworCQlpZiAocHJvY0Zvcm0tPnByb3Jvd3MgPT0gMCkKKwkJCWFwcGVuZF9ub3Rf cHJlc2VudCh0bXBfb2JqKTsKKwkJZWxzZQorCQkJYXBwZW5kX2Zsb2F0X29iamVjdCh0bXBfb2Jq LCAiJXtyb3dzfW4iLCBwcm9jRm9ybS0+cHJvcm93cyk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0 KHJldCwgIiV7cm93c31zIiwgdG1wX29iaik7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJT VVBQT1JUICV7bmFtZX1zIik7CisJCWlmIChwcm9jRm9ybS0+cHJvc3VwcG9ydCkKKwkJeworCQkJ T2lkCQkJYXJndHlwZXNbXSA9IHsgSU5URVJOQUxPSUQgfTsKKworCQkJLyoKKwkJCSAqIFdlIHNo b3VsZCBxdWFsaWZ5IHRoZSBzdXBwb3J0IGZ1bmN0aW9uJ3MgbmFtZSBpZiBpdCB3b3VsZG4ndCBi ZQorCQkJICogcmVzb2x2ZWQgYnkgbG9va3VwIGluIHRoZSBjdXJyZW50IHNlYXJjaCBwYXRoLgor CQkJICovCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtuYW1lfXMiLCAibmFt ZSIsCisJCQkJCQkJCSBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKHByb2NGb3JtLT5wcm9zdXBwb3J0 LCAxLAorCQkJCQkJCQkJCQkJCQlOSUwsIGFyZ3R5cGVzLAorCQkJCQkJCQkJCQkJCQlmYWxzZSwg TlVMTCwKKwkJCQkJCQkJCQkJCQkJRVhQUl9LSU5EX05PTkUpKTsKKwkJfQorCQllbHNlCisJCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0 LCAiJXtzdXBwb3J0fXMiLCB0bXBfb2JqKTsKKwl9CisKKwlmb3JlYWNoKGNlbGwsIG5vZGUtPm9w dGlvbnMpCisJeworCQlEZWZFbGVtICAgICpkZWZlbCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxs KTsKKworCQlpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAic2V0IikgPT0gMCkKKwkJeworCQkJ VmFyaWFibGVTZXRTdG10ICpzc3RtdCA9IChWYXJpYWJsZVNldFN0bXQgKikgZGVmZWwtPmFyZzsK KwkJCWNoYXIJICAgKnZhbHVlID0gRXh0cmFjdFNldFZhcmlhYmxlQXJncyhzc3RtdCk7CisKKwkJ CXRtcF9vYmogPSBkZXBhcnNlX0Z1bmN0aW9uU2V0KHNzdG10LT5raW5kLCBzc3RtdC0+bmFtZSwg dmFsdWUpOworCQkJc2V0cyA9IGxhcHBlbmQoc2V0cywgbmV3X29iamVjdF9vYmplY3QodG1wX29i aikpOworCQl9CisJfQorCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtzZXRfb3B0aW9uczog fXMiLCBzZXRzKTsKKworCS8qIEFkZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiAqLworCSh2b2lk KSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY1R1cCwgQW51bV9wZ19wcm9jX3Byb3NxbGJv ZHksICZpc251bGwpOworCWlmIChwcm9jRm9ybS0+cHJvbGFuZyA9PSBTUUxsYW5ndWFnZUlkICYm ICFpc251bGwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBidWY7CisKKwkJaW5pdFN0cmluZ0luZm8o JmJ1Zik7CisJCXByaW50X2Z1bmN0aW9uX3NxbGJvZHkoJmJ1ZiwgcHJvY1R1cCk7CisKKwkJYXBw ZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtkZWZpbml0aW9ufXMiLCAiZGVmaW5pdGlvbiIsCisJ CQkJCQkJIGJ1Zi5kYXRhKTsKKwl9CisJZWxzZSBpZiAocHJvYmluID09IE5VTEwpCisJCWFwcGVu ZF9zdHJpbmdfb2JqZWN0KHJldCwgIkFTICV7ZGVmaW5pdGlvbn1MIiwgImRlZmluaXRpb24iLCBz b3VyY2UpOworCWVsc2UKKwl7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkFTICV7b2Jq ZmlsZX1MIiwgIm9iamZpbGUiLCBwcm9iaW4pOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQs ICIsICV7c3ltYm9sfUwiLCAic3ltYm9sIiwgc291cmNlKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2Fj aGUobGFuZ1R1cCk7CisJUmVsZWFzZVN5c0NhY2hlKHByb2NUdXApOworCisJcmV0dXJuIHJldDsK K30KKworLyoKKyAqIERlcGFyc2UgYSBDUkVBVEUgT1BFUkFUT1IgQ0xBU1MgY29tbWFuZC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIE9QRVJBVE9SIENMQVNTICV7aWRlbnRpdHl9 RCAle2RlZmF1bHR9cyBGT1IgVFlQRSAle3R5cGV9VCBVU0lORworICogJXthbW5hbWV9SSAle29w ZmFtaWx5fXMgQVMgJXtpdGVtczosIH1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2Vf Q3JlYXRlT3BDbGFzc1N0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQoreworCU9pZAkJCW9wY29p ZCA9IGNtZC0+ZC5jcmVhdGVvcGMuYWRkcmVzcy5vYmplY3RJZDsKKwlIZWFwVHVwbGUJb3BjVHVw OworCUhlYXBUdXBsZQlvcGZUdXA7CisJRm9ybV9wZ19vcGZhbWlseSBvcGZGb3JtOworCUZvcm1f cGdfb3BjbGFzcyBvcGNGb3JtOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBf b2JqOworCUxpc3QJICAgKmxpc3Q7CisJTGlzdENlbGwgICAqY2VsbDsKKworCS8qIERvbid0IGRl cGFyc2UgU1FMIGNvbW1hbmRzIGdlbmVyYXRlZCB3aGlsZSBjcmVhdGluZyBleHRlbnNpb24gKi8K KwlpZiAoY21kLT5pbl9leHRlbnNpb24pCisJCXJldHVybiBOVUxMOworCisJb3BjVHVwID0gU2Vh cmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNvaWQpKTsKKwlpZiAoIUhl YXBUdXBsZUlzVmFsaWQob3BjVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIG9wY2xhc3Mgd2l0aCBPSUQgJXUiLCBvcGNvaWQpOworCW9wY0Zvcm0gPSAoRm9ybV9w Z19vcGNsYXNzKSBHRVRTVFJVQ1Qob3BjVHVwKTsKKworCW9wZlR1cCA9IFNlYXJjaFN5c0NhY2hl MShPUEZBTUlMWU9JRCwgb3BjRm9ybS0+b3BjZmFtaWx5KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQob3BmVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJh dG9yIGZhbWlseSB3aXRoIE9JRCAldSIsIG9wY0Zvcm0tPm9wY2ZhbWlseSk7CisJb3BmRm9ybSA9 IChGb3JtX3BnX29wZmFtaWx5KSBHRVRTVFJVQ1Qob3BmVHVwKTsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCJDUkVBVEUgT1BFUkFUT1IgQ0xBU1MgJXtpZGVudGl0eX1EICV7ZGVmYXVsdH1zIEZP UiBUWVBFICV7dHlwZX1UIFVTSU5HICV7YW1uYW1lfUkiLCA0LAorCQkJCQkJICJpZGVudGl0eSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wY0Zvcm0t Pm9wY25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihvcGNGb3JtLT5vcGNuYW1lKSks CisJCQkJCQkgImRlZmF1bHQiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG9wY0Zvcm0tPm9wY2Rl ZmF1bHQgPyAiREVGQVVMVCIgOiAiIiwKKwkJCQkJCSAidHlwZSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUob3BjRm9ybS0+b3BjaW50eXBlLCAtMSksCisJCQkJ CQkgImFtbmFtZSIsIE9ialR5cGVTdHJpbmcsIGdldF9hbV9uYW1lKG9wY0Zvcm0tPm9wY21ldGhv ZCkpOworCisJLyoKKwkgKiBBZGQgdGhlIEZBTUlMWSBjbGF1c2UsIGJ1dCBpZiBpdCBoYXMgdGhl IHNhbWUgbmFtZSBhbmQgbmFtZXNwYWNlIGFzIHRoZQorCSAqIG9wY2xhc3MsIHRoZW4gaGF2ZSBp dCBleHBhbmQgdG8gZW1wdHkgYmVjYXVzZSBpdCB3b3VsZCBjYXVzZSBhIGZhaWx1cmUKKwkgKiBp ZiB0aGUgb3BmYW1pbHkgd2FzIGNyZWF0ZWQgaW50ZXJuYWxseS4KKwkgKi8KKwl0bXBfb2JqID0g bmV3X29ianRyZWVfVkEoIkZBTUlMWSAle29wZmFtaWx5fUQiLCAxLAorCQkJCQkJCSJvcGZhbWls eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wZkZv cm0tPm9wZm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkgTmFtZVN0cihvcGZGb3JtLT5vcGZuYW1l KSkpOworCisJaWYgKHN0cmNtcChOYW1lU3RyKG9wZkZvcm0tPm9wZm5hbWUpLCBOYW1lU3RyKG9w Y0Zvcm0tPm9wY25hbWUpKSA9PSAwICYmCisJCW9wZkZvcm0tPm9wZm5hbWVzcGFjZSA9PSBvcGNG b3JtLT5vcGNuYW1lc3BhY2UpCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKworCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7b3BmYW1pbHl9cyIsIHRtcF9vYmopOworCisJLyoK KwkgKiBBZGQgdGhlIGluaXRpYWwgaXRlbSBsaXN0LiAgTm90ZSB3ZSBhbHdheXMgYWRkIHRoZSBT VE9SQUdFIGNsYXVzZSwgZXZlbgorCSAqIHdoZW4gaXQgaXMgaW1wbGljaXQgaW4gdGhlIG9yaWdp bmFsIGNvbW1hbmQuCisJICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJTVE9SQUdFIik7CisJ YXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7dHlwZX1UIiwKKwkJCQkJCSBuZXdfb2Jq dHJlZV9mb3JfdHlwZShPaWRJc1ZhbGlkKG9wY0Zvcm0tPm9wY2tleXR5cGUpID8KKwkJCQkJCQkJ CQkJICBvcGNGb3JtLT5vcGNrZXl0eXBlIDogb3BjRm9ybS0+b3BjaW50eXBlLAorCQkJCQkJCQkJ CQkgIC0xKSk7CisJbGlzdCA9IGxpc3RfbWFrZTEobmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCisJLyogQWRkIHRoZSBkZWNsYXJlZCBvcGVyYXRvcnMgKi8KKwlmb3JlYWNoKGNlbGwsIGNt ZC0+ZC5jcmVhdGVvcGMub3BlcmF0b3JzKQorCXsKKwkJT3BGYW1pbHlNZW1iZXIgKm9wZXIgPSBs Zmlyc3QoY2VsbCk7CisKKwkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJPUEVSQVRPUiAle251 bX1uICV7b3BlcmF0b3J9Tygle2x0eXBlfVQsICV7cnR5cGV9VCkiLCA0LAorCQkJCQkJCQkibnVt IiwgT2JqVHlwZUludGVnZXIsIG9wZXItPm51bWJlciwKKwkJCQkJCQkJIm9wZXJhdG9yIiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKE9wZXJhdG9y UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCW9wZXItPm9iamVjdCksCisJCQkJCQkJCSJsdHlw ZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl90eXBlKG9wZXItPmxl ZnR0eXBlLCAtMSksCisJCQkJCQkJCSJydHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCW5l d19vYmp0cmVlX2Zvcl90eXBlKG9wZXItPnJpZ2h0dHlwZSwgLTEpKTsKKworCQkvKiBBZGQgdGhl IEZPUiBTRUFSQ0ggLyBGT1IgT1JERVIgQlkgY2xhdXNlICovCisJCWlmIChvcGVyLT5zb3J0ZmFt aWx5ID09IEludmFsaWRPaWQpCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtw dXJwb3NlfXMiLCAicHVycG9zZSIsCisJCQkJCQkJCSAiRk9SIFNFQVJDSCIpOworCQllbHNlCisJ CXsKKwkJCU9ialRyZWUgICAgKnRtcF9vYmoyOworCisJCQl0bXBfb2JqMiA9IG5ld19vYmp0cmVl KCJGT1IgT1JERVIgQlkgJXtvcGZhbWlseX1EIik7CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0 bXBfb2JqMiwgIm9wZmFtaWx5IiwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChPcGVyYXRvckZhbWlseVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkgb3Blci0+c29ydGZh bWlseSkpOworCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7cHVycG9zZX1zIiwg dG1wX29iajIpOworCQl9CisKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCX0KKworCS8qIEFkZCB0aGUgZGVjbGFyZWQgc3VwcG9ydCBmdW5jdGlv bnMgKi8KKwlmb3JlYWNoKGNlbGwsIGNtZC0+ZC5jcmVhdGVvcGMucHJvY2VkdXJlcykKKwl7CisJ CU9wRmFtaWx5TWVtYmVyICpwcm9jID0gbGZpcnN0KGNlbGwpOworCQlIZWFwVHVwbGUJcHJvY1R1 cDsKKwkJRm9ybV9wZ19wcm9jIHByb2NGb3JtOworCQlPaWQJCSAgICpwcm9hcmd0eXBlczsKKwkJ TGlzdAkgICAqYXJnbGlzdCA9IE5JTDsKKwkJaW50CQkJaTsKKworCQlwcm9jVHVwID0gU2VhcmNo U3lzQ2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0ocHJvYy0+b2JqZWN0KSk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBwcm9jZWR1cmUgd2l0aCBPSUQgJXUiLAorCQkJCSBwcm9jLT5vYmplY3Qp OworCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKworCQl0 bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkZVTkNUSU9OICV7bnVtfW4gKCV7bHR5cGV9VCwgJXty dHlwZX1UKSAle2Z1bmN0aW9ufUQiLCA0LAorCQkJCQkJCQkibnVtIiwgT2JqVHlwZUludGVnZXIs IHByb2MtPm51bWJlciwKKwkJCQkJCQkJImx0eXBlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJ bmV3X29ianRyZWVfZm9yX3R5cGUocHJvYy0+bGVmdHR5cGUsIC0xKSwKKwkJCQkJCQkJInJ0eXBl IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3R5cGUocHJvYy0+cmln aHR0eXBlLCAtMSksCisJCQkJCQkJCSJmdW5jdGlvbiIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJ CW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShwcm9jRm9ybS0+cHJvbmFtZXNwYWNlLAorCQkJCQkJ CQkJCQkJCQkgTmFtZVN0cihwcm9jRm9ybS0+cHJvbmFtZSkpKTsKKworCQlwcm9hcmd0eXBlcyA9 IHByb2NGb3JtLT5wcm9hcmd0eXBlcy52YWx1ZXM7CisJCWZvciAoaSA9IDA7IGkgPCBwcm9jRm9y bS0+cHJvbmFyZ3M7IGkrKykKKwkJeworCQkJT2JqVHJlZSAgICAqYXJnOworCisJCQlhcmcgPSBu ZXdfb2JqdHJlZV9mb3JfdHlwZShwcm9hcmd0eXBlc1tpXSwgLTEpOworCQkJYXJnbGlzdCA9IGxh cHBlbmQoYXJnbGlzdCwgbmV3X29iamVjdF9vYmplY3QoYXJnKSk7CisJCX0KKworCQlhcHBlbmRf Zm9ybWF0X3N0cmluZyh0bXBfb2JqLCAiKCIpOworCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcF9v YmosICIle2FyZ3R5cGVzOiwgfVQiLCBhcmdsaXN0KTsKKwkJYXBwZW5kX2Zvcm1hdF9zdHJpbmco dG1wX29iaiwgIikiKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUocHJvY1R1cCk7CisKKwkJbGlzdCA9 IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCX0KKworCWFwcGVu ZF9hcnJheV9vYmplY3QocmV0LCAiQVMgJXtpdGVtczosIH1zIiwgbGlzdCk7CisKKwlSZWxlYXNl U3lzQ2FjaGUob3BmVHVwKTsKKwlSZWxlYXNlU3lzQ2FjaGUob3BjVHVwKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlT3BGYW1pbHlTdG10IChDUkVBVEUgT1BF UkFUT1IgRkFNSUxZKQorICoKKyAqIEdpdmVuIGEgb3BlcmF0b3IgZmFtaWx5IE9JRCBhbmQgdGhl IHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVz ZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBD UkVBVEUgT1BFUkFUT1IgRkFNSUxZICV7aWRlbnRpdHl9RCBVU0lORyAle2FtbmFtZX1JCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlT3BGYW1pbHkoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUpCit7CisJSGVhcFR1cGxlCW9wZlR1cDsKKwlIZWFwVHVwbGUJYW1UdXA7 CisJRm9ybV9wZ19vcGZhbWlseSBvcGZGb3JtOworCUZvcm1fcGdfYW0JYW1Gb3JtOworCU9ialRy ZWUgICAgKnJldDsKKworCW9wZlR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEZBTUlMWU9JRCwgT2Jq ZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvcGZUdXAp KQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BlcmF0b3IgZmFtaWx5 IHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCW9wZkZvcm0gPSAoRm9ybV9wZ19vcGZhbWlseSkg R0VUU1RSVUNUKG9wZlR1cCk7CisKKwlhbVR1cCA9IFNlYXJjaFN5c0NhY2hlMShBTU9JRCwgT2Jq ZWN0SWRHZXREYXR1bShvcGZGb3JtLT5vcGZtZXRob2QpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoYW1UdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgYWNjZXNz IG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgb3BmRm9ybS0+b3BmbWV0aG9kKTsKKwlhbUZvcm0g PSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGFtVHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZB KCJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZICV7aWRlbnRpdHl9RCBVU0lORyAle2FtbmFtZX1JIiwg MiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZShvcGZGb3JtLT5vcGZuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVT dHIob3BmRm9ybS0+b3BmbmFtZSkpLAorCQkJCQkJICJhbW5hbWUiLCBPYmpUeXBlU3RyaW5nLCBO YW1lU3RyKGFtRm9ybS0+YW1uYW1lKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUoYW1UdXApOworCVJl bGVhc2VTeXNDYWNoZShvcGZUdXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEFkZCBj b21tb24gY2xhdXNlcyB0byBDcmVhdGVQb2xpY3kgb3IgQWx0ZXJQb2xpY3kgZGVwYXJzZSBvYmpl Y3RzLgorICovCitzdGF0aWMgdm9pZAorYWRkX3BvbGljeV9jbGF1c2VzKE9ialRyZWUgKnJldCwg T2lkIHBvbGljeU9pZCwgTGlzdCAqcm9sZXMsIGJvb2wgZG9fcXVhbCwKKwkJCQkgICBib29sIGRv X3dpdGhfY2hlY2spCit7CisJUmVsYXRpb24JcG9sUmVsID0gdGFibGVfb3BlbihQb2xpY3lSZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCUhlYXBUdXBsZQlwb2xUdXAgPSBnZXRfY2F0YWxv Z19vYmplY3RfYnlfb2lkKHBvbFJlbCwgQW51bV9wZ19wb2xpY3lfb2lkLCBwb2xpY3lPaWQpOwor CUZvcm1fcGdfcG9saWN5IHBvbEZvcm07CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocG9sVHVw KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBvbGljeSB3aXRoIE9J RCAldSIsIHBvbGljeU9pZCk7CisKKwlwb2xGb3JtID0gKEZvcm1fcGdfcG9saWN5KSBHRVRTVFJV Q1QocG9sVHVwKTsKKworCS8qIEFkZCB0aGUgIk9OIHRhYmxlIiBjbGF1c2UgKi8KKwlhcHBlbmRf b2JqZWN0X29iamVjdChyZXQsICJPTiAle3RhYmxlfUQiLAorCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHBvbEZvcm0t PnBvbHJlbGlkKSk7CisKKwkvKgorCSAqIEFkZCB0aGUgIlRPIHJvbGUiIGNsYXVzZSwgaWYgYW55 LiAgSW4gdGhlIENSRUFURSBjYXNlLCBpdCBhbHdheXMKKwkgKiBjb250YWlucyBhdCBsZWFzdCBQ VUJMSUMsIGJ1dCBpbiB0aGUgQUxURVIgY2FzZSBpdCBtaWdodCBiZSBlbXB0eS4KKwkgKi8KKwlp ZiAocm9sZXMpCisJeworCQlMaXN0CSAgICpsaXN0ID0gTklMOworCQlMaXN0Q2VsbCAgICpjZWxs OworCisJCWZvcmVhY2goY2VsbCwgcm9sZXMpCisJCXsKKwkJCVJvbGVTcGVjICAgKnNwZWMgPSAo Um9sZVNwZWMgKikgbGZpcnN0KGNlbGwpOworCisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LAorCQkJ CQkJICAgbmV3X29iamVjdF9vYmplY3QobmV3X29ianRyZWVfZm9yX3JvbGVzcGVjKHNwZWMpKSk7 CisJCX0KKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICJUTyAle3JvbGU6LCB9UiIsIGxpc3Qp OworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJLyogQWRkIHRoZSBV U0lORyBjbGF1c2UsIGlmIGFueSAqLworCWlmIChkb19xdWFsKQorCXsKKwkJRGF0dW0JCWRlcGFy c2VkOworCQlEYXR1bQkJc3RvcmVkZXhwcjsKKwkJYm9vbAkJaXNudWxsOworCisJCXN0b3JlZGV4 cHIgPSBoZWFwX2dldGF0dHIocG9sVHVwLCBBbnVtX3BnX3BvbGljeV9wb2xxdWFsLAorCQkJCQkJ CQkgIFJlbGF0aW9uR2V0RGVzY3IocG9sUmVsKSwgJmlzbnVsbCk7CisJCWlmIChpc251bGwpCisJ CQllbG9nKEVSUk9SLCAibnVsbCBwb2xxdWFsIGV4cHJlc3Npb24gaW4gcG9saWN5ICV1IiwgcG9s aWN5T2lkKTsKKwkJZGVwYXJzZWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwyKHBnX2dldF9leHByLCBz dG9yZWRleHByLCBwb2xGb3JtLT5wb2xyZWxpZCk7CisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJl dCwgIlVTSU5HICgle2V4cHJlc3Npb259cykiLCAiZXhwcmVzc2lvbiIsCisJCQkJCQkJIFRleHRE YXR1bUdldENTdHJpbmcoZGVwYXJzZWQpKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQocmV0KTsKKworCS8qIEFkZCB0aGUgV0lUSCBDSEVDSyBjbGF1c2UsIGlmIGFueSAqLworCWlm IChkb193aXRoX2NoZWNrKQorCXsKKwkJRGF0dW0JCWRlcGFyc2VkOworCQlEYXR1bQkJc3RvcmVk ZXhwcjsKKwkJYm9vbAkJaXNudWxsOworCisJCXN0b3JlZGV4cHIgPSBoZWFwX2dldGF0dHIocG9s VHVwLCBBbnVtX3BnX3BvbGljeV9wb2x3aXRoY2hlY2ssCisJCQkJCQkJCSAgUmVsYXRpb25HZXRE ZXNjcihwb2xSZWwpLCAmaXNudWxsKTsKKwkJaWYgKGlzbnVsbCkKKwkJCWVsb2coRVJST1IsICJu dWxsIHBvbHdpdGhjaGVjayBleHByZXNzaW9uIGluIHBvbGljeSAldSIsIHBvbGljeU9pZCk7CisJ CWRlcGFyc2VkID0gRGlyZWN0RnVuY3Rpb25DYWxsMihwZ19nZXRfZXhwciwgc3RvcmVkZXhwciwg cG9sRm9ybS0+cG9scmVsaWQpOworCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJXSVRIIENI RUNLICgle2V4cHJlc3Npb259cykiLAorCQkJCQkJCSAiZXhwcmVzc2lvbiIsIFRleHREYXR1bUdl dENTdHJpbmcoZGVwYXJzZWQpKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQocmV0 KTsKKworCXJlbGF0aW9uX2Nsb3NlKHBvbFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKK30KKworLyoK KyAqIERlcGFyc2UgYSBDcmVhdGVQb2xpY3lTdG10IChDUkVBVEUgUE9MSUNZKQorICoKKyAqIEdp dmVuIGEgcG9saWN5IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1 cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgUE9MSUNZICV7aWRlbnRpdHl9SQorICovCitz dGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZVBvbGljeVN0bXQoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlUG9saWN5U3RtdCAqbm9kZSA9IChDcmVhdGVQb2xp Y3lTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFIFBPTElDWSAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0 eSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnBvbGljeV9uYW1lKTsKKworCS8qIEFkZCB0aGUgcmVz dCBvZiB0aGUgc3R1ZmYgKi8KKwlhZGRfcG9saWN5X2NsYXVzZXMocmV0LCBvYmplY3RJZCwgbm9k ZS0+cm9sZXMsIG5vZGUtPnF1YWwgIT0gTlVMTCwKKwkJCQkJICAgbm9kZS0+d2l0aF9jaGVjayAh PSBOVUxMKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQWx0ZXJQb2xp Y3lTdG10IChBTFRFUiBQT0xJQ1kpCisgKgorICogR2l2ZW4gYSBwb2xpY3kgT0lEIGFuZCB0aGUg cGFyc2UgdHJlZSBvZiB0aGUgQUxURVIgUE9MSUNZIGNvbW1hbmQsIHJldHVybgorICogYW4gT2Jq VHJlZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50 YXgKKyAqIEFMVEVSIFBPTElDWSAle2lkZW50aXR5fUkKKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9BbHRlclBvbGljeVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7 CisJQWx0ZXJQb2xpY3lTdG10ICpub2RlID0gKEFsdGVyUG9saWN5U3RtdCAqKSBwYXJzZXRyZWU7 CisJT2JqVHJlZSAgICAqcmV0OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFBPTElD WSAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIG5v ZGUtPnBvbGljeV9uYW1lKTsKKworCS8qIEFkZCB0aGUgcmVzdCBvZiB0aGUgc3R1ZmYgKi8KKwlh ZGRfcG9saWN5X2NsYXVzZXMocmV0LCBvYmplY3RJZCwgbm9kZS0+cm9sZXMsIG5vZGUtPnF1YWwg IT0gTlVMTCwKKwkJCQkJICAgbm9kZS0+d2l0aF9jaGVjayAhPSBOVUxMKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlU2NoZW1hU3RtdC4KKyAqCisgKiBHaXZl biBhIHNjaGVtYSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJu IGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisg KiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFNDSEVNQSAle2lmX25vdF9leGlzdHN9cyAle25h bWV9SSBBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXphdGlvbn1zCisqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9DcmVhdGVTY2hlbWFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVl KQoreworCUNyZWF0ZVNjaGVtYVN0bXQgKm5vZGUgPSAoQ3JlYXRlU2NoZW1hU3RtdCAqKSBwYXJz ZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKmF1dGg7CisKKwlyZXQgPSBu ZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFNDSEVNQSAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSIs IDIsCisJCQkJCQkgImlmX25vdF9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUt PmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVYSVNUUyIgOiAiIiwKKwkJCQkJCSAibmFtZSIsIE9i alR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+c2NoZW1hbmFtZSA/IG5vZGUtPnNjaGVtYW5hbWUg OiAiIik7CisKKwlhdXRoID0gbmV3X29ianRyZWUoIkFVVEhPUklaQVRJT04iKTsKKwlpZiAobm9k ZS0+YXV0aHJvbGUpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGF1dGgsICIle2F1dGhvcml6YXRp b25fcm9sZX1JIiwKKwkJCQkJCQkgImF1dGhvcml6YXRpb25fcm9sZSIsCisJCQkJCQkJIGdldF9y b2xlc3BlY19uYW1lKG5vZGUtPmF1dGhyb2xlKSk7CisJZWxzZQorCXsKKwkJYXBwZW5kX251bGxf b2JqZWN0KGF1dGgsICIle2F1dGhvcml6YXRpb25fcm9sZX1JIik7CisJCWFwcGVuZF9ub3RfcHJl c2VudChhdXRoKTsKKwl9CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXthdXRob3JpemF0 aW9ufXMiLCBhdXRoKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGRl ZmF1bHQgdmFsdWUgb2YgYSBkb21haW4uCisgKi8KK3N0YXRpYyBjaGFyICoKK0RvbWFpbkdldERl ZmF1bHQoSGVhcFR1cGxlIGRvbVR1cCwgYm9vbCBtaXNzaW5nX29rKQoreworCURhdHVtCQlkZWY7 CisJTm9kZQkgICAqZGVmdmFsOworCWNoYXIJICAgKmRlZnN0cjsKKwlib29sCQlpc251bGw7CisK KwlkZWYgPSBTeXNDYWNoZUdldEF0dHIoVFlQRU9JRCwgZG9tVHVwLCBBbnVtX3BnX3R5cGVfdHlw ZGVmYXVsdGJpbiwKKwkJCQkJCSAgJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwl7CisJCWlmICgh bWlzc2luZ19vaykKKwkJCWVsb2coRVJST1IsICJkb21haW4gXCIlc1wiIGRvZXMgbm90IGhhdmUg YSBkZWZhdWx0IHZhbHVlIiwKKwkJCQlOYW1lU3RyKCgoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1Qo ZG9tVHVwKSktPnR5cG5hbWUpKTsKKwkJZWxzZQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJZGVm dmFsID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGVmKSk7CisJZGVmc3RyID0g ZGVwYXJzZV9leHByZXNzaW9uKGRlZnZhbCwgTlVMTCAvKiBkcGNvbnRleHQ/ICovICwKKwkJCQkJ CQkJZmFsc2UsIGZhbHNlKTsKKworCXJldHVybiBkZWZzdHI7Cit9CisKKy8qCisgKiBEZXBhcnNl IGEgQWx0ZXJEb21haW5TdG10LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBET01B SU4gJXtpZGVudGl0eX1EIERST1AgREVGQVVMVAorICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lk ZW50aXR5fUQgU0VUIERFRkFVTFQgJXtkZWZhdWx0fXMKKyAqIE9SCisgKiBBTFRFUiBET01BSU4g JXtpZGVudGl0eX1EIERST1AgTk9UIE5VTEwKKyAqIE9SCisgKiBBTFRFUiBET01BSU4gJXtpZGVu dGl0eX1EIFNFVCBOT1QgTlVMTAorICogT1IKKyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQg QUREIENPTlNUUkFJTlQgJXtjb25zdHJhaW50X25hbWV9cyAle2RlZmluaXRpb259cworICogT1IK KyAqIEFMVEVSIERPTUFJTiAle2lkZW50aXR5fUQgRFJPUCBDT05TVFJBSU5UIElGIEVYSVNUUyAl e2NvbnN0cmFpbnRfbmFtZX1zICV7Y2FzY2FkZX1zCisgKiBPUgorICogQUxURVIgRE9NQUlOICV7 aWRlbnRpdHl9RCBWQUxJREFURSBDT05TVFJBSU5UICV7Y29uc3RyYWludF9uYW1lfXMKKyAqLwor c3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckRvbWFpblN0bXQoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUsCisJCQkJCQlPYmplY3RBZGRyZXNzIGNvbnN0cmFpbnRBZGRyKQorewor CUFsdGVyRG9tYWluU3RtdCAqbm9kZSA9IChBbHRlckRvbWFpblN0bXQgKikgcGFyc2V0cmVlOwor CUhlYXBUdXBsZQlkb21UdXA7CisJRm9ybV9wZ190eXBlIGRvbUZvcm07CisJT2JqVHJlZSAgICAq cmV0OworCisJZG9tVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIG9iamVjdElkKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZG9tVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGRvbWFpbiB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKwlkb21Gb3JtID0g KEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKGRvbVR1cCk7CisKKwlzd2l0Y2ggKG5vZGUtPnN1YnR5 cGUpCisJeworCQljYXNlICdUJzoKKwkJCS8qIFNFVCBERUZBVUxUIC8gRFJPUCBERUZBVUxUICov CisJCQlpZiAobm9kZS0+ZGVmID09IE5VTEwpCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFM VEVSIERPTUFJTiAle2lkZW50aXR5fUQgRFJPUCBERUZBVUxUIiwgMiwKKwkJCQkJCQkJCSAidHlw ZSIsIE9ialR5cGVTdHJpbmcsICJkcm9wIGRlZmF1bHQiLAorCQkJCQkJCQkJICJpZGVudGl0eSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKGRvbUZv cm0tPnR5cG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihkb21Gb3JtLT50eXBu YW1lKSkpOworCQkJZWxzZQorCQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4g JXtpZGVudGl0eX1EIFNFVCBERUZBVUxUICV7ZGVmYXVsdH1zIiwgMywKKwkJCQkJCQkJCSAidHlw ZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgZGVmYXVsdCIsCisJCQkJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoZG9tRm9y bS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJICBOYW1lU3RyKGRvbUZvcm0tPnR5cG5h bWUpKSwKKwkJCQkJCQkJCSAiZGVmYXVsdCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgRG9t YWluR2V0RGVmYXVsdChkb21UdXAsIGZhbHNlKSk7CisJCQlicmVhazsKKwkJY2FzZSAnTic6CisJ CQkvKiBEUk9QIE5PVCBOVUxMICovCisJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgRE9N QUlOICV7aWRlbnRpdHl9RCBEUk9QIE5PVCBOVUxMIiwgMiwKKwkJCQkJCQkJCSAgInR5cGUiLCBP YmpUeXBlU3RyaW5nLCAiZHJvcCBub3QgbnVsbCIsCisJCQkJCQkJCQkgICJpZGVudGl0eSIsIE9i alR5cGVPYmplY3QsCisJCQkJCQkJCQkgIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3Jt LT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQkgICBOYW1lU3RyKGRvbUZvcm0tPnR5cG5h bWUpKSk7CisJCQlicmVhazsKKwkJY2FzZSAnTyc6CisJCQkvKiBTRVQgTk9UIE5VTEwgKi8KKwkJ CXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFNFVCBOT1Qg TlVMTCIsIDIsCisJCQkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgbm90IG51bGwi LAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0 cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCSAg TmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSkpOworCQkJYnJlYWs7CisJCWNhc2UgJ0MnOgorCQkJ LyoKKwkJCSAqIEFERCBDT05TVFJBSU5ULiAgT25seSBDSEVDSyBjb25zdHJhaW50cyBhcmUgc3Vw cG9ydGVkIGJ5CisJCQkgKiBkb21haW5zCisJCQkgKi8KKwkJCXJldCA9IG5ld19vYmp0cmVlX1ZB KCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIEFERCBDT05TVFJBSU5UICV7Y29uc3RyYWludF9u YW1lfXMgJXtkZWZpbml0aW9ufXMiLCA0LAorCQkJCQkJCQkgInR5cGUiLCBPYmpUeXBlU3RyaW5n LCAiYWRkIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwK KwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2Us CisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihkb21Gb3JtLT50eXBuYW1lKSksCisJCQkJCQkJCSAi Y29uc3RyYWludF9uYW1lIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJIGdldF9jb25zdHJhaW50 X25hbWUoY29uc3RyYWludEFkZHIub2JqZWN0SWQpLAorCQkJCQkJCQkgImRlZmluaXRpb24iLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKGNvbnN0 cmFpbnRBZGRyLm9iamVjdElkKSk7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQkvKiBWQUxJ REFURSBDT05TVFJBSU5UICovCisJCQkvKgorCQkJICogUHJvY2VzcyBzdWJ0eXBlPXNwZWNpZmlj IG9wdGlvbnMuIFZhbGlkYXRpb24gYSBjb25zdHJhaW50CisJCQkgKiByZXF1aXJlcyBpdHMgbmFt ZS4KKwkJCSAqLworCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIERPTUFJTiAle2lkZW50 aXR5fUQgVkFMSURBVEUgQ09OU1RSQUlOVCAle2NvbnN0cmFpbnRfbmFtZX1zIiwgMywKKwkJCQkJ CQkJICJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInZhbGlkYXRlIGNvbnN0cmFpbnQiLAorCQkJCQkJ CQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZShkb21Gb3JtLT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCSAgTmFtZVN0cihk b21Gb3JtLT50eXBuYW1lKSksCisJCQkJCQkJCSAiY29uc3RyYWludF9uYW1lIiwgT2JqVHlwZVN0 cmluZywgbm9kZS0+bmFtZSk7CisJCQlicmVhazsKKwkJY2FzZSAnWCc6CisJCQl7CisJCQkJT2Jq VHJlZSAgICAqdG1wX29iajsKKworCQkJCS8qIERST1AgQ09OU1RSQUlOVCAqLworCQkJCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBET01BSU4gJXtpZGVudGl0eX1EIERST1AgQ09OU1RSQUlO VCBJRiBFWElTVFMgJXtjb25zdHJhaW50X25hbWV9cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBP YmpUeXBlU3RyaW5nLCAiZHJvcCBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkiaWRlbnRpdHkiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShkb21Gb3Jt LT50eXBuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQkJTmFtZVN0cihkb21Gb3JtLT50eXBuYW1l KSksCisJCQkJCQkJCQkJImNvbnN0cmFpbnRfbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5h bWUpOworCisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJDQVNDQURFIiwgMSwKKwkJCQkJ CQkJCQkicHJlc2VudCIsIE9ialR5cGVCb29sLCBub2RlLT5iZWhhdmlvciA9PSBEUk9QX0NBU0NB REUpOworCisJCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjYXNjYWRlfXMiLCB0bXBf b2JqKTsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFs aWQgc3VidHlwZSAlYyIsIG5vZGUtPnN1YnR5cGUpOworCX0KKworCS8qIERvbmUgKi8KKwlSZWxl YXNlU3lzQ2FjaGUoZG9tVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNl IGEgQ3JlYXRlU3RhdHNTdG10LgorICoKKyAqIEdpdmVuIGEgc3RhdGlzdGljcyBPSUQgYW5kIHRo ZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJl c2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog Q1JFQVRFIFNUQVRJU1RJQ1MgJXtpZl9ub3RfZXhpc3RzfXMgJXtpZGVudGl0eX1EIE9OICV7ZXhw cjosIH1zIEZST00gJXtzdGF0X3RhYmxlX2lkZW50aXR5fUQKKyAqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9DcmVhdGVTdGF0aXN0aWNzU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNl dHJlZSkKK3sKKwlDcmVhdGVTdGF0c1N0bXQgKm5vZGUgPSAoQ3JlYXRlU3RhdHNTdG10ICopIHBh cnNldHJlZTsKKwlGb3JtX3BnX3N0YXRpc3RpY19leHQgc3RhdGZvcm07CisJT2JqVHJlZSAgICAq cmV0OworCUhlYXBUdXBsZQl0dXA7CisJRGF0dW0JCWRhdHVtOworCWJvb2wJCWlzbnVsbDsKKwlM aXN0CSAgICpzdGF0ZXhwcnMgPSBOSUw7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoU1RBVEVY VE9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxp ZCh0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3RhdGlzdGlj IHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCisJc3RhdGZvcm0gPSAoRm9ybV9wZ19zdGF0aXN0 aWNfZXh0KSBHRVRTVFJVQ1QodHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUg U1RBVElTVElDUyAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQiLCAyLAorCQkJCQkJICJp Zl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhpc3Rz ID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc3RhdGZvcm0tPnN0eG5hbWVzcGFj ZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihzdGF0Zm9ybS0+c3R4bmFtZSkpKTsKKworCWRhdHVt ID0gU3lzQ2FjaGVHZXRBdHRyKFNUQVRFWFRPSUQsIHR1cCwgQW51bV9wZ19zdGF0aXN0aWNfZXh0 X3N0eGV4cHJzLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQorCXsKKwkJTGlzdENl bGwgICAqbGM7CisJCVJlbGF0aW9uCXN0YXRzcmVsOworCQlMaXN0CSAgICpjb250ZXh0OworCQlM aXN0CSAgICpleHBycyA9IE5JTDsKKwkJY2hhcgkgICAqZXhwcnNTdHJpbmc7CisKKwkJc3RhdHNy ZWwgPSByZWxhdGlvbl9vcGVuKHN0YXRmb3JtLT5zdHhyZWxpZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkJY29udGV4dCA9IGRlcGFyc2VfY29udGV4dF9mb3IoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo c3RhdHNyZWwpLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGlkKHN0YXRzcmVsKSk7CisKKwkJ ZXhwcnNTdHJpbmcgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwkJZXhwcnMgPSAoTGlz dCAqKSBzdHJpbmdUb05vZGUoZXhwcnNTdHJpbmcpOworCisJCWZvcmVhY2gobGMsIGV4cHJzKQor CQl7CisJCQlOb2RlCSAgICpleHByID0gKE5vZGUgKikgbGZpcnN0KGxjKTsKKwkJCWNoYXIJICAg KnN0YXRleHByOworCisJCQlzdGF0ZXhwciA9IGRlcGFyc2VfZXhwcmVzc2lvbihleHByLCBjb250 ZXh0LCBmYWxzZSwgZmFsc2UpOworCQkJc3RhdGV4cHJzID0gbGFwcGVuZChzdGF0ZXhwcnMsIG5l d19zdHJpbmdfb2JqZWN0KHN0YXRleHByKSk7CisJCX0KKworCQlhcHBlbmRfYXJyYXlfb2JqZWN0 KHJldCwgIk9OICV7ZXhwcjosIH1zIiwgc3RhdGV4cHJzKTsKKwkJcGZyZWUoZXhwcnNTdHJpbmcp OworCQlyZWxhdGlvbl9jbG9zZShzdGF0c3JlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwl9CisKKwlk YXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVEFURVhUT0lELCB0dXAsIEFudW1fcGdfc3RhdGlzdGlj X2V4dF9zdHhrZXlzLAorCQkJCQkJCSZpc251bGwpOworCWlmICghaXNudWxsKQorCXsKKwkJaW50 CQkJa2V5bm87CisJCWNoYXIJICAgKmF0dG5hbWU7CisJCUxpc3QJICAgKnN0YXRjb2xzID0gTklM OworCQlpbnQydmVjdG9yICppbmRvcHRpb247CisKKwkJaW5kb3B0aW9uID0gKGludDJ2ZWN0b3Ig KikgRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKKworCQlmb3IgKGtleW5vID0gMDsga2V5bm8gPCBp bmRvcHRpb24tPmRpbTE7IGtleW5vKyspCisJCXsKKwkJCWF0dG5hbWUgPSBnZXRfYXR0bmFtZShz dGF0Zm9ybS0+c3R4cmVsaWQsIGluZG9wdGlvbi0+dmFsdWVzW2tleW5vXSwKKwkJCQkJCQkJICBm YWxzZSk7CisJCQlzdGF0Y29scyA9IGxhcHBlbmQoc3RhdGNvbHMsIG5ld19zdHJpbmdfb2JqZWN0 KGF0dG5hbWUpKTsKKwkJfQorCisJCWlmIChpbmRvcHRpb24tPmRpbTEpCisJCXsKKwkJCS8qIEFw cGVuZCBhICcsJyBpZiBzdGF0ZXhwcnMgaXMgcHJlc2VudCBlbHNlIGFwcGVuZCAnT04nICovCisJ CQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle2NvbW1hfXMiLCAiY29tbWEiLAorCQkJCQkJ CQkgc3RhdGV4cHJzID8gIiwiIDogIk9OIik7CisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwg IiV7Y29sczosIH1zIiwgc3RhdGNvbHMpOworCQl9CisJfQorCisJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiRlJPTSAle3N0YXRfdGFibGVfaWRlbnRpdHl9RCIsCisJCQkJCQkgbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lKGdldF9yZWxfbmFtZXNwYWNlKHN0YXRmb3JtLT5zdHhyZWxpZCksCisJ CQkJCQkJCQkJCQkgIGdldF9yZWxfbmFtZShzdGF0Zm9ybS0+c3R4cmVsaWQpKSk7CisKKwlSZWxl YXNlU3lzQ2FjaGUodHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFu IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IChDUkVBVEUgU0VSVkVSKQorICoKKyAqIEdpdmVuIGEg c2VydmVyIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4g T2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJv c2Ugc3ludGF4CisgKiBDUkVBVEUgU0VSVkVSICV7aWRlbnRpdHl9SSAle3R5cGV9cyAle3ZlcnNp b259cyBGT1JFSUdOIERBVEEgV1JBUFBFUiAle2Zkd31JCisgKiAle2dlbmVyaWNfb3B0aW9uc31z CisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQo T2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlRm9yZWlnblNlcnZlclN0 bXQgKm5vZGUgPSAoQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQgKikgcGFyc2V0cmVlOworCU9ialRy ZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgi Q1JFQVRFIFNFUlZFUiAle2lkZW50aXR5fUkiLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5 cGVTdHJpbmcsIG5vZGUtPnNlcnZlcm5hbWUpOworCisJLyogQWRkIGEgVFlQRSBjbGF1c2UsIGlm IGFueSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJUWVBFIik7CisJaWYgKG5vZGUtPnNlcnZlcnR5 cGUpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7dHlwZX1MIiwgInR5cGUiLCBub2Rl LT5zZXJ2ZXJ0eXBlKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWFwcGVu ZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dHlwZX1zIiwgdG1wKTsKKworCS8qIEFkZCBhIFZFUlNJ T04gY2xhdXNlLCBpZiBhbnkgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiVkVSU0lPTiIpOworCWlm IChub2RlLT52ZXJzaW9uKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIle3ZlcnNpb259 TCIsICJ2ZXJzaW9uIiwgbm9kZS0+dmVyc2lvbik7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3ZlcnNpb259cyIsIHRtcCk7 CisKKwlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJGT1JFSUdOIERBVEEgV1JBUFBFUiAle2Zk d31JIiwgImZkdyIsCisJCQkJCQkgbm9kZS0+ZmR3bmFtZSk7CisKKwkvKiBBZGQgYW4gT1BUSU9O UyBjbGF1c2UsIGlmIGFueSAqLworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Z2VuZXJp Y19vcHRpb25zfXMiLAorCQkJCQkJIGRlcGFyc2VfRmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBO VUxMLCBmYWxzZSkpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYW4gQWx0 ZXJGb3JlaWduU2VydmVyU3RtdCAoQUxURVIgU0VSVkVSKQorICoKKyAqIEdpdmVuIGEgc2VydmVy IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJl ZQorICogcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBBTFRFUiBTRVJWRVIgJXtpZGVudGl0eX1JICV7dmVyc2lvbn1zICV7Z2VuZXJpY19v cHRpb25zfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckZvcmVpZ25TZXJ2 ZXJTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUFsdGVyRm9yZWlnblNl cnZlclN0bXQgKm5vZGUgPSAoQWx0ZXJGb3JlaWduU2VydmVyU3RtdCAqKSBwYXJzZXRyZWU7CisJ T2JqVHJlZSAgICAqdG1wOworCisJLyogQWRkIGEgVkVSU0lPTiBjbGF1c2UsIGlmIGFueSAqLwor CXRtcCA9IG5ld19vYmp0cmVlKCJWRVJTSU9OIik7CisJaWYgKG5vZGUtPmhhc192ZXJzaW9uICYm IG5vZGUtPnZlcnNpb24pCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7dmVyc2lvbn1M IiwgInZlcnNpb24iLCBub2RlLT52ZXJzaW9uKTsKKwllbHNlIGlmIChub2RlLT5oYXNfdmVyc2lv bikKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAidmVyc2lvbiIsICJ2ZXJzaW9uIiwgIk5V TEwiKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCisJcmV0dXJuIG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBTRVJWRVIgJXtpZGVudGl0eX1JICV7dmVyc2lvbn1zICV7Z2VuZXJp Y19vcHRpb25zfXMiLCAzLAorCQkJCQkJICAiaWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2Rl LT5zZXJ2ZXJuYW1lLAorCQkJCQkJICAidmVyc2lvbiIsIE9ialR5cGVPYmplY3QsIHRtcCwKKwkJ CQkJCSAgImdlbmVyaWNfb3B0aW9ucyIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgIGRlcGFyc2Vf RmR3T3B0aW9ucyhub2RlLT5vcHRpb25zLCBOVUxMLCBmYWxzZSkpOworfQorCisvKgorICogRGVw YXJzZSBhIENyZWF0ZVBMYW5nU3RtdC4KKyAqCisgKiBHaXZlbiBhIGxhbmd1YWdlIE9JRCBhbmQg dGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVw cmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4Cisg KiBDUkVBVEUgJXtvcl9yZXBsYWNlfXMgJXt0cnVzdGVkfXMgTEFOR1VBR0UgJXtpZGVudGl0eX1z IEhBTkRMRVIgJXtoYW5kbGVyfUQKKyAqICV7aW5saW5lfXMgJXt2YWxpZGF0b3J9cworICovCitz dGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUxhbmdTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVBMYW5nU3RtdCAqbm9kZSA9IChDcmVhdGVQTGFuZ1N0 bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJ SGVhcFR1cGxlCWxhbmdUdXA7CisJRm9ybV9wZ19sYW5ndWFnZSBsYW5nRm9ybTsKKworCWxhbmdU dXAgPSBTZWFyY2hTeXNDYWNoZTEoTEFOR09JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0o b2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQobGFuZ1R1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBsYW5ndWFnZSB3aXRoIE9JRCAldSIsIG9iamVj dElkKTsKKwlsYW5nRm9ybSA9IChGb3JtX3BnX2xhbmd1YWdlKSBHRVRTVFJVQ1QobGFuZ1R1cCk7 CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7dHJ1c3Rl ZH1zIExBTkdVQUdFICV7aWRlbnRpdHl9cyIsIDMsCisJCQkJCQkgIm9yX3JlcGxhY2UiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJlcGxhY2UgPyAiT1IgUkVQTEFDRSIgOiAiIiwKKwkJ CQkJCSAidHJ1c3RlZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbGFuZ0Zvcm0tPmxhbnBsdHJ1 c3RlZCA/ICJUUlVTVEVEIiA6ICIiLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcs IG5vZGUtPnBsbmFtZSk7CisKKwlpZiAobm9kZS0+cGxoYW5kbGVyICE9IE5JTCkKKwl7CisJCS8q IEFkZCB0aGUgSEFORExFUiBjbGF1c2UgKi8KKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAi SEFORExFUiAle2hhbmRsZXJ9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgbGFuZ0Zvcm0tPmxhbnBsY2Fs bGZvaWQpKTsKKworCQkvKiBBZGQgdGhlIElOTElORSBjbGF1c2UsIGlmIGFueSAqLworCQl0bXAg PSBuZXdfb2JqdHJlZSgiSU5MSU5FIik7CisJCWlmIChPaWRJc1ZhbGlkKGxhbmdGb3JtLT5sYW5p bmxpbmUpKQorCQl7CisJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle2hhbmRsZXJfbmFt ZX1EIiwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxh dGlvbklkLAorCQkJCQkJCQkJCQkJCQkJIGxhbmdGb3JtLT5sYW5pbmxpbmUpKTsKKwkJfQorCQll bHNlCisJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qo cmV0LCAiJXtpbmxpbmV9cyIsIHRtcCk7CisKKwkJLyogQWRkIHRoZSBWQUxJREFUT1IgY2xhdXNl LCBpZiBhbnkgKi8KKwkJdG1wID0gbmV3X29ianRyZWUoIlZBTElEQVRPUiIpOworCQlpZiAoT2lk SXNWYWxpZChsYW5nRm9ybS0+bGFudmFsaWRhdG9yKSkKKwkJeworCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wLCAiJXtoYW5kbGVyX25hbWV9RCIsCisJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCSBsYW5nRm9y bS0+bGFudmFsaWRhdG9yKSk7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KHRt cCk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dmFsaWRhdG9yfXMiLCB0bXApOwor CX0KKworCVJlbGVhc2VTeXNDYWNoZShsYW5nVHVwKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8q CisgKiBEZXBhcnNlIGEgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCAoQ1JFQVRFIEZPUkVJR04gVEFC TEUpLgorICoKKyAqIEdpdmVuIGEgdGFibGUgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNy ZWF0ZWQgaXQsIHJldHVybiBhbiBPYmpUcmVlCisgKiByZXByZXNlbnRpbmcgdGhlIGNyZWF0aW9u IGNvbW1hbmQuCisgKgorICogQ1JFQVRFIEZPUkVJR04gVEFCTEUgJXtpZl9ub3RfZXhpc3RzfXMg JXtpZGVudGl0eX1ECisgKiBbKCV7dGFibGVfZWxlbWVudHM6LCB9cykgJXtpbmhlcml0c31zCisg KiAgfCBQQVJUSVRJT04gT0YgJXtwYXJlbnRfaWRlbnRpdHl9RCAoJXt0eXBlZF90YWJsZV9lbGVt ZW50czosIH1zKSAle3BhcnRpdGlvbl9ib3VuZH1zXQorICogU0VSVkVSICV7c2VydmVyfUkgJXtn ZW5lcmljX29wdGlvbnN9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NyZWF0ZUZv cmVpZ25UYWJsZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRl Rm9yZWlnblRhYmxlU3RtdCAqc3RtdCA9IChDcmVhdGVGb3JlaWduVGFibGVTdG10ICopIHBhcnNl dHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vz c1NoYXJlTG9jayk7CisJTGlzdAkgICAqZHBjb250ZXh0OworCU9ialRyZWUgICAgKmNyZWF0ZVN0 bXQ7CisJT2JqVHJlZSAgICAqdG1wb2JqOworCUxpc3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKwor CWNyZWF0ZVN0bXQgPSBuZXdfb2JqdHJlZSgiQ1JFQVRFIEZPUkVJR04gVEFCTEUiKTsKKworCWFw cGVuZF9zdHJpbmdfb2JqZWN0KGNyZWF0ZVN0bXQsICIle2lmX25vdF9leGlzdHN9cyIsICJpZl9u b3RfZXhpc3RzIiwKKwkJCQkJCSBzdG10LT5iYXNlLmlmX25vdF9leGlzdHMgPyAiSUYgTk9UIEVY SVNUUyIgOiAiIik7CisKKwl0bXBvYmogPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocmVsYXRp b24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWxhdGlvbikpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVN0bXQsICIle2lk ZW50aXR5fUQiLCB0bXBvYmopOworCisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksCisJCQkJCQkJCQlvYmplY3RJZCk7CisJ aWYgKHN0bXQtPmJhc2UucGFydGJvdW5kKQorCXsKKwkJLyogUGFydGl0aW9uZWQgdGFibGUgKi8K KwkJTGlzdAkgICAqcGFyZW50czsKKwkJT2JqRWxlbSAgICAqZWxlbTsKKworCQlwYXJlbnRzID0g ZGVwYXJzZV9JbmhSZWxhdGlvbnMob2JqZWN0SWQpOworCQllbGVtID0gKE9iakVsZW0gKikgbGlu aXRpYWwocGFyZW50cyk7CisKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBhcmVudHMpID09IDEpOwor CisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKGNyZWF0ZVN0bXQsICJQQVJUSVRJT04gT0YiKTsKKwor CQlhcHBlbmRfb2JqZWN0X29iamVjdChjcmVhdGVTdG10LCAiJXtwYXJlbnRfaWRlbnRpdHl9RCIs CisJCQkJCQkJCQkJIGVsZW0tPnZhbHVlLm9iamVjdCk7CisKKwkJdGFibGVlbHRzID0gZGVwYXJz ZV9UYWJsZUVsZW1lbnRzKHJlbGF0aW9uLCBzdG10LT5iYXNlLnRhYmxlRWx0cywgZHBjb250ZXh0 LAorCQkJCQkJCQkJCSAgdHJ1ZSwgLyogdHlwZWQgdGFibGUgKi8KKwkJCQkJCQkJCQkgIGZhbHNl KTsJLyogbm90IGNvbXBvc2l0ZSAqLworCQl0YWJsZWVsdHMgPSBvYnRhaW5Db25zdHJhaW50cyh0 YWJsZWVsdHMsIG9iamVjdElkLCBJbnZhbGlkT2lkKTsKKworCQl0bXBvYmogPSBuZXdfb2JqdHJl ZSgiIik7CisJCWlmICh0YWJsZWVsdHMpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcG9iaiwg Iigle2VsZW1lbnRzOiwgfXMpIiwgdGFibGVlbHRzKTsKKwkJZWxzZQorCQkJYXBwZW5kX25vdF9w cmVzZW50KHRtcG9iaik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlU3RtdCwgIiV7 dHlwZWRfdGFibGVfZWxlbWVudHN9cyIsIHRtcG9iaik7CisKKwkJLyoKKwkJICogQWRkIHRoZSBw YXJ0aXRpb25fYm91bmRfc3BlYywgaS5lLiB0aGUgRk9SIFZBTFVFUyBjbGF1c2UuCisJCSAqIEdl dCBwZ19jbGFzcy5yZWxwYXJ0Ym91bmQuIFdlIGNhbm5vdCB1c2UgcGFydGJvdW5kIGluIHRoZSBw YXJzZXRyZWUKKwkJICogZGlyZWN0bHkgYXMgaXQncyB0aGUgb3JpZ2luYWwgcGFydGJvdW5kIGV4 cHJlc3Npb24gd2hpY2ggaGF2ZW4ndAorCQkgKiBiZWVuIHRyYW5zZm9ybWVkLgorCQkgKi8KKwkJ YXBwZW5kX3N0cmluZ19vYmplY3QoY3JlYXRlU3RtdCwgIiV7cGFydGl0aW9uX2JvdW5kfXMiLCAi cGFydGl0aW9uX2JvdW5kIiwKKwkJCQkJCQkgUmVsYXRpb25HZXRQYXJ0aXRpb25Cb3VuZChvYmpl Y3RJZCkpOworCisJCS8qIE5vIFBBUlRJVElPTiBCWSBjbGF1c2UgZm9yIENSRUFURSBGT1JFSUdO IFRBQkxFICovCisJfQorCWVsc2UKKwl7CisJCXRhYmxlZWx0cyA9IGRlcGFyc2VfVGFibGVFbGVt ZW50cyhyZWxhdGlvbiwgc3RtdC0+YmFzZS50YWJsZUVsdHMsIGRwY29udGV4dCwKKwkJCQkJCQkJ CQkgIGZhbHNlLAkJLyogbm90IHR5cGVkIHRhYmxlICovCisJCQkJCQkJCQkJICBmYWxzZSk7CS8q IG5vdCBjb21wb3NpdGUgKi8KKwkJdGFibGVlbHRzID0gb2J0YWluQ29uc3RyYWludHModGFibGVl bHRzLCBvYmplY3RJZCwgSW52YWxpZE9pZCk7CisKKwkJaWYgKHRhYmxlZWx0cykKKwkJCWFwcGVu ZF9hcnJheV9vYmplY3QoY3JlYXRlU3RtdCwgIigle3RhYmxlX2VsZW1lbnRzOiwgfXMpIiwgdGFi bGVlbHRzKTsKKwkJZWxzZQorCQkJYXBwZW5kX2Zvcm1hdF9zdHJpbmcoY3JlYXRlU3RtdCwgIigp Iik7CisKKwkJLyoKKwkJKiBBZGQgaW5oZXJpdGFuY2Ugc3BlY2lmaWNhdGlvbi4gIFdlIGNhbm5v dCBzaW1wbHkgc2NhbiB0aGUgbGlzdCBvZgorCQkqIHBhcmVudHMgZnJvbSB0aGUgcGFyc2VyIG5v ZGUsIGJlY2F1c2UgdGhhdCBtYXkgbGFjayB0aGUgYWN0dWFsCisJCSogcXVhbGlmaWVkIG5hbWVz IG9mIHRoZSBwYXJlbnQgcmVsYXRpb25zLiAgUmF0aGVyIHRoYW4gdHJ5aW5nIHRvCisJCSogcmUt cmVzb2x2ZSB0aGVtIGZyb20gdGhlIGluZm9ybWF0aW9uIGluIHRoZSBwYXJzZSBub2RlLCBpdCBz ZWVtcworCQkqIG1vcmUgYWNjdXJhdGUgYW5kIGNvbnZlbmllbnQgdG8gZ3JhYiBpdCBmcm9tIHBn X2luaGVyaXRzLgorCQkqLworCQl0bXBvYmogPSBuZXdfb2JqdHJlZSgiSU5IRVJJVFMiKTsKKwkJ aWYgKHN0bXQtPmJhc2UuaW5oUmVsYXRpb25zICE9IE5JTCkKKwkJCWFwcGVuZF9hcnJheV9vYmpl Y3QodG1wb2JqLCAiKCV7cGFyZW50czosIH1EKSIsIGRlcGFyc2VfSW5oUmVsYXRpb25zKG9iamVj dElkKSk7CisJCWVsc2UKKwkJeworCQkJYXBwZW5kX251bGxfb2JqZWN0KHRtcG9iaiwgIigle3Bh cmVudHM6LCB9RCkiKTsKKwkJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBvYmopOworCQl9CisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KGNyZWF0ZVN0bXQsICIle2luaGVyaXRzfXMiLCB0bXBvYmopOwor CX0KKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KGNyZWF0ZVN0bXQsICJTRVJWRVIgJXtzZXJ2ZXJ9 SSIsICJzZXJ2ZXIiLCBzdG10LT5zZXJ2ZXJuYW1lKTsKKworCS8qIGFkZCBhbiBPUFRJT05TIGNs YXVzZSwgaWYgYW55ICovCisJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlU3RtdCwgIiV7Z2Vu ZXJpY19vcHRpb25zfXMiLAorCQkJCQkJIGRlcGFyc2VfRmR3T3B0aW9ucyhzdG10LT5vcHRpb25z LCBOVUxMLCBmYWxzZSkpOworCisJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJl TG9jayk7CisKKwlyZXR1cm4gY3JlYXRlU3RtdDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBEZWZp bmVTdG10LgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmluZVN0bXQoT2lkIG9i amVjdElkLCBOb2RlICpwYXJzZXRyZWUsIE9iamVjdEFkZHJlc3Mgc2Vjb25kYXJ5T2JqKQorewor CURlZmluZVN0bXQgKmRlZmluZSA9IChEZWZpbmVTdG10ICopIHBhcnNldHJlZTsKKworCXN3aXRj aCAoZGVmaW5lLT5raW5kKQorCXsKKwkJY2FzZSBPQkpFQ1RfQUdHUkVHQVRFOgorCQkJcmV0dXJu IGRlcGFyc2VfRGVmaW5lU3RtdF9BZ2dyZWdhdGUob2JqZWN0SWQsIGRlZmluZSk7CisKKwkJY2Fz ZSBPQkpFQ1RfQ09MTEFUSU9OOgorCQkJcmV0dXJuIGRlcGFyc2VfRGVmaW5lU3RtdF9Db2xsYXRp b24ob2JqZWN0SWQsIGRlZmluZSwgc2Vjb25kYXJ5T2JqKTsKKworCQljYXNlIE9CSkVDVF9PUEVS QVRPUjoKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0bXRfT3BlcmF0b3Iob2JqZWN0SWQsIGRl ZmluZSk7CisKKwkJY2FzZSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOgorCQkJcmV0dXJuIGRlcGFy c2VfRGVmaW5lU3RtdF9UU0NvbmZpZyhvYmplY3RJZCwgZGVmaW5lLCBzZWNvbmRhcnlPYmopOwor CisJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKKwkJCXJldHVybiBkZXBhcnNlX0RlZmluZVN0 bXRfVFNEaWN0aW9uYXJ5KG9iamVjdElkLCBkZWZpbmUpOworCisJCWNhc2UgT0JKRUNUX1RTUEFS U0VSOgorCQkJcmV0dXJuIGRlcGFyc2VfRGVmaW5lU3RtdF9UU1BhcnNlcihvYmplY3RJZCwgZGVm aW5lKTsKKworCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgorCQkJcmV0dXJuIGRlcGFyc2VfRGVm aW5lU3RtdF9UU1RlbXBsYXRlKG9iamVjdElkLCBkZWZpbmUpOworCisJCWNhc2UgT0JKRUNUX1RZ UEU6CisJCQlyZXR1cm4gZGVwYXJzZV9EZWZpbmVTdG10X1R5cGUob2JqZWN0SWQsIGRlZmluZSk7 CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBvYmplY3Qga2luZDog JWQiLCBkZWZpbmUtPmtpbmQpOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogRm9y bSBhbiBPYmpFbGVtIHRvIGJlIHVzZWQgYXMgYSBzaW5nbGUgYXJndW1lbnQgaW4gYW4gYWdncmVn YXRlIGFyZ3VtZW50CisgKiBsaXN0CisgKi8KK3N0YXRpYyBPYmpFbGVtICoKK2Zvcm1fYWdnX2Fy Z3VtZW50KGludCBpZHgsIGNoYXIgKm1vZGVzLCBjaGFyICoqbmFtZXMsIE9pZCAqdHlwZXMpCit7 CisJT2JqVHJlZQkgICAqYXJnOworCisJYXJnID0gbmV3X29ianRyZWUoIiIpOworCisJYXBwZW5k X3N0cmluZ19vYmplY3QoYXJnLCAiJXttb2RlfXMiLCAibW9kZSIsCisJCQkJCQkgKG1vZGVzICYm IG1vZGVzW2lkeF0gPT0gJ3YnKSA/ICJWQVJJQURJQyIgOiAiIik7CisJYXBwZW5kX3N0cmluZ19v YmplY3QoYXJnLCAiJXtuYW1lfXMiLCAibmFtZSIsIG5hbWVzID8gbmFtZXNbaWR4XSA6ICIiKTsK KwlhcHBlbmRfb2JqZWN0X29iamVjdChhcmcsICIle3R5cGV9VCIsCisJCQkJCQkgbmV3X29ianRy ZWVfZm9yX3R5cGUodHlwZXNbaWR4XSwgLTEpKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVj dChhcmcpOworfQorCisvKgorICogRGVwYXJzZSBhIERlZmluZVN0bXQgKENSRUFURSBBR0dSRUdB VEUpCisgKgorICogR2l2ZW4gYSBhZ2dyZWdhdGUgT0lELCByZXR1cm4gYW4gT2JqVHJlZSByZXBy ZXNlbnRpbmcgdGhlIENSRUFURSBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBD UkVBVEUgJXtvcl9yZXBsYWNlfXMgQUdHUkVHQVRFICV7aWRlbnRpdHl9RCgle3R5cGVzfXMpICgl e2VsZW1zOiwgfXMpCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmaW5lU3RtdF9B Z2dyZWdhdGUoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUpCit7CisJSGVhcFR1cGxl ICAgYWdnVHVwOworCUhlYXBUdXBsZSAgIHByb2NUdXA7CisJT2JqVHJlZQkgICAqc3RtdDsKKwlP YmpUcmVlCSAgICp0bXA7CisJTGlzdAkgICAqbGlzdDsKKwlEYXR1bQkJaW5pdHZhbDsKKwlib29s CQlpc251bGw7CisJRm9ybV9wZ19hZ2dyZWdhdGUgYWdnOworCUZvcm1fcGdfcHJvYyBwcm9jOwor CUZvcm1fcGdfb3BlcmF0b3Igb3A7CisJSGVhcFR1cGxlCXR1cDsKKworCWFnZ1R1cCA9IFNlYXJj aFN5c0NhY2hlMShBR0dGTk9JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChhZ2dUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgYWdncmVnYXRlIHdpdGggT0lEICV1Iiwgb2JqZWN0SWQpOworCWFnZyA9IChGb3Jt X3BnX2FnZ3JlZ2F0ZSkgR0VUU1RSVUNUKGFnZ1R1cCk7CisKKwlwcm9jVHVwID0gU2VhcmNoU3lz Q2FjaGUxKFBST0NPSUQsIE9iamVjdElkR2V0RGF0dW0oYWdnLT5hZ2dmbm9pZCkpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHByb2NlZHVyZSB3aXRoIE9JRCAldSIsCisJCQkgYWdnLT5hZ2dmbm9pZCk7CisJ cHJvYyA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsKKworCXN0bXQgPSBuZXdf b2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zIEFHR1JFR0FURSIsIDEsCisJCQkJCQkg Im9yX3JlcGxhY2UiLCBPYmpUeXBlU3RyaW5nLCBkZWZpbmUtPnJlcGxhY2UgPyAiT1IgUkVQTEFD RSIgOiAiIik7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChzdG10LCAiJXtpZGVudGl0eX1EIiwK KwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUocHJvYy0+cHJvbmFtZXNwYWNlLAorCQkJ CQkJCQkJCQkJICBOYW1lU3RyKHByb2MtPnByb25hbWUpKSk7CisKKwkvKgorCSAqIEFkZCB0aGUg YXJndW1lbnQgbGlzdC4gIFRoZXJlIGFyZSB0aHJlZSBjYXNlcyB0byBjb25zaWRlcjoKKwkgKgor CSAqIDEuIG5vIGFyZ3VtZW50cywgaW4gd2hpY2ggY2FzZSB0aGUgc2lnbmF0dXJlIGlzICgqKS4K KwkgKgorCSAqIDIuIE5vdCBhbiBvcmRlcmVkLXNldCBhZ2dyZWdhdGUuICBJbiB0aGlzIGNhc2Ug dGhlcmUncyBvbmUgb3IgbW9yZQorCSAqIGFyZ3VtZW50cy4KKwkgKgorCSAqIDMuIE9yZGVyZWQt c2V0IGFnZ3JlZ2F0ZXMuIFRoZXNlIGhhdmUgemVybyBvciBtb3JlIGRpcmVjdCBhcmd1bWVudHMs IGFuZAorCSAqIG9uZSBvciBtb3JlIG9yZGVyZWQgYXJndW1lbnRzLgorCSAqCisJICogV2UgZG9u J3QgbmVlZCB0byBjb25zaWRlciBkZWZhdWx0IHZhbHVlcyBvciB0YWJsZSBwYXJhbWV0ZXJzLCBh bmQgdGhlCisJICogb25seSBtb2RlIHRoYXQgd2UgbmVlZCB0byBjb25zaWRlciBpcyBWQVJJQURJ Qy4KKwkgKi8KKworCWlmIChwcm9jLT5wcm9uYXJncyA9PSAwKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdChzdG10LCAiKCV7dHlwZXN9cykiLCAidHlwZXMiLCAiKiIpOworCWVsc2UgaWYgKCFBR0dL SU5EX0lTX09SREVSRURfU0VUKGFnZy0+YWdna2luZCkpCisJeworCQlpbnQJCQlpOworCQlpbnQJ CQluYXJnczsKKwkJT2lkCQkgICAqdHlwZXM7CisJCWNoYXIJICAgKm1vZGVzOworCQljaGFyCSAg KipuYW1lczsKKworCQluYXJncyA9IGdldF9mdW5jX2FyZ19pbmZvKHByb2NUdXAsICZ0eXBlcywg Jm5hbWVzLCAmbW9kZXMpOworCisJCS8qIG9ubHkgZGlyZWN0IGFyZ3VtZW50cyBpbiB0aGlzIGNh c2UgKi8KKwkJbGlzdCA9IE5JTDsKKwkJZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCisJCXsK KwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIGZvcm1fYWdnX2FyZ3VtZW50KGksIG1vZGVzLCBuYW1l cywgdHlwZXMpKTsKKwkJfQorCisJCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCIle2RpcmVjdDosIH1z IiwgMSwKKwkJCQkJCQkgImRpcmVjdCIsIE9ialR5cGVBcnJheSwgbGlzdCk7CisJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHN0bXQsICIoJXt0eXBlc31zKSIsIHRtcCk7CisJfQorCWVsc2UKKwl7CisJ CWludAkJCWk7CisJCWludAkJCW5hcmdzOworCQlPaWQJCSAgICp0eXBlczsKKwkJY2hhcgkgICAq bW9kZXM7CisJCWNoYXIJICAqKm5hbWVzOworCisJCW5hcmdzID0gZ2V0X2Z1bmNfYXJnX2luZm8o cHJvY1R1cCwgJnR5cGVzLCAmbmFtZXMsICZtb2Rlcyk7CisKKwkJLyogZGlyZWN0IGFyZ3VtZW50 cyAuLi4gKi8KKwkJbGlzdCA9IE5JTDsKKwkJZm9yIChpID0gMDsgaSA8IGFnZy0+YWdnbnVtZGly ZWN0YXJnczsgaSsrKQorCQl7CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBmb3JtX2FnZ19hcmd1 bWVudChpLCBtb2RlcywgbmFtZXMsIHR5cGVzKSk7CisJCX0KKwkJdG1wID0gbmV3X29ianRyZWVf VkEoIiV7ZGlyZWN0OiwgfXMiLCAxLAorCQkJCQkJCSAiZGlyZWN0IiwgT2JqVHlwZUFycmF5LCBs aXN0KTsKKworCQkvKgorCQkgKiAuLi4gYW5kIGFnZ3JlZ2F0ZWQgYXJndW1lbnRzLiAgSWYgdGhl IGxhc3QgZGlyZWN0IGFyZ3VtZW50IGlzCisJCSAqIFZBUklBRElDLCB3ZSBuZWVkIHRvIHJlcGVh dCBpdCBoZXJlIHJhdGhlciB0aGFuIHNlYXJjaGluZyBmb3IgbW9yZQorCQkgKiBhcmd1bWVudHMu ICAoU2VlIGFnZ3JfYXJncyBwcm9kdWN0aW9uIGluIGdyYW0ueSBmb3IgYW4gZXhwbGFuYXRpb24u KQorCQkgKi8KKwkJaWYgKG1vZGVzICYmIG1vZGVzW2FnZy0+YWdnbnVtZGlyZWN0YXJncyAtIDFd ID09ICd2JykKKwkJeworCQkJbGlzdCA9IGxpc3RfbWFrZTEoZm9ybV9hZ2dfYXJndW1lbnQoYWdn LT5hZ2dudW1kaXJlY3RhcmdzIC0gMSwKKwkJCQkJCQkJCQkJCW1vZGVzLCBuYW1lcywgdHlwZXMp KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWxpc3QgPSBOSUw7CisJCQlmb3IgKGkgPSBhZ2ctPmFn Z251bWRpcmVjdGFyZ3M7IGkgPCBuYXJnczsgaSsrKQorCQkJeworCQkJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIGZvcm1fYWdnX2FyZ3VtZW50KGksIG1vZGVzLCBuYW1lcywgdHlwZXMpKTsKKwkJCX0K KwkJfQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcCwgIk9SREVSIEJZICV7YWdncmVnYXRlZDos IH1zIiwgbGlzdCk7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qoc3RtdCwgIigle3R5cGVzfXMp IiwgdG1wKTsKKwl9CisKKwkvKiBBZGQgdGhlIGRlZmluaXRpb24gY2xhdXNlICovCisJbGlzdCA9 IE5JTDsKKworCS8qIFNGVU5DICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNGVU5DPSV7cHJv Y2VkdXJlfUQiLCAxLAorCQkJCQkJICJwcm9jZWR1cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLCBhZ2ctPmFn Z3RyYW5zZm4pKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKworCS8qIFNUWVBFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNUWVBFPSV7dHlwZX1U IiwgMSwKKwkJCQkJCSAidHlwZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3R5cGUoYWdnLT5hZ2d0cmFuc3R5cGUsIC0xKSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwg bmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBTU1BBQ0UgKi8KKwl0bXAgPSBuZXdfb2Jq dHJlZSgiU1NQQUNFPSIpOworCWlmIChhZ2ctPmFnZ3RyYW5zc3BhY2UgIT0gMCkKKwkJYXBwZW5k X2ludF9vYmplY3QodG1wLCIle3NwYWNlfW4iLCBhZ2ctPmFnZ3RyYW5zc3BhY2UpOworCWVsc2UK KwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEZJTkFMRlVOQyAqLworCXRtcCA9IG5ld19vYmp0 cmVlKCJGSU5BTEZVTkM9Iik7CisJaWYgKE9pZElzVmFsaWQoYWdnLT5hZ2dmaW5hbGZuKSkKKwkJ YXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJ CQkgYWdnLT5hZ2dmaW5hbGZuKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsK KwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIEZJ TkFMRlVOQ19FWFRSQSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJGSU5BTEZVTkNfRVhUUkE9Iik7 CisJaWYgKGFnZy0+YWdnZmluYWxleHRyYSkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAi JXt2YWx1ZX1zIiwgInZhbHVlIiwgInRydWUiKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2Vu dCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOwor CisJLyogSU5JVENPTkQgKi8KKwlpbml0dmFsID0gU3lzQ2FjaGVHZXRBdHRyKEFHR0ZOT0lELCBh Z2dUdXAsCisJCQkJCQkJICBBbnVtX3BnX2FnZ3JlZ2F0ZV9hZ2dpbml0dmFsLAorCQkJCQkJCSAg JmlzbnVsbCk7CisJdG1wID0gbmV3X29ianRyZWUoIklOSVRDT05EPSIpOworCWlmICghaXNudWxs KQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsIiV7aW5pdHZhbH1MIiwgImluaXR2YWwiLCBU ZXh0RGF0dW1HZXRDU3RyaW5nKGluaXR2YWwpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2Vu dCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOwor CisJLyogTVNGVU5DICovCisJdG1wID0gbmV3X29ianRyZWUoIk1TRlVOQz0iKTsKKwlpZiAoT2lk SXNWYWxpZChhZ2ctPmFnZ210cmFuc2ZuKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAi JXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9j ZWR1cmVSZWxhdGlvbklkLCBhZ2ctPmFnZ210cmFuc2ZuKSk7CisJZWxzZQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKworCS8qIE1TVFlQRSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJNU1RZUEU9Iik7CisJ aWYgKE9pZElzVmFsaWQoYWdnLT5hZ2dtdHJhbnN0eXBlKSkKKwkJYXBwZW5kX29iamVjdF9vYmpl Y3QodG1wLCAiJXt0eXBlfVQiLCBuZXdfb2JqdHJlZV9mb3JfdHlwZShhZ2ctPmFnZ210cmFuc3R5 cGUsIC0xKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIE1TU1BBQ0UgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZSgiTVNTUEFDRT0iKTsKKwlpZiAoYWdnLT5hZ2dtdHJhbnNzcGFjZSAh PSAwKQorCQlhcHBlbmRfaW50X29iamVjdCh0bXAsICIle3NwYWNlfW4iLCBhZ2ctPmFnZ210cmFu c3NwYWNlKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTUlOVkZVTkMgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZSgiTUlOVkZVTkM9Iik7CisJaWYgKE9pZElzVmFsaWQoYWdnLT5hZ2dt aW52dHJhbnNmbikpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7dHlwZX1UIiwgbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJ CQkJCQlhZ2ctPmFnZ21pbnZ0cmFuc2ZuKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQo dG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKwor CS8qIE1GSU5BTEZVTkMgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiTUZJTkFMRlVOQz0iKTsKKwlp ZiAoT2lkSXNWYWxpZChhZ2ctPmFnZ21maW5hbGZuKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qo dG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgYWdnLT5hZ2dtZmluYWxmbikp OworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlz dCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBNRklOQUxGVU5DX0VYVFJBICovCisJ dG1wID0gbmV3X29ianRyZWUoIk1GSU5BTEZVTkNfRVhUUkE9Iik7CisJaWYgKGFnZy0+YWdnbWZp bmFsZXh0cmEpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIiV7dmFsdWV9cyIsICJ2YWx1 ZSIsICJ0cnVlIik7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIE1JTklUQ09ORCAq LworCWluaXR2YWwgPSBTeXNDYWNoZUdldEF0dHIoQUdHRk5PSUQsIGFnZ1R1cCwKKwkJCQkJCQkg IEFudW1fcGdfYWdncmVnYXRlX2FnZ21pbml0dmFsLAorCQkJCQkJCSAgJmlzbnVsbCk7CisJdG1w ID0gbmV3X29ianRyZWUoIk1JTklUQ09ORD0iKTsKKwlpZiAoIWlzbnVsbCkKKwkJYXBwZW5kX3N0 cmluZ19vYmplY3QodG1wLCAiJXtpbml0dmFsfUwiLCAiaW5pdHZhbCIsIFRleHREYXR1bUdldENT dHJpbmcoaW5pdHZhbCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBIWVBPVEhF VElDQUwgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZSgiSFlQT1RIRVRJQ0FMPSIpOworCWlmIChhZ2ct PmFnZ2tpbmQgPT0gQUdHS0lORF9IWVBPVEhFVElDQUwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0 KHRtcCwgIiV7dmFsdWV9cyIsICJ2YWx1ZSIsICJ0cnVlIik7CisJZWxzZQorCQlhcHBlbmRfbm90 X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0 bXApKTsKKworCS8qIFNPUlRPUCAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJTT1JUT1A9Iik7CisJ aWYgKE9pZElzVmFsaWQoYWdnLT5hZ2dzb3J0b3ApKQorCXsKKwkJdHVwID0gU2VhcmNoU3lzQ2Fj aGUxKE9QRVJPSUQsIE9iamVjdElkR2V0RGF0dW0oYWdnLT5hZ2dzb3J0b3ApKTsKKwkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igb3BlcmF0b3Igd2l0aCBPSUQgJXUiLCBhZ2ctPmFnZ3NvcnRvcCk7CisJCW9wID0gKEZv cm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVCh0dXApOworCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0 bXAsICIle29wZXJhdG9yfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUob3At Pm9wcm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCQkgIE5hbWVTdHIob3AtPm9wcm5hbWUpKSk7CisK KwkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJfQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisK KwkvKiBEb25lIHdpdGggdGhlIGRlZmluaXRpb24gY2xhdXNlICovCisJYXBwZW5kX2FycmF5X29i amVjdChzdG10LCAiKCV7ZWxlbXM6LCB9cykiLCBsaXN0KTsKKworCVJlbGVhc2VTeXNDYWNoZShw cm9jVHVwKTsKKwlSZWxlYXNlU3lzQ2FjaGUoYWdnVHVwKTsKKworCXJldHVybiBzdG10OworfQor CisvKgorICogRGVwYXJzZSBhIERlZmluZVN0bXQgKENSRUFURSBDT0xMQVRJT04pCisgKgorICog R2l2ZW4gYSBjb2xsYXRpb24gT0lELCByZXR1cm4gYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhl IENSRUFURSBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgQ09MTEFU SU9OICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCBGUk9NICV7ZnJvbV9pZGVudGl0eX1E CisgKiAoJXtlbGVtczosIH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmlu ZVN0bXRfQ29sbGF0aW9uKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lLAorCQkJCQkJ CSBPYmplY3RBZGRyZXNzIGZyb21Db2xsaWQpCit7CisJT2JqVHJlZSAgICAqcmV0OworCUhlYXBU dXBsZQljb2xUdXA7CisJRm9ybV9wZ19jb2xsYXRpb24gY29sRm9ybTsKKwlEYXR1bQkJZGF0dW07 CisJYm9vbAkJaXNudWxsOworCU9ialRyZWUgICAgKnRtcDsKKwlMaXN0CSAgICpsaXN0ID0gTklM OworCisJY29sVHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTExPSUQsIE9iamVjdElkR2V0RGF0dW0o b2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29sVHVwKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiB3aXRoIE9JRCAldSIsIG9iamVj dElkKTsKKwljb2xGb3JtID0gKEZvcm1fcGdfY29sbGF0aW9uKSBHRVRTVFJVQ1QoY29sVHVwKTsK KworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgQ09MTEFUSU9OICV7aWZfbm90X2V4aXN0 c31zICV7aWRlbnRpdHl9RCIsIDIsCisJCQkJCQkgImlmX25vdF9leGlzdHMiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJIGRlZmluZS0+aWZfbm90X2V4aXN0cyA/ICJJRiBOT1QgRVhJU1RTIiA6ICIi LAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lKGNvbEZvcm0tPmNvbGxuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVT dHIoY29sRm9ybS0+Y29sbG5hbWUpKSk7CisKKwlpZiAoT2lkSXNWYWxpZChmcm9tQ29sbGlkLm9i amVjdElkKSkKKwl7CisJCU9pZAkJCWNvbGxpZCA9IGZyb21Db2xsaWQub2JqZWN0SWQ7CisJCUhl YXBUdXBsZQl0cDsKKwkJRm9ybV9wZ19jb2xsYXRpb24gZnJvbUNvbEZvcm07CisKKwkJLyoKKwkJ ICogQ1JFQVRFIENPTExBVElPTiAle2lkZW50aXR5fUQgRlJPTSBleGlzdGluZ19jb2xsYXRpb247 CisJCSAqLworCQl0cCA9IFNlYXJjaFN5c0NhY2hlMShDT0xMT0lELCBPYmplY3RJZEdldERhdHVt KGNvbGxpZCkpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbGxhdGlvbiB3aXRoIE9JRCAldSIsIGNvbGxpZCk7 CisKKwkJZnJvbUNvbEZvcm0gPSAoRm9ybV9wZ19jb2xsYXRpb24pIEdFVFNUUlVDVCh0cCk7CisK KwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiRlJPTSAle2Zyb21faWRlbnRpdHl9RCIsCisJ CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShmcm9tQ29sRm9ybS0+Y29sbG5hbWVzcGFj ZSwKKwkJCQkJCQkJCQkJCQkgIE5hbWVTdHIoZnJvbUNvbEZvcm0tPmNvbGxuYW1lKSkpOworCisJ CVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCVJlbGVhc2VTeXNDYWNoZShjb2xUdXApOworCQlyZXR1 cm4gcmV0OworCX0KKworCS8qIExPQ0FMRSAqLworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKENP TExPSUQsIGNvbFR1cCwgQW51bV9wZ19jb2xsYXRpb25fY29sbGljdWxvY2FsZSwgJmlzbnVsbCk7 CisJaWYgKCFpc251bGwpCisJeworCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiTE9DQUxFPSV7bG9j YWxlfUwiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImxvY2FsZSIsCisJ CQkJCQkJICJsb2NhbGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMiLCBU ZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSkpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdf b2JqZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBMQ19DT0xMQVRFICovCisJZGF0dW0gPSBT eXNDYWNoZUdldEF0dHIoQ09MTE9JRCwgY29sVHVwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsY29s bGF0ZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQl0bXAgPSBuZXdfb2JqdHJlZV9W QSgiTENfQ09MTEFURT0le2NvbGxhdGV9TCIsIDIsCisJCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBl U3RyaW5nLCAiY29sbGF0ZSIsCisJCQkJCQkJICJjb2xsYXRlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCQkgcHNwcmludGYoIiVzIiwgVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpKTsKKwkJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCisJLyogTENf Q1RZUEUgKi8KKwlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihDT0xMT0lELCBjb2xUdXAsIEFudW1f cGdfY29sbGF0aW9uX2NvbGxjdHlwZSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiTENfQ1RZUEU9JXtjdHlwZX1MIiwgMiwKKwkJCQkJCQkgImNs YXVzZSIsIE9ialR5cGVTdHJpbmcsICJjdHlwZSIsCisJCQkJCQkJICJjdHlwZSIsIE9ialR5cGVT dHJpbmcsCisJCQkJCQkJIHBzcHJpbnRmKCIlcyIsIFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0p KSk7CisJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCX0K KworCS8qIFBST1ZJREVSICovCisJaWYgKGNvbEZvcm0tPmNvbGxwcm92aWRlciA9PSBDT0xMUFJP VklERVJfSUNVKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIlBST1ZJREVSPSV7cHJvdmlk ZXJ9TCIsIDIsCisJCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAicHJvdmlkZXIiLAor CQkJCQkJCSAicHJvdmlkZXIiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMi LCAiaWN1IikpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAp KTsKKwl9CisJZWxzZSBpZiAoY29sRm9ybS0+Y29sbHByb3ZpZGVyID09IENPTExQUk9WSURFUl9M SUJDKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIlBST1ZJREVSPSV7cHJvdmlkZXJ9TCIs IDIsCisJCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAicHJvdmlkZXIiLAorCQkJCQkJ CSAicHJvdmlkZXIiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCSBwc3ByaW50ZigiJXMiLCAibGli YyIpKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJ fQorCisJLyogREVURVJNSU5JU1RJQyAqLworCWlmIChjb2xGb3JtLT5jb2xsaXNkZXRlcm1pbmlz dGljKQorCXsKKwkJdG1wID0gbmV3X29ianRyZWVfVkEoIkRFVEVSTUlOSVNUSUM9JXtkZXRlcm1p bmlzdGljfUwiLCAyLAorCQkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImRldGVybWlu aXN0aWMiLAorCQkJCQkJCSAiZGV0ZXJtaW5pc3RpYyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJ IHBzcHJpbnRmKCIlcyIsICJ0cnVlIikpOworCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2Jq ZWN0X29iamVjdCh0bXApKTsKKwl9CisKKwkvKiBWRVJTSU9OICovCisJZGF0dW0gPSBTeXNDYWNo ZUdldEF0dHIoQ09MTE9JRCwgY29sVHVwLCBBbnVtX3BnX2NvbGxhdGlvbl9jb2xsdmVyc2lvbiwg JmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJeworCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiVkVS U0lPTj0le3ZlcnNpb259TCIsIDIsCisJCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAi dmVyc2lvbiIsCisJCQkJCQkJICJ2ZXJzaW9uIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkgcHNw cmludGYoIiVzIiwgVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSkpKTsKKwkJbGlzdCA9IGxhcHBl bmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisJfQorCisJYXBwZW5kX2FycmF5X29i amVjdChyZXQsICIoJXtlbGVtczosIH1zKSIsIGxpc3QpOworCVJlbGVhc2VTeXNDYWNoZShjb2xU dXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBEZWZpbmVTdG10IChD UkVBVEUgT1BFUkFUT1IpCisgKgorICogR2l2ZW4gYSBvcGVyYXRvciBPSUQgYW5kIHRoZSBwYXJz ZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGlu ZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRF IE9QRVJBVE9SICV7aWRlbnRpdHl9TyAoJXtlbGVtczosIH1zKQorICovCitzdGF0aWMgT2JqVHJl ZSAqCitkZXBhcnNlX0RlZmluZVN0bXRfT3BlcmF0b3IoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10 ICpkZWZpbmUpCit7CisJSGVhcFR1cGxlCW9wclR1cDsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2Jq VHJlZSAgICAqdG1wX29iajsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCUZvcm1fcGdfb3BlcmF0 b3Igb3ByRm9ybTsKKworCW9wclR1cCA9IFNlYXJjaFN5c0NhY2hlMShPUEVST0lELCBPYmplY3RJ ZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9wclR1cCkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBvcGVyYXRvciB3aXRoIE9JRCAl dSIsIG9iamVjdElkKTsKKwlvcHJGb3JtID0gKEZvcm1fcGdfb3BlcmF0b3IpIEdFVFNUUlVDVChv cHJUdXApOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBPUEVSQVRPUiAle2lkZW50 aXR5fU8iLCAxLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wckZvcm0tPm9wcm5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CSAgTmFtZVN0cihvcHJGb3JtLT5vcHJuYW1lKSkpOworCisJLyogUFJPQ0VEVVJFICovCisJdG1w X29iaiA9IG5ld19vYmp0cmVlX1ZBKCJQUk9DRURVUkU9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJ CQkJImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJwcm9jZWR1cmUiLAorCQkJCQkJCSJwcm9jZWR1 cmUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQ cm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQlvcHJGb3JtLT5vcHJjb2RlKSk7CisJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCisJLyog TEVGVEFSRyAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiTEVGVEFSRz0iLCAxLAorCQkJ CQkJCSJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibGVmdGFyZyIpOworCWlmIChPaWRJc1ZhbGlk KG9wckZvcm0tPm9wcmxlZnQpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXt0 eXBlfVQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShvcHJGb3JtLT5vcHJsZWZ0LCAt MSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWxpc3QgPSBsYXBw ZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIFJJR0hUQVJHICov CisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJSSUdIVEFSRz0iLCAxLAorCQkJCQkJCSJjbGF1 c2UiLCBPYmpUeXBlU3RyaW5nLCAicmlnaHRhcmciKTsKKwlpZiAoT2lkSXNWYWxpZChvcHJGb3Jt LT5vcHJyaWdodCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3R5cGV9VCIs CisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl90eXBlKG9wckZvcm0tPm9wcnJpZ2h0LCAtMSkpOwor CWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIENPTU1VVEFUT1IgKi8KKwl0 bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkNPTU1VVEFUT1I9IiwgMSwKKwkJCQkJCQkiY2xhdXNl IiwgT2JqVHlwZVN0cmluZywgImNvbW11dGF0b3IiKTsKKwlpZiAoT2lkSXNWYWxpZChvcHJGb3Jt LT5vcHJjb20pKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtvcGVyfUQiLAor CQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoT3BlcmF0b3JSZWxhdGlvbklkLAor CQkJCQkJCQkJCQkJCQkgb3ByRm9ybS0+b3ByY29tKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3Qo dG1wX29iaikpOworCisJLyogTkVHQVRPUiAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi TkVHQVRPUj0iLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibmVnYXRvciIp OworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcm5lZ2F0ZSkpCisJCWFwcGVuZF9vYmplY3Rf b2JqZWN0KHRtcF9vYmosICIle29wZXJ9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZV9pZChPcGVyYXRvclJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBvcHJGb3JtLT5vcHJu ZWdhdGUpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisKKwkvKiBSRVNUUklD VCAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiUkVTVFJJQ1Q9IiwgMSwKKwkJCQkJCQki Y2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInJlc3RyaWN0Iik7CisJaWYgKE9pZElzVmFsaWQob3By Rm9ybS0+b3BycmVzdCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle3Byb2Nl ZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBvcHJGb3JtLT5vcHJyZXN0KSk7CisJZWxzZQorCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29i amVjdF9vYmplY3QodG1wX29iaikpOworCisJLyogSk9JTiAqLworCXRtcF9vYmogPSBuZXdfb2Jq dHJlZV9WQSgiSk9JTj0iLCAxLAorCQkJCQkJCSJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiam9p biIpOworCWlmIChPaWRJc1ZhbGlkKG9wckZvcm0tPm9wcmpvaW4pKQorCQlhcHBlbmRfb2JqZWN0 X29iamVjdCh0bXBfb2JqLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgb3ByRm9y bS0+b3Byam9pbikpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWxp c3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIEhB U0hFUyAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiSEFTSEVTIiwgMSwKKwkJCQkJCQki Y2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImhhc2hlcyIpOworCWlmICghb3ByRm9ybS0+b3ByY2Fu aGFzaCkKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWxpc3QgPSBsYXBwZW5kKGxp c3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKworCS8qIE1FUkdFUyAqLworCXRtcF9v YmogPSBuZXdfb2JqdHJlZV9WQSgiTUVSR0VTIiwgMSwKKwkJCQkJCQkiY2xhdXNlIiwgT2JqVHlw ZVN0cmluZywgIm1lcmdlcyIpOworCWlmICghb3ByRm9ybS0+b3ByY2FubWVyZ2UpCisJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0 X29iamVjdCh0bXBfb2JqKSk7CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIigle2VsZW1z OiwgfXMpIiwgbGlzdCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUob3ByVHVwKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ1JFQVRFIFRZUEUgc3RhdGVtZW50LgorICoKKyAq IFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgVFlQRSAle2lkZW50aXR5fUQgJXtlbGVtczosIH1z KQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0RlZmluZVN0bXRfVHlwZShPaWQgb2Jq ZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSkKK3sKKwlIZWFwVHVwbGUJdHlwVHVwOworCU9ialRy ZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlj aGFyCSAgICpzdHI7CisJRGF0dW0JCWRmbHQ7CisJYm9vbAkJaXNudWxsOworCUZvcm1fcGdfdHlw ZSB0eXBGb3JtOworCisJdHlwVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElk R2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwVHVwKSkKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHR5cGUgd2l0aCBPSUQgJXUiLCBv YmplY3RJZCk7CisJdHlwRm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0eXBUdXApOwor CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBUWVBFICV7aWRlbnRpdHl9RCIsIDEsCisJ CQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWUodHlwRm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKHR5 cEZvcm0tPnR5cG5hbWUpKSk7CisKKwkvKiBTaGVsbCB0eXBlcy4gKi8KKwlpZiAoIXR5cEZvcm0t PnR5cGlzZGVmaW5lZCkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZSh0eXBUdXApOworCQlyZXR1cm4g cmV0OworCX0KKworCS8qIEFkZCB0aGUgZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwkvKiBJTlBVVCAq LworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCIoSU5QVVQ9JXtwcm9jZWR1cmV9RCIsIDIsCisJCQkJ CQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJpbnB1dCIsCisJCQkJCQkgInByb2NlZHVyZSIs IE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2Nl ZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cGlucHV0KSk7CisJbGlz dCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBPVVRQVVQg Ki8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiT1VUUFVUPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJ CQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAib3V0cHV0IiwKKwkJCQkJCSAicHJvY2VkdXJl IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJv Y2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwb3V0cHV0KSk7CisJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBSRUNF SVZFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlJFQ0VJVkU9IiwgMSwKKwkJCQkJCSAiY2xh dXNlIiwgT2JqVHlwZVN0cmluZywgInJlY2VpdmUiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3Jt LT50eXByZWNlaXZlKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtwcm9jZWR1cmV9 RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlv bklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwcmVjZWl2ZSkpOworCWVsc2UKKwkJYXBw ZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisKKwkvKiBTRU5EICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNFTkQ9 IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInNlbmQiKTsKKwlpZiAoT2lk SXNWYWxpZCh0eXBGb3JtLT50eXBzZW5kKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAi JXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9j ZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwc2VuZCkpOworCWVs c2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBUWVBNT0RfSU4gKi8KKwl0bXAgPSBuZXdfb2Jq dHJlZV9WQSgiVFlQTU9EX0lOPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcs ICJ0eXBtb2RfaW4iKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBtb2RpbikpCisJCWFw cGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2Jq dHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJ IHR5cEZvcm0tPnR5cG1vZGluKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsK KwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFRZ UE1PRF9PVVQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiVFlQTU9EX09VVD0iLCAxLAorCQkJ CQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAidHlwbW9kX291dCIpOworCWlmIChPaWRJc1Zh bGlkKHR5cEZvcm0tPnR5cG1vZG91dCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcCwgIiV7 cHJvY2VkdXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cG1vZG91dCkpOworCWVs c2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBBTkFMWVpFICovCisJdG1wID0gbmV3X29ianRy ZWVfVkEoIkFOQUxZWkU9IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImFu YWx5emUiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBhbmFseXplKSkKKwkJYXBwZW5k X29iamVjdF9vYmplY3QodG1wLCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgdHlw Rm9ybS0+dHlwYW5hbHl6ZSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJ bGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBJTlRF Uk5BTExFTkdUSCAqLworCWlmICh0eXBGb3JtLT50eXBsZW4gPT0gLTEpCisJCXRtcCA9IG5ld19v Ymp0cmVlKCJJTlRFUk5BTExFTkdUSD1WQVJJQUJMRSIpOworCWVsc2UKKwkJdG1wID0gbmV3X29i anRyZWVfVkEoIklOVEVSTkFMTEVOR1RIPSV7dHlwbGVufW4iLCAxLAorCQkJCQkJCSAidHlwbGVu IiwgT2JqVHlwZUludGVnZXIsIHR5cEZvcm0tPnR5cGxlbik7CisKKwlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFBBU1NFREJZVkFMVUUgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiUEFTU0VEQllWQUxVRSIsIDEsCisJCQkJCQkgImNsYXVzZSIs IE9ialR5cGVTdHJpbmcsICJwYXNzZWRieXZhbHVlIik7CisJaWYgKCF0eXBGb3JtLT50eXBieXZh bCkKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBYWFggaXQncyBvZGQgdG8gcmVwcmVzZW50IGFs aWdubWVudCB3aXRoIHNjaGVtYS1xdWFsaWZpZWQgdHlwZSBuYW1lcyAqLworCXN3aXRjaCAodHlw Rm9ybS0+dHlwYWxpZ24pCisJeworCQljYXNlICdkJzoKKwkJCXN0ciA9ICJwZ19jYXRhbG9nLmZs b2F0OCI7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlzdHIgPSAicGdfY2F0YWxvZy5pbnQ0 IjsKKwkJCWJyZWFrOworCQljYXNlICdzJzoKKwkJCXN0ciA9ICJwZ19jYXRhbG9nLmludDIiOwor CQkJYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkJc3RyID0gInBnX2NhdGFsb2cuYnBjaGFyIjsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQgYWxpZ25tZW50ICVj IiwgdHlwRm9ybS0+dHlwYWxpZ24pOworCX0KKworCS8qIEFMSUdOTUVOVCAqLworCXRtcCA9IG5l d19vYmp0cmVlX1ZBKCJBTElHTk1FTlQ9JXthbGlnbn1zIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwg T2JqVHlwZVN0cmluZywgImFsaWdubWVudCIsCisJCQkJCQkgImFsaWduIiwgT2JqVHlwZVN0cmlu Zywgc3RyKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsK KworCS8qIFNUT1JBR0UgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiU1RPUkFHRT0le3N0b3Jh Z2V9cyIsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdG9yYWdlIiwKKwkJ CQkJCSAic3RvcmFnZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0X3R5cGVfc3RvcmFnZSh0 eXBGb3JtLT50eXBzdG9yYWdlKSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9v YmplY3QodG1wKSk7CisKKwkvKiBDQVRFR09SWSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJD QVRFR09SWT0le2NhdGVnb3J5fXMiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5n LCAiY2F0ZWdvcnkiLAorCQkJCQkJICJjYXRlZ29yeSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkg cHNwcmludGYoIiVjIiwgdHlwRm9ybS0+dHlwY2F0ZWdvcnkpKTsKKwlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCS8qIFBSRUZFUlJFRCAqLworCXRtcCA9 IG5ld19vYmp0cmVlX1ZBKCJQUkVGRVJSRUQ9JXtwcmVmZXJyZWR9cyIsIDEsCisJCQkJCQkgInBy ZWZlcnJlZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgdHlwRm9ybS0+dHlwaXNwcmVmZXJyZWQg PyAiVFJVRSIgOiAiRkFMU0UiKTsKKwlpZiAoIXR5cEZvcm0tPnR5cGlzcHJlZmVycmVkKQorCQlh cHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0 X29iamVjdCh0bXApKTsKKworCS8qIERFRkFVTFQgKi8KKwlkZmx0ID0gU3lzQ2FjaGVHZXRBdHRy KFRZUEVPSUQsIHR5cFR1cCwKKwkJCQkJCSAgIEFudW1fcGdfdHlwZV90eXBkZWZhdWx0LAorCQkJ CQkJICAgJmlzbnVsbCk7CisJdG1wID0gbmV3X29ianRyZWVfVkEoIkRFRkFVTFQ9IiwgMSwKKwkJ CQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImRlZmF1bHQiKTsKKwlpZiAoIWlzbnVsbCkK KwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXtkZWZhdWx0fXMiLCAiZGVmYXVsdCIsCisJ CQkJCQkJIFRleHREYXR1bUdldENTdHJpbmcoZGZsdCkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9w cmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1w KSk7CisKKwkvKiBFTEVNRU5UICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIkVMRU1FTlQ9Iiwg MSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImVsZW1lbnQiKTsKKwlpZiAoT2lk SXNWYWxpZCh0eXBGb3JtLT50eXBlbGVtKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAi JXtlbGVtfVQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBGb3JtLT50eXBlbGVt LCAtMSkpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBl bmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBERUxJTUlURVIgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiREVMSU1JVEVSPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9i alR5cGVTdHJpbmcsICJkZWxpbWl0ZXIiKTsKKwlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXAsICIl e2RlbGltfUwiLCAiZGVsaW0iLAorCQkJCQkJIHBzcHJpbnRmKCIlYyIsIHR5cEZvcm0tPnR5cGRl bGltKSk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisK KwkvKiBDT0xMQVRBQkxFICovCisJdG1wID0gbmV3X29ianRyZWVfVkEoIkNPTExBVEFCTEU9Iiwg MSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImNvbGxhdGFibGUiKTsKKwlpZiAo IU9pZElzVmFsaWQodHlwRm9ybS0+dHlwY29sbGF0aW9uKSkKKwkJYXBwZW5kX25vdF9wcmVzZW50 KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisK KwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7ZWxlbXM6LCB9cykiLCBsaXN0KTsKKworCVJl bGVhc2VTeXNDYWNoZSh0eXBUdXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFy c2UgYSBDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiBzdGF0ZW1lbnQuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICV7aWRl bnRpdHl9RCAoJXtlbGVtczosIH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0Rl ZmluZVN0bXRfVFNDb25maWcoT2lkIG9iamVjdElkLCBEZWZpbmVTdG10ICpkZWZpbmUsCisJCQkJ CQkJT2JqZWN0QWRkcmVzcyBjb3BpZWQpCit7CisJSGVhcFR1cGxlCXRzY1R1cDsKKwlIZWFwVHVw bGUJdHNwVHVwOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJRm9ybV9w Z190c19jb25maWcgdHNjRm9ybTsKKwlGb3JtX3BnX3RzX3BhcnNlciB0c3BGb3JtOworCUxpc3QJ ICAgKmxpc3QgPSBOSUw7CisKKwl0c2NUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNDT05GSUdPSUQs IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHNj VHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRleHQgc2VhcmNo IGNvbmZpZ3VyYXRpb24gd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwl0c2NGb3JtID0g KEZvcm1fcGdfdHNfY29uZmlnKSBHRVRTVFJVQ1QodHNjVHVwKTsKKworCXRzcFR1cCA9IFNlYXJj aFN5c0NhY2hlMShUU1BBUlNFUk9JRCwgT2JqZWN0SWRHZXREYXR1bSh0c2NGb3JtLT5jZmdwYXJz ZXIpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHNwVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRleHQgc2VhcmNoIHBhcnNlciAldSIsCisJCQkgdHNjRm9y bS0+Y2ZncGFyc2VyKTsKKwl0c3BGb3JtID0gKEZvcm1fcGdfdHNfcGFyc2VyKSBHRVRTVFJVQ1Qo dHNwVHVwKTsKKworCS8qCisJICogQWRkIHRoZSBkZWZpbml0aW9uIGNsYXVzZS4gIElmIHdlIGhh dmUgQ09QWSdlZCBhbiBleGlzdGluZyBjb25maWcsIGFkZAorCSAqIGEgQ09QWSBjbGF1c2U7IG90 aGVyd2lzZSBhZGQgYSBQQVJTRVIgY2xhdXNlLgorCSAqLworCS8qIENPUFkgKi8KKwl0bXAgPSBu ZXdfb2JqdHJlZV9WQSgiQ09QWT0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5n LCAiY29weSIpOworCWlmIChPaWRJc1ZhbGlkKGNvcGllZC5vYmplY3RJZCkpCisJCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHRtcCwgIiV7dHNjb25maWd9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zv cl9xdWFsbmFtZV9pZChUU0NvbmZpZ1JlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSBjb3BpZWQu b2JqZWN0SWQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBs YXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogUEFSU0VSICovCisJ dG1wID0gbmV3X29ianRyZWVfVkEoIlBBUlNFUj0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAicGFyc2VyIik7CisJaWYgKGNvcGllZC5vYmplY3RJZCA9PSBJbnZhbGlkT2lk KQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3BhcnNlcn1EIiwKKwkJCQkJCQkgbmV3 X29ianRyZWVfZm9yX3F1YWxuYW1lKHRzcEZvcm0tPnByc25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJ CQkgIE5hbWVTdHIodHNwRm9ybS0+cHJzbmFtZSkpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJl c2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkp OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFU SU9OICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKSIsIDIsCisJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUodHNjRm9ybS0+ Y2ZnbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKHRzY0Zvcm0tPmNmZ25hbWUpKSwK KwkJCQkJCSAiZWxlbXMiLCBPYmpUeXBlQXJyYXksIGxpc3QpOworCisJUmVsZWFzZVN5c0NhY2hl KHRzcFR1cCk7CisJUmVsZWFzZVN5c0NhY2hlKHRzY1R1cCk7CisJcmV0dXJuIHJldDsKK30KKwor LyoKKyAqIERlcGFyc2UgYSBDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSIHN0YXRlbWVudC4KKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNFUiAle2lkZW50 aXR5fUQgKCV7ZWxlbXM6LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZp bmVTdG10X1RTUGFyc2VyKE9pZCBvYmplY3RJZCwgRGVmaW5lU3RtdCAqZGVmaW5lKQoreworCUhl YXBUdXBsZQl0c3BUdXA7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcDsKKwlM aXN0CSAgICpsaXN0ID0gTklMOworCUZvcm1fcGdfdHNfcGFyc2VyIHRzcEZvcm07CisKKwl0c3BU dXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNQQVJTRVJPSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0 SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHNwVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRleHQgc2VhcmNoIHBhcnNlciB3aXRoIE9JRCAldSIsCisJ CQkgb2JqZWN0SWQpOworCXRzcEZvcm0gPSAoRm9ybV9wZ190c19wYXJzZXIpIEdFVFNUUlVDVCh0 c3BUdXApOworCisJLyogQWRkIHRoZSBkZWZpbml0aW9uIGNsYXVzZSAqLworCS8qIFNUQVJUICov CisJdG1wID0gbmV3X29ianRyZWVfVkEoIlNUQVJUPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJCQkJ ICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3RhcnQiLAorCQkJCQkJICJwcm9jZWR1cmUiLCBP YmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1 cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSB0c3BGb3JtLT5wcnNzdGFydCkpOworCWxpc3Qg PSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogR0VUVE9LRU4g Ki8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiR0VUVE9LRU49JXtwcm9jZWR1cmV9RCIsIDIsCisJ CQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJnZXR0b2tlbiIsCisJCQkJCQkgInByb2Nl ZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIHRzcEZvcm0tPnByc3Rva2VuKSk7 CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBF TkQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiRU5EPSV7cHJvY2VkdXJlfUQiLCAyLAorCQkJ CQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiZW5kIiwKKwkJCQkJCSAicHJvY2VkdXJlIiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2Vk dXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgdHNwRm9ybS0+cHJzZW5kKSk7CisJbGlzdCA9 IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKiBMRVhUWVBFUyAq LworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJMRVhUWVBFUz0le3Byb2NlZHVyZX1EIiwgMiwKKwkJ CQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImxleHR5cGVzIiwKKwkJCQkJCSAicHJvY2Vk dXJlIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQo UHJvY2VkdXJlUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkgdHNwRm9ybS0+cHJzbGV4dHlwZSkp OworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyog SEVBRExJTkUgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiSEVBRExJTkU9IiwgMSwKKwkJCQkJ CSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgImhlYWRsaW5lIik7CisJaWYgKE9pZElzVmFsaWQo dHNwRm9ybS0+cHJzaGVhZGxpbmUpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3By b2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVy ZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0c3BGb3JtLT5wcnNoZWFkbGluZSkpOworCWVs c2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wKSk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFRF WFQgU0VBUkNIIFBBUlNFUiAle2lkZW50aXR5fUQgKCV7ZWxlbXM6LCB9cykiLCAyLAorCQkJCQkJ ICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxu YW1lKHRzcEZvcm0tPnByc25hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cih0c3BGb3Jt LT5wcnNuYW1lKSksCisJCQkJCQkgImVsZW1zIiwgT2JqVHlwZUFycmF5LCBsaXN0KTsKKworCVJl bGVhc2VTeXNDYWNoZSh0c3BUdXApOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNl IGEgQ1JFQVRFIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkgc3RhdGVtZW50LgorICoKKyAqIFZlcmJv c2Ugc3ludGF4CisgKiBDUkVBVEUgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSAle2lkZW50aXR5fUQg KCV7ZWxlbXM6LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9EZWZpbmVTdG10 X1RTRGljdGlvbmFyeShPaWQgb2JqZWN0SWQsIERlZmluZVN0bXQgKmRlZmluZSkKK3sKKwlIZWFw VHVwbGUJdHNkVHVwOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJTGlz dAkgICAqbGlzdCA9IE5JTDsKKwlEYXR1bQkJb3B0aW9uczsKKwlib29sCQlpc251bGw7CisJRm9y bV9wZ190c19kaWN0IHRzZEZvcm07CisKKwl0c2RUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNESUNU T0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHRzZFR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0ZXh0IHNl YXJjaCBkaWN0aW9uYXJ5IHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJdHNkRm9ybSA9 IChGb3JtX3BnX3RzX2RpY3QpIEdFVFNUUlVDVCh0c2RUdXApOworCisKKworCS8qIEFkZCB0aGUg ZGVmaW5pdGlvbiBjbGF1c2UgKi8KKwkvKiBURU1QTEFURSAqLworCXRtcCA9IG5ld19vYmp0cmVl X1ZBKCJURU1QTEFURT0iLCAxLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAidGVt cGxhdGUiKTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXAsICIle3RlbXBsYXRlfUQiLAorCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUU1RlbXBsYXRlUmVsYXRpb25JZCwKKwkJ CQkJCQkJCQkJCQkgdHNkRm9ybS0+ZGljdHRlbXBsYXRlKSk7CisJbGlzdCA9IGxhcHBlbmQobGlz dCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwkvKgorCSAqIG9wdGlvbnMuICBYWFggdGhp cyBpcyBhIHByZXR0eSB1c2VsZXNzIHJlcHJlc2VudGF0aW9uLCBidXQgd2UgY2FuJ3QgZG8KKwkg KiBiZXR0ZXIgd2l0aG91dCBtb3JlIHRzX2NhY2hlLmMgY29vcGVyYXRpb24gLi4uCisJICovCisJ b3B0aW9ucyA9IFN5c0NhY2hlR2V0QXR0cihUU0RJQ1RPSUQsIHRzZFR1cCwKKwkJCQkJCQkgIEFu dW1fcGdfdHNfZGljdF9kaWN0aW5pdG9wdGlvbiwKKwkJCQkJCQkgICZpc251bGwpOworCXRtcCA9 IG5ld19vYmp0cmVlKCIiKTsKKwlpZiAoIWlzbnVsbCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3Qo dG1wLCAiJXtvcHRpb25zfXMiLCAib3B0aW9ucyIsCisJCQkJCQkJIFRleHREYXR1bUdldENTdHJp bmcob3B0aW9ucykpOworCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJbGlzdCA9 IGxhcHBlbmQobGlzdCwgbmV3X29iamVjdF9vYmplY3QodG1wKSk7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQSgiQ1JFQVRFIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkgJXtpZGVudGl0eX1EICgle2Vs ZW1zOiwgfXMpIiwgMiwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJ IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZSh0c2RGb3JtLT5kaWN0bmFtZXNwYWNlLAorCQkJCQkJ CQkJCQkJICBOYW1lU3RyKHRzZEZvcm0tPmRpY3RuYW1lKSksCisJCQkJCQkgImVsZW1zIiwgT2Jq VHlwZUFycmF5LCBsaXN0KTsKKworCVJlbGVhc2VTeXNDYWNoZSh0c2RUdXApOworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIHN0 YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFRFWFQgU0VBUkNIIFRF TVBMQVRFICV7aWRlbnRpdHl9RCAoJXtlbGVtczosIH1zKQorICovCitzdGF0aWMgT2JqVHJlZSAq CitkZXBhcnNlX0RlZmluZVN0bXRfVFNUZW1wbGF0ZShPaWQgb2JqZWN0SWQsIERlZmluZVN0bXQg KmRlZmluZSkKK3sKKwlIZWFwVHVwbGUJdHN0VHVwOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpU cmVlICAgICp0bXA7CisJTGlzdAkgICAqbGlzdCA9IE5JTDsKKwlGb3JtX3BnX3RzX3RlbXBsYXRl IHRzdEZvcm07CisKKwl0c3RUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNURU1QTEFURU9JRCwgT2Jq ZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0c3RUdXAp KQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdGV4dCBzZWFyY2ggdGVt cGxhdGUgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwl0c3RGb3JtID0gKEZvcm1fcGdf dHNfdGVtcGxhdGUpIEdFVFNUUlVDVCh0c3RUdXApOworCisJLyogQWRkIHRoZSBkZWZpbml0aW9u IGNsYXVzZSAqLworCS8qIElOSVQgKi8KKwl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiSU5JVD0iLCAx LAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiaW5pdCIpOworCWlmIChPaWRJc1Zh bGlkKHRzdEZvcm0tPnRtcGxpbml0KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wLCAiJXtw cm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1 cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgdHN0Rm9ybS0+dG1wbGluaXQpKTsKKwllbHNl CisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19v YmplY3Rfb2JqZWN0KHRtcCkpOworCisJLyogTEVYSVpFICovCisJdG1wID0gbmV3X29ianRyZWVf VkEoIkxFWElaRT0le3Byb2NlZHVyZX1EIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0 cmluZywgImxleGl6ZSIsCisJCQkJCQkgInByb2NlZHVyZSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJ CQkJCQkJCQkJIHRzdEZvcm0tPnRtcGxsZXhpemUpKTsKKwlsaXN0ID0gbGFwcGVuZChsaXN0LCBu ZXdfb2JqZWN0X29iamVjdCh0bXApKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUg VEVYVCBTRUFSQ0ggVEVNUExBVEUgJXtpZGVudGl0eX1EICgle2VsZW1zOiwgfXMpIiwgMiwKKwkJ CQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZSh0c3RGb3JtLT50bXBsbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJICBOYW1lU3RyKHRz dEZvcm0tPnRtcGxuYW1lKSksCisJCQkJCQkgImVsZW1zIiwgT2JqVHlwZUFycmF5LCBsaXN0KTsK KworCVJlbGVhc2VTeXNDYWNoZSh0c3RUdXApOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBE ZXBhcnNlIGFuIEFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04gc3RhdGVtZW50LgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OICV7 aWRlbnRpdHl9RCBBREQgTUFQUElORworICogRk9SICV7dG9rZW50eXBlOiwgfUkgV0lUSCAle2Rp Y3Rpb25hcmllczosIH1ECisgKglPUgorICogQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElP TiAle2lkZW50aXR5fUQgRFJPUCBNQVBQSU5HICV7aWZfZXhpc3RzfXMKKyAqIEZPUiAle3Rva2Vu dHlwZX1JCisgKglPUgorICogQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAle2lkZW50 aXR5fUQgQUxURVIgTUFQUElORworICogRk9SICV7dG9rZW50eXBlOiwgfUkgV0lUSCAle2RpY3Rp b25hcmllczosIH1ECisgKglPUgorICogQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiAl e2lkZW50aXR5fUQgQUxURVIgTUFQUElORworICogUkVQTEFDRSAle29sZF9kaWN0aW9uYXJ5fUQg V0lUSCAle25ld19kaWN0aW9uYXJ5fUQKKyAqCU9SCisgKiBBTFRFUiBURVhUIFNFQVJDSCBDT05G SUdVUkFUSU9OICV7aWRlbnRpdHl9RCBBTFRFUiBNQVBQSU5HCisgKiBGT1IgJXt0b2tlbnR5cGU6 LCB9SSBSRVBMQUNFICV7b2xkX2RpY3Rpb25hcnl9RCBXSVRIICV7bmV3X2RpY3Rpb25hcnl9RAor ICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyVFNDb25maWd1cmF0aW9uU3RtdChD b2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10ICpub2Rl ID0gKEFsdGVyVFNDb25maWd1cmF0aW9uU3RtdCAqKSBjbWQtPnBhcnNldHJlZTsKKwlPYmpUcmVl ICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlz dENlbGwgICAqY2VsbDsKKwlpbnQJCQlpOworCisJcmV0ID0gbmV3X29ianRyZWUoIkFMVEVSIFRF WFQgU0VBUkNIIENPTkZJR1VSQVRJT04iKTsKKworCS8qIERldGVybWluZSB0aGUgZm9ybWF0IHN0 cmluZyBhcHByb3ByaWF0ZSB0byBlYWNoIHN1YmNvbW1hbmQgKi8KKwlzd2l0Y2ggKG5vZGUtPmtp bmQpCisJeworCQljYXNlIEFMVEVSX1RTQ09ORklHX0FERF9NQVBQSU5HOgorCQkJYXBwZW5kX29i amVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIEFERCBNQVBQSU5HIiwKKwkJCQkJCQkJIG5l d19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChjbWQtPmQuYXRzY2ZnLmFkZHJlc3MuY2xhc3NJZCwK KwkJCQkJCQkJCQkJCQkJCSBjbWQtPmQuYXRzY2ZnLmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgQUxURVJfVFNDT05GSUdfRFJPUF9NQVBQSU5HOgorCQkJYXBwZW5kX29i amVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIERST1AgTUFQUElORyIsCisJCQkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoY21kLT5kLmF0c2NmZy5hZGRyZXNzLmNsYXNzSWQs CisJCQkJCQkJCQkJCQkJCQkgY21kLT5kLmF0c2NmZy5hZGRyZXNzLm9iamVjdElkKSk7CisJCQl0 bXAgPSBuZXdfb2JqdHJlZSgiSUYgRVhJU1RTIik7CisJCQlhcHBlbmRfYm9vbF9vYmplY3QodG1w LCAicHJlc2VudCIsIG5vZGUtPm1pc3Npbmdfb2spOworCQkJYXBwZW5kX29iamVjdF9vYmplY3Qo cmV0LCAiJXtpZl9leGlzdHN9cyIsIHRtcCk7CisJCQlicmVhazsKKworCQljYXNlIEFMVEVSX1RT Q09ORklHX0FMVEVSX01BUFBJTkdfRk9SX1RPS0VOOgorCQljYXNlIEFMVEVSX1RTQ09ORklHX1JF UExBQ0VfRElDVDoKKwkJY2FzZSBBTFRFUl9UU0NPTkZJR19SRVBMQUNFX0RJQ1RfRk9SX1RPS0VO OgorCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIEFMVEVSIE1BUFBJ TkciLAorCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKGNtZC0+ZC5hdHNjZmcu YWRkcmVzcy5jbGFzc0lkLAorCQkJCQkJCQkJCQkJCQkJIGNtZC0+ZC5hdHNjZmcuYWRkcmVzcy5v YmplY3RJZCkpOworCQkJYnJlYWs7CisJfQorCisJLyogQWRkIHRoZSBhZmZlY3RlZCB0b2tlbiBs aXN0LCBmb3Igc3ViY29tbWFuZHMgdGhhdCBoYXZlIG9uZSAqLworCWlmIChub2RlLT5raW5kID09 IEFMVEVSX1RTQ09ORklHX0FERF9NQVBQSU5HIHx8CisJCW5vZGUtPmtpbmQgPT0gQUxURVJfVFND T05GSUdfQUxURVJfTUFQUElOR19GT1JfVE9LRU4gfHwKKwkJbm9kZS0+a2luZCA9PSBBTFRFUl9U U0NPTkZJR19SRVBMQUNFX0RJQ1RfRk9SX1RPS0VOIHx8CisJCW5vZGUtPmtpbmQgPT0gQUxURVJf VFNDT05GSUdfRFJPUF9NQVBQSU5HKQorCXsKKwkJZm9yZWFjaChjZWxsLCBub2RlLT50b2tlbnR5 cGUpCisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChzdHJWYWwobGZp cnN0KGNlbGwpKSkpOworCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIkZPUiAle3Rva2VudHlw ZTosIH1JIiwgbGlzdCk7CisJfQorCisJLyogQWRkIGZ1cnRoZXIgc3ViY29tbWFuZC1zcGVjaWZp YyBlbGVtZW50cyAqLworCWlmIChub2RlLT5raW5kID09IEFMVEVSX1RTQ09ORklHX0FERF9NQVBQ SU5HIHx8CisJCW5vZGUtPmtpbmQgPT0gQUxURVJfVFNDT05GSUdfQUxURVJfTUFQUElOR19GT1Jf VE9LRU4pCisJeworCQkvKiBBREQgTUFQUElORyBhbmQgQUxURVIgTUFQUElORyBGT1IgbmVlZCBh IGxpc3Qgb2YgZGljdGlvbmFyaWVzICovCisJCWxpc3QgPSBOSUw7CisJCWZvciAoaSA9IDA7IGkg PCBjbWQtPmQuYXRzY2ZnLm5kaWN0czsgaSsrKQorCQl7CisJCQlPYmpUcmVlICAgICpkaWN0X29i ajsKKworCQkJZGljdF9vYmogPSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoVFNEaWN0aW9u YXJ5UmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCSAgY21kLT5kLmF0c2NmZy5kaWN0SWRzW2ldKTsK KwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsCisJCQkJCQkgICBuZXdfb2JqZWN0X29iamVjdChkaWN0 X29iaikpOworCQl9CisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiV0lUSCAle2RpY3Rpb25h cmllczosIH1EIiwgbGlzdCk7CisJfQorCWVsc2UgaWYgKG5vZGUtPmtpbmQgPT0gQUxURVJfVFND T05GSUdfUkVQTEFDRV9ESUNUIHx8CisJCQkgbm9kZS0+a2luZCA9PSBBTFRFUl9UU0NPTkZJR19S RVBMQUNFX0RJQ1RfRk9SX1RPS0VOKQorCXsKKwkJLyogVGhlIFJFUExBQ0UgZm9ybXMgd2FudCBv bGQgYW5kIG5ldyBkaWN0aW9uYXJpZXMgKi8KKwkJQXNzZXJ0KGNtZC0+ZC5hdHNjZmcubmRpY3Rz ID09IDIpOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICJSRVBMQUNFICV7b2xkX2RpY3Rp b25hcnl9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChUU0RpY3Rpb25h cnlSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgY21kLT5kLmF0c2NmZy5kaWN0SWRzWzBdKSk7 CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIldJVEggJXtuZXdfZGljdGlvbmFyeX1EIiwK KwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFRTRGljdGlvbmFyeVJlbGF0aW9u SWQsCisJCQkJCQkJCQkJCQkJCSBjbWQtPmQuYXRzY2ZnLmRpY3RJZHNbMV0pKTsKKwl9CisKKwly ZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhbiBBTFRFUiBURVhUIFNFQVJDSCBESUNU SU9OQVJZIHN0YXRlbWVudC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgVEVYVCBT RUFSQ0ggRElDVElPTkFSWSAle2lkZW50aXR5fUQgKCV7ZGVmaW5pdGlvbjosIH1zKQorICovCitz dGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyVFNEaWN0aW9uYXJ5U3RtdChPaWQgb2JqZWN0 SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAq dG1wOworCURhdHVtCQlvcHRpb25zOworCUxpc3QJICAgKmRlZmluaXRpb24gPSBOSUw7CisJYm9v bAkJaXNudWxsOworCUhlYXBUdXBsZQl0c2RUdXA7CisJRm9ybV9wZ190c19kaWN0IHRzZEZvcm07 CisKKwl0c2RUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFNESUNUT0lELCBPYmplY3RJZEdldERhdHVt KG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRzZFR1cCkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0ZXh0IHNlYXJjaCBkaWN0aW9uYXJ5IHdpdGgg T0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJdHNkRm9ybSA9IChGb3JtX3BnX3RzX2RpY3QpIEdF VFNUUlVDVCh0c2RUdXApOworCisJLyoKKwkgKiBBZGQgdGhlIGRlZmluaXRpb24gbGlzdCBhY2Nv cmRpbmcgdG8gdGhlIHBnX3RzX2RpY3QgZGljdGluaXRvcHRpb24KKwkgKiBjb2x1bW4KKwkgKi8K KwlvcHRpb25zID0gU3lzQ2FjaGVHZXRBdHRyKFRTRElDVE9JRCwgdHNkVHVwLAorCQkJCQkJCSAg QW51bV9wZ190c19kaWN0X2RpY3Rpbml0b3B0aW9uLAorCQkJCQkJCSAgJmlzbnVsbCk7CisJdG1w ID0gbmV3X29ianRyZWUoIiIpOworCWlmICghaXNudWxsKQorCQlhcHBlbmRfc3RyaW5nX29iamVj dCh0bXAsICIle29wdGlvbnN9cyIsICJvcHRpb25zIiwKKwkJCQkJCQkgVGV4dERhdHVtR2V0Q1N0 cmluZyhvcHRpb25zKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wKTsKKworCWRl ZmluaXRpb24gPSBsYXBwZW5kKGRlZmluaXRpb24sIG5ld19vYmplY3Rfb2JqZWN0KHRtcCkpOwor CisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkgJXtp ZGVudGl0eX1EICgle2RlZmluaXRpb246LCB9cykiLCAyLAorCQkJCQkJICJpZGVudGl0eSIsIE9i alR5cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHRzZEZvcm0tPmRp Y3RuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkgIE5hbWVTdHIodHNkRm9ybS0+ZGljdG5hbWUpKSwK KwkJCQkJCSAiZGVmaW5pdGlvbiIsIE9ialR5cGVBcnJheSwgZGVmaW5pdGlvbik7CisKKwlSZWxl YXNlU3lzQ2FjaGUodHNkVHVwKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogZGVwYXJzZV9W aWV3U3RtdAorICoJCWRlcGFyc2UgYSBWaWV3U3RtdAorICoKKyAqIEdpdmVuIGEgdmlldyBPSUQg YW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAq IHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7cGVyc2lzdGVuY2V9cyBWSUVXICV7aWRlbnRp dHl9RCBBUyAle3F1ZXJ5fXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9WaWV3U3Rt dChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlWaWV3U3RtdCAgICpub2RlID0g KFZpZXdTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJUmVsYXRpb24JcmVs YXRpb247CisKKwlyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7b3JfcmVwbGFjZX1zICV7 cGVyc2lzdGVuY2V9cyBWSUVXICV7aWRlbnRpdHl9RCBBUyAle3F1ZXJ5fXMiLCA0LAorCQkJCQkJ ICJvcl9yZXBsYWNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5yZXBsYWNlID8gIk9S IFJFUExBQ0UiIDogIiIsCisJCQkJCQkgInBlcnNpc3RlbmNlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSBnZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl KSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZShyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYW1lc3BhY2UsCisJCQkJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSksCisJCQkJCQkgInF1ZXJ5Iiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSBwZ19nZXRfdmlld2RlZl9zdHJpbmcob2JqZWN0SWQpKTsK KworCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCXJldHVybiBy ZXQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIENSRUFURSBNYXRlcmlhbGl6ZWQgVmlldyBzdGF0ZW1l bnQsIGl0IGlzIGEgdmFyaWFudCBvZgorICogQ3JlYXRlVGFibGVBc1N0bXQKKyAqCisgKiBOb3Rl IHRoYXQgQ1JFQVRFIFRBQkxFIEFTIFNFTEVDVCBJTlRPIGNhbiBhbHNvIGJlIGRlcGFyc2VkIGJ5 CisgKiBkZXBhcnNlX0NyZWF0ZVRhYmxlQXNTdG10IHRvIHJlbW92ZSB0aGUgU0VMRUNUIElOVE8g Y2xhdXNlLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1z IFtNQVRFUklBTElaRUQgVklFVyB8IFRBQkxFXSAle2lmX25vdF9leGlzdHN9cworICogCQkle2lk ZW50aXR5fUQgJXtjb2x1bW5zfXMgWyV7b25fY29tbWl0fXNdICV7dGFibGVzcGFjZX1zCisgKiAg CQlBUyAle3F1ZXJ5fXMgJXt3aXRoX25vX2RhdGF9cyIKKyAqLworc3RhdGljIE9ialRyZWUgKgor ZGVwYXJzZV9DcmVhdGVUYWJsZUFzU3RtdF92YW5pbGxhKE9pZCBvYmplY3RJZCwgTm9kZSAqcGFy c2V0cmVlKQoreworCUNyZWF0ZVRhYmxlQXNTdG10ICpub2RlID0gKENyZWF0ZVRhYmxlQXNTdG10 ICopIHBhcnNldHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0 SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRt cDsKKwlPYmpUcmVlICAgICp0bXAyOworCWNoYXIJICAgKmZtdDsKKwlMaXN0CSAgICpsaXN0ID0g TklMOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwkvKiBSZWplY3QgdW5zdXBwb3J0ZWQgY2FzZSBy aWdodCBhd2F5LiAqLworCWlmICgoKFF1ZXJ5ICopIChub2RlLT5xdWVyeSkpLT5jb21tYW5kVHlw ZSA9PSBDTURfVVRJTElUWSkKKwkJZWxvZyhFUlJPUiwgInVuaW1wbGVtZW50ZWQgZGVwYXJzZSBv ZiBDUkVBVEUgVEFCTEUgQVMgRVhFQ1VURSIpOworCisJLyoKKwkgKiBOb3RlIHRoYXQgSU5TRVJU IElOVE8gaXMgZGVwYXJzZWQgYXMgQ1JFQVRFIFRBQkxFIEFTLiAgVGhleSBhcmUKKwkgKiBmdW5j dGlvbmFsbHkgZXF1aXZhbGVudCBzeW5vbnltcyBzbyB0aGVyZSBpcyBubyBoYXJtIGZyb20gdGhp cy4KKwkgKi8KKwlpZiAobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfTUFUVklFVykKKwkJZm10ID0g IkNSRUFURSAle3BlcnNpc3RlbmNlfXMgTUFURVJJQUxJWkVEIFZJRVcgJXtpZl9ub3RfZXhpc3Rz fXMgJXtpZGVudGl0eX1EIjsKKwllbHNlCisJCWZtdCA9ICJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1z IFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCI7CisKKwlyZXQgPSBuZXdfb2Jq dHJlZV9WQShmbXQsIDMsCisJCQkJCQkgInBlcnNpc3RlbmNlIiwgT2JqVHlwZVN0cmluZywKKwkJ CQkJCSBnZXRfcGVyc2lzdGVuY2Vfc3RyKG5vZGUtPmludG8tPnJlbC0+cmVscGVyc2lzdGVuY2Up LAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5p Zl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElTVFMiIDogIiIsCisJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRp b25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSBvYmplY3RJZCkpOworCisJLyogQ09MVU1OUyBj bGF1c2UgKi8KKwlpZiAobm9kZS0+aW50by0+Y29sTmFtZXMpCisJeworCQlmb3JlYWNoKGNlbGws IG5vZGUtPmludG8tPmNvbE5hbWVzKQorCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmlu Z19vYmplY3Qoc3RyVmFsKGxmaXJzdChjZWxsKSkpKTsKKworCQl0bXAgPSBuZXdfb2JqdHJlZV9W QSgiKCV7Y29sdW1uczosIH1JKSIsIDEsCisJCQkJCQkJICJjb2x1bW5zIiwgT2JqVHlwZUFycmF5 LCBsaXN0KTsKKwl9CisJZWxzZQorCQl0bXAgPSBuZXdfb2JqdHJlZV9WQSgiIiwgMSwKKwkJCQkJ CQkgInByZXNlbnQiLCBPYmpUeXBlQm9vbCwgZmFsc2UpOworCisJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiJXtjb2x1bW5zfXMiLCB0bXApOworCisJLyogVVNJTkcgY2xhdXNlICovCisJdG1w ID0gbmV3X29ianRyZWUoIlVTSU5HIik7CisJaWYgKG5vZGUtPmludG8tPmFjY2Vzc01ldGhvZCkK KwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXthY2Nlc3NfbWV0aG9kfUkiLCAiYWNjZXNz X21ldGhvZCIsCisJCQkJCQkJIG5vZGUtPmludG8tPmFjY2Vzc01ldGhvZCk7CisJZWxzZQorCXsK KwkJYXBwZW5kX251bGxfb2JqZWN0KHRtcCwgIiV7YWNjZXNzX21ldGhvZH1JIik7CisJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXApOworCX0KKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle2Fj Y2Vzc19tZXRob2R9cyIsIHRtcCk7CisKKwkvKiBXSVRIIGNsYXVzZSAqLworCXRtcCA9IG5ld19v Ymp0cmVlKCJXSVRIIik7CisJbGlzdCA9IE5JTDsKKworCWZvcmVhY2goY2VsbCwgbm9kZS0+aW50 by0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChj ZWxsKTsKKworCQl0bXAyID0gZGVwYXJzZV9EZWZFbGVtKG9wdCwgZmFsc2UpOworCQlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXAyKSk7CisJfQorCisJaWYgKGxpc3Qp CisJCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAiKCV7d2l0aDosIH1zKSIsIGxpc3QpOworCWVs c2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChy ZXQsICIle3dpdGhfY2xhdXNlfXMiLCB0bXApOworCisJLyogT04gQ09NTUlUIGNsYXVzZS4gIENS RUFURSBNQVRFUklBTElaRUQgVklFVyBkb2Vzbid0IGhhdmUgb25lICovCisJaWYgKG5vZGUtPm9i anR5cGUgPT0gT0JKRUNUX1RBQkxFKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle29u X2NvbW1pdH1zIiwKKwkJCQkJCQkgZGVwYXJzZV9PbkNvbW1pdENsYXVzZShub2RlLT5pbnRvLT5v bkNvbW1pdCkpOworCisJLyogVEFCTEVTUEFDRSBjbGF1c2UgKi8KKwl0bXAgPSBuZXdfb2JqdHJl ZSgiVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9SSIpOworCWlmIChub2RlLT5pbnRvLT50YWJsZVNw YWNlTmFtZSkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wLCAiJXt0YWJsZXNwYWNlfXMiLCAi dGFibGVzcGFjZSIsCisJCQkJCQkJIG5vZGUtPmludG8tPnRhYmxlU3BhY2VOYW1lKTsKKwllbHNl CisJeworCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wLCAiJXt0YWJsZXNwYWNlfUkiKTsKKwkJYXBw ZW5kX25vdF9wcmVzZW50KHRtcCk7CisJfQorCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7 dGFibGVzcGFjZX1zIiwgdG1wKTsKKworCS8qIEFkZCB0aGUgcXVlcnkgKi8KKwlBc3NlcnQoSXNB KG5vZGUtPnF1ZXJ5LCBRdWVyeSkpOworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIkFTICV7 cXVlcnl9cyIsICJxdWVyeSIsCisJCQkJCQkgcGdfZ2V0X3F1ZXJ5ZGVmKChRdWVyeSAqKSBub2Rl LT5xdWVyeSwgZmFsc2UpKTsKKworCS8qIEFkZCBhIFdJVEggTk8gREFUQSBjbGF1c2UgKi8KKwl0 bXAgPSBuZXdfb2JqdHJlZV9WQSgiV0lUSCBOTyBEQVRBIiwgMSwKKwkJCQkJCSAicHJlc2VudCIs IE9ialR5cGVCb29sLAorCQkJCQkJIG5vZGUtPmludG8tPnNraXBEYXRhID8gdHJ1ZSA6IGZhbHNl KTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3dpdGhfbm9fZGF0YX1zIiwgdG1wKTsK KworCXJlbGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJu IHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVUcmlnU3RtdCAoQ1JFQVRFIFRSSUdH RVIpCisgKgorICogR2l2ZW4gYSB0cmlnZ2VyIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBj cmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBjcmVhdGlv biBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXtvcl9yZXBsYWNl fXMgJXtjb25zdHJhaW50fXMgVFJJR0dFUiAle25hbWV9SSAle3RpbWV9cworICogJXtldmVudHM6 IE9SIH1zIE9OICV7cmVsYXRpb259RCAle2Zyb21fdGFibGV9cyAle2NvbnN0cmFpbnRfYXR0cnM6 IH1zCisgKiAle3JlZmVyZW5jaW5nOiB9cyBGT1IgRUFDSCAle2Zvcl9lYWNofXMgJXt3aGVufXMg RVhFQ1VURSBQUk9DRURVUkUKKyAqICV7ZnVuY3Rpb259cworICovCitzdGF0aWMgT2JqVHJlZSAq CitkZXBhcnNlX0NyZWF0ZVRyaWdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQor eworCUNyZWF0ZVRyaWdTdG10ICpub2RlID0gKENyZWF0ZVRyaWdTdG10ICopIHBhcnNldHJlZTsK KwlSZWxhdGlvbglwZ190cmlnZ2VyOworCUhlYXBUdXBsZQl0cmlnVHVwOworCUZvcm1fcGdfdHJp Z2dlciB0cmlnRm9ybTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqdG1wX29iajsK KwlpbnQJCQl0Z25hcmdzOworCUxpc3QJICAgKmxpc3QgPSBOSUw7CisJTGlzdAkgICAqZXZlbnRz OworCWNoYXIJICAgKnRyaWd0aW1pbmc7CisJY2hhcgkgICAqdGdvbGR0YWJsZTsKKwljaGFyCSAg ICp0Z25ld3RhYmxlOworCURhdHVtCQl2YWx1ZTsKKwlib29sCQlpc251bGw7CisKKwlwZ190cmln Z2VyID0gdGFibGVfb3BlbihUcmlnZ2VyUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwor CXRyaWdUdXAgPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKHBnX3RyaWdnZXIsIEFudW1fcGdf dHJpZ2dlcl9vaWQsIG9iamVjdElkKTsKKwl0cmlnRm9ybSA9IChGb3JtX3BnX3RyaWdnZXIpIEdF VFNUUlVDVCh0cmlnVHVwKTsKKworCXRyaWd0aW1pbmcgPSBub2RlLT50aW1pbmcgPT0gVFJJR0dF Ul9UWVBFX0JFRk9SRSA/ICJCRUZPUkUiIDoKKwkJbm9kZS0+dGltaW5nID09IFRSSUdHRVJfVFlQ RV9BRlRFUiA/ICJBRlRFUiIgOgorCQlub2RlLT50aW1pbmcgPT0gVFJJR0dFUl9UWVBFX0lOU1RF QUQgPyAiSU5TVEVBRCBPRiIgOgorCQlOVUxMOworCWlmICghdHJpZ3RpbWluZykKKwkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCB0cmlnZ2VyIHRpbWluZyB0eXBlICVkIiwgbm9kZS0+dGltaW5n KTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgJXtvcl9yZXBsYWNlfXMgJXtjb25z dHJhaW50fXMgVFJJR0dFUiAle25hbWV9SSAle3RpbWV9cyIsIDQsCisJCQkJCQkgIm9yX3JlcGxh Y2UiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5yZXBsYWNlID8gIk9SIFJFUExBQ0UiIDogIiIsCisJ CQkJCQkgImNvbnN0cmFpbnQiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5pc2NvbnN0cmFpbnQgPyAi Q09OU1RSQUlOVCIgOiAiIiwKKwkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnRy aWduYW1lLAorCQkJCQkJICJ0aW1lIiwgT2JqVHlwZVN0cmluZywgdHJpZ3RpbWluZyk7CisKKwkv KgorCSAqIERlY29kZSB0aGUgZXZlbnRzIHRoYXQgdGhlIHRyaWdnZXIgZmlyZXMgZm9yLiAgVGhl IG91dHB1dCBpcyBhIGxpc3Q7IGluCisJICogbW9zdCBjYXNlcyBpdCB3aWxsIGp1c3QgYmUgYSBz dHJpbmcgd2l0aCB0aGUgZXZlbnQgbmFtZSwgYnV0IHdoZW4KKwkgKiB0aGVyZSdzIGFuIFVQREFU RSB3aXRoIGEgbGlzdCBvZiBjb2x1bW5zLCB3ZSByZXR1cm4gYSBKU09OIG9iamVjdC4KKwkgKi8K KwlldmVudHMgPSBOSUw7CisJaWYgKG5vZGUtPmV2ZW50cyAmIFRSSUdHRVJfVFlQRV9JTlNFUlQp CisJCWV2ZW50cyA9IGxhcHBlbmQoZXZlbnRzLCBuZXdfc3RyaW5nX29iamVjdCgiSU5TRVJUIikp OworCWlmIChub2RlLT5ldmVudHMgJiBUUklHR0VSX1RZUEVfREVMRVRFKQorCQlldmVudHMgPSBs YXBwZW5kKGV2ZW50cywgbmV3X3N0cmluZ19vYmplY3QoIkRFTEVURSIpKTsKKwlpZiAobm9kZS0+ ZXZlbnRzICYgVFJJR0dFUl9UWVBFX1RSVU5DQVRFKQorCQlldmVudHMgPSBsYXBwZW5kKGV2ZW50 cywgbmV3X3N0cmluZ19vYmplY3QoIlRSVU5DQVRFIikpOworCWlmIChub2RlLT5ldmVudHMgJiBU UklHR0VSX1RZUEVfVVBEQVRFKQorCXsKKwkJaWYgKG5vZGUtPmNvbHVtbnMgPT0gTklMKQorCQl7 CisJCQlldmVudHMgPSBsYXBwZW5kKGV2ZW50cywgbmV3X3N0cmluZ19vYmplY3QoIlVQREFURSIp KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCU9ialRyZWUgICAgKnVwZGF0ZTsKKwkJCUxpc3RDZWxs ICAgKmNlbGw7CisJCQlMaXN0CSAgICpjb2xzID0gTklMOworCisJCQkvKgorCQkJICogQ3VycmVu dGx5IG9ubHkgVVBEQVRFIE9GIGNhbiBiZSBvYmplY3RzIGluIHRoZSBvdXRwdXQgSlNPTiwgYnV0 CisJCQkgKiB3ZSBhZGQgYSAia2luZCIgZWxlbWVudCBzbyB0aGF0IHVzZXIgY29kZSBjYW4gZGlz dGluZ3Vpc2gKKwkJCSAqIHBvc3NpYmxlIGZ1dHVyZSBuZXcgZXZlbnQgdHlwZXMuCisJCQkgKi8K KwkJCXVwZGF0ZSA9IG5ld19vYmp0cmVlX1ZBKCJVUERBVEUgT0YiLCAxLAorCQkJCQkJCQkJImtp bmQiLCBPYmpUeXBlU3RyaW5nLCAidXBkYXRlX29mIik7CisKKwkJCWZvcmVhY2goY2VsbCwgbm9k ZS0+Y29sdW1ucykKKwkJCXsKKwkJCQljaGFyCSAgICpjb2xuYW1lID0gc3RyVmFsKGxmaXJzdChj ZWxsKSk7CisKKwkJCQljb2xzID0gbGFwcGVuZChjb2xzLCBuZXdfc3RyaW5nX29iamVjdChjb2xu YW1lKSk7CisJCQl9CisKKwkJCWFwcGVuZF9hcnJheV9vYmplY3QodXBkYXRlLCAiJXtjb2x1bW5z OiwgfUkiLCBjb2xzKTsKKworCQkJZXZlbnRzID0gbGFwcGVuZChldmVudHMsIG5ld19vYmplY3Rf b2JqZWN0KHVwZGF0ZSkpOworCQl9CisJfQorCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtl dmVudHM6IE9SIH1zIiwgZXZlbnRzKTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9mb3JfcXVh bG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCSB0cmlnRm9ybS0+dGdyZWxp ZCk7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiT04gJXtyZWxhdGlvbn1EIiwgdG1wX29i aik7CisKKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIkZST00iKTsKKwlpZiAodHJpZ0Zvcm0tPnRn Y29uc3RycmVsaWQpCisJeworCQlPYmpUcmVlICAgICpyZWw7CisKKwkJcmVsID0gbmV3X29ianRy ZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkgIHRyaWdG b3JtLT50Z2NvbnN0cnJlbGlkKTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iaiwgIiV7 cmVsYXRpb259RCIsIHJlbCk7CisJfQorCWVsc2UKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9v YmopOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7ZnJvbV90YWJsZX1zIiwgdG1wX29i aik7CisKKwlpZiAobm9kZS0+aXNjb25zdHJhaW50KQorCXsKKwkJaWYgKCFub2RlLT5kZWZlcnJh YmxlKQorCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QoIk5PVCIpKTsK KwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QoIkRFRkVSUkFCTEUgSU5J VElBTExZIikpOworCQlpZiAobm9kZS0+aW5pdGRlZmVycmVkKQorCQkJbGlzdCA9IGxhcHBlbmQo bGlzdCwgbmV3X3N0cmluZ19vYmplY3QoIkRFRkVSUkVEIikpOworCQllbHNlCisJCQlsaXN0ID0g bGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCgiSU1NRURJQVRFIikpOworCX0KKwlhcHBl bmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7Y29uc3RyYWludF9hdHRyczogfXMiLCBsaXN0KTsKKwor CWxpc3QgPSBOSUw7CisJdmFsdWUgPSBmYXN0Z2V0YXR0cih0cmlnVHVwLCBBbnVtX3BnX3RyaWdn ZXJfdGdvbGR0YWJsZSwKKwkJCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdfdHJpZ2dlciksICZpc251 bGwpOworCWlmICghaXNudWxsKQorCQl0Z29sZHRhYmxlID0gTmFtZVN0cigqRGF0dW1HZXROYW1l KHZhbHVlKSk7CisJZWxzZQorCQl0Z29sZHRhYmxlID0gTlVMTDsKKwl2YWx1ZSA9IGZhc3RnZXRh dHRyKHRyaWdUdXAsIEFudW1fcGdfdHJpZ2dlcl90Z25ld3RhYmxlLAorCQkJCQkJUmVsYXRpb25H ZXREZXNjcihwZ190cmlnZ2VyKSwgJmlzbnVsbCk7CisJaWYgKCFpc251bGwpCisJCXRnbmV3dGFi bGUgPSBOYW1lU3RyKCpEYXR1bUdldE5hbWUodmFsdWUpKTsKKwllbHNlCisJCXRnbmV3dGFibGUg PSBOVUxMOworCWlmICh0Z29sZHRhYmxlICE9IE5VTEwgfHwgdGduZXd0YWJsZSAhPSBOVUxMKQor CXsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QoIlJFRkVSRU5DSU5H IikpOworCisJCWlmICh0Z29sZHRhYmxlICE9IE5VTEwpCisJCXsKKwkJCWxpc3QgPSBsYXBwZW5k KGxpc3QsIG5ld19zdHJpbmdfb2JqZWN0KCJPTEQgVEFCTEUgQVMiKSk7CisJCQlsaXN0ID0gbGFw cGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdCh0Z29sZHRhYmxlKSk7CisJCX0KKwkJaWYgKHRn bmV3dGFibGUgIT0gTlVMTCkKKwkJeworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmlu Z19vYmplY3QoIk5FVyBUQUJMRSBBUyIpKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19z dHJpbmdfb2JqZWN0KHRnbmV3dGFibGUpKTsKKwkJfQorCX0KKwlhcHBlbmRfYXJyYXlfb2JqZWN0 KHJldCwgIiV7cmVmZXJlbmNpbmc6IH1zIiwgbGlzdCk7CisKKwlhcHBlbmRfc3RyaW5nX29iamVj dChyZXQsICJGT1IgRUFDSCAle2Zvcl9lYWNofXMiLCAiZm9yX2VhY2giLAorCQkJCQkJIG5vZGUt PnJvdyA/ICJST1ciIDogIlNUQVRFTUVOVCIpOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJX SEVOIik7CisJaWYgKG5vZGUtPndoZW5DbGF1c2UpCisJeworCQlOb2RlCSAgICp3aGVuQ2xhdXNl OworCisJCXZhbHVlID0gZmFzdGdldGF0dHIodHJpZ1R1cCwgQW51bV9wZ190cmlnZ2VyX3RncXVh bCwKKwkJCQkJCQlSZWxhdGlvbkdldERlc2NyKHBnX3RyaWdnZXIpLCAmaXNudWxsKTsKKwkJaWYg KGlzbnVsbCkKKwkJCWVsb2coRVJST1IsICJudWxsIHRncXVhbCBmb3IgdHJpZ2dlciBcIiVzXCIi LAorCQkJCSBOYW1lU3RyKHRyaWdGb3JtLT50Z25hbWUpKTsKKworCQl3aGVuQ2xhdXNlID0gc3Ry aW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJYXBwZW5kX3N0cmluZ19v YmplY3QodG1wX29iaiwgIigle2NsYXVzZX1zKSIsICJjbGF1c2UiLAorCQkJCQkJCSBwZ19nZXRf dHJpZ2dlcl93aGVuY2xhdXNlKHRyaWdGb3JtLAorCQkJCQkJCQkJCQkJCSAgIHdoZW5DbGF1c2Us CisJCQkJCQkJCQkJCQkJICAgZmFsc2UpKTsKKwl9CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNl bnQodG1wX29iaik7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXt3aGVufXMiLCB0bXBf b2JqKTsKKworCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiJXtmdW5jbmFtZX1EIiwgMSwKKwkJ CQkJCQkiZnVuY25hbWUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9x dWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQl0cmlnRm9ybS0+ dGdmb2lkKSk7CisJbGlzdCA9IE5JTDsKKwl0Z25hcmdzID0gdHJpZ0Zvcm0tPnRnbmFyZ3M7CisJ aWYgKHRnbmFyZ3MgPiAwKQorCXsKKwkJY2hhcgkgICAqcDsKKwkJaW50CQkJaTsKKworCQl2YWx1 ZSA9IGZhc3RnZXRhdHRyKHRyaWdUdXAsIEFudW1fcGdfdHJpZ2dlcl90Z2FyZ3MsCisJCQkJCQkJ UmVsYXRpb25HZXREZXNjcihwZ190cmlnZ2VyKSwgJmlzbnVsbCk7CisJCWlmIChpc251bGwpCisJ CQllbG9nKEVSUk9SLCAibnVsbCB0Z2FyZ3MgZm9yIHRyaWdnZXIgXCIlc1wiIiwKKwkJCQkgTmFt ZVN0cih0cmlnRm9ybS0+dGduYW1lKSk7CisJCXAgPSAoY2hhciAqKSBWQVJEQVRBX0FOWShEYXR1 bUdldEJ5dGVhUFAodmFsdWUpKTsKKwkJZm9yIChpID0gMDsgaSA8IHRnbmFyZ3M7IGkrKykKKwkJ eworCQkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3X3N0cmluZ19vYmplY3QocCkpOworCQkJLyog YWR2YW5jZSBwIHRvIG5leHQgc3RyaW5nIGVtYmVkZGVkIGluIHRnYXJncyAqLworCQkJd2hpbGUg KCpwKQorCQkJCXArKzsKKwkJCXArKzsKKwkJfQorCX0KKworCWFwcGVuZF9mb3JtYXRfc3RyaW5n KHRtcF9vYmosICIoIik7CisJYXBwZW5kX2FycmF5X29iamVjdCh0bXBfb2JqLCAiJXthcmdzOiwg fUwiLCBsaXN0KTsJLyogbWlnaHQgYmUgTklMICovCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodG1w X29iaiwgIikiKTsKKworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIkVYRUNVVEUgRlVOQ1RJ T04gJXtmdW5jdGlvbn1zIiwgdG1wX29iaik7CisKKwl0YWJsZV9jbG9zZShwZ190cmlnZ2VyLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBD cmVhdGVVc2VyTWFwcGluZ1N0bXQgKENSRUFURSBVU0VSIE1BUFBJTkcpCisgKgorICogR2l2ZW4g YSBVc2VyIE1hcHBpbmcgT0lEIGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsCisg KiByZXR1cm4gYW4gT2JqVHJlZSByZXByZXNlbnRpbmcgdGhlIENSRUFURSBVU0VSIE1BUFBJTkcg Y29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JFQVRFIFVTRVIgTUFQUElORyBG T1IgJXtyb2xlfVIgU0VSVkVSICV7c2VydmVyfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVw YXJzZV9DcmVhdGVVc2VyTWFwcGluZ1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUp Cit7CisJQ3JlYXRlVXNlck1hcHBpbmdTdG10ICpub2RlID0gKENyZWF0ZVVzZXJNYXBwaW5nU3Rt dCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqcmV0OworCVJlbGF0aW9uCXJlbDsKKwlIZWFw VHVwbGUJdHA7CisJRm9ybV9wZ191c2VyX21hcHBpbmcgZm9ybTsKKwlGb3JlaWduU2VydmVyICpz ZXJ2ZXI7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFVzZXJNYXBwaW5nUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwkvKgorCSAqIExvb2t1cCBvYmplY3QgaW4gdGhlIGNhdGFsb2csIHNv IHdlIGRvbid0IGhhdmUgdG8gZGVhbCB3aXRoCisJICogY3VycmVudF91c2VyIGFuZCBzdWNoLgor CSAqLworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFVTRVJNQVBQSU5HT0lELCBPYmplY3RJZEdldERh dHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHVzZXIgbWFwcGluZyB3aXRoIE9JRCAldSIsCisJ CQkgb2JqZWN0SWQpOworCisJZm9ybSA9IChGb3JtX3BnX3VzZXJfbWFwcGluZykgR0VUU1RSVUNU KHRwKTsKKworCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXIoZm9ybS0+dW1zZXJ2ZXIpOworCisJ cmV0ID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBVU0VSIE1BUFBJTkcgRk9SICV7cm9sZX1SIFNF UlZFUiAle3NlcnZlcn1JICV7Z2VuZXJpY19vcHRpb25zfXMiLCAzLAorCQkJCQkJICJyb2xlIiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jfcm9sZV9pZChmb3JtLT51bXVz ZXIpLAorCQkJCQkJICJzZXJ2ZXIiLCBPYmpUeXBlU3RyaW5nLCBzZXJ2ZXItPnNlcnZlcm5hbWUs CisJCQkJCQkgImdlbmVyaWNfb3B0aW9ucyIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgZGVwYXJz ZV9GZHdPcHRpb25zKG5vZGUtPm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7CisKKwlSZWxlYXNlU3lz Q2FjaGUodHApOworCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisJcmV0dXJu IHJldDsKK30KKworLyoKKyAqIGRlcGFyc2VfQWx0ZXJVc2VyTWFwcGluZworICoKKyAqIEdpdmVu IGEgVXNlciBNYXBwaW5nIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCBy ZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5kLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBVU0VSIE1BUFBJTkcgRk9SICV7cm9sZX1SIFNF UlZFUiAle3NlcnZlcn1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfQWx0ZXJVc2Vy TWFwcGluZ1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJVc2Vy TWFwcGluZ1N0bXQgKm5vZGUgPSAoQWx0ZXJVc2VyTWFwcGluZ1N0bXQgKikgcGFyc2V0cmVlOwor CU9ialRyZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXRwOworCUZvcm1f cGdfdXNlcl9tYXBwaW5nIGZvcm07CisJRm9yZWlnblNlcnZlciAqc2VydmVyOworCisJcmVsID0g dGFibGVfb3BlbihVc2VyTWFwcGluZ1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ LyoKKwkgKiBMb29rdXAgb2JqZWN0IGluIHRoZSBjYXRhbG9nLCBzbyB3ZSBkb24ndCBoYXZlIHRv IGRlYWwgd2l0aAorCSAqIGN1cnJlbnRfdXNlciBhbmQgc3VjaC4KKwkgKi8KKwl0cCA9IFNlYXJj aFN5c0NhY2hlMShVU0VSTUFQUElOR09JRCwgT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOwor CWlmICghSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciB1c2VyIG1hcHBpbmcgd2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwor CWZvcm0gPSAoRm9ybV9wZ191c2VyX21hcHBpbmcpIEdFVFNUUlVDVCh0cCk7CisKKwlzZXJ2ZXIg PSBHZXRGb3JlaWduU2VydmVyKGZvcm0tPnVtc2VydmVyKTsKKworCXJldCA9IG5ld19vYmp0cmVl X1ZBKCJBTFRFUiBVU0VSIE1BUFBJTkcgRk9SICV7cm9sZX1SIFNFUlZFUiAle3NlcnZlcn1JICV7 Z2VuZXJpY19vcHRpb25zfXMiLCAzLAorCQkJCQkJICJyb2xlIiwgT2JqVHlwZU9iamVjdCwKKwkJ CQkJCSBuZXdfb2JqdHJlZV9mb3Jfcm9sZV9pZChmb3JtLT51bXVzZXIpLAorCQkJCQkJICJzZXJ2 ZXIiLCBPYmpUeXBlU3RyaW5nLCBzZXJ2ZXItPnNlcnZlcm5hbWUsCisJCQkJCQkgImdlbmVyaWNf b3B0aW9ucyIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkgZGVwYXJzZV9GZHdPcHRpb25zKG5vZGUt Pm9wdGlvbnMsIE5VTEwsIGZhbHNlKSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCXRhYmxl X2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAq IERlcGFyc2UgYW4gQWx0ZXJTdGF0c1N0bXQgKEFMVEVSIFNUQVRJU1RJQ1MpCisgKgorICogR2l2 ZW4gYSBhbHRlciBzdGF0aXN0aWNzIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVk IGl0LCByZXR1cm4gYW4KKyAqIE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZSBhbHRlciBjb21tYW5k LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiBTVEFUSVNUSUNTICV7aWRlbnRpdHl9 RCBTRVQgU1RBVElTVElDUyAle3RhcmdldH1uCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFy c2VfQWx0ZXJTdGF0c1N0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0 ZXJTdGF0c1N0bXQgKm5vZGUgPSAoQWx0ZXJTdGF0c1N0bXQgKikgcGFyc2V0cmVlOworCU9ialRy ZWUgICAgKnJldDsKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19zdGF0aXN0aWNfZXh0IHN0YXRm b3JtOworCisJaWYgKCFub2RlLT5zdHhzdGF0dGFyZ2V0KQorCQlyZXR1cm4gTlVMTDsKKworCS8q IExvb2t1cCBvYmplY3QgaW4gdGhlIGNhdGFsb2cgKi8KKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShT VEFURVhUT0lELCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHN0YXRp c3RpYyB3aXRoIE9JRCAldSIsIG9iamVjdElkKTsKKworCXN0YXRmb3JtID0gKEZvcm1fcGdfc3Rh dGlzdGljX2V4dCkgR0VUU1RSVUNUKHRwKTsKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIg U1RBVElTVElDUyAle2lkZW50aXR5fUQgU0VUIFNUQVRJU1RJQ1MgJXt0YXJnZXR9biIsIDIsCisJ CQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWUoc3RhdGZvcm0tPnN0eG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgTmFtZVN0cihz dGF0Zm9ybS0+c3R4bmFtZSkpLAorCQkJCQkJICJ0YXJnZXQiLCBPYmpUeXBlSW50ZWdlciwgbm9k ZS0+c3R4c3RhdHRhcmdldCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHApOworCXJldHVybiByZXQ7 Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgUmVmcmVzaE1hdFZpZXdTdG10IChSRUZSRVNIIE1BVEVS SUFMSVpFRCBWSUVXKQorICoKKyAqIEdpdmVuIGEgbWF0ZXJpYWxpemVkIHZpZXcgT0lEIGFuZCB0 aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJlZSByZXBy ZXNlbnRpbmcgdGhlIHJlZnJlc2ggY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyAle2NvbmN1cnJlbnRseX1zICV7aWRlbnRpdHl9RCAl e3dpdGhfbm9fZGF0YX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfUmVmcmVzaE1h dFZpZXdTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlZnJlc2hNYXRW aWV3U3RtdCAqbm9kZSA9IChSZWZyZXNoTWF0Vmlld1N0bXQgKikgcGFyc2V0cmVlOworCU9ialRy ZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgi UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyAle2NvbmN1cnJlbnRseX1zICV7aWRlbnRpdHl9RCIs IDIsCisJCQkJCQkgImNvbmN1cnJlbnRseSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+ Y29uY3VycmVudCA/ICJDT05DVVJSRU5UTFkiIDogIiIsCisJCQkJCQkgImlkZW50aXR5IiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25S ZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSBvYmplY3RJZCkpOworCisJLyogQWRkIGEgV0lUSCBO TyBEQVRBIGNsYXVzZSAqLworCXRtcCA9IG5ld19vYmp0cmVlX1ZBKCJXSVRIIE5PIERBVEEiLCAx LAorCQkJCQkJICJwcmVzZW50IiwgT2JqVHlwZUJvb2wsCisJCQkJCQkgbm9kZS0+c2tpcERhdGEg PyB0cnVlIDogZmFsc2UpOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7d2l0aF9ub19k YXRhfXMiLCB0bXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBSZW5h bWVTdG10LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lm X2V4aXN0c31zICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBB TFRFUiBQT0xJQ1kgJXtpZl9leGlzdHN9cyAle3BvbGljeW5hbWV9SSBPTiAle2lkZW50aXR5fUQg UkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxURVIgRE9NQUlOICV7aWRlbnRpdHl9 RCBSRU5BTUUgQ09OU1RSQUlOVCAle29sZG5hbWV9SSBUTyAle25ld25hbWV9SQorICogT1IKKyAq IEFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09OU1RSQUlOVCAle29s ZG5hbWV9SSBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSIFRZUEUgJXtpZGVudGl0eX1E IFJFTkFNRSBBVFRSSUJVVEUgJXtjb2xuYW1lfUkgVE8gJXtuZXduYW1lfUkgJXtjYXNjYWRlfXMK KyAqIE9SCisgKiBBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7b25seX1zICV7aWRl bnRpdHl9RCBSRU5BTUUgQ09MVU1OICV7Y29sbmFtZX1JIFRPICV7bmV3bmFtZX1JICV7Y2FzY2Fk ZX1zCisgKiBPUgorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIFJFTkFNRSBUTyAl e25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9RCBVU0lO RyAle2luZGV4X21ldGhvZH1zIFJFTkFNRSBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVS IFNDSEVNQSAle2lkZW50aXR5fUkgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxU RVIgUlVMRSAle3J1bGVuYW1lfUkgT04gJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25hbWV9 SQorICogT1IKKyAqIEFMVEVSIFRSSUdHRVIgJXt0cmlnZ2VybmFtZX1JIE9OICV7aWRlbnRpdHl9 RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiAle29ianR5cGV9cyAle2lk ZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2Rl cGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkK K3sKKwlSZW5hbWVTdG10ICpub2RlID0gKFJlbmFtZVN0bXQgKikgcGFyc2V0cmVlOworCU9ialRy ZWUgICAgKnJldDsKKwlSZWxhdGlvbglyZWxhdGlvbjsKKwlPaWQJCQlzY2hlbWFJZDsKKworCS8q CisJICogSW4gYW4gQUxURVIgLi4gUkVOQU1FIGNvbW1hbmQsIHdlIGRvbid0IGhhdmUgdGhlIG9y aWdpbmFsIG5hbWUgb2YgdGhlCisJICogb2JqZWN0IGluIHN5c3RlbSBjYXRhbG9nczogc2luY2Ug d2UgaW5zcGVjdCB0aGVtIGFmdGVyIHRoZSBjb21tYW5kIGhhcworCSAqIGV4ZWN1dGVkLCB0aGUg b2xkIG5hbWUgaXMgYWxyZWFkeSBnb25lLiAgVGhlcmVmb3JlLCB3ZSBleHRyYWN0IGl0IGZyb20K KwkgKiB0aGUgcGFyc2Ugbm9kZS4gIE5vdGUgd2Ugc3RpbGwgZXh0cmFjdCB0aGUgc2NoZW1hIG5h bWUgZnJvbSB0aGUgY2F0YWxvZworCSAqIChpdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUg cGFyc2Ugbm9kZSk7IGl0IGNhbm5vdCBwb3NzaWJseSBoYXZlCisJICogY2hhbmdlZCBhbnl3YXku CisJICovCisJc3dpdGNoIChub2RlLT5yZW5hbWVUeXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfVEFC TEU6CisJCWNhc2UgT0JKRUNUX0lOREVYOgorCQljYXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJY2Fz ZSBPQkpFQ1RfVklFVzoKKwkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKKwkJY2FzZSBPQkpFQ1RfRk9S RUlHTl9UQUJMRToKKwkJCXJlbGF0aW9uID0gcmVsYXRpb25fb3BlbihhZGRyZXNzLm9iamVjdElk LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJc2NoZW1hSWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShy ZWxhdGlvbik7CisJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMgJXtp Zl9leGlzdHN9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgNCwKKwkJCQkJ CQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBl KG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKKwkJCQkJCQkJICJpZl9leGlzdHMiLCBPYmpUeXBl U3RyaW5nLAorCQkJCQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIsCisJ CQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lKHNjaGVtYUlkLAorCQkJCQkJCQkJCQkJCQkgIG5vZGUtPnJlbGF0aW9uLT5y ZWxuYW1lKSwKKwkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJIG5v ZGUtPm5ld25hbWUpOworCQkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9j ayk7CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9QT0xJQ1k6CisJCQl7CisJCQkJSGVhcFR1 cGxlCXBvbFR1cDsKKwkJCQlGb3JtX3BnX3BvbGljeSBwb2xGb3JtOworCQkJCVJlbGF0aW9uCXBn X3BvbGljeTsKKwkJCQlTY2FuS2V5RGF0YSBrZXk7CisJCQkJU3lzU2NhbkRlc2Mgc2NhbjsKKwor CQkJCXBnX3BvbGljeSA9IHJlbGF0aW9uX29wZW4oUG9saWN5UmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKKwkJCQlTY2FuS2V5SW5pdCgma2V5LCBBbnVtX3BnX3BvbGljeV9vaWQsCisJCQkJ CQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQkJCU9iamVjdElkR2V0RGF0 dW0oYWRkcmVzcy5vYmplY3RJZCkpOworCQkJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdf cG9saWN5LCBQb2xpY3lPaWRJbmRleElkLCB0cnVlLAorCQkJCQkJCQkJCSAgTlVMTCwgMSwgJmtl eSk7CisJCQkJcG9sVHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKKwkJCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQocG9sVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBvbGljeSB3aXRoIE9JRCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJ CQkJcG9sRm9ybSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHBvbFR1cCk7CisKKwkJCQly ZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgUE9MSUNZICV7aWZfZXhpc3RzfXMgJXtwb2xpY3lu YW1lfUkgT04gJXtpZGVudGl0eX1EIFJFTkFNRSBUTyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJ CQkgImlmX2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgbm9kZS0+bWlzc2luZ19v ayA/ICJJRiBFWElTVFMiIDogIiIsCisJCQkJCQkJCQkgInBvbGljeW5hbWUiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJCQkJIG5vZGUtPnN1Ym5hbWUsCisJCQkJCQkJCQkgImlkZW50aXR5IiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRp b25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCSBwb2xGb3JtLT5wb2xyZWxpZCksCisJCQkJ CQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIG5vZGUtPm5ld25hbWUp OworCQkJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJCQkJcmVsYXRpb25fY2xvc2UocGdfcG9s aWN5LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1Rf RE9NQ09OU1RSQUlOVDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJZG9tdHVwOworCQkJCUhlYXBUdXBs ZQljb25zdHR1cDsKKwkJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCQkJCUZvcm1f cGdfdHlwZSBkb21mb3JtOworCisJCQkJLyogR2V0IGRvbWFpbiBpZCBmcm9tIHRoZSBjb25zdHJh aW50ICovCisJCQkJY29uc3R0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELAorCQkJCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oYWRkcmVzcy5vYmplY3RJZCkpOworCQkJCWlmICghSGVh cFR1cGxlSXNWYWxpZChjb25zdHR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBjb25zdHJhaW50IHdpdGggT0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVj dElkKTsKKwkJCQljb25zdGZvcm0gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29u c3R0dXApOworCisJCQkJZG9tdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsCisJCQkJCQkJ CQkJIE9iamVjdElkR2V0RGF0dW0oY29uc3Rmb3JtLT5jb250eXBpZCkpOworCQkJCWlmICghSGVh cFR1cGxlSXNWYWxpZChkb210dXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgZG9tYWluIHdpdGggT0lEICV1IiwKKwkJCQkJCSBjb25zdGZvcm0tPmNvbnR5cGlk KTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3R0dXApOworCisJCQkJZG9tZm9ybSA9IChGb3Jt X3BnX3R5cGUpIEdFVFNUUlVDVChkb210dXApOworCQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJB TFRFUiBET01BSU4gJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRP ICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoZG9tZm9ybS0+dHlwbmFtZXNwYWNlLAorCQkJCQkJ CQkJCQkJIE5hbWVTdHIoZG9tZm9ybS0+dHlwbmFtZSkpLAorCQkJCQkJIm9sZG5hbWUiLCBPYmpU eXBlU3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5n LCBub2RlLT5uZXduYW1lKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoZG9tdHVwKTsKKwkJCX0KKwkJ CWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCQl7CisJCQkJSGVhcFR1 cGxlCWNvbnN0cnR1cDsKKwkJCQlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3Rmb3JtOworCisJCQkJ Y29uc3RydHVwID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkJT2JqZWN0 SWRHZXREYXR1bShhZGRyZXNzLm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNvbnN0cnR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBj b25zdHJhaW50IHdpdGggT0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlj b25zdGZvcm0gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1QoY29uc3RydHVwKTsKKwor CQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBUQUJMRSAle29ubHl9cyAle2lkZW50aXR5 fUQgUkVOQU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkgVE8gJXtuZXduYW1lfUkiLCA0LAorCQkJ CQkJCQkJIm9ubHkiLCAgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCW5vZGUtPnJlbGF0aW9uLT5p bmggPyAiIiA6ICJPTkxZIiwKKwkJCQkJCQkJCSJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJ CQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAor CQkJCQkJCQkJCQkJCQkJCWNvbnN0Zm9ybS0+Y29ucmVsaWQpLAorCQkJCQkJCQkJIm9sZG5hbWUi LCBPYmpUeXBlU3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJIm5ld25hbWUiLCBPYmpU eXBlU3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoY29uc3RydHVw KTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX0FUVFJJQlVURToKKwkJY2FzZSBP QkpFQ1RfQ09MVU1OOgorCQkJcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKGFkZHJlc3Mub2JqZWN0 SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlzY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNl KHJlbGF0aW9uKTsKKworCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FUVFJJQlVU RSkKKwkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgVFlQRSAle2lkZW50aXR5fUQgUkVO QU1FIEFUVFJJQlVURSAle2NvbG5hbWV9SSIsIDIsCisJCQkJCQkJCQkgImlkZW50aXR5IiwgT2Jq VHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWUoc2NoZW1hSWQs CisJCQkJCQkJCQkJCQkJCQkgIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1lKSwKKwkJCQkJCQkJCSAi Y29sbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnN1Ym5hbWUpOworCQkJZWxzZQorCQkJewor CQkJCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyIsIDEsCisJCQkJCQkJ CQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBl KG5vZGUtPnJlbGF0aW9uVHlwZSwgZmFsc2UpKTsKKworCQkJCS8qIENvbXBvc2l0ZSB0eXBlcyBk byBub3Qgc3VwcG9ydCBJRiBFWElTVFMgKi8KKwkJCQlpZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBP QkpFQ1RfQ09MVU1OKQorCQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle2lmX2V4aXN0 c31zIiwKKwkJCQkJCQkJCQkgImlmX2V4aXN0cyIsCisJCQkJCQkJCQkJIG5vZGUtPm1pc3Npbmdf b2sgPyAiSUYgRVhJU1RTIiA6ICIiKTsKKwkJCQlpZiAoIW5vZGUtPnJlbGF0aW9uLT5pbmgpCisJ CQkJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b25seX1zIiwKKwkJCQkJCQkJCQkgIm9u bHkiLAorCQkJCQkJCQkJCSAiT05MWSIpOworCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwg IiV7aWRlbnRpdHl9RCIsCisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHNjaGVt YUlkLAorCQkJCQkJCQkJCQkJCQkJICBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSkpOworCQkJCWFw cGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIlJFTkFNRSBDT0xVTU4gJXtjb2xuYW1lfUkiLAorCQkJ CQkJCQkJICJjb2xuYW1lIiwgbm9kZS0+c3VibmFtZSk7CisJCQl9CisKKwkJCWFwcGVuZF9zdHJp bmdfb2JqZWN0KHJldCwgIlRPICV7bmV3bmFtZX1JIiwgIm5ld25hbWUiLAorCQkJCQkJCQkgbm9k ZS0+bmV3bmFtZSk7CisKKwkJCWlmIChub2RlLT5yZW5hbWVUeXBlID09IE9CSkVDVF9BVFRSSUJV VEUpCisJCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjYXNjYWRlfXMiLAorCQkJCQkJ CQkJIG5ld19vYmp0cmVlX1ZBKCJDQVNDQURFIiwgMSwKKwkJCQkJCQkJCQkJCQkicHJlc2VudCIs IE9ialR5cGVCb29sLAorCQkJCQkJCQkJCQkJCW5vZGUtPmJlaGF2aW9yID09IERST1BfQ0FTQ0FE RSkpOworCisJCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgT0JKRUNUX0FHR1JFR0FURToKKwkJY2FzZSBPQkpFQ1RfRlVOQ1RJ T046CisJCWNhc2UgT0JKRUNUX1JPVVRJTkU6CisJCQl7CisJCQkJY2hhcgkgICAqaWRlbnQ7CisJ CQkJSGVhcFR1cGxlCXByb2N0dXA7CisJCQkJRm9ybV9wZ19wcm9jIHByb2Nmb3JtOworCQkJCUxp c3QJICAgKmlkZW50aXR5OworCisJCQkJQXNzZXJ0KElzQShub2RlLT5vYmplY3QsIE9iamVjdFdp dGhBcmdzKSk7CisJCQkJaWRlbnRpdHkgPSAoKE9iamVjdFdpdGhBcmdzICopIG5vZGUtPm9iamVj dCktPm9iam5hbWU7CisKKwkJCQlwcm9jdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQsCisJ CQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQocHJvY3R1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBwcm9jZWR1cmUgd2l0aCBPSUQgJXUiLAorCQkJCQkJIGFkZHJlc3Mub2Jq ZWN0SWQpOworCQkJCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2N0dXAp OworCisJCQkJLyogWFhYIGRvZXMgdGhpcyB3b3JrIGZvciBvcmRlcmVkLXNldCBhZ2dyZWdhdGVz PyAqLworCQkJCWlkZW50ID0gcHNwcmludGYoIiVzJXMiLAorCQkJCQkJCQkgcXVvdGVfcXVhbGlm aWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9uYW1lKHByb2Nmb3JtLT5wcm9uYW1lc3BhY2Up LAorCQkJCQkJCQkJCQkJCQkJc3RyVmFsKGxsYXN0KGlkZW50aXR5KSkpLAorCQkJCQkJCQkgZm9y bWF0X3Byb2NlZHVyZV9hcmdzKGFkZHJlc3Mub2JqZWN0SWQsIHRydWUpKTsKKworCQkJCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fXMgUkVOQU1FIFRP ICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwgZmFsc2UpLAorCQkJ CQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsIGlkZW50LAorCQkJCQkJCQkJICJuZXdu YW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2Fj aGUocHJvY3R1cCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9PUENMQVNTOgor CQkJeworCQkJCUhlYXBUdXBsZQlvcGNUdXA7CisJCQkJRm9ybV9wZ19vcGNsYXNzIG9wY0Zvcm07 CisJCQkJTGlzdAkgICAqb2xkbmFtZXM7CisJCQkJY2hhcgkgICAqc2NoZW1hbmFtZTsKKwkJCQlj aGFyCSAgICpvcGNuYW1lOworCisJCQkJb3BjVHVwID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwg T2JqZWN0SWRHZXREYXR1bShhZGRyZXNzLm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKG9wY1R1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBvcGNsYXNzIHdpdGggT0lEICV1IiwKKwkJCQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKworCQkJ CW9wY0Zvcm0gPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1Qob3BjVHVwKTsKKworCQkJCW9s ZG5hbWVzID0gbGlzdF9jb3B5X3RhaWwoKExpc3QgKikgbm9kZS0+b2JqZWN0LCAxKTsKKworCQkJ CS8qIERlY29uc3RydWN0IHRoZSBuYW1lIGxpc3QgKi8KKwkJCQlEZWNvbnN0cnVjdFF1YWxpZmll ZE5hbWUob2xkbmFtZXMsICZzY2hlbWFuYW1lLCAmb3BjbmFtZSk7CisKKwkJCQlyZXQgPSBuZXdf b2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1EIFVTSU5HICV7aW5kZXhf bWV0aG9kfXMgUkVOQU1FIFRPICV7bmV3bmFtZX1JIiwgNCwKKwkJCQkJCQkJCSAib2JqdHlwZSIs IE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1l VHlwZSwgZmFsc2UpLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJ CQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKG9wY0Zvcm0tPm9wY25hbWVzcGFjZSwKKwkJ CQkJCQkJCQkJCQkJCSAgb3BjbmFtZSksCisJCQkJCQkJCQkgImluZGV4X21ldGhvZCIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJCQkgZ2V0X2FtX25hbWUob3BjRm9ybS0+b3BjbWV0aG9kKSwKKwkJ CQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJCQkJ UmVsZWFzZVN5c0NhY2hlKG9wY1R1cCk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVD VF9PUEZBTUlMWToKKwkJCXsKKwkJCQlIZWFwVHVwbGUJb3BmVHVwOworCQkJCUhlYXBUdXBsZQlh bVR1cDsKKwkJCQlGb3JtX3BnX29wZmFtaWx5IG9wZkZvcm07CisJCQkJRm9ybV9wZ19hbQlhbUZv cm07CisJCQkJTGlzdAkgICAqb2xkbmFtZXM7CisJCQkJY2hhcgkgICAqc2NoZW1hbmFtZTsKKwkJ CQljaGFyCSAgICpvcGZuYW1lOworCisJCQkJb3BmVHVwID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFN SUxZT0lELCBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQob3Bm VHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wZXJhdG9y IGZhbWlseSB3aXRoIE9JRCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJb3Bm Rm9ybSA9IChGb3JtX3BnX29wZmFtaWx5KSBHRVRTVFJVQ1Qob3BmVHVwKTsKKworCQkJCWFtVHVw ID0gU2VhcmNoU3lzQ2FjaGUxKEFNT0lELCBPYmplY3RJZEdldERhdHVtKG9wZkZvcm0tPm9wZm1l dGhvZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhbVR1cCkpCisJCQkJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhY2Nlc3MgbWV0aG9kIHdpdGggT0lEICV1IiwK KwkJCQkJCSBvcGZGb3JtLT5vcGZtZXRob2QpOworCisJCQkJYW1Gb3JtID0gKEZvcm1fcGdfYW0p IEdFVFNUUlVDVChhbVR1cCk7CisKKwkJCQlvbGRuYW1lcyA9IGxpc3RfY29weV90YWlsKChMaXN0 ICopIG5vZGUtPm9iamVjdCwgMSk7CisKKwkJCQkvKiBEZWNvbnN0cnVjdCB0aGUgbmFtZSBsaXN0 ICovCisJCQkJRGVjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKG9sZG5hbWVzLCAmc2NoZW1hbmFtZSwg Jm9wZm5hbWUpOworCisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1z ICV7aWRlbnRpdHl9RCBVU0lORyAle2luZGV4X21ldGhvZH1zIFJFTkFNRSBUTyAle25ld25hbWV9 SSIsIDQsCisJCQkJCQkJCQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIHN0 cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbmFtZVR5cGUsIGZhbHNlKSwKKwkJCQkJCQkJCSAiaWRl bnRpdHkiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZShvcGZGb3JtLT5vcGZuYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQkgIG9wZm5hbWUpLAorCQkJ CQkJCQkJICJpbmRleF9tZXRob2QiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJIE5hbWVTdHIo YW1Gb3JtLT5hbW5hbWUpLAorCQkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9k ZS0+bmV3bmFtZSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUoYW1UdXApOworCQkJCVJlbGVhc2VT eXNDYWNoZShvcGZUdXApOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfU0NIRU1B OgorCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFNDSEVNQSAle2lkZW50aXR5fUkgUkVO QU1FIFRPICV7bmV3bmFtZX1JIiwgMiwKKwkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVTdHJp bmcsIG5vZGUtPnN1Ym5hbWUsCisJCQkJCQkJCSAibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5v ZGUtPm5ld25hbWUpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfRkRXOgorCQljYXNlIE9C SkVDVF9MQU5HVUFHRToKKwkJY2FzZSBPQkpFQ1RfRk9SRUlHTl9TRVJWRVI6CisJCWNhc2UgT0JK RUNUX1BVQkxJQ0FUSU9OOgorCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlw ZX1zICV7aWRlbnRpdHl9cyBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCAzLAorCQkJCQkJCQkgIm9i anR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+ cmVuYW1lVHlwZSwgZmFsc2UpLAorCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywK KwkJCQkJCQkJIHN0clZhbChjYXN0Tm9kZShTdHJpbmcsIG5vZGUtPm9iamVjdCkpLAorCQkJCQkJ CQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1lKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgT0JKRUNUX1JVTEU6CisJCQl7CisJCQkJSGVhcFR1cGxlCXJld3JUdXA7CisJCQkJ Rm9ybV9wZ19yZXdyaXRlIHJld3JGb3JtOworCQkJCVJlbGF0aW9uCXBnX3Jld3JpdGU7CisKKwkJ CQlwZ19yZXdyaXRlID0gcmVsYXRpb25fb3BlbihSZXdyaXRlUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKKwkJCQlyZXdyVHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChwZ19yZXdy aXRlLCBBbnVtX3BnX3Jld3JpdGVfb2lkLCBhZGRyZXNzLm9iamVjdElkKTsKKwkJCQlyZXdyRm9y bSA9IChGb3JtX3BnX3Jld3JpdGUpIEdFVFNUUlVDVChyZXdyVHVwKTsKKworCQkJCXJldCA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBSVUxFICV7cnVsZW5hbWV9SSBPTiAle2lkZW50aXR5fUQgUkVO QU1FIFRPICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCQkJCSAicnVsZW5hbWUiLCBPYmpUeXBlU3Ry aW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3Qs CisJCQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkJCQkJCQkgcmV3ckZvcm0tPmV2X2NsYXNzKSwKKwkJCQkJCQkJCSAibmV3 bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCQkJCXJlbGF0aW9uX2Nsb3Nl KHBnX3Jld3JpdGUsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNl IE9CSkVDVF9UUklHR0VSOgorCQkJeworCQkJCUhlYXBUdXBsZQl0cmlnVHVwOworCQkJCUZvcm1f cGdfdHJpZ2dlciB0cmlnRm9ybTsKKwkJCQlSZWxhdGlvbglwZ190cmlnZ2VyOworCisJCQkJcGdf dHJpZ2dlciA9IHJlbGF0aW9uX29wZW4oVHJpZ2dlclJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCQkJdHJpZ1R1cCA9IGdldF9jYXRhbG9nX29iamVjdF9ieV9vaWQocGdfdHJpZ2dlciwg Z2V0X29iamVjdF9hdHRudW1fb2lkKGFkZHJlc3MuY2xhc3NJZCksIGFkZHJlc3Mub2JqZWN0SWQp OworCQkJCXRyaWdGb3JtID0gKEZvcm1fcGdfdHJpZ2dlcikgR0VUU1RSVUNUKHRyaWdUdXApOwor CisJCQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIFRSSUdHRVIgJXt0cmlnZ2VybmFtZX1J IE9OICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkiLCAzLAorCQkJCQkJCQkJICJ0 cmlnZ2VybmFtZSIsIE9ialR5cGVTdHJpbmcsIG5vZGUtPnN1Ym5hbWUsCisJCQkJCQkJCQkgImlk ZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5h bWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJCSB0cmlnRm9ybS0+dGdy ZWxpZCksCisJCQkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5uZXduYW1l KTsKKworCQkJCXJlbGF0aW9uX2Nsb3NlKHBnX3RyaWdnZXIsIEFjY2Vzc1NoYXJlTG9jayk7CisJ CQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9DT0xMQVRJT046CisJCWNhc2UgT0JKRUNU X1NUQVRJU1RJQ19FWFQ6CisJCWNhc2UgT0JKRUNUX1RZUEU6CisJCWNhc2UgT0JKRUNUX0NPTlZF UlNJT046CisJCWNhc2UgT0JKRUNUX0RPTUFJTjoKKwkJY2FzZSBPQkpFQ1RfVFNESUNUSU9OQVJZ OgorCQljYXNlIE9CSkVDVF9UU1BBUlNFUjoKKwkJY2FzZSBPQkpFQ1RfVFNURU1QTEFURToKKwkJ Y2FzZSBPQkpFQ1RfVFNDT05GSUdVUkFUSU9OOgorCQkJeworCQkJCUhlYXBUdXBsZQlvYmpUdXA7 CisJCQkJUmVsYXRpb24JY2F0YWxvZzsKKwkJCQlEYXR1bQkJb2JqbnNwOworCQkJCWJvb2wJCWlz bnVsbDsKKwkJCQlBdHRyTnVtYmVyCUFudW1fbmFtZXNwYWNlOworCQkJCUxpc3QJICAgKmlkZW50 aXR5ID0gY2FzdE5vZGUoTGlzdCwgbm9kZS0+b2JqZWN0KTsKKworCQkJCS8qIE9idGFpbiBvYmpl Y3QgdHVwbGUgKi8KKwkJCQljYXRhbG9nID0gcmVsYXRpb25fb3BlbihhZGRyZXNzLmNsYXNzSWQs IEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJb2JqVHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29p ZChjYXRhbG9nLCBnZXRfb2JqZWN0X2F0dG51bV9vaWQoYWRkcmVzcy5jbGFzc0lkKSwgYWRkcmVz cy5vYmplY3RJZCk7CisKKwkJCQkvKiBPYnRhaW4gbmFtZXNwYWNlICovCisJCQkJQW51bV9uYW1l c3BhY2UgPSBnZXRfb2JqZWN0X2F0dG51bV9uYW1lc3BhY2UoYWRkcmVzcy5jbGFzc0lkKTsKKwkJ CQlvYmpuc3AgPSBoZWFwX2dldGF0dHIob2JqVHVwLCBBbnVtX25hbWVzcGFjZSwKKwkJCQkJCQkJ CSAgUmVsYXRpb25HZXREZXNjcihjYXRhbG9nKSwgJmlzbnVsbCk7CisJCQkJaWYgKGlzbnVsbCkK KwkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgTlVMTCBuYW1lc3BhY2UiKTsKKworCQkJCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRP ICV7bmV3bmFtZX1JIiwgMywKKwkJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVuYW1lVHlwZSwgZmFsc2UpLAorCQkJ CQkJCQkJICJpZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lKERhdHVtR2V0T2JqZWN0SWQob2JqbnNwKSwKKwkJCQkJCQkJCQkJCQkJCSAg c3RyVmFsKGxsYXN0KGlkZW50aXR5KSkpLAorCQkJCQkJCQkJICJuZXduYW1lIiwgT2JqVHlwZVN0 cmluZywgbm9kZS0+bmV3bmFtZSk7CisJCQkJcmVsYXRpb25fY2xvc2UoY2F0YWxvZywgQWNjZXNz U2hhcmVMb2NrKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9S LCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgJWQiLCBub2RlLT5yZW5hbWVUeXBlKTsKKwl9CisK KwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIEFsdGVyT2JqZWN0RGVwZW5kc1N0 bXQgKEFMVEVSIC4uLiBERVBFTkRTIE9OIC4uLikuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAq IEFMVEVSIElOREVYICV7aWRlbnRpdHl9RCAle25vfXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtu ZXduYW1lfUkKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlckRlcGVuZFN0bXQo T2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQWx0ZXJPYmplY3REZXBlbmRzU3Rt dCAqbm9kZSA9IChBbHRlck9iamVjdERlcGVuZHNTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVl ICAgICpyZXQgPSBOVUxMOworCisJaWYgKG5vZGUtPm9iamVjdFR5cGUgPT0gT0JKRUNUX0lOREVY KQorCXsKKwkJT2JqVHJlZSAgICAqcXVhbGlmaWVkOworCQlSZWxhdGlvbglyZWxhdGlvbiA9IHJl bGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJcXVhbGlmaWVkID0g bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwK KwkJCQkJCQkJCQkJIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1lKTsKKwkJcmVsYXRpb25fY2xvc2Uo cmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFM VEVSIElOREVYICV7aWRlbnRpdHl9RCAle25vfXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtuZXdu YW1lfUkiLCAzLAorCQkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LCBxdWFsaWZpZWQs CisJCQkJCQkJICJubyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJIG5vZGUtPnJlbW92ZSA/ICJO TyIgOiAiIiwKKwkJCQkJCQkgIm5ld25hbWUiLCBPYmpUeXBlU3RyaW5nLCBzdHJWYWwobm9kZS0+ ZXh0bmFtZSkpOworCX0KKwllbHNlCisJCWVsb2coTE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlw ZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKKwkJCSAoaW50KSBub2RlVGFnKHBhcnNldHJlZSkp OworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgYSBSdWxlU3RtdCAoQ1JFQVRF IFJVTEUpLgorICoKKyAqIEdpdmVuIGEgcnVsZSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQg Y3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgcnVsZSBj b21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgUlVMRSAle29yX3JlcGxh Y2V9cyAle2lkZW50aXR5fUkgQVMgT04gJXtldmVudH1zIFRPICV7dGFibGV9RAorICogJXt3aGVy ZV9jbGF1c2V9cyBETyAle2luc3RlYWR9cyAle2FjdGlvbnM6LCB9cworICovCitzdGF0aWMgT2Jq VHJlZSAqCitkZXBhcnNlX1J1bGVTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQor eworCVJ1bGVTdG10ICAgKm5vZGUgPSAoUnVsZVN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUg ICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXA7CisJUmVsYXRpb24JcGdfcmV3cml0ZTsKKwlGb3Jt X3BnX3Jld3JpdGUgcmV3ckZvcm07CisJSGVhcFR1cGxlCXJld3JUdXA7CisJU3lzU2NhbkRlc2Mg c2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJRGF0dW0JCWV2X3F1YWw7CisJRGF0dW0JCWV2X2Fj dGlvbnM7CisJYm9vbAkJaXNudWxsOworCWNoYXIJICAgKnF1YWw7CisJTGlzdAkgICAqYWN0aW9u czsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJY2hhcgkgICAq ZXZlbnRfc3RyOworCisJcGdfcmV3cml0ZSA9IHRhYmxlX29wZW4oUmV3cml0ZVJlbGF0aW9uSWQs IEFjY2Vzc1NoYXJlTG9jayk7CisJU2NhbktleUluaXQoJmtleSwKKwkJCQlBbnVtX3BnX3Jld3Jp dGVfb2lkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJ ZEdldERhdHVtKG9iamVjdElkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3Jl d3JpdGUsIFJld3JpdGVPaWRJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMSwgJmtleSk7 CisJcmV3clR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHJld3JUdXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmV3 cml0ZSBydWxlIHdpdGggT0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisKKwlyZXdyRm9ybSA9IChG b3JtX3BnX3Jld3JpdGUpIEdFVFNUUlVDVChyZXdyVHVwKTsKKworCWV2ZW50X3N0ciA9IG5vZGUt PmV2ZW50ID09IENNRF9TRUxFQ1QgPyAiU0VMRUNUIiA6CisJCW5vZGUtPmV2ZW50ID09IENNRF9V UERBVEUgPyAiVVBEQVRFIiA6CisJCW5vZGUtPmV2ZW50ID09IENNRF9ERUxFVEUgPyAiREVMRVRF IiA6CisJCW5vZGUtPmV2ZW50ID09IENNRF9JTlNFUlQgPyAiSU5TRVJUIiA6IE5VTEw7CisJQXNz ZXJ0KGV2ZW50X3N0ciAhPSBOVUxMKTsKKworCWV2X3F1YWwgPSBoZWFwX2dldGF0dHIocmV3clR1 cCwgQW51bV9wZ19yZXdyaXRlX2V2X3F1YWwsCisJCQkJCQkgICBSZWxhdGlvbkdldERlc2NyKHBn X3Jld3JpdGUpLCAmaXNudWxsKTsKKwlldl9hY3Rpb25zID0gaGVhcF9nZXRhdHRyKHJld3JUdXAs IEFudW1fcGdfcmV3cml0ZV9ldl9hY3Rpb24sCisJCQkJCQkJICBSZWxhdGlvbkdldERlc2NyKHBn X3Jld3JpdGUpLCAmaXNudWxsKTsKKworCXBnX2dldF9ydWxlZGVmX2RldGFpbGVkKGV2X3F1YWws IGV2X2FjdGlvbnMsICZxdWFsLCAmYWN0aW9ucyk7CisKKwl0bXAgPSBuZXdfb2JqdHJlZSgiIik7 CisJaWYgKHF1YWwpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcCwgIldIRVJFICV7Y2xhdXNl fXMiLCAiY2xhdXNlIiwgcXVhbCk7CisJZWxzZQorCXsKKwkJYXBwZW5kX251bGxfb2JqZWN0KHRt cCwgIldIRVJFICV7Y2xhdXNlfXMiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisJfQor CisJaWYgKGFjdGlvbnMgPT0gTklMKQorCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5n X29iamVjdCgiTk9USElORyIpKTsKKwllbHNlCisJeworCQlmb3JlYWNoKGNlbGwsIGFjdGlvbnMp CisJCQlsaXN0ID0gbGFwcGVuZChsaXN0LCBuZXdfc3RyaW5nX29iamVjdChsZmlyc3QoY2VsbCkp KTsKKwl9CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIFJVTEUgJXtvcl9yZXBsYWNl fXMgJXtpZGVudGl0eX1JIEFTIE9OICV7ZXZlbnR9cyBUTyAle3RhYmxlfUQgJXt3aGVyZV9jbGF1 c2V9cyBETyAle2luc3RlYWR9cyIsIDYsCisJCQkJCQkgIm9yX3JlcGxhY2UiLCBPYmpUeXBlU3Ry aW5nLAorCQkJCQkJIG5vZGUtPnJlcGxhY2UgPyAiT1IgUkVQTEFDRSIgOiAiIiwKKwkJCQkJCSAi aWRlbnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBub2RlLT5ydWxlbmFtZSwKKwkJCQkJCSAiZXZlbnQi LCBPYmpUeXBlU3RyaW5nLCBldmVudF9zdHIsCisJCQkJCQkgInRhYmxlIiwgT2JqVHlwZU9iamVj dCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCSByZXdyRm9ybS0+ZXZfY2xhc3MpLAorCQkJCQkJICJ3aGVyZV9jbGF1 c2UiLCBPYmpUeXBlT2JqZWN0LCB0bXAsCisJCQkJCQkgImluc3RlYWQiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJIG5vZGUtPmluc3RlYWQgPyAiSU5TVEVBRCIgOiAiQUxTTyIpOworCisJaWYgKGxp c3RfbGVuZ3RoKGxpc3QpID4gMSkKKwkJYXBwZW5kX2FycmF5X29iamVjdChyZXQsICIoJXthY3Rp b25zOjsgfXMpIiwgbGlzdCk7CisJZWxzZQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIiV7 YWN0aW9uczo7IH1zIiwgbGlzdCk7CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxl X2Nsb3NlKHBnX3Jld3JpdGUsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQor CisvKgorICogRGVwYXJzZSBhIENyZWF0ZVRyYW5zZm9ybVN0bXQgKENSRUFURSBUUkFOU0ZPUk0p LgorICoKKyAqIEdpdmVuIGEgdHJhbnNmb3JtIE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBj cmVhdGVkIGl0LCByZXR1cm4gYW4gT2JqVHJlZQorICogcmVwcmVzZW50aW5nIHRoZSBDUkVBVEUg VFJBTlNGT1JNIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIENSRUFURSAle29y X3JlcGxhY2V9cyBUUkFOU0ZPUk0gRk9SICV7dHlwZW5hbWV9RCBMQU5HVUFHRSAle2xhbmd1YWdl fUkKKyAqICggRlJPTSBTUUwgV0lUSCBGVU5DVElPTiAle3NpZ25hdHVyZX1zLCBUTyBTUUwgV0lU SCBGVU5DVElPTgorICogJXtzaWduYXR1cmVfdG9mfXMgKQorICovCitzdGF0aWMgT2JqVHJlZSAq CitkZXBhcnNlX0NyZWF0ZVRyYW5zZm9ybVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRy ZWUpCit7CisJQ3JlYXRlVHJhbnNmb3JtU3RtdCAqbm9kZSA9IChDcmVhdGVUcmFuc2Zvcm1TdG10 ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAqc2lnbmF0dXJl OworCUhlYXBUdXBsZQl0cmZUdXA7CisJSGVhcFR1cGxlCWxhbmdUdXA7CisJSGVhcFR1cGxlCXBy b2NUdXA7CisJRm9ybV9wZ190cmFuc2Zvcm0gdHJmRm9ybTsKKwlGb3JtX3BnX2xhbmd1YWdlIGxh bmdGb3JtOworCUZvcm1fcGdfcHJvYyBwcm9jRm9ybTsKKwlpbnQJCQlpOworCisJLyogR2V0IHRo ZSBwZ190cmFuc2Zvcm0gdHVwbGUgKi8KKwl0cmZUdXAgPSBTZWFyY2hTeXNDYWNoZTEoVFJGT0lE LCBPYmplY3RJZEdldERhdHVtKG9iamVjdElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRy ZlR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0cmFuc2Zvcm0g d2l0aCBPSUQgJXUiLAorCQkJIG9iamVjdElkKTsKKwl0cmZGb3JtID0gKEZvcm1fcGdfdHJhbnNm b3JtKSBHRVRTVFJVQ1QodHJmVHVwKTsKKworCS8qIEdldCB0aGUgY29ycmVzcG9uZGluZyBwZ19s YW5ndWFnZSB0dXBsZSAqLworCWxhbmdUdXAgPSBTZWFyY2hTeXNDYWNoZTEoTEFOR09JRCwgdHJm Rm9ybS0+dHJmbGFuZyk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGxhbmdUdXApKQorCQllbG9n KEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgbGFuZ3VhZ2Ugd2l0aCBPSUQgJXUiLAor CQkJIHRyZkZvcm0tPnRyZmxhbmcpOworCWxhbmdGb3JtID0gKEZvcm1fcGdfbGFuZ3VhZ2UpIEdF VFNUUlVDVChsYW5nVHVwKTsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJDUkVBVEUgJXtvcl9y ZXBsYWNlfXMgVFJBTlNGT1JNIEZPUiAle3R5cGVuYW1lfUQgTEFOR1VBR0UgJXtsYW5ndWFnZX1J IiwgMywKKwkJCQkJCSAib3JfcmVwbGFjZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+ cmVwbGFjZSA/ICJPUiBSRVBMQUNFIiA6ICIiLAorCQkJCQkJICJ0eXBlbmFtZSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFR5cGVSZWxhdGlvbklk LAorCQkJCQkJCQkJCQkJCSB0cmZGb3JtLT50cmZ0eXBlKSwKKwkJCQkJCSAibGFuZ3VhZ2UiLCBP YmpUeXBlU3RyaW5nLAorCQkJCQkJIE5hbWVTdHIobGFuZ0Zvcm0tPmxhbm5hbWUpKTsKKworCS8q IERlcGFyc2UgdGhlIHRyYW5zZm9ybV9lbGVtZW50X2xpc3QgKi8KKwlpZiAoT2lkSXNWYWxpZCh0 cmZGb3JtLT50cmZmcm9tc3FsKSkKKwl7CisJCUxpc3QJICAgKnBhcmFtcyA9IE5JTDsKKworCQkv KiBHZXQgdGhlIHBnX3Byb2MgdHVwbGUgZm9yIHRoZSBGUk9NIEZVTkNUSU9OICovCisJCXByb2NU dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgdHJmRm9ybS0+dHJmZnJvbXNxbCk7CisJCWlm ICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldSIsCisJCQkJIHRyZkZvcm0tPnRyZmZy b21zcWwpOworCQlwcm9jRm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jVHVwKTsK KworCQkvKgorCQkgKiBDUkVBVEUgVFJBTlNGT1JNIGRvZXMgbm90IGNoYW5nZSBmdW5jdGlvbiBz aWduYXR1cmUgc28gd2UgY2FuIHVzZQorCQkgKiBjYXRhbG9nIHRvIGdldCBpbnB1dCB0eXBlIE9p ZHMuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgcHJvY0Zvcm0tPnByb25hcmdzOyBpKyspCisJ CXsKKwkJCU9ialRyZWUgICAgKnBhcmFtX29iajsKKworCQkJcGFyYW1fb2JqID0gbmV3X29ianRy ZWVfVkEoIiV7dHlwZX1UIiwgMSwKKwkJCQkJCQkJCSAgInR5cGUiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3R5cGUocHJvY0Zvcm0tPnByb2FyZ3R5cGVzLnZhbHVl c1tpXSwgLTEpKTsKKwkJCXBhcmFtcyA9IGxhcHBlbmQocGFyYW1zLCBuZXdfb2JqZWN0X29iamVj dChwYXJhbV9vYmopKTsKKwkJfQorCisJCXNpZ25hdHVyZSA9IG5ld19vYmp0cmVlX1ZBKCIle2lk ZW50aXR5fUQgKCV7YXJndW1lbnRzOiwgfXMpIiwgMiwKKwkJCQkJCQkJICAgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJICAgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHByb2NG b3JtLT5wcm9uYW1lc3BhY2UsCisJCQkJCQkJCQkJCQkJCQlOYW1lU3RyKHByb2NGb3JtLT5wcm9u YW1lKSksCisJCQkJCQkJCSAgICJhcmd1bWVudHMiLCBPYmpUeXBlQXJyYXksIHBhcmFtcyk7CisK KwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiKEZST00gU1FMIFdJVEggRlVOQ1RJT04gJXtz aWduYXR1cmV9cyIsCisJCQkJCQkJIHNpZ25hdHVyZSk7CisJCVJlbGVhc2VTeXNDYWNoZShwcm9j VHVwKTsKKwl9CisJaWYgKE9pZElzVmFsaWQodHJmRm9ybS0+dHJmdG9zcWwpKQorCXsKKwkJTGlz dAkgICAqcGFyYW1zID0gTklMOworCisJCS8qIEFwcGVuZCBhICcsJyBpZiB0cmZmcm9tc3FsIGlz IHByZXNlbnQsIGVsc2UgYXBwZW5kICcoJyAqLworCQlhcHBlbmRfZm9ybWF0X3N0cmluZyhyZXQs IE9pZElzVmFsaWQodHJmRm9ybS0+dHJmZnJvbXNxbCkgPyAiLCIgOiAiKCIpOworCisJCS8qIEdl dCB0aGUgcGdfcHJvYyB0dXBsZSBmb3IgdGhlIFRPIEZVTkNUSU9OICovCisJCXByb2NUdXAgPSBT ZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgdHJmRm9ybS0+dHJmdG9zcWwpOworCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQocHJvY1R1cCkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgZnVuY3Rpb24gd2l0aCBPSUQgJXUiLAorCQkJCSB0cmZGb3JtLT50cmZ0b3NxbCk7CisJ CXByb2NGb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHByb2NUdXApOworCisJCS8qCisJ CSAqIENSRUFURSBUUkFOU0ZPUk0gZG9lcyBub3QgY2hhbmdlIGZ1bmN0aW9uIHNpZ25hdHVyZSBz byB3ZSBjYW4gdXNlCisJCSAqIGNhdGFsb2cgdG8gZ2V0IGlucHV0IHR5cGUgT2lkcy4KKwkJICov CisJCWZvciAoaSA9IDA7IGkgPCBwcm9jRm9ybS0+cHJvbmFyZ3M7IGkrKykKKwkJeworCQkJT2Jq VHJlZSAgICAqcGFyYW1fb2JqID0gbmV3X29ianRyZWUoIiIpOworCisJCQlwYXJhbV9vYmogPSBu ZXdfb2JqdHJlZV9WQSgiJXt0eXBlfVQiLCAxLAorCQkJCQkJCQkJICAidHlwZSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCQkgIG5ld19vYmp0cmVlX2Zvcl90eXBlKHByb2NGb3JtLT5wcm9hcmd0 eXBlcy52YWx1ZXNbaV0sIC0xKSk7CisJCQlwYXJhbXMgPSBsYXBwZW5kKHBhcmFtcywgbmV3X29i amVjdF9vYmplY3QocGFyYW1fb2JqKSk7CisJCX0KKworCQlzaWduYXR1cmUgPSBuZXdfb2JqdHJl ZV9WQSgiJXtpZGVudGl0eX1EICgle2FyZ3VtZW50czosIH1zKSIsIDIsCisJCQkJCQkJCSAgICJp ZGVudGl0eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCSAgIG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZShwcm9jRm9ybS0+cHJvbmFtZXNwYWNlLAorCQkJCQkJCQkJCQkJCQkJTmFtZVN0cihwcm9j Rm9ybS0+cHJvbmFtZSkpLAorCQkJCQkJCQkgICAiYXJndW1lbnRzIiwgT2JqVHlwZUFycmF5LCBw YXJhbXMpOworCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIlRPIFNRTCBXSVRIIEZVTkNU SU9OICV7c2lnbmF0dXJlX3RvZn1zIiwKKwkJCQkJCQkgc2lnbmF0dXJlKTsKKwkJUmVsZWFzZVN5 c0NhY2hlKHByb2NUdXApOworCX0KKworCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIikiKTsK KworCVJlbGVhc2VTeXNDYWNoZShsYW5nVHVwKTsKKwlSZWxlYXNlU3lzQ2FjaGUodHJmVHVwKTsK KwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENvbW1lbnRTdG10IHdoZW4gaXQg cGVydGFpbnMgdG8gYSBjb25zdHJhaW50LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDT01N RU5UIE9OIENPTlNUUkFJTlQgJXtpZGVudGl0eX1zIE9OIFtET01BSU5dICV7cGFyZW50b2JqfXMg SVMgJXtjb21tZW50fXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9Db21tZW50T25D b25zdHJhaW50U210KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCUNvbW1lbnRT dG10ICpub2RlID0gKENvbW1lbnRTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7 CisJSGVhcFR1cGxlCWNvbnN0clR1cDsKKwlGb3JtX3BnX2NvbnN0cmFpbnQgY29uc3RyRm9ybTsK KwlPYmplY3RBZGRyZXNzIGFkZHI7CisKKwlBc3NlcnQobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1Rf VEFCQ09OU1RSQUlOVCB8fCBub2RlLT5vYmp0eXBlID09IE9CSkVDVF9ET01DT05TVFJBSU5UKTsK KworCWNvbnN0clR1cCA9IFNlYXJjaFN5c0NhY2hlMShDT05TVFJPSUQsIG9iamVjdElkKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29uc3RyVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIGNvbnN0cmFpbnQgd2l0aCBPSUQgJXUiLCBvYmplY3RJZCk7CisJY29u c3RyRm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJUdXApOworCisJ aWYgKE9pZElzVmFsaWQoY29uc3RyRm9ybS0+Y29ucmVsaWQpKQorCQlPYmplY3RBZGRyZXNzU2V0 KGFkZHIsIFJlbGF0aW9uUmVsYXRpb25JZCwgY29uc3RyRm9ybS0+Y29ucmVsaWQpOworCWVsc2UK KwkJT2JqZWN0QWRkcmVzc1NldChhZGRyLCBUeXBlUmVsYXRpb25JZCwgY29uc3RyRm9ybS0+Y29u dHlwaWQpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIkNPTU1FTlQgT04gQ09OU1RSQUlOVCAl e2lkZW50aXR5fXMgT04gJXtkb21haW59cyAle3BhcmVudG9ian1zIiwgMywKKwkJCQkJCSAiaWRl bnRpdHkiLCBPYmpUeXBlU3RyaW5nLCBwc3RyZHVwKE5hbWVTdHIoY29uc3RyRm9ybS0+Y29ubmFt ZSkpLAorCQkJCQkJICJkb21haW4iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIChub2RlLT5vYmp0 eXBlID09IE9CSkVDVF9ET01DT05TVFJBSU5UKSA/ICJET01BSU4iIDogIiIsCisJCQkJCQkgInBh cmVudG9iaiIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgZ2V0T2JqZWN0SWRlbnRpdHkoJmFkZHIs IGZhbHNlKSk7CisKKwkvKiBBZGQgdGhlIGNvbW1lbnQgY2xhdXNlICovCisJYXBwZW5kX2xpdGVy YWxfb3JfbnVsbChyZXQsICJJUyAle2NvbW1lbnR9cyIsIG5vZGUtPmNvbW1lbnQpOworCisJUmVs ZWFzZVN5c0NhY2hlKGNvbnN0clR1cCk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFy c2UgYW4gQ29tbWVudFN0bXQgKENPTU1FTlQgT04gLi4uKS4KKyAqCisgKiBHaXZlbiB0aGUgb2Jq ZWN0IGFkZHJlc3MgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFu CisgKiBPYmpUcmVlIHJlcHJlc2VudGluZyB0aGUgY29tbWVudCBjb21tYW5kLgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBDT01NRU5UIE9OICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBJUyAl e2NvbW1lbnR9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0NvbW1lbnRTdG10KE9i amVjdEFkZHJlc3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQoreworCUNvbW1lbnRTdG10ICpu b2RlID0gKENvbW1lbnRTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQ7CisJY2hh cgkgICAqaWRlbnRpdHk7CisKKwkvKiBDb21tZW50IG9uIHN1YnNjcmlwdGlvbiBpcyBub3Qgc3Vw cG9ydGVkICovCisJaWYgKG5vZGUtPm9ianR5cGUgPT0gT0JKRUNUX1NVQlNDUklQVElPTikKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIENvbnN0cmFpbnRzIGFyZSBzdWZmaWNpZW50bHkgZGlm ZmVyZW50IHRoYXQgaXQgaXMgZWFzaWVyIHRvIGhhbmRsZSB0aGVtCisJICogc2VwYXJhdGVseS4K KwkgKi8KKwlpZiAobm9kZS0+b2JqdHlwZSA9PSBPQkpFQ1RfRE9NQ09OU1RSQUlOVCB8fAorCQlu b2RlLT5vYmp0eXBlID09IE9CSkVDVF9UQUJDT05TVFJBSU5UKQorCXsKKwkJQXNzZXJ0KGFkZHJl c3MuY2xhc3NJZCA9PSBDb25zdHJhaW50UmVsYXRpb25JZCk7CisJCXJldHVybiBkZXBhcnNlX0Nv bW1lbnRPbkNvbnN0cmFpbnRTbXQoYWRkcmVzcy5vYmplY3RJZCwgcGFyc2V0cmVlKTsKKwl9CisK KwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ09NTUVOVCBPTiAle29ianR5cGV9cyIsIDEsCisJCQkJ CQkgIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIChjaGFyICopIHN0cmluZ2lmeV9v Ymp0eXBlKG5vZGUtPm9ianR5cGUsIGZhbHNlKSk7CisKKwkvKgorCSAqIEFkZCB0aGUgb2JqZWN0 IGlkZW50aXR5IGNsYXVzZS4gIEZvciB6ZXJvIGFyZ3VtZW50IGFnZ3JlZ2F0ZXMgd2UgbmVlZAor CSAqIHRvIGFkZCB0aGUgKCopIGJpdDsgaW4gYWxsIG90aGVyIGNhc2VzIHdlIGNhbiBqdXN0IHVz ZQorCSAqIGdldE9iamVjdElkZW50aXR5LgorCSAqCisJICogWFhYIHNob3VsZG4ndCB3ZSBpbnN0 ZWFkIGZpeCB0aGUgb2JqZWN0IGlkZW50aXRpZXMgZm9yIHplcm8tYXJndW1lbnQKKwkgKiBhZ2dy ZWdhdGVzPworCSAqLworCWlmIChub2RlLT5vYmp0eXBlID09IE9CSkVDVF9BR0dSRUdBVEUpCisJ eworCQlIZWFwVHVwbGUJcHJvY1R1cDsKKwkJRm9ybV9wZ19wcm9jIHByb2NGb3JtOworCisJCXBy b2NUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJPQ09JRCwgT2JqZWN0SWRHZXREYXR1bShhZGRyZXNz Lm9iamVjdElkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwcm9jVHVwKSkKKwkJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9jZWR1cmUgd2l0aCBPSUQgJXUiLAor CQkJCSBhZGRyZXNzLm9iamVjdElkKTsKKwkJcHJvY0Zvcm0gPSAoRm9ybV9wZ19wcm9jKSBHRVRT VFJVQ1QocHJvY1R1cCk7CisJCWlmIChwcm9jRm9ybS0+cHJvbmFyZ3MgPT0gMCkKKwkJCWlkZW50 aXR5ID0gcHNwcmludGYoIiVzKCopIiwKKwkJCQkJCQkJcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZp ZXIoZ2V0X25hbWVzcGFjZV9uYW1lKHByb2NGb3JtLT5wcm9uYW1lc3BhY2UpLAorCQkJCQkJCQkJ CQkJCQkgICBOYW1lU3RyKHByb2NGb3JtLT5wcm9uYW1lKSkpOworCQllbHNlCisJCQlpZGVudGl0 eSA9IGdldE9iamVjdElkZW50aXR5KCZhZGRyZXNzLCBmYWxzZSk7CisJCVJlbGVhc2VTeXNDYWNo ZShwcm9jVHVwKTsKKwl9CisJZWxzZQorCQlpZGVudGl0eSA9IGdldE9iamVjdElkZW50aXR5KCZh ZGRyZXNzLCBmYWxzZSk7CisKKwlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle2lkZW50aXR5 fXMiLCAiaWRlbnRpdHkiLCBpZGVudGl0eSk7CisKKwkvKiBBZGQgdGhlIGNvbW1lbnQgY2xhdXNl OyBjYW4gYmUgZWl0aGVyIE5VTEwgb3IgYSBxdW90ZWQgbGl0ZXJhbC4gKi8KKwlhcHBlbmRfbGl0 ZXJhbF9vcl9udWxsKHJldCwgIklTICV7Y29tbWVudH1zIiwgbm9kZS0+Y29tbWVudCk7CisKKwly ZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIFNFQ1VSSVRZIExBQkVMIGNvbW1hbmQu CisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFNFQ1VSSVRZIExBQkVMIEZPUiAle3Byb3ZpZGVy fXMgT04gJXtvYmplY3RfdHlwZV9uYW1lfXMgJXtpZGVudGl0eX1zIElTICV7bGFiZWx9cworICov CitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1NlY0xhYmVsU3RtdChDb2xsZWN0ZWRDb21tYW5k ICpjbWQpCit7CisJT2JqVHJlZQkgICAqcmV0OworCVNlY0xhYmVsU3RtdCAqbm9kZSA9IChTZWNM YWJlbFN0bXQgKikgY21kLT5wYXJzZXRyZWU7CisKKwkvKiBEb24ndCBkZXBhcnNlIHNxbCBjb21t YW5kcyBnZW5lcmF0ZWQgd2hpbGUgY3JlYXRpbmcgZXh0ZW5zaW9uICovCisJaWYgKGNtZC0+aW5f ZXh0ZW5zaW9uKQorCQlyZXR1cm4gTlVMTDsKKworCUFzc2VydChjbWQtPmQuc2VjbGFiZWwucHJv dmlkZXIpOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIlNFQ1VSSVRZIExBQkVMIEZPUiAle3By b3ZpZGVyfXMgT04gJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIiwgMywKKwkJCQkJCSAicHJvdmlk ZXIiLCBPYmpUeXBlU3RyaW5nLCBjbWQtPmQuc2VjbGFiZWwucHJvdmlkZXIsCisJCQkJCQkgIm9i anR5cGUiLCBPYmpUeXBlU3RyaW5nLCBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5vYmp0eXBlLCBm YWxzZSksCisJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywgZ2V0T2JqZWN0SWRlbnRp dHkoJihjbWQtPmQuc2VjbGFiZWwuYWRkcmVzcyksIGZhbHNlKSk7CisKKwkvKiBBZGQgdGhlIGxh YmVsIGNsYXVzZTsgY2FuIGJlIGVpdGhlciBOVUxMIG9yIGEgcXVvdGVkIGxpdGVyYWwuICovCisJ YXBwZW5kX2xpdGVyYWxfb3JfbnVsbChyZXQsICJJUyAle2xhYmVsfXMiLCBub2RlLT5sYWJlbCk7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENyZWF0ZUFtU3RtdCAoQ1JF QVRFIEFDQ0VTUyBNRVRIT0QpLgorICoKKyAqIEdpdmVuIGFuIGFjY2VzcyBtZXRob2QgT0lEIGFu ZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJlZSBy ZXByZXNlbnRpbmcgdGhlIENSRUFURSBBQ0NFU1MgTUVUSE9EIGNvbW1hbmQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIENSRUFURSBBQ0NFU1MgTUVUSE9EICV7aWRlbnRpdHl9SSBUWVBFICV7 YW1fdHlwZX1zIEhBTkRMRVIgJXtoYW5kbGVyfUQKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVw YXJzZV9DcmVhdGVBbVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJT2Jq VHJlZSAgICAqcmV0OworCUhlYXBUdXBsZQlhbVR1cDsKKwlGb3JtX3BnX2FtCWFtRm9ybTsKKwlj aGFyCSAgICphbXR5cGU7CisKKwlhbVR1cCA9IFNlYXJjaFN5c0NhY2hlMShBTU9JRCwgT2JqZWN0 SWRHZXREYXR1bShvYmplY3RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChhbVR1cCkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBhY2Nlc3MgbWV0aG9kIHdpdGgg T0lEICV1IiwKKwkJCSBvYmplY3RJZCk7CisJYW1Gb3JtID0gKEZvcm1fcGdfYW0pIEdFVFNUUlVD VChhbVR1cCk7CisKKwlzd2l0Y2ggKGFtRm9ybS0+YW10eXBlKQorCXsKKwkJY2FzZSAnaSc6CisJ CQlhbXR5cGUgPSAiSU5ERVgiOworCQkJYnJlYWs7CisJCWNhc2UgJ3QnOgorCQkJYW10eXBlID0g IlRBQkxFIjsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgImludmFsaWQg dHlwZSAlYyBmb3IgYWNjZXNzIG1ldGhvZCIsIGFtRm9ybS0+YW10eXBlKTsKKwl9CisKKwlyZXQg PSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFIEFDQ0VTUyBNRVRIT0QgJXtpZGVudGl0eX1JIFRZUEUg JXthbV90eXBlfXMgSEFORExFUiAle2hhbmRsZXJ9RCIsIDMsCisJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSBOYW1lU3RyKGFtRm9ybS0+YW1uYW1lKSwKKwkJCQkJCSAi YW1fdHlwZSIsIE9ialR5cGVTdHJpbmcsIGFtdHlwZSwKKwkJCQkJCSAiaGFuZGxlciIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJIGFtRm9ybS0+YW1oYW5kbGVyKSk7CisKKwlSZWxlYXNl U3lzQ2FjaGUoYW1UdXApOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgdGhl IHB1YmxpY2F0aW9uIGNvbHVtbiBsaXN0LgorICoKKyAqIEdpdmVuIGEgdHVwbGUgb2YgcGdfcHVi bGljYXRpb25fcmVsLCByZXR1cm4gYW4gb2JqVHJlZSB0aGF0IHJlcHJlc2VudCB0aGUKKyAqIGNv bHVtbiBuYW1lcy4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9QdWJsaWNhdGlvblJl bGF0aW9uQ29sdW1uTGlzdChIZWFwVHVwbGUgcHVicmVsdHVwKQoreworCWJvb2wJCWlzbnVsbDsK KwlMaXN0CSAgICpjb2xsaXN0ID0gTklMOworCU9ialRyZWUJICAgKmNvbHVtbmxpc3Q7CisJRGF0 dW0JCWF0dHJzZGF0dW07CisKKwlhdHRyc2RhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FU SU9OUkVMTUFQLCBwdWJyZWx0dXAsCisJCQkJCQkJCSBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9w cmF0dHJzLAorCQkJCQkJCQkgJmlzbnVsbCk7CisKKwljb2x1bW5saXN0ID0gbmV3X29ianRyZWUo IiIpOworCWlmICghaXNudWxsKQorCXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVs OworCQlBcnJheVR5cGUgICphcnI7CisJCWludAkJCW5lbGVtczsKKwkJaW50MTYJICAgKmVsZW1z OworCisJCWFyciA9IERhdHVtR2V0QXJyYXlUeXBlUChhdHRyc2RhdHVtKTsKKwkJbmVsZW1zID0g QVJSX0RJTVMoYXJyKVswXTsKKwkJZWxlbXMgPSAoaW50MTYgKikgQVJSX0RBVEFfUFRSKGFycik7 CisKKwkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRTVFJVQ1QocHVicmVs dHVwKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IG5lbGVtczsgaSsrKQorCQl7CisJCQljaGFy ICpjb2xuYW1lID0gZ2V0X2F0dG5hbWUocHVicmVsLT5wcnJlbGlkLCBlbGVtc1tpXSwgZmFsc2Up OworCQkJY29sbGlzdCA9IGxhcHBlbmQoY29sbGlzdCwgbmV3X3N0cmluZ19vYmplY3QoY29sbmFt ZSkpOworCQl9CisKKwkJYXBwZW5kX2FycmF5X29iamVjdChjb2x1bW5saXN0LCAiKCV7Y29sczos IH1zKSIsIGNvbGxpc3QpOworCX0KKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChjb2x1bW5s aXN0KTsKKworCXJldHVybiBjb2x1bW5saXN0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgcHVi bGljYXRpb24gd2hlcmUgY2xhdXNlLgorICoKKyAqIEdpdmVuIGEgdHVwbGUgb2YgcGdfcHVibGlj YXRpb25fcmVsLCByZXR1cm4gYSBvYmpUcmVlIHRoYXQgcmVwcmVzZW50IHRoZQorICogcHVibGlj YXRpb24gd2hlcmUgY2xhdXNlLgorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX1B1Ymxp Y2F0aW9uUmVsYXRpb25XaGVyZUNsYXVzZShIZWFwVHVwbGUgcHVicmVsdHVwKQoreworCURhdHVt CQkJCQlxdWFsZGF0dW07CisJT2JqVHJlZQkJCQkgICAqd2hlcmVjbGF1c2U7CisJYm9vbAkJCQkJ aXNudWxsOworCisJcXVhbGRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQ LCBwdWJyZWx0dXAsCisJCQkJCQkJCUFudW1fcGdfcHVibGljYXRpb25fcmVsX3BycXVhbCwgJmlz bnVsbCk7CisKKwl3aGVyZWNsYXVzZSA9IG5ld19vYmp0cmVlKCIiKTsKKwlpZiAoIWlzbnVsbCkK Kwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKKwkJTm9kZQkJCQkgICAqcXVh bG5vZGU7CisJCUxpc3QJCQkJICAgKmNvbnRleHQ7CisJCWNoYXIJCQkJICAgKnF1YWxzdHI7CisJ CU9pZAkJCQkJCXJlbGlkOworCisJCXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkg R0VUU1RSVUNUKHB1YnJlbHR1cCk7CisJCXJlbGlkID0gcHVicmVsLT5wcnJlbGlkOworCisJCWNv bnRleHQgPSBkZXBhcnNlX2NvbnRleHRfZm9yKGdldF9yZWxfbmFtZShyZWxpZCksIHJlbGlkKTsK KwkJcXVhbG5vZGUgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhxdWFsZGF0dW0p KTsKKwkJcXVhbHN0ciA9IGRlcGFyc2VfZXhwcmVzc2lvbihxdWFsbm9kZSwgY29udGV4dCwgZmFs c2UsIGZhbHNlKTsKKworCQlhcHBlbmRfc3RyaW5nX29iamVjdCh3aGVyZWNsYXVzZSwgIldIRVJF ICV7d2hlcmV9cyIsICJ3aGVyZSIsIHF1YWxzdHIpOworCX0KKwllbHNlCisJCWFwcGVuZF9ub3Rf cHJlc2VudCh3aGVyZWNsYXVzZSk7CisKKwlyZXR1cm4gd2hlcmVjbGF1c2U7Cit9CisKKy8qCisg KiBTdWJyb3V0aW5lIGZvciBDUkVBVEUgUFVCTElDQVRJT04gZGVwYXJzaW5nLgorICoKKyAqIERl YWwgd2l0aCBhbGwgdGhlIHB1YmxpY2F0aW9uIHRhYmxlIGluZm9ybWF0aW9uIGluY2x1ZGluZyB0 aGUgd2hlcmUgY2xhdXNlCisgKiBhbmQgY29sdW1uIGxpc3QuCisgKi8KK3N0YXRpYyBMaXN0ICoK K2RlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbkRlZnMoT2lkIHB1Ym9pZCkKK3sKKwlSZWxhdGlv bglwdWJyZWxzcmVsOworCVNjYW5LZXlEYXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2NhbjsK KwlIZWFwVHVwbGUJdHVwOworCUxpc3QJICAgKnJlbGRlZnMgPSBOSUw7CisKKwlwdWJyZWxzcmVs ID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlTY2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9w cnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJ ZEdldERhdHVtKHB1Ym9pZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwdWJyZWxz cmVsLCBQdWJsaWNhdGlvblJlbFBycHViaWRJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwg MSwgJnNjYW5rZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVf Z2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCBwdWJyZWw7CisJ CU9pZAkJCQkJCXJlbGlkOworCQlPYmpUcmVlCQkJCSAgICpjb2x1bW5saXN0OworCQlPYmpUcmVl CQkJCSAgICp3aGVyZWNsYXVzZTsKKwkJT2JqVHJlZQkJCQkgICAqcmVsZGVmOworCisJCXB1YnJl bCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CisJCXJlbGlkID0g cHVicmVsLT5wcnJlbGlkOworCisJCXJlbGRlZiA9IG5ld19vYmp0cmVlX1ZBKCIle3RhYmxlbmFt ZX1EIiwgMSwKKwkJCQkJCQkJInRhYmxlbmFtZSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCSBu ZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCkpOwor CisJCWNvbHVtbmxpc3QgPSBkZXBhcnNlX1B1YmxpY2F0aW9uUmVsYXRpb25Db2x1bW5MaXN0KHR1 cCk7CisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJlbGRlZiwgIiV7Y29sdW1uX2xpc3R9cyIsIGNv bHVtbmxpc3QpOworCisJCXdoZXJlY2xhdXNlID0gZGVwYXJzZV9QdWJsaWNhdGlvblJlbGF0aW9u V2hlcmVDbGF1c2UodHVwKTsKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmVsZGVmLCAiJXt3aGVy ZV9jbGF1c2V9cyIsIHdoZXJlY2xhdXNlKTsKKworCQlyZWxkZWZzID0gbGFwcGVuZChyZWxkZWZz LCBuZXdfb2JqZWN0X29iamVjdChyZWxkZWYpKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNj YW4pOworCXRhYmxlX2Nsb3NlKHB1YnJlbHNyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1 cm4gcmVsZGVmczsKK30KKworLyoKKyAqIERlcGFyc2UgYSBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KENSRUFURSBQVUJMSUNBVElPTikuCisgKgorICogR2l2ZW4gYW4gcHVibGljYXRpb24gT0lEIGFu ZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJlZSBy ZXByZXNlbnRpbmcgdGhlIENSRUFURSBQVUJMSUNBVElPTiBjb21tYW5kLgogICoKICAqIFZlcmJv c2Ugc3ludGF4Ci0gKiBBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31zICV7aWRlbnRpdHl9 RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIENSRUFURSBQVUJMSUNBVElPTiAle2lkZW50aXR5 fUkgJXtmb3JfdGFibGVzfXMgJXtmb3Jfc2NoZW1hc31zICV7d2l0aF9jbGF1c2V9cwogICogT1IK LSAqIEFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09OU1RSQUlOVCAl e29sZG5hbWV9SSBUTyAle25ld25hbWV9SQorICogQ1JFQVRFIFBVQkxJQ0FUSU9OICV7aWRlbnRp dHl9SSBGT1IgQUxMIFRBQkxFUyAle3dpdGhfY2xhdXNlfXMKKyAqLworc3RhdGljIE9ialRyZWUg KgorZGVwYXJzZV9DcmVhdGVQdWJsaWNhdGlvblN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJz ZXRyZWUpCit7CisJQ3JlYXRlUHVibGljYXRpb25TdG10ICpub2RlID0gKENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqKSBwYXJzZXRyZWU7CisJT2JqVHJlZSAgICAqY3JlYXRlUHViOworCU9ialRyZWUg ICAgKnRtcDsKKwlIZWFwVHVwbGUJcHViVHVwOworCUZvcm1fcGdfcHVibGljYXRpb24JcHViRm9y bTsKKwlMaXN0CSAgICpsaXN0ID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisKKwlwdWJUdXAg PSBTZWFyY2hTeXNDYWNoZTEoUFVCTElDQVRJT05PSUQsIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0 SWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHViVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGFjY2VzcyBtZXRob2Qgd2l0aCBPSUQgJXUiLAorCQkJIG9i amVjdElkKTsKKwlwdWJGb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVChwdWJU dXApOworCisJY3JlYXRlUHViID0gbmV3X29ianRyZWVfVkEoIkNSRUFURSBQVUJMSUNBVElPTiAl e2lkZW50aXR5fXMiLCAxLAorCQkJCQkJCSAgICJpZGVudGl0eSIsIE9ialR5cGVTdHJpbmcsCisJ CQkJCQkJICAgTmFtZVN0cihwdWJGb3JtLT5wdWJuYW1lKSk7CisKKwlpZiAobm9kZS0+Zm9yX2Fs bF90YWJsZXMpCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKGNyZWF0ZVB1YiwgIkZPUiBBTEwgVEFC TEVTIik7CisJZWxzZQorCXsKKwkJTGlzdAkgICAqb2xkc2NoZW1haWRzOworCQlTdHJpbmdJbmZv RGF0YSBmb3Jfc2NoZW1hczsKKworCQkvKiBGT1IgVEFCTEVTIHQxLHQyLC4uLiAqLworCQl0bXAg PSBuZXdfb2JqdHJlZSgiRk9SIFRBQkxFIik7CisKKwkJbGlzdCA9IGRlcGFyc2VfUHVibGljYXRp b25SZWxhdGlvbkRlZnMob2JqZWN0SWQpOworCQlpZiAobGlzdCAhPSBOSUwpCisJCQlhcHBlbmRf YXJyYXlfb2JqZWN0KHRtcCwgIiV7dGFibGVzOiwgfXMiLCBsaXN0KTsKKwkJZWxzZQorCQkJYXBw ZW5kX25vdF9wcmVzZW50KHRtcCk7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoY3JlYXRlUHVi LCAiJXtmb3JfdGFibGVzfXMiLCB0bXApOworCisJCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHMx LHMyLC4uLiAqLworCQlpbml0U3RyaW5nSW5mbygmZm9yX3NjaGVtYXMpOworCQlpZiAobGlzdCAh PSBOSUwpCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmb3Jfc2NoZW1hcywgIiwgIik7CisJ CWVsc2UKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZvcl9zY2hlbWFzLCAiRk9SICIpOwor CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmb3Jfc2NoZW1hcywgIlRBQkxFUyBJTiBTQ0hFTUEi KTsKKworCQl0bXAgPSBuZXdfb2JqdHJlZShmb3Jfc2NoZW1hcy5kYXRhKTsKKwkJbGlzdCA9IE5J TDsKKwkJb2xkc2NoZW1haWRzID0gR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YkZvcm0tPm9pZCk7 CisJCWZvcmVhY2goY2VsbCwgb2xkc2NoZW1haWRzKQorCQl7CisJCQlPaWQJCXNjaGVtYWlkID0g bGZpcnN0X29pZChjZWxsKTsKKwkJCWxpc3QgPSBsYXBwZW5kKGxpc3QsIG5ld19zdHJpbmdfb2Jq ZWN0KGdldF9uYW1lc3BhY2VfbmFtZShzY2hlbWFpZCkpKTsKKwkJfQorCisJCWlmIChsaXN0ICE9 IE5JTCkKKwkJCWFwcGVuZF9hcnJheV9vYmplY3QodG1wLCAiJXtzY2hlbWFzOiwgfUkiLCBsaXN0 KTsKKwkJZWxzZQorCQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcCk7CisKKwkJYXBwZW5kX29iamVj dF9vYmplY3QoY3JlYXRlUHViLCAiJXtmb3Jfc2NoZW1hc31zIiwgdG1wKTsKKwl9CisKKwkvKiBX SVRIIGNsYXVzZSAqLworCXRtcCA9IG5ld19vYmp0cmVlKCJXSVRIIik7CisKKwlsaXN0ID0gTklM OworCWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCU9ialRyZWUgICAgKnRtcF9v Ymo7CisJCURlZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQl0 bXBfb2JqID0gZGVwYXJzZV9EZWZFbGVtKG9wdCwgZmFsc2UpOworCQlsaXN0ID0gbGFwcGVuZChs aXN0LCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJfQorCisJaWYgKGxpc3QgIT0gTklM KQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcCwgIigle3dpdGg6LCB9cykiLCBsaXN0KTsKKwll bHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXApOworCisJYXBwZW5kX29iamVjdF9vYmplY3Qo Y3JlYXRlUHViLCAiJXt3aXRoX2NsYXVzZX1zIiwgdG1wKTsKKworCVJlbGVhc2VTeXNDYWNoZShw dWJUdXApOworCisJcmV0dXJuIGNyZWF0ZVB1YjsKK30KKworLyoKKyAqIERlcGFyc2UgYSBBbHRl clB1YmxpY2F0aW9uU3RtdCAoQUxURVIgUFVCTElDQVRJT04pLgorICoKKyAqIEdpdmVuIGFuIHB1 YmxpY2F0aW9uIHJlbGF0aW9uIE9JRCBvciBwdWJsaWNhdGlvbiBzY2hlbWEgT0lEIGFuZCB0aGUg cGFyc2UKKyAqIHRyZWUgdGhhdCBhZGRlZCBpdCwgcmV0dXJuIGFuIE9ialRyZWUgcmVwcmVzZW50 aW5nIHRoZSBBTFRFUiBQVUJMSUNBVElPTgorICogY29tbWFuZC4KKyAqCisgKiBOb3RlIHRoYXQg b25seSBBTFRFUiBQVUJMSUNBVElPTiBBREQvU0VUIHNob3VsZCBiZSBkZXBhcnNlZCBoZXJlLCBB TFRFUgorICogUFVCTElDQVRJT04gRFJPUCBpcyBkZXBhcnNlZCBpbiBkaWZmZXJlbnQgcGxhY2Vz LgorICoKKyAqIFhYWCBBTFRFUiBQVUJMSUNBVElPTiBTRVQgcHVibGljYXRpb25fb2JqZWN0IGlz IGNvbnZlcnRlZCB0byBBTFRFUgorICogUFVCTElDQVRJT04gQUREL0RST1AuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OICV7aWRlbnRpdHl9SSAle2FkZF9vYmpl Y3R9cwogICogT1IKLSAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtvbmx5fXMg JXtpZGVudGl0eX1EIFJFTkFNRSBDT0xVTU4gJXtjb2xuYW1lfUkgVE8gJXtuZXduYW1lfUkgJXtj YXNjYWRlfXMKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OICV7aWRlbnRpdHl9SSAle3NldF9vcHRpb25z fXMKICAqLwogc3RhdGljIE9ialRyZWUgKgotZGVwYXJzZV9SZW5hbWVTdG10KE9iamVjdEFkZHJl c3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlKQorZGVwYXJzZV9BbHRlclB1YmxpY2F0aW9uQWRk U3RtdChPYmplY3RBZGRyZXNzIG9iamVjdCwgTm9kZSAqcGFyc2V0cmVlKQogewotCVJlbmFtZVN0 bXQgKm5vZGUgPSAoUmVuYW1lU3RtdCAqKSBwYXJzZXRyZWU7Ci0JT2JqVHJlZSAgICAqcmV0Owot CVJlbGF0aW9uCXJlbGF0aW9uOwotCU9pZAkJCXNjaGVtYUlkOworCWNoYXIJICAgKnB1Ym5hbWU7 CisJT2JqVHJlZQkgICAqYWx0ZXJwdWI7CisJT2JqVHJlZQkgICAqYWRkb2JqZWN0ID0gTlVMTDsK KwlPYmpUcmVlCSAgICpzZXRvcHRpb24gPSBOVUxMOworCUFsdGVyUHVibGljYXRpb25TdG10ICpu b2RlID0gKEFsdGVyUHVibGljYXRpb25TdG10ICopIHBhcnNldHJlZTsKIAotCS8qCi0JICogSW4g YW4gQUxURVIgLi4gUkVOQU1FIGNvbW1hbmQsIHdlIGRvbid0IGhhdmUgdGhlIG9yaWdpbmFsIG5h bWUgb2YgdGhlCi0JICogb2JqZWN0IGluIHN5c3RlbSBjYXRhbG9nczogc2luY2Ugd2UgaW5zcGVj dCB0aGVtIGFmdGVyIHRoZSBjb21tYW5kIGhhcwotCSAqIGV4ZWN1dGVkLCB0aGUgb2xkIG5hbWUg aXMgYWxyZWFkeSBnb25lLiAgVGhlcmVmb3JlLCB3ZSBleHRyYWN0IGl0IGZyb20KLQkgKiB0aGUg cGFyc2Ugbm9kZS4gIE5vdGUgd2Ugc3RpbGwgZXh0cmFjdCB0aGUgc2NoZW1hIG5hbWUgZnJvbSB0 aGUgY2F0YWxvZwotCSAqIChpdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgcGFyc2Ugbm9k ZSk7IGl0IGNhbm5vdCBwb3NzaWJseSBoYXZlCi0JICogY2hhbmdlZCBhbnl3YXkuCi0JICovCi0J c3dpdGNoIChub2RlLT5yZW5hbWVUeXBlKQorCXN3aXRjaCAob2JqZWN0LmNsYXNzSWQpCiAJewot CQljYXNlIE9CSkVDVF9JTkRFWDoKLQkJY2FzZSBPQkpFQ1RfVEFCTEU6Ci0JCQlyZWxhdGlvbiA9 IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsKLQkJCXNj aGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwotCQkJcmV0ID0gbmV3X29i anRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0eX1EIFJF TkFNRSBUTyAle25ld25hbWV9SSIsIDQsCi0JCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5cGVTdHJp bmcsCi0JCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBmYWxzZSks Ci0JCQkJCQkJCSAiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKLQkJCQkJCQkJIG5vZGUtPm1p c3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAotCQkJCQkJCQkgImlkZW50aXR5IiwgT2JqVHlw ZU9iamVjdCwKLQkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hlbWFJZCwKLQkJ CQkJCQkJCQkJCQkJICBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSksCi0JCQkJCQkJCSAibmV3bmFt ZSIsIE9ialR5cGVTdHJpbmcsCi0JCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKLQkJCXJlbGF0aW9u X2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkvKiBBREQgVEFCTEUgKi8KKwkJ Y2FzZSBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQ6CisJCQl7CisJCQkJT2JqVHJlZQkgICAqd2hl cmVjbGF1c2U7CisJCQkJT2JqVHJlZQkgICAqY29sdW1ubGlzdDsKKwkJCQlGb3JtX3BnX3B1Ymxp Y2F0aW9uX3JlbCBwdWJyZWxmb3JtOworCQkJCU9pZAkJCXJlbGlkOworCQkJCUhlYXBUdXBsZQl0 dXA7CisKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFVCTElDQVRJT05SRUwsCisJCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0Lm9iamVjdElkKSk7CisKKwkJCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHB1YmxpY2F0aW9uIHRhYmxlICV1IiwKKwkJCQkJCSBvYmplY3Qub2JqZWN0SWQpOworCisJ CQkJcHVicmVsZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7 CisJCQkJcmVsaWQgPSBwdWJyZWxmb3JtLT5wcnJlbGlkOworCisJCQkJYWRkb2JqZWN0ID0gbmV3 X29ianRyZWVfVkEoIkFERCBUQUJMRSAle3RhYmxlbmFtZX1EIiwgMSwKKwkJCQkJCQkJCQkgICAi dGFibGVuYW1lIiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCQkgICBuZXdfb2JqdHJlZV9mb3Jf cXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCkpOworCisJCQkJY29sdW1ubGlz dCA9IGRlcGFyc2VfUHVibGljYXRpb25SZWxhdGlvbkNvbHVtbkxpc3QodHVwKTsKKwkJCQlhcHBl bmRfb2JqZWN0X29iamVjdChhZGRvYmplY3QsICIle2NvbHVtbl9saXN0fXMiLCBjb2x1bW5saXN0 KTsKKworCQkJCXdoZXJlY2xhdXNlID0gZGVwYXJzZV9QdWJsaWNhdGlvblJlbGF0aW9uV2hlcmVD bGF1c2UodHVwKTsKKwkJCQlhcHBlbmRfb2JqZWN0X29iamVjdChhZGRvYmplY3QsICIle3doZXJl X2NsYXVzZX1zIiwgd2hlcmVjbGF1c2UpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJ CQl9CiAJCQlicmVhazsKIAotCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQkvKiBBREQg VEFCTEVTIElOIFNDSEVNQSAqLworCQljYXNlIFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25J ZDoKIAkJCXsKLQkJCQlIZWFwVHVwbGUJY29uc3RydHVwOwotCQkJCUZvcm1fcGdfY29uc3RyYWlu dCBjb25zdGZvcm07CisJCQkJRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcHVibnNwZm9y bTsKKwkJCQlIZWFwVHVwbGUJdHVwOwogCi0JCQkJY29uc3RydHVwID0gU2VhcmNoU3lzQ2FjaGUx KENPTlNUUk9JRCwKLQkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShhZGRyZXNzLm9iamVjdElk KSk7Ci0JCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNvbnN0cnR1cCkpCi0JCQkJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBjb25zdHJhaW50IHdpdGggT0lEICV1IiwKLQkJ CQkJCSBhZGRyZXNzLm9iamVjdElkKTsKLQkJCQljb25zdGZvcm0gPSAoRm9ybV9wZ19jb25zdHJh aW50KSBHRVRTVFJVQ1QoY29uc3RydHVwKTsKKwkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFVC TElDQVRJT05OQU1FU1BBQ0UsCisJCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0Lm9i amVjdElkKSk7CiAKLQkJCQlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgVEFCTEUgJXtvbmx5 fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFtZX1JIFRPICV7bmV3bmFt ZX1JIiwgNCwKLQkJCQkJCQkJCSJvbmx5IiwgIE9ialR5cGVTdHJpbmcsCi0JCQkJCQkJCQlub2Rl LT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIsCi0JCQkJCQkJCQkiaWRlbnRpdHkiLCBPYmpU eXBlT2JqZWN0LAotCQkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9u UmVsYXRpb25JZCwKLQkJCQkJCQkJCQkJCQkJCQljb25zdGZvcm0tPmNvbnJlbGlkKSwKLQkJCQkJ CQkJCSJvbGRuYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+c3VibmFtZSwKLQkJCQkJCQkJCSJu ZXduYW1lIiwgT2JqVHlwZVN0cmluZywgbm9kZS0+bmV3bmFtZSk7Ci0JCQkJUmVsZWFzZVN5c0Nh Y2hlKGNvbnN0cnR1cCk7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwdWJsaWNhdGlvbiBzY2hlbWEgJXUi LAorCQkJCQkJIG9iamVjdC5vYmplY3RJZCk7CisKKwkJCQlwdWJuc3Bmb3JtID0gKEZvcm1fcGdf cHVibGljYXRpb25fbmFtZXNwYWNlKSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCWFkZG9iamVjdCA9 IG5ld19vYmp0cmVlX1ZBKCJBREQgVEFCTEVTIElOIFNDSEVNQSAle3NjaGVtYX1JIiwgMSwKKwkJ CQkJCQkJCQkgICAic2NoZW1hIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkgICBnZXRfbmFt ZXNwYWNlX25hbWUocHVibnNwZm9ybS0+cG5uc3BpZCkpOworCisJCQkJUmVsZWFzZVN5c0NhY2hl KHR1cCk7CiAJCQl9CiAJCQlicmVhazsKIAotCQljYXNlIE9CSkVDVF9DT0xVTU46Ci0JCQlyZWxh dGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsK LQkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOwotCi0JCQlyZXQg PSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBlfXMiLCAxLAotCQkJCQkJCQkgIm9ianR5 cGUiLCBPYmpUeXBlU3RyaW5nLAotCQkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVs YXRpb25UeXBlLCBmYWxzZSkpOworCQkvKiBTRVQgb3B0aW9uICovCisJCWNhc2UgUHVibGljYXRp b25SZWxhdGlvbklkOgorCQkJeworCQkJCUxpc3QJICAgKm9wdGlvbmxpc3QgPSBOSUw7CisJCQkJ TGlzdENlbGwgICAqY2VsbDsKIAotCQkJLyogQ29tcG9zaXRlIHR5cGVzIGRvIG5vdCBzdXBwb3J0 IElGIEVYSVNUUyAqLwotCQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0NPTFVNTikK LQkJCQlhcHBlbmRfc3RyaW5nX29iamVjdChyZXQsICIle2lmX2V4aXN0c31zIiwKLQkJCQkJCQkJ CSAiaWZfZXhpc3RzIiwKLQkJCQkJCQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIg OiAiIik7Ci0JCQlpZiAoIW5vZGUtPnJlbGF0aW9uLT5pbmgpCi0JCQkJYXBwZW5kX3N0cmluZ19v YmplY3QocmV0LCAiJXtvbmx5fXMiLAotCQkJCQkJCQkJICJvbmx5IiwKLQkJCQkJCQkJCSAiT05M WSIpOwotCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIiwKLQkJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hlbWFJZCwKLQkJCQkJCQkJCQkJCQkJICBu b2RlLT5yZWxhdGlvbi0+cmVsbmFtZSkpOwotCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAi UkVOQU1FIENPTFVNTiAle2NvbG5hbWV9SSIsCi0JCQkJCQkJCSAiY29sbmFtZSIsIG5vZGUtPnN1 Ym5hbWUpOworCQkJCUFzc2VydChub2RlLT5vcHRpb25zICE9IE5JTCk7CiAKLQkJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KHJldCwgIlRPICV7bmV3bmFtZX1JIiwgIm5ld25hbWUiLAotCQkJCQkJCQkg bm9kZS0+bmV3bmFtZSk7CisJCQkJZm9yZWFjaChjZWxsLCBub2RlLT5vcHRpb25zKQorCQkJCXsK KwkJCQkJT2JqVHJlZSAgICAqdG1wX29iajsKKwkJCQkJRGVmRWxlbSAgICAqb3B0ID0gKERlZkVs ZW0gKikgbGZpcnN0KGNlbGwpOwogCi0JCQlpZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpFQ1Rf QVRUUklCVVRFKQotCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Y2FzY2FkZX1zIiwK LQkJCQkJCQkJCSBuZXdfb2JqdHJlZV9WQSgiQ0FTQ0FERSIsIDEsCi0JCQkJCQkJCQkJCQkJInBy ZXNlbnQiLCBPYmpUeXBlQm9vbCwKLQkJCQkJCQkJCQkJCQlub2RlLT5iZWhhdmlvciA9PSBEUk9Q X0NBU0NBREUpKTsKKwkJCQkJdG1wX29iaiA9IGRlcGFyc2VfRGVmRWxlbShvcHQsIGZhbHNlKTsK KwkJCQkJb3B0aW9ubGlzdCA9IGxhcHBlbmQob3B0aW9ubGlzdCwgbmV3X29iamVjdF9vYmplY3Qo dG1wX29iaikpOworCQkJCX0KIAotCQkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1No YXJlTG9jayk7CisJCQkJc2V0b3B0aW9uID0gbmV3X29ianRyZWVfVkEoIlNFVCAoJXtvcHRpb25z OiwgfXMpIiwgMSwKKwkJCQkJCQkJCQkgICAib3B0aW9ucyIsIE9ialR5cGVBcnJheSwKKwkJCQkJ CQkJCQkgICBvcHRpb25saXN0KTsKKwkJCX0KIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6Ci0JCQll bG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgJWQiLCBub2RlLT5yZW5hbWVUeXBl KTsKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gcmV0OworCXB1 Ym5hbWUgPSBwc3RyZHVwKG5vZGUtPnB1Ym5hbWUpOworCisJYWx0ZXJwdWIgPSBuZXdfb2JqdHJl ZV9WQSgiQUxURVIgUFVCTElDQVRJT04gJXtpZGVudGl0eX1zIiwgMSwKKwkJCQkJCQkgICJpZGVu dGl0eSIsIE9ialR5cGVTdHJpbmcsIHB1Ym5hbWUpOworCisJQXNzZXJ0KGFkZG9iamVjdCB8fCBz ZXRvcHRpb24pOworCisJaWYgKGFkZG9iamVjdCkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QoYWx0 ZXJwdWIsICIle2FkZF9vYmplY3R9cyIsIGFkZG9iamVjdCk7CisJZWxzZQorCQlhcHBlbmRfb2Jq ZWN0X29iamVjdChhbHRlcnB1YiwgIiV7c2V0X29wdGlvbnN9cyIsIHNldG9wdGlvbik7CisKKwly ZXR1cm4gYWx0ZXJwdWI7CiB9CiAKIC8qCi0gKiBEZXBhcnNlIGEgQWx0ZXJPYmplY3REZXBlbmRz U3RtdCAoQUxURVIgLi4uIERFUEVORFMgT04gLi4uKS4KKyAqIEhhbmRsZSBkZXBhcnNpbmcgb2Yg QUxURVIgUFVCTElDQVRJT04gRFJPUCBjb21tYW5kcy4KICAqCiAgKiBWZXJib3NlIHN5bnRheAot ICogQUxURVIgSU5ERVggJXtpZGVudGl0eX1EICV7bm99cyBERVBFTkRTIE9OIEVYVEVOU0lPTiAl e25ld25hbWV9SQorICogQUxURVIgUFVCTElDQVRJT04gJXtpZGVudGl0eX1JICV7ZHJvcF9vYmpl Y3R9cwogICovCi1zdGF0aWMgT2JqVHJlZSAqCi1kZXBhcnNlX0FsdGVyRGVwZW5kU3RtdChPaWQg b2JqZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKK2NoYXIgKgorZGVwYXJzZV9BbHRlclB1YmxpY2F0 aW9uRHJvcFN0bXQoU1FMRHJvcE9iamVjdCAqb2JqKQogewotCUFsdGVyT2JqZWN0RGVwZW5kc1N0 bXQgKm5vZGUgPSAoQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAqKSBwYXJzZXRyZWU7Ci0JT2JqVHJl ZSAgICAqcmV0ID0gTlVMTDsKKwlPYmpUcmVlCSAgICphbHRlcnB1YjsKKwlPYmpUcmVlCSAgICpk cm9wX29iamVjdCA9IE5VTEw7CisJY2hhcgkJb2JqbmFtZVtOQU1FREFUQUxFTl07CisJY2hhcgkJ cHVibmFtZVtOQU1FREFUQUxFTl07CisJSnNvbmIJICAgKmpzb25iOworCWNoYXIJICAgKmNvbW1h bmQ7CisJU3RyaW5nSW5mb0RhdGEgc3RyOwogCi0JaWYgKG5vZGUtPm9iamVjdFR5cGUgPT0gT0JK RUNUX0lOREVYKQorCWlmIChzc2NhbmYob2JqLT5vYmppZGVudGl0eSwgIiVzIGluIHB1YmxpY2F0 aW9uICVzIiwgb2JqbmFtZSwgcHVibmFtZSkgIT0gMikKKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5v dCBwYXJzZSBBTFRFUiBQVUJMSUNBVElPTiBjb21tYW5kIFwiJXNcIiIsCisJCQkgb2JqLT5vYmpp ZGVudGl0eSk7CisKKwlzd2l0Y2ggKGdldE9iamVjdENsYXNzKCZvYmotPmFkZHJlc3MpKQogCXsK LQkJT2JqVHJlZSAgICAqcXVhbGlmaWVkOwotCQlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9u X29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCS8qIERST1AgVEFCTEUgKi8KKwkJ Y2FzZSBPQ0xBU1NfUFVCTElDQVRJT05fUkVMOgorCQkJZHJvcF9vYmplY3QgPSBuZXdfb2JqdHJl ZV9WQSgiRFJPUCBUQUJMRSAle3RhYmxlbmFtZX1zIiwgMSwKKwkJCQkJCQkJCQkgInRhYmxlbmFt ZSIsIE9ialR5cGVTdHJpbmcsIG9iam5hbWUpOworCQkJYnJlYWs7CiAKLQkJcXVhbGlmaWVkID0g bmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwK LQkJCQkJCQkJCQkJIG5vZGUtPnJlbGF0aW9uLT5yZWxuYW1lKTsKLQkJcmVsYXRpb25fY2xvc2Uo cmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisJCS8qIERST1AgVEFCTEVTIElOIFNDSEVNQSAq LworCQljYXNlIE9DTEFTU19QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CisJCQlkcm9wX29iamVjdCA9 IG5ld19vYmp0cmVlX1ZBKCJEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgJXtzY2hlbWFuYW1lfXMiLCAx LAorCQkJCQkJCQkJCSAic2NoZW1hbmFtZSIsIE9ialR5cGVTdHJpbmcsIG9iam5hbWUpOworCQkJ YnJlYWs7CiAKLQkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIElOREVYICV7aWRlbnRpdHl9 RCAle25vfXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkiLCAzLAotCQkJCQkJCSAi aWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LCBxdWFsaWZpZWQsCi0JCQkJCQkJICJubyIsIE9ialR5 cGVTdHJpbmcsCi0JCQkJCQkJIG5vZGUtPnJlbW92ZSA/ICJOTyIgOiAiIiwKLQkJCQkJCQkgIm5l d25hbWUiLCBPYmpUeXBlU3RyaW5nLCBzdHJWYWwobm9kZS0+ZXh0bmFtZSkpOworCQlkZWZhdWx0 OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOwogCX0KLQllbHNlCi0JCWVsb2coTE9HLCAi dW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwKLQkJCSAoaW50 KSBub2RlVGFnKHBhcnNldHJlZSkpOwogCi0JcmV0dXJuIHJldDsKKwlhbHRlcnB1YiA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBQVUJMSUNBVElPTiAle2lkZW50aXR5fXMiLCAxLAorCQkJCQkJCSAg ImlkZW50aXR5IiwgT2JqVHlwZVN0cmluZywgcHVibmFtZSk7CisKKwlBc3NlcnQoZHJvcF9vYmpl Y3QpOworCisJYXBwZW5kX29iamVjdF9vYmplY3QoYWx0ZXJwdWIsICIle2Ryb3Bfb2JqZWN0fXMi LCBkcm9wX29iamVjdCk7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwlqc29uYiA9IG9ianRy ZWVfdG9fanNvbmIoYWx0ZXJwdWIsIE5VTEwgLyogT3duZXIvcm9sZSBjYW4gYmUgc2tpcHBlZCBm b3IgZHJvcCBjb21tYW5kICovKTsKKwljb21tYW5kID0gSnNvbmJUb0NTdHJpbmcoJnN0ciwgJmpz b25iLT5yb290LCBKU09OQl9FU1RJTUFURURfTEVOKTsKKworCXJldHVybiBjb21tYW5kOwogfQog CiAvKgpAQCAtMzY0MSw2ICs5ODY4LDQwIEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVj dGVkQ29tbWFuZCAqY21kLCBib29sICppbmNsdWRlX293bmVyKQogCS8qIFRoaXMgc3dpdGNoIG5l ZWRzIHRvIGhhbmRsZSBldmVyeXRoaW5nIHRoYXQgUHJvY2Vzc1V0aWxpdHlTbG93IGRvZXMgKi8K IAlzd2l0Y2ggKG5vZGVUYWcocGFyc2V0cmVlKSkKIAl7CisJCWNhc2UgVF9BbHRlckNvbGxhdGlv blN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0 ZXJDb2xsYXRpb24ob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0FsdGVyRG9tYWlu U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRl ckRvbWFpblN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwKKwkJCQkJCQkJCQkgICBjbWQtPmQuc2lt cGxlLnNlY29uZGFyeU9iamVjdCk7CisKKwkJY2FzZSBUX0FsdGVyRW51bVN0bXQ6CisJCQkqaW5j bHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJFbnVtU3RtdChvYmpl Y3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0bXQ6 CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOworCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJFeHRl bnNpb25Db250ZW50c1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSwKKwkJCQkJCQkJCQkJCQkgIGNt ZC0+ZC5zaW1wbGUuc2Vjb25kYXJ5T2JqZWN0KTsKKworCQljYXNlIFRfQWx0ZXJFeHRlbnNpb25T dG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVy RXh0ZW5zaW9uU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJGZHdT dG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVy RmR3U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJGb3JlaWduU2Vy dmVyU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9B bHRlckZvcmVpZ25TZXJ2ZXJTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9B bHRlckZ1bmN0aW9uU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQlyZXR1cm4g ZGVwYXJzZV9BbHRlckZ1bmN0aW9uKG9iamVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2UgVF9B bHRlck9iamVjdERlcGVuZHNTdG10OgogCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJl dHVybiBkZXBhcnNlX0FsdGVyRGVwZW5kU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKQEAgLTM2 NTEsMjAgKzk5MTIsMTM4IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFu ZCAqY21kLCBib29sICppbmNsdWRlX293bmVyKQogCQkJCQkJCQkJCQkJIHBhcnNldHJlZSwKIAkJ CQkJCQkJCQkJCSBjbWQtPmQuc2ltcGxlLnNlY29uZGFyeU9iamVjdCk7CiAKKwkJY2FzZSBUX0Fs dGVyT3BlcmF0b3JTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJldHVybiBk ZXBhcnNlX0FsdGVyT3BlcmF0b3JTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2Ug VF9BbHRlck93bmVyU3RtdDoKIAkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4g ZGVwYXJzZV9BbHRlck93bmVyU3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7 CiAKKwkJY2FzZSBUX0FsdGVyUG9saWN5U3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7 CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlclBvbGljeVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7 CisKKwkJY2FzZSBUX0FsdGVyU2VxU3RtdDoKKwkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CisJ CQlyZXR1cm4gZGVwYXJzZV9BbHRlclNlcVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJ Y2FzZSBUX0FsdGVyU3RhdHNTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKKwkJCXJl dHVybiBkZXBhcnNlX0FsdGVyU3RhdHNTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNh c2UgVF9BbHRlclRTRGljdGlvbmFyeVN0bXQ6CisJCQkqaW5jbHVkZV9vd25lciA9IGZhbHNlOwor CQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJUU0RpY3Rpb25hcnlTdG10KG9iamVjdElkLCBwYXJzZXRy ZWUpOworCisJCWNhc2UgVF9BbHRlclR5cGVTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxz ZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyVHlwZVNldFN0bXQob2JqZWN0SWQsIHBhcnNldHJl ZSk7CisKKwkJY2FzZSBUX0FsdGVyVXNlck1hcHBpbmdTdG10OgorCQkJKmluY2x1ZGVfb3duZXIg PSBmYWxzZTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyVXNlck1hcHBpbmdTdG10KG9iamVjdElk LCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9Db21tZW50U3RtdDoKKwkJCSppbmNsdWRlX293bmVy ID0gZmFsc2U7CisJCQlyZXR1cm4gZGVwYXJzZV9Db21tZW50U3RtdChjbWQtPmQuc2ltcGxlLmFk ZHJlc3MsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NvbXBvc2l0ZVR5cGVTdG10OgorCQkJcmV0 dXJuIGRlcGFyc2VfQ29tcG9zaXRlVHlwZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJ Y2FzZSBUX0NyZWF0ZUFtU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZUFtU3RtdChvYmpl Y3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlQ2FzdFN0bXQ6CisJCQlyZXR1cm4g ZGVwYXJzZV9DcmVhdGVDYXN0U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRf Q3JlYXRlQ29udmVyc2lvblN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVDb252ZXJzaW9u KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVEb21haW5TdG10OgorCQkJ cmV0dXJuIGRlcGFyc2VfQ3JlYXRlRG9tYWluKG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNh c2UgVF9DcmVhdGVFbnVtU3RtdDoJLyogQ1JFQVRFIFRZUEUgQVMgRU5VTSAqLworCQkJcmV0dXJu IGRlcGFyc2VfQ3JlYXRlRW51bVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBU X0NyZWF0ZUV4dGVuc2lvblN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVFeHRlbnNpb25T dG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVGZHdTdG10OgorCQkJ cmV0dXJuIGRlcGFyc2VfQ3JlYXRlRmR3U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQlj YXNlIFRfQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVG b3JlaWduU2VydmVyU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRl RnVuY3Rpb25TdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlRnVuY3Rpb24ob2JqZWN0SWQs IHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZU9wRmFtaWx5U3RtdDoKKwkJCXJldHVybiBk ZXBhcnNlX0NyZWF0ZU9wRmFtaWx5KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9D cmVhdGVQTGFuZ1N0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVMYW5nU3RtdChvYmplY3RJ ZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlUG9saWN5U3RtdDoKKwkJCXJldHVybiBk ZXBhcnNlX0NyZWF0ZVBvbGljeVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBU X0NyZWF0ZVJhbmdlU3RtdDogLyogQ1JFQVRFIFRZUEUgQVMgUkFOR0UgKi8KKwkJCXJldHVybiBk ZXBhcnNlX0NyZWF0ZVJhbmdlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRf Q3JlYXRlU2NoZW1hU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVNjaGVtYVN0bXQob2Jq ZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBUX0NyZWF0ZVNlcVN0bXQ6CisJCQlyZXR1cm4g ZGVwYXJzZV9DcmVhdGVTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9D cmVhdGVTdGF0c1N0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVTdGF0aXN0aWNzU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlKTsKKwogCQljYXNlIFRfQ3JlYXRlU3RtdDoKIAkJCXJldHVybiBk ZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CiAKKwkJY2FzZSBUX0NyZWF0 ZUZvcmVpZ25UYWJsZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVGb3JlaWduVGFibGVT dG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVhdGVUYWJsZUFzU3RtdDoJ LyogQ1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXICovCisJCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVU YWJsZUFzU3RtdF92YW5pbGxhKG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9DcmVh dGVUcmFuc2Zvcm1TdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlVHJhbnNmb3JtU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlVHJpZ1N0bXQ6CisJCQlyZXR1 cm4gZGVwYXJzZV9DcmVhdGVUcmlnU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNl IFRfQ3JlYXRlVXNlck1hcHBpbmdTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlVXNlck1h cHBpbmdTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJCWNhc2UgVF9EZWZpbmVTdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfRGVmaW5lU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlLAorCQkJCQkJ CQkJICBjbWQtPmQuc2ltcGxlLnNlY29uZGFyeU9iamVjdCk7CisKIAkJY2FzZSBUX0luZGV4U3Rt dDoKIAkJCXJldHVybiBkZXBhcnNlX0luZGV4U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKIAor CQljYXNlIFRfUmVmcmVzaE1hdFZpZXdTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsK KwkJCXJldHVybiBkZXBhcnNlX1JlZnJlc2hNYXRWaWV3U3RtdChvYmplY3RJZCwgcGFyc2V0cmVl KTsKKwogCQljYXNlIFRfUmVuYW1lU3RtdDoKIAkJCSppbmNsdWRlX293bmVyID0gZmFsc2U7CiAJ CQlyZXR1cm4gZGVwYXJzZV9SZW5hbWVTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywgcGFyc2V0 cmVlKTsKIAorCQljYXNlIFRfUnVsZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9SdWxlU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfVmlld1N0bXQ6CQkvKiBDUkVBVEUgVklF VyAqLworCQkJcmV0dXJuIGRlcGFyc2VfVmlld1N0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisK KwkJY2FzZSBUX0NyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0NyZWF0 ZVB1YmxpY2F0aW9uU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQWx0ZXJQ dWJsaWNhdGlvblN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9BbHRlclB1YmxpY2F0aW9uQWRkU3Rt dChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7CisKIAkJZGVmYXVsdDoKIAkJCWVs b2coTE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwK IAkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKQEAgLTM3MzAsOSArMTAxMDksMzIgQEAg ZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kLCBib29sIGluY2x1 ZGVfb3duZXIsIGJvb2wgdmVyYm9zZV8KIAkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyUmVsYXRpb24o Y21kKTsKIAkJCWluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCWJyZWFrOworCQljYXNlIFNDVF9H cmFudDoKKwkJCXRyZWUgPSBkZXBhcnNlX0dyYW50U3RtdChjbWQpOworCQkJaW5jbHVkZV9vd25l ciA9IGZhbHNlOworCQkJYnJlYWs7CiAJCWNhc2UgU0NUX0NyZWF0ZVRhYmxlQXM6CiAJCQl0cmVl ID0gZGVwYXJzZV9DcmVhdGVUYWJsZUFzU3RtdChjbWQpOwogCQkJYnJlYWs7CisJCWNhc2UgU0NU X0FsdGVyT3BGYW1pbHk6CisJCQlpbmNsdWRlX293bmVyID0gZmFsc2U7CisJCQl0cmVlID0gZGVw YXJzZV9BbHRlck9wRmFtaWx5KGNtZCk7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RfQ3JlYXRlT3BD bGFzczoKKwkJCXRyZWUgPSBkZXBhcnNlX0NyZWF0ZU9wQ2xhc3NTdG10KGNtZCk7CisJCQlicmVh azsKKwkJY2FzZSBTQ1RfQWx0ZXJEZWZhdWx0UHJpdmlsZWdlczoKKwkJCWluY2x1ZGVfb3duZXIg PSBmYWxzZTsKKwkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyRGVmYXVsdFByaXZpbGVnZXNTdG10KGNt ZCk7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RfQWx0ZXJUU0NvbmZpZzoKKwkJCWluY2x1ZGVfb3du ZXIgPSBmYWxzZTsKKwkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyVFNDb25maWd1cmF0aW9uU3RtdChj bWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX1NlY3VyaXR5TGFiZWw6CisJCQlpbmNsdWRlX293 bmVyID0gZmFsc2U7CisJCQl0cmVlID0gZGVwYXJzZV9TZWNMYWJlbFN0bXQoY21kKTsKKwkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVwYXJzZSBub2Rl IHR5cGUgJWQiLCBjbWQtPnR5cGUpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIu YwppbmRleCAzOGMxMWYwMDBjLi4xYjc1MDAzYjVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jCkBAIC0yMDc0LDYgKzIwNzQsMzcgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVy RGVmUHJpdnMoQWx0ZXJEZWZhdWx0UHJpdmlsZWdlc1N0bXQgKnN0bXQpCiAJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBFdmVudFRyaWdnZXJDb2xsZWN0U2VjTGFi ZWwKKyAqCQlTYXZlIGRhdGEgYWJvdXQgYW4gU0VDVVJJVFkgTEFCRUwgY29tbWFuZCBiZWluZyBl eGVjdXRlZAorICovCit2b2lkCitFdmVudFRyaWdnZXJDb2xsZWN0U2VjTGFiZWwoT2JqZWN0QWRk cmVzcyBhZGRyZXNzLCBjaGFyICpwcm92aWRlciwKKwkJCQkJCQlTZWNMYWJlbFN0bXQgKnN0bXQp Cit7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJQ29sbGVjdGVkQ29tbWFuZCAqY29tbWFuZDsK KworCS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90IHNldCwgb3IgY29sbGVj dGlvbiBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlIHx8CisJCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQpCisJCXJl dHVybjsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmN4dCk7CisKKwljb21tYW5kID0gcGFsbG9jMChzaXplb2YoQ29sbGVjdGVkQ29t bWFuZCkpOworCWNvbW1hbmQtPnR5cGUgPSBTQ1RfU2VjdXJpdHlMYWJlbDsKKwljb21tYW5kLT5p bl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CisJY29tbWFuZC0+cm9sZSA9IEdldFVz ZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7CisJY29tbWFuZC0+ZC5zZWNsYWJlbC5h ZGRyZXNzID0gYWRkcmVzczsKKwljb21tYW5kLT5kLnNlY2xhYmVsLnByb3ZpZGVyID0gcHJvdmlk ZXI7CisJY29tbWFuZC0+cGFyc2V0cmVlID0gKE5vZGUgKikgY29weU9iamVjdChzdG10KTsKKwor CWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QgPQorCQlsYXBwZW5kKGN1cnJl bnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QsIGNvbW1hbmQpOworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogSW4gYSBkZGxfY29tbWFuZF9lbmQgZXZl bnQgdHJpZ2dlciwgdGhpcyBmdW5jdGlvbiByZXBvcnRzIHRoZSBEREwgY29tbWFuZHMKICAqIGJl aW5nIHJ1bi4KQEAgLTIxMjUsNiArMjE1Niw3IEBAIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1h bmRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIFNDVF9BbHRlck9wRmFtaWx5OgogCQkJY2Fz ZSBTQ1RfQ3JlYXRlT3BDbGFzczoKIAkJCWNhc2UgU0NUX0FsdGVyVFNDb25maWc6CisJCQljYXNl IFNDVF9TZWN1cml0eUxhYmVsOgogCQkJY2FzZSBTQ1RfQ3JlYXRlVGFibGVBczoKIAkJCQl7CiAJ CQkJCWNoYXIJICAgKmlkZW50aXR5OwpAQCAtMjE0Myw2ICsyMTc1LDggQEAgcGdfZXZlbnRfdHJp Z2dlcl9kZGxfY29tbWFuZHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCWFkZHIgPSBjbWQtPmQu Y3JlYXRlb3BjLmFkZHJlc3M7CiAJCQkJCWVsc2UgaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJU U0NvbmZpZykKIAkJCQkJCWFkZHIgPSBjbWQtPmQuYXRzY2ZnLmFkZHJlc3M7CisJCQkJCWVsc2Ug aWYgKGNtZC0+dHlwZSA9PSBTQ1RfU2VjdXJpdHlMYWJlbCkKKwkJCQkJCWFkZHIgPSBjbWQtPmQu c2VjbGFiZWwuYWRkcmVzczsKIAkJCQkJZWxzZSBpZiAoY21kLT50eXBlID09IFNDVF9DcmVhdGVU YWJsZUFzKQogCQkJCQkJYWRkciA9IGNtZC0+ZC5jdGFzLmFkZHJlc3M7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggMTZmYWVhYmMzZS4uOTk0ZjliYjNjMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTEwMiw2ICsxMDIsNyBAQCBw YXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlwdWJhY3Rpb25z LT5wdWJ1cGRhdGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJcHVi YWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOworCXB1YmFjdGlvbnMtPnB1YmRkbF9hbGwgPSBm YWxzZTsKIAlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkqcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSBmYWxzZTsKIApAQCAtMTgxLDYgKzE4Miw3IEBAIHBhcnNlX3B1Ymxp Y2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJICogSWYgZGRsIG9wdGlvbiB3 YXMgZ2l2ZW4gb25seSB0aGUgZXhwbGljaXRseSBsaXN0ZWQgZGRsIHR5cGVzCiAJCQkgKiBzaG91 bGQgYmUgcHVibGlzaGVkLgogCQkJICovCisJCQlwdWJhY3Rpb25zLT5wdWJkZGxfYWxsID0gZmFs c2U7CiAJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAogCQkJKmRkbF90eXBl X2dpdmVuID0gdHJ1ZTsKQEAgLTE5Niw3ICsxOTgsMTIgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQl7CiAJCQkJY2hhcgkgICAqcHVibGlzaF9vcHQg PSAoY2hhciAqKSBsZmlyc3QobGMzKTsKIAotCQkJCWlmIChzdHJjbXAocHVibGlzaF9vcHQsICJ0 YWJsZSIpID09IDApCisJCQkJaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgImFsbCIpID09IDApCisJ CQkJeworCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfYWxsID0gdHJ1ZTsKKwkJCQkJcHViYWN0aW9u cy0+cHViZGRsX3RhYmxlID0gdHJ1ZTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxp c2hfb3B0LCAidGFibGUiKSA9PSAwKQogCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSB0 cnVlOwogCQkJCWVsc2UKIAkJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTkwNiw2ICs5MTMsOCBAQCBD cmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3Rt dCAqc3RtdCkKIAkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGVsZXRlKTsKIAl2YWx1ZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0KIAkJQm9vbEdldERhdHVtKHB1 YmFjdGlvbnMucHVidHJ1bmNhdGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRk bF9hbGwgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbF9hbGwpOwogCXZh bHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0KIAlCb29sR2V0RGF0 dW0ocHViYWN0aW9ucy5wdWJkZGxfdGFibGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9u X3B1YnZpYXJvb3QgLSAxXSA9CkBAIC05NzIsNyArOTgxLDcgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJICogQ3Jl YXRlIGFuIGV2ZW50IHRyaWdnZXIgdG8gYWxsb3cgbG9nZ2luZyBvZiBEREwgc3RhdGVtZW50cy4K IAkgKgogCSAqLwotCWlmIChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwlpZiAocHViYWN0aW9u cy5wdWJkZGxfdGFibGUgfHwgcHViYWN0aW9ucy5wdWJkZGxfYWxsKQogCXsKIAkJQ29tbWFuZFRh ZwlzdGFydF9jb21tYW5kc1tdID0ge0NNRFRBR19EUk9QX1RBQkxFfTsKIAkJQ29tbWFuZFRhZwly ZXdyaXRlX2NvbW1hbmRzW10gPSB7Q01EVEFHX0FMVEVSX1RBQkxFfTsKQEAgLTk4MywxMiArOTky LDE2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGlj YXRpb25TdG10ICpzdG10KQogCQlpbnQgbmNvbW1hbmRzID0gMDsKIAkJQ29tbWFuZFRhZyAqZW5k X2NvbW1hbmRzID0gTlVMTDsKIAotCi0JCW5jb21tYW5kcyA9IDM7Ci0JCWVuZF9jb21tYW5kcyA9 IHBhbGxvYzAobmNvbW1hbmRzICogc2l6ZW9mKENvbW1hbmRUYWcpKTsKLQkJZW5kX2NvbW1hbmRz WzBdID0gQ01EVEFHX0NSRUFURV9UQUJMRTsKLQkJZW5kX2NvbW1hbmRzWzFdID0gQ01EVEFHX0FM VEVSX1RBQkxFOwotCQllbmRfY29tbWFuZHNbMl0gPSBDTURUQUdfRFJPUF9UQUJMRTsKKwkJaWYg KHB1YmFjdGlvbnMucHViZGRsX2FsbCkKKwkJCWVuZF9jb21tYW5kcyA9IEdldENvbW1hbmRUYWdz Rm9yRERMUmVwbCgmbmNvbW1hbmRzKTsKKwkJZWxzZSBpZiAocHViYWN0aW9ucy5wdWJkZGxfdGFi bGUpCisJCXsKKwkJCW5jb21tYW5kcyA9IDM7CisJCQllbmRfY29tbWFuZHMgPSBwYWxsb2MwKG5j b21tYW5kcyAqIHNpemVvZihDb21tYW5kVGFnKSk7CisJCQllbmRfY29tbWFuZHNbMF0gPSBDTURU QUdfQ1JFQVRFX1RBQkxFOworCQkJZW5kX2NvbW1hbmRzWzFdID0gQ01EVEFHX0FMVEVSX1RBQkxF OworCQkJZW5kX2NvbW1hbmRzWzJdID0gQ01EVEFHX0RST1BfVEFCTEU7CisJCX0KIAogCQkvKiBD cmVhdGUgdGhlIGRkbF9jb21tYW5kX2VuZCBldmVudCB0cmlnZ2VyICovCiAJCUNyZWF0ZURETFJl cGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfRVZFTlQxLCBlbmRfY29tbWFuZHMsCkBAIC0xMTUy LDYgKzExNjUsOSBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs IEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlv bl9wdWJ0cnVuY2F0ZSAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHVidHJ1bmNhdGUp OwogCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPSB0cnVl OwogCisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF9hbGwgLSAxXSA9IEJvb2xH ZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbF9hbGwpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YmRkbF9hbGwgLSAxXSA9IHRydWU7CisKIAkJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxf dGFibGUpOwogCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmRkbF90YWJsZSAtIDFd ID0gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCA3ZmYxNmUzMjc2Li43ZWU1 NGNkZThlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zZWNsYWJlbC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc2hzZWNsYWJlbC5oIgorI2luY2x1ZGUgImNvbW1hbmRz L2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0yMTMsNiAr MjE0LDExIEBAIEV4ZWNTZWNMYWJlbFN0bXQoU2VjTGFiZWxTdG10ICpzdG10KQogCWlmIChyZWxh dGlvbiAhPSBOVUxMKQogCQlyZWxhdGlvbl9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKIAorCS8q IFBhc3MgdGhlIGluZm8gdG8gZXZlbnQgdHJpZ2dlcnMgYWJvdXQgdGhlIFNFQ1VSSVRZIExBQkVM LiAqLworCWlmIChFdmVudFRyaWdnZXJTdXBwb3J0c09iamVjdFR5cGUoc3RtdC0+b2JqdHlwZSkp CisJCUV2ZW50VHJpZ2dlckNvbGxlY3RTZWNMYWJlbChhZGRyZXNzLCBwc3RyZHVwKHByb3ZpZGVy LT5wcm92aWRlcl9uYW1lKSwKKwkJCQkJCQkJCXN0bXQpOworCiAJcmV0dXJuIGFkZHJlc3M7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKaW5kZXgg MTYyNWRjMTA5My4uNWNjZmVmZTA4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTMwNCw2ICszMDQsMTEgQEAgcHVibGljYXRpb25fZGVwYXJz ZV9kZGxfY29tbWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNvbW1hbmQgPSBkZXBhcnNl X2Ryb3BfY29tbWFuZCh0bXB0eXBlLCBvYmotPm9iamVjdHR5cGUsCiAJCQkJCQkJCQkJICAgc3Rt dC0+YmVoYXZpb3IpOwogCQl9CisJCWVsc2UgaWYgKHN0cm5jbXAob2JqLT5vYmplY3R0eXBlLCAi cHVibGljYXRpb24gbmFtZXNwYWNlIiwKKwkJCQkJCSBzdHJsZW4oInB1YmxpY2F0aW9uIG5hbWVz cGFjZSIpKSA9PSAwIHx8CisJCQkJIHN0cm5jbXAob2JqLT5vYmplY3R0eXBlLCAicHVibGljYXRp b24gcmVsYXRpb24iLAorCQkJCQkJIHN0cmxlbigicHVibGljYXRpb24gcmVsYXRpb24iKSkgPT0g MCkKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX0FsdGVyUHVibGljYXRpb25Ecm9wU3RtdChvYmopOwog CQllbHNlCiAJCQljb21tYW5kID0gZGVwYXJzZV9kcm9wX2NvbW1hbmQob2JqLT5vYmppZGVudGl0 eSwgb2JqLT5vYmplY3R0eXBlLAogCQkJCQkJCQkJCSAgIHN0bXQtPmJlaGF2aW9yKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDA0YmJkNGE5YTMu LjUxNWNjZTU5ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYwpAQCAtMjIyOCw3ICsyMjI4LDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0 YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklM OwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1 cGRhdGUgPQogCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlv bnMucHVidHJ1bmNhdGUgPQotCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlID0gZmFs c2U7CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfYWxsID0gZW50cnktPnB1YmFjdGlvbnMu cHViZGRsX3RhYmxlID0gZmFsc2U7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5 LT5vbGRfc2xvdCA9IE5VTEw7CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2Yo ZW50cnktPmV4cHJzdGF0ZSkpOwpAQCAtMjI4Niw2ICsyMjg2LDcgQEAgZ2V0X3JlbF9zeW5jX2Vu dHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUg PSBmYWxzZTsKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJZW50 cnktPnB1YmFjdGlvbnMucHViZGRsX2FsbCA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5w dWJkZGxfdGFibGUgPSBmYWxzZTsKIAogCQkvKgpAQCAtMjQwMCw2ICsyNDAxLDcgQEAgZ2V0X3Jl bF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJ ZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ1cGRhdGU7 CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJk ZWxldGU7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5wdWJhY3Rp b25zLnB1YnRydW5jYXRlOworCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF9hbGwgfD0gcHVi LT5wdWJhY3Rpb25zLnB1YmRkbF9hbGw7CiAJCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGU7CiAKIAkJCQkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHku YwppbmRleCA1NzhhMjI5ZmZjLi4zNGE5Yzg1M2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTQ0OSw3 ICsxNDQ5LDggQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CQlhZGRyZXNzID0gRGVmaW5lQ29sbGF0aW9uKHBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgIHN0bXQt PmRlZm5hbWVzLAogCQkJCQkJCQkJCQkJCSAgc3RtdC0+ZGVmaW5pdGlvbiwKLQkJCQkJCQkJCQkJ CQkgIHN0bXQtPmlmX25vdF9leGlzdHMpOworCQkJCQkJCQkJCQkJCSAgc3RtdC0+aWZfbm90X2V4 aXN0cywKKwkJCQkJCQkJCQkJCQkgICZzZWNvbmRhcnlPYmplY3QpOwogCQkJCQkJCWJyZWFrOwog CQkJCQkJZGVmYXVsdDoKIAkJCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGRlZmluZSBz dG10IHR5cGU6ICVkIiwKQEAgLTE4MzksNiArMTg0MCw3IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAKIAkJCWNhc2UgVF9TZWNMYWJlbFN0bXQ6CiAJCQkJYWRkcmVz cyA9IEV4ZWNTZWNMYWJlbFN0bXQoKFNlY0xhYmVsU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWNv bW1hbmRDb2xsZWN0ZWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQljYXNlIFRfQ3JlYXRlQW1T dG10OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yZWdwcm9jLmMKaW5kZXggMjk2OTMwZWIzYi4uZTQ2YzM5ZDYyMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JlZ3Byb2MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmVncHJvYy5jCkBAIC0zMDcsNiArMzA3LDU3IEBAIGZvcm1hdF9wcm9j ZWR1cmVfcXVhbGlmaWVkKE9pZCBwcm9jZWR1cmVfb2lkKQogCXJldHVybiBmb3JtYXRfcHJvY2Vk dXJlX2V4dGVuZGVkKHByb2NlZHVyZV9vaWQsIEZPUk1BVF9QUk9DX0ZPUkNFX1FVQUxJRlkpOwog fQogCisvKgorICogQXBwZW5kIHRoZSBwYXJlbnRoZXNpemVkIGFyZ3VtZW50cyBvZiB0aGUgZ2l2 ZW4gcGdfcHJvYyByb3cgaW50byB0aGUgb3V0cHV0CisgKiBidWZmZXIuIGZvcmNlX3F1YWxpZnkg aW5kaWNhdGVzIHdoZXRoZXIgdG8gc2NoZW1hLXF1YWxpZnkgdHlwZSBuYW1lcworICogcmVnYXJk bGVzcyBvZiB2aXNpYmlsaXR5LgorICovCitzdGF0aWMgdm9pZAorZm9ybWF0X3Byb2NlZHVyZV9h cmdzX2ludGVybmFsKEZvcm1fcGdfcHJvYyBwcm9jZm9ybSwgU3RyaW5nSW5mbyBidWYsCisJCQkJ CQkJICAgYm9vbCBmb3JjZV9xdWFsaWZ5KQoreworCWludAkJCWk7CisJY2hhcgkgICAqKCpmdW5j WzJdKSAoT2lkKSA9IHtmb3JtYXRfdHlwZV9iZSwgZm9ybWF0X3R5cGVfYmVfcXVhbGlmaWVkfTsK KworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJygnKTsKKwlmb3IgKGkgPSAwOyBpIDwgcHJv Y2Zvcm0tPnByb25hcmdzOyBpKyspCisJeworCQlPaWQJCQl0aGlzYXJndHlwZSA9IHByb2Nmb3Jt LT5wcm9hcmd0eXBlcy52YWx1ZXNbaV07CisJCWNoYXIJICAgKmFyZ3R5cGU7CisKKwkJaWYgKGkg PiAwKQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnLCcpOworCisJCWFyZ3R5cGUgPSBm dW5jW2ZvcmNlX3F1YWxpZnldICh0aGlzYXJndHlwZSk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCBhcmd0eXBlKTsKKwkJcGZyZWUoYXJndHlwZSk7CisJfQorCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGJ1ZiwgJyknKTsKK30KKworLyoKKyAqIGZvcm1hdF9wcm9jZWR1cmVfYXJncyAgIC0g Y29udmVydHMgcHJvYyBPSUQgdG8gIihhcmdzKSIKKyAqLworY2hhciAqCitmb3JtYXRfcHJvY2Vk dXJlX2FyZ3MoT2lkIHByb2NlZHVyZV9vaWQsIGJvb2wgZm9yY2VfcXVhbGlmeSkKK3sKKwlTdHJp bmdJbmZvRGF0YSBidWY7CisJSGVhcFR1cGxlCXByb2N0dXA7CisJRm9ybV9wZ19wcm9jIHByb2Nm b3JtOworCisJcHJvY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERh dHVtKHByb2NlZHVyZV9vaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocHJvY3R1cCkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9jZWR1cmUgJXUiLCBwcm9j ZWR1cmVfb2lkKTsKKwlwcm9jZm9ybSA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwcm9jdHVw KTsKKworCWluaXRTdHJpbmdJbmZvKCZidWYpOworCWZvcm1hdF9wcm9jZWR1cmVfYXJnc19pbnRl cm5hbChwcm9jZm9ybSwgJmJ1ZiwgZm9yY2VfcXVhbGlmeSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUo cHJvY3R1cCk7CisKKwlyZXR1cm4gYnVmLmRhdGE7Cit9CisKIC8qCiAgKiBmb3JtYXRfcHJvY2Vk dXJlX2V4dGVuZGVkIC0gY29udmVydHMgcHJvY2VkdXJlIE9JRCB0byAicHJvX25hbWUoYXJncyki CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGNlOGNiM2UxYTEuLjU5MTE3Y2E5 Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRp b25lZF90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfcmV3cml0ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgpAQCAtMzQxLDYgKzM0Miw4IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdHJpZ2dlcmRl Zl93b3JrZXIoT2lkIHRyaWdpZCwgYm9vbCBwcmV0dHkpOwogc3RhdGljIGludAlkZWNvbXBpbGVf Y29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAog CQkJCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZf d29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpOworc3RhdGljIHZvaWQgcGdfZ2V0 X3J1bGVfd2hlcmVjbGF1c2UoY2hhciAqcXVhbHN0ciwgUXVlcnkgKnF1ZXJ5LAorCQkJCQkJCQkJ IFN0cmluZ0luZm8gYnVmLCBpbnQgcHJldHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dldF9p bmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJCWNvbnN0 IE9pZCAqZXhjbHVkZU9wcywKIAkJCQkJCQkJCWJvb2wgYXR0cnNPbmx5LCBib29sIGtleXNPbmx5 LApAQCAtMzU4LDcgKzM2MSw2IEBAIHN0YXRpYyBpbnQJcHJpbnRfZnVuY3Rpb25fYXJndW1lbnRz KFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcHJvY3R1cCwKIAkJCQkJCQkJCSBib29sIHByaW50 X3RhYmxlX2FyZ3MsIGJvb2wgcHJpbnRfZGVmYXVsdHMpOwogc3RhdGljIHZvaWQgcHJpbnRfZnVu Y3Rpb25fcmV0dHlwZShTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHByb2N0dXApOwogc3RhdGlj IHZvaWQgcHJpbnRfZnVuY3Rpb25fdHJmdHlwZXMoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBw cm9jdHVwKTsKLXN0YXRpYyB2b2lkIHByaW50X2Z1bmN0aW9uX3NxbGJvZHkoU3RyaW5nSW5mbyBi dWYsIEhlYXBUdXBsZSBwcm9jdHVwKTsKIHN0YXRpYyB2b2lkIHNldF9ydGFibGVfbmFtZXMoZGVw YXJzZV9uYW1lc3BhY2UgKmRwbnMsIExpc3QgKnBhcmVudF9uYW1lc3BhY2VzLAogCQkJCQkJCSBC aXRtYXBzZXQgKnJlbHNfdXNlZCk7CiBzdGF0aWMgdm9pZCBzZXRfZGVwYXJzZV9mb3JfcXVlcnko ZGVwYXJzZV9uYW1lc3BhY2UgKmRwbnMsIFF1ZXJ5ICpxdWVyeSwKQEAgLTU1NSw2ICs1NTcsODAg QEAgcGdfZ2V0X3J1bGVkZWZfZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1RFWFRf UChzdHJpbmdfdG9fdGV4dChyZXMpKTsKIH0KIAorLyoKKyAqIEdpdmVuIGEgcGFpciBvZiBEYXR1 bSBjb3JyZXNwb25kaW5nIHRvIGEgcnVsZSdzIHBnX3Jld3JpdGUuZXZfcXVhbCBhbmQKKyAqIGV2 X2FjdGlvbiBjb2x1bW5zLCByZXR1cm4gdGhlaXIgdGV4dCByZXByZXNlbnRhdGlvbjsgZXZfcXVh bCBhcyBhIHNpbmdsZQorICogc3RyaW5nIGluIHdoZXJlQ2xhdXNlIGFuZCBldl9hY3Rpb24gYXMg YSBMaXN0IG9mIHN0cmluZ3MgKHdoaWNoIG1pZ2h0IGJlCisgKiBOSUwsIHNpZ25hbGxpbmcgTk9U SElORykgaW4gYWN0aW9ucy4KKyAqLwordm9pZAorcGdfZ2V0X3J1bGVkZWZfZGV0YWlsZWQoRGF0 dW0gZXZfcXVhbCwgRGF0dW0gZXZfYWN0aW9uLAorCQkJCQkJY2hhciAqKndoZXJlQ2xhdXNlLCBM aXN0ICoqYWN0aW9ucykKK3sKKwlpbnQJCQlwcmV0dHlGbGFncyA9IDA7CisJY2hhcgkgICAqcXVh bHN0ciA9IFRleHREYXR1bUdldENTdHJpbmcoZXZfcXVhbCk7CisJY2hhcgkgICAqYWN0aW9uc3Ry ID0gVGV4dERhdHVtR2V0Q1N0cmluZyhldl9hY3Rpb24pOworCUxpc3QJICAgKmFjdGlvbk5vZGVM aXN0ID0gKExpc3QgKikgc3RyaW5nVG9Ob2RlKGFjdGlvbnN0cik7CisJU3RyaW5nSW5mb0RhdGEg YnVmOworCisJKndoZXJlQ2xhdXNlID0gTlVMTDsKKwkqYWN0aW9ucyA9IE5JTDsKKwlpbml0U3Ry aW5nSW5mbygmYnVmKTsKKworCWlmIChzdHJjbXAocXVhbHN0ciwgIjw+IikgIT0gMCkKKwl7CisJ CVF1ZXJ5CSAgICpxdWVyeSA9IChRdWVyeSAqKSBsaW5pdGlhbChhY3Rpb25Ob2RlTGlzdCk7CisK KwkJcGdfZ2V0X3J1bGVfd2hlcmVjbGF1c2UocXVhbHN0ciwgcXVlcnksICZidWYsIDApOworCQkq d2hlcmVDbGF1c2UgPSBwc3RyZHVwKGJ1Zi5kYXRhKTsKKwl9CisKKwlpZiAobGlzdF9sZW5ndGgo YWN0aW9uTm9kZUxpc3QpID4gMCkKKwl7CisJCUxpc3RDZWxsICAgKmNlbGw7CisKKwkJZm9yZWFj aChjZWxsLCBhY3Rpb25Ob2RlTGlzdCkKKwkJeworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5 ICopIGxmaXJzdChjZWxsKTsKKworCQkJcmVzZXRTdHJpbmdJbmZvKCZidWYpOworCQkJZ2V0X3F1 ZXJ5X2RlZihxdWVyeSwgJmJ1ZiwgTklMLCBOVUxMLCB0cnVlLAorCQkJCQkJICBwcmV0dHlGbGFn cywgV1JBUF9DT0xVTU5fREVGQVVMVCwgMCk7CisJCQkqYWN0aW9ucyA9IGxhcHBlbmQoKmFjdGlv bnMsIHBzdHJkdXAoYnVmLmRhdGEpKTsKKwkJfQorCX0KK30KKworLyoKKyAqIFRvIGdldCB0aGUg cmV3cml0ZSBydWxlIG9mIGEgdmlldyB3aGVuIHRoZSBDUkVBVEUgVklFVyBjb21tYW5kIGV4ZWN1 dGlvbiBpcworICogc3RpbGwgaW4gcHJvZ3Jlc3M6IHdlIHNlYXJjaCB0aGUgc3lzdGVtIGNhY2hl IFJVTEVSRUxOQU1FIHRvIGdldCB0aGUgcmV3cml0ZQorICogcnVsZSBvZiB0aGUgdmlldyBhcyBv cHBvc2VkIHRvIHF1ZXJ5aW5nIHBnX3Jld3JpdGUgYXMgaW4gcGdfZ2V0X3ZpZXdkZWZfd29ya2Vy KCksCisgKiB3aGljaCB3aWxsIHJldHVybiBlbXB0eSByZXN1bHQuCisgKi8KK2NoYXIgKgorcGdf Z2V0X3ZpZXdkZWZfc3RyaW5nKE9pZCB2aWV3b2lkKQoreworCVN0cmluZ0luZm9EYXRhIGJ1ZjsK KwlSZWxhdGlvbglwZ19yZXdyaXRlOworCUhlYXBUdXBsZQlydWxldHVwOworCVR1cGxlRGVzYwly dWxldHRjOworCisJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisJcGdfcmV3cml0ZSA9IHRhYmxlX29w ZW4oUmV3cml0ZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlydWxldHVwID0gU2Vh cmNoU3lzQ2FjaGUyKFJVTEVSRUxOQU1FLAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh2aWV3 b2lkKSwKKwkJCQkJCQkgIFBvaW50ZXJHZXREYXR1bShWaWV3U2VsZWN0UnVsZU5hbWUpKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQocnVsZXR1cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29r dXAgZmFpbGVkIGZvciByZXdyaXRlIHJ1bGUgZm9yIHZpZXcgd2l0aCBPSUQgJXUiLCB2aWV3b2lk KTsKKworCXJ1bGV0dGMgPSBwZ19yZXdyaXRlLT5yZF9hdHQ7CisJbWFrZV92aWV3ZGVmKCZidWYs IHJ1bGV0dXAsIHJ1bGV0dGMsIDAsIFdSQVBfQ09MVU1OX0RFRkFVTFQpOworCVJlbGVhc2VTeXND YWNoZShydWxldHVwKTsKKwl0YWJsZV9jbG9zZShwZ19yZXdyaXRlLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJcmV0dXJuIGJ1Zi5kYXRhOworfQogCiBzdGF0aWMgY2hhciAqCiBwZ19nZXRfcnVsZWRl Zl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0dHlGbGFncykKQEAgLTEwMjUsNjUgKzExMDEs MTIgQEAgcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KQog CWlmICghaXNudWxsKQogCXsKIAkJTm9kZQkgICAqcXVhbDsKLQkJY2hhcgkJcmVsa2luZDsKLQkJ ZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7Ci0JCWRlcGFyc2VfbmFtZXNwYWNlIGRwbnM7Ci0JCVJh bmdlVGJsRW50cnkgKm9sZHJ0ZTsKLQkJUmFuZ2VUYmxFbnRyeSAqbmV3cnRlOwotCi0JCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIldIRU4gKCIpOworCQljaGFyCSAgICpxdWFsc3RyOwog CiAJCXF1YWwgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZSkpOworCQlx dWFsc3RyID0gcGdfZ2V0X3RyaWdnZXJfd2hlbmNsYXVzZSh0cmlncmVjLCBxdWFsLCBwcmV0dHkp OwogCi0JCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQodHJpZ3JlYy0+dGdyZWxpZCk7Ci0KLQkJ LyogQnVpbGQgbWluaW1hbCBPTEQgYW5kIE5FVyBSVEVzIGZvciB0aGUgcmVsICovCi0JCW9sZHJ0 ZSA9IG1ha2VOb2RlKFJhbmdlVGJsRW50cnkpOwotCQlvbGRydGUtPnJ0ZWtpbmQgPSBSVEVfUkVM QVRJT047Ci0JCW9sZHJ0ZS0+cmVsaWQgPSB0cmlncmVjLT50Z3JlbGlkOwotCQlvbGRydGUtPnJl bGtpbmQgPSByZWxraW5kOwotCQlvbGRydGUtPnJlbGxvY2ttb2RlID0gQWNjZXNzU2hhcmVMb2Nr OwotCQlvbGRydGUtPmFsaWFzID0gbWFrZUFsaWFzKCJvbGQiLCBOSUwpOwotCQlvbGRydGUtPmVy ZWYgPSBvbGRydGUtPmFsaWFzOwotCQlvbGRydGUtPmxhdGVyYWwgPSBmYWxzZTsKLQkJb2xkcnRl LT5pbmggPSBmYWxzZTsKLQkJb2xkcnRlLT5pbkZyb21DbCA9IHRydWU7Ci0KLQkJbmV3cnRlID0g bWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7Ci0JCW5ld3J0ZS0+cnRla2luZCA9IFJURV9SRUxBVElP TjsKLQkJbmV3cnRlLT5yZWxpZCA9IHRyaWdyZWMtPnRncmVsaWQ7Ci0JCW5ld3J0ZS0+cmVsa2lu ZCA9IHJlbGtpbmQ7Ci0JCW5ld3J0ZS0+cmVsbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7Ci0J CW5ld3J0ZS0+YWxpYXMgPSBtYWtlQWxpYXMoIm5ldyIsIE5JTCk7Ci0JCW5ld3J0ZS0+ZXJlZiA9 IG5ld3J0ZS0+YWxpYXM7Ci0JCW5ld3J0ZS0+bGF0ZXJhbCA9IGZhbHNlOwotCQluZXdydGUtPmlu aCA9IGZhbHNlOwotCQluZXdydGUtPmluRnJvbUNsID0gdHJ1ZTsKLQotCQkvKiBCdWlsZCB0d28t ZWxlbWVudCBydGFibGUgKi8KLQkJbWVtc2V0KCZkcG5zLCAwLCBzaXplb2YoZHBucykpOwotCQlk cG5zLnJ0YWJsZSA9IGxpc3RfbWFrZTIob2xkcnRlLCBuZXdydGUpOwotCQlkcG5zLnN1YnBsYW5z ID0gTklMOwotCQlkcG5zLmN0ZXMgPSBOSUw7Ci0JCWRwbnMuYXBwZW5kcmVscyA9IE5VTEw7Ci0J CXNldF9ydGFibGVfbmFtZXMoJmRwbnMsIE5JTCwgTlVMTCk7Ci0JCXNldF9zaW1wbGVfY29sdW1u X25hbWVzKCZkcG5zKTsKLQotCQkvKiBTZXQgdXAgY29udGV4dCB3aXRoIG9uZS1kZWVwIG5hbWVz cGFjZSBzdGFjayAqLwotCQljb250ZXh0LmJ1ZiA9ICZidWY7Ci0JCWNvbnRleHQubmFtZXNwYWNl cyA9IGxpc3RfbWFrZTEoJmRwbnMpOwotCQljb250ZXh0LndpbmRvd0NsYXVzZSA9IE5JTDsKLQkJ Y29udGV4dC53aW5kb3dUTGlzdCA9IE5JTDsKLQkJY29udGV4dC52YXJwcmVmaXggPSB0cnVlOwot CQljb250ZXh0LnByZXR0eUZsYWdzID0gR0VUX1BSRVRUWV9GTEFHUyhwcmV0dHkpOwotCQljb250 ZXh0LndyYXBDb2x1bW4gPSBXUkFQX0NPTFVNTl9ERUZBVUxUOwotCQljb250ZXh0LmluZGVudExl dmVsID0gUFJFVFRZSU5ERU5UX1NURDsKLQkJY29udGV4dC5zcGVjaWFsX2V4cHJraW5kID0gRVhQ Ul9LSU5EX05PTkU7Ci0JCWNvbnRleHQuYXBwZW5kcGFyZW50cyA9IE5VTEw7Ci0KLQkJZ2V0X3J1 bGVfZXhwcihxdWFsLCAmY29udGV4dCwgZmFsc2UpOwotCi0JCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmJ1ZiwgIikgIik7CisJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIldIRU4gKCVzKSAiLCBx dWFsc3RyKTsKIAl9CiAKIAlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJFWEVDVVRFIEZVTkNUSU9O ICVzKCIsCkBAIC0xMTI0LDYgKzExNDcsNzQgQEAgcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9p ZCB0cmlnaWQsIGJvb2wgcHJldHR5KQogCXJldHVybiBidWYuZGF0YTsKIH0KIAorLyoKKyAqIFBh c3MgYmFjayB0aGUgVHJpZ2dlcldoZW4gY2xhdXNlIG9mIGEgdHJpZ2dlciBnaXZlbiB0aGUgcGdf dHJpZ2dlciByZWNvcmQgYW5kCisgKiB0aGUgZXhwcmVzc2lvbiB0cmVlIChpbiBub2RlVG9TdHJp bmcoKSByZXByZXNlbnRhdGlvbikgZnJvbSBwZ190cmlnZ2VyLnRncXVhbAorICogZm9yIHRoZSB0 cmlnZ2VyJ3MgV0hFTiBjb25kaXRpb24uCisgKi8KK2NoYXIgKgorcGdfZ2V0X3RyaWdnZXJfd2hl bmNsYXVzZShGb3JtX3BnX3RyaWdnZXIgdHJpZ3JlYywgTm9kZSAqd2hlbkNsYXVzZSwgYm9vbCBw cmV0dHkpCit7CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCWNoYXIJCXJlbGtpbmQ7CisJZGVwYXJz ZV9jb250ZXh0IGNvbnRleHQ7CisJZGVwYXJzZV9uYW1lc3BhY2UgZHBuczsKKwlSYW5nZVRibEVu dHJ5ICpvbGRydGU7CisJUmFuZ2VUYmxFbnRyeSAqbmV3cnRlOworCisJaW5pdFN0cmluZ0luZm8o JmJ1Zik7CisKKwlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHRyaWdyZWMtPnRncmVsaWQpOwor CisJLyogQnVpbGQgbWluaW1hbCBPTEQgYW5kIE5FVyBSVEVzIGZvciB0aGUgcmVsICovCisJb2xk cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CisJb2xkcnRlLT5ydGVraW5kID0gUlRFX1JF TEFUSU9OOworCW9sZHJ0ZS0+cmVsaWQgPSB0cmlncmVjLT50Z3JlbGlkOworCW9sZHJ0ZS0+cmVs a2luZCA9IHJlbGtpbmQ7CisJb2xkcnRlLT5yZWxsb2NrbW9kZSA9IEFjY2Vzc1NoYXJlTG9jazsK KwlvbGRydGUtPmFsaWFzID0gbWFrZUFsaWFzKCJvbGQiLCBOSUwpOworCW9sZHJ0ZS0+ZXJlZiA9 IG9sZHJ0ZS0+YWxpYXM7CisJb2xkcnRlLT5sYXRlcmFsID0gZmFsc2U7CisJb2xkcnRlLT5pbmgg PSBmYWxzZTsKKwlvbGRydGUtPmluRnJvbUNsID0gdHJ1ZTsKKworCW5ld3J0ZSA9IG1ha2VOb2Rl KFJhbmdlVGJsRW50cnkpOworCW5ld3J0ZS0+cnRla2luZCA9IFJURV9SRUxBVElPTjsKKwluZXdy dGUtPnJlbGlkID0gdHJpZ3JlYy0+dGdyZWxpZDsKKwluZXdydGUtPnJlbGtpbmQgPSByZWxraW5k OworCW5ld3J0ZS0+cmVsbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7CisJbmV3cnRlLT5hbGlh cyA9IG1ha2VBbGlhcygibmV3IiwgTklMKTsKKwluZXdydGUtPmVyZWYgPSBuZXdydGUtPmFsaWFz OworCW5ld3J0ZS0+bGF0ZXJhbCA9IGZhbHNlOworCW5ld3J0ZS0+aW5oID0gZmFsc2U7CisJbmV3 cnRlLT5pbkZyb21DbCA9IHRydWU7CisKKwkvKiBCdWlsZCB0d28tZWxlbWVudCBydGFibGUgKi8K KwltZW1zZXQoJmRwbnMsIDAsIHNpemVvZihkcG5zKSk7CisJZHBucy5ydGFibGUgPSBsaXN0X21h a2UyKG9sZHJ0ZSwgbmV3cnRlKTsKKwlkcG5zLnN1YnBsYW5zID0gTklMOworCWRwbnMuY3RlcyA9 IE5JTDsKKwlkcG5zLmFwcGVuZHJlbHMgPSBOVUxMOworCXNldF9ydGFibGVfbmFtZXMoJmRwbnMs IE5JTCwgTlVMTCk7CisJc2V0X3NpbXBsZV9jb2x1bW5fbmFtZXMoJmRwbnMpOworCisJLyogU2V0 IHVwIGNvbnRleHQgd2l0aCBvbmUtZGVlcCBuYW1lc3BhY2Ugc3RhY2sgKi8KKwljb250ZXh0LmJ1 ZiA9ICZidWY7CisJY29udGV4dC5uYW1lc3BhY2VzID0gbGlzdF9tYWtlMSgmZHBucyk7CisJY29u dGV4dC53aW5kb3dDbGF1c2UgPSBOSUw7CisJY29udGV4dC53aW5kb3dUTGlzdCA9IE5JTDsKKwlj b250ZXh0LnZhcnByZWZpeCA9IHRydWU7CisJY29udGV4dC5wcmV0dHlGbGFncyA9IEdFVF9QUkVU VFlfRkxBR1MocHJldHR5KTsKKwljb250ZXh0LndyYXBDb2x1bW4gPSBXUkFQX0NPTFVNTl9ERUZB VUxUOworCWNvbnRleHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1REOworCWNvbnRleHQu c3BlY2lhbF9leHBya2luZCA9IEVYUFJfS0lORF9OT05FOworCWNvbnRleHQuYXBwZW5kcGFyZW50 cyA9IE5VTEw7CisKKwlnZXRfcnVsZV9leHByKHdoZW5DbGF1c2UsICZjb250ZXh0LCBmYWxzZSk7 CisKKwlyZXR1cm4gYnVmLmRhdGE7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIHBnX2dldF9pbmRl eGRlZgkJCS0gR2V0IHRoZSBkZWZpbml0aW9uIG9mIGFuIGluZGV4CiAgKgpAQCAtMzQ4Niw3ICsz NTc3LDEyIEBAIHBnX2dldF9mdW5jdGlvbl9hcmdfZGVmYXVsdChQR19GVU5DVElPTl9BUkdTKQog CVBHX1JFVFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQoc3RyKSk7CiB9CiAKLXN0YXRpYyB2b2lk CisvKgorICogUHJvZHVjZSB0aGUgZm9ybWF0dGVkIFNRTCBib2R5IChub3QgdGhlIHdob2xlIGZ1 bmN0aW9uIGRlZmluaXRpb24pCisgKiBvZiBhIGZ1bmN0aW9uIGdpdmVuIHRoZSBwZ19wcm9jIHR1 cGxlLiBTYXZlIHRoZSBmb3JtYXR0ZWQgU1FMIGluIHRoZQorICogZ2l2ZW4gU3RyaW5nSW5mby4K KyAqLwordm9pZAogcHJpbnRfZnVuY3Rpb25fc3FsYm9keShTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1 cGxlIHByb2N0dXApCiB7CiAJaW50CQkJbnVtYXJnczsKQEAgLTUyMzEsNDggKzUzMjcsMTggQEAg bWFrZV9ydWxlZGVmKFN0cmluZ0luZm8gYnVmLCBIZWFwVHVwbGUgcnVsZXR1cCwgVHVwbGVEZXNj IHJ1bGV0dGMsCiAJLyogSWYgdGhlIHJ1bGUgaGFzIGFuIGV2ZW50IHF1YWxpZmljYXRpb24sIGFk ZCBpdCAqLwogCWlmIChzdHJjbXAoZXZfcXVhbCwgIjw+IikgIT0gMCkKIAl7Ci0JCU5vZGUJICAg KnF1YWw7Ci0JCVF1ZXJ5CSAgICpxdWVyeTsKLQkJZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7Ci0J CWRlcGFyc2VfbmFtZXNwYWNlIGRwbnM7Ci0KLQkJaWYgKHByZXR0eUZsYWdzICYgUFJFVFRZRkxB R19JTkRFTlQpCi0JCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlxuICAiKTsKLQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgV0hFUkUgIik7Ci0KLQkJcXVhbCA9IHN0cmluZ1Rv Tm9kZShldl9xdWFsKTsKLQogCQkvKgogCQkgKiBXZSBuZWVkIHRvIG1ha2UgYSBjb250ZXh0IGZv ciByZWNvZ25pemluZyBhbnkgVmFycyBpbiB0aGUgcXVhbAogCQkgKiAod2hpY2ggY2FuIG9ubHkg YmUgcmVmZXJlbmNlcyB0byBPTEQgYW5kIE5FVykuICBVc2UgdGhlIHJ0YWJsZSBvZgogCQkgKiB0 aGUgZmlyc3QgcXVlcnkgaW4gdGhlIGFjdGlvbiBsaXN0IGZvciB0aGlzIHB1cnBvc2UuCiAJCSAq LwotCQlxdWVyeSA9IChRdWVyeSAqKSBsaW5pdGlhbChhY3Rpb25zKTsKLQotCQkvKgotCQkgKiBJ ZiB0aGUgYWN0aW9uIGlzIElOU0VSVC4uLlNFTEVDVCwgT0xEL05FVyBoYXZlIGJlZW4gcHVzaGVk IGRvd24KLQkJICogaW50byB0aGUgU0VMRUNULCBhbmQgdGhhdCdzIHdoYXQgd2UgbmVlZCB0byBs b29rIGF0LiAoVWdseSBrbHVnZQotCQkgKiAuLi4gdHJ5IHRvIGZpeCB0aGlzIHdoZW4gd2UgcmVk ZXNpZ24gcXVlcnl0cmVlcy4pCi0JCSAqLwotCQlxdWVyeSA9IGdldEluc2VydFNlbGVjdFF1ZXJ5 KHF1ZXJ5LCBOVUxMKTsKLQotCQkvKiBNdXN0IGFjcXVpcmUgbG9ja3MgcmlnaHQgYXdheTsgc2Vl IG5vdGVzIGluIGdldF9xdWVyeV9kZWYoKSAqLwotCQlBY3F1aXJlUmV3cml0ZUxvY2tzKHF1ZXJ5 LCBmYWxzZSwgZmFsc2UpOwotCi0JCWNvbnRleHQuYnVmID0gYnVmOwotCQljb250ZXh0Lm5hbWVz cGFjZXMgPSBsaXN0X21ha2UxKCZkcG5zKTsKLQkJY29udGV4dC53aW5kb3dDbGF1c2UgPSBOSUw7 Ci0JCWNvbnRleHQud2luZG93VExpc3QgPSBOSUw7Ci0JCWNvbnRleHQudmFycHJlZml4ID0gKGxp c3RfbGVuZ3RoKHF1ZXJ5LT5ydGFibGUpICE9IDEpOwotCQljb250ZXh0LnByZXR0eUZsYWdzID0g cHJldHR5RmxhZ3M7Ci0JCWNvbnRleHQud3JhcENvbHVtbiA9IFdSQVBfQ09MVU1OX0RFRkFVTFQ7 Ci0JCWNvbnRleHQuaW5kZW50TGV2ZWwgPSBQUkVUVFlJTkRFTlRfU1REOwotCQljb250ZXh0LnNw ZWNpYWxfZXhwcmtpbmQgPSBFWFBSX0tJTkRfTk9ORTsKLQkJY29udGV4dC5hcHBlbmRwYXJlbnRz ID0gTlVMTDsKKwkJUXVlcnkJICAgKnF1ZXJ5ID0gKFF1ZXJ5ICopIGxpbml0aWFsKGFjdGlvbnMp OwogCi0JCXNldF9kZXBhcnNlX2Zvcl9xdWVyeSgmZHBucywgcXVlcnksIE5JTCk7CisJCWlmIChw cmV0dHlGbGFncyAmIFBSRVRUWUZMQUdfSU5ERU5UKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICJcbiAgIik7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFdIRVJFICIp OwogCi0JCWdldF9ydWxlX2V4cHIocXVhbCwgJmNvbnRleHQsIGZhbHNlKTsKKwkJcGdfZ2V0X3J1 bGVfd2hlcmVjbGF1c2UoZXZfcXVhbCwgcXVlcnksIGJ1ZiwgcHJldHR5RmxhZ3MpOwogCX0KIAog CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIERPICIpOwpAQCAtNTMxMyw2ICs1Mzc5LDQ3 IEBAIG1ha2VfcnVsZWRlZihTdHJpbmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHJ1bGV0dXAsIFR1cGxl RGVzYyBydWxldHRjLAogCXRhYmxlX2Nsb3NlKGV2X3JlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2sp OwogfQogCisvKgorICogR2l2ZW4gYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBhIHJ1bGUncyBw Z19yZXdyaXRlLmV2X3F1YWwgYW5kIGEgcXVlcnkKKyAqIHBhcnNldHJlZSwgYXBwZW5kIGV2X3F1 YWwncyB0ZXh0IHJlcHJlc2VudGF0aW9uIGludG8gdGhlIG91dHB1dCBidWYuCisgKgorICogVHJp ZXMgdG8gcHJldHR5IHVwIHRoZSBvdXRwdXQgYWNjb3JkaW5nIHRvIHByZXR0eUZsYWdzLgorICov CitzdGF0aWMgdm9pZAorcGdfZ2V0X3J1bGVfd2hlcmVjbGF1c2UoY2hhciAqcXVhbHN0ciwgUXVl cnkgKnF1ZXJ5LCBTdHJpbmdJbmZvIGJ1ZiwKKwkJCQkJCWludCBwcmV0dHlGbGFncykKK3sKKwlO b2RlCSAgICpxdWFsOworCWRlcGFyc2VfY29udGV4dCBjb250ZXh0OworCWRlcGFyc2VfbmFtZXNw YWNlIGRwbnM7CisKKwlxdWFsID0gc3RyaW5nVG9Ob2RlKHF1YWxzdHIpOworCisJLyoKKwkgKiBJ ZiB0aGUgYWN0aW9uIGlzIElOU0VSVC4uLlNFTEVDVCwgT0xEL05FVyBoYXZlIGJlZW4gcHVzaGVk IGRvd24KKwkgKiBpbnRvIHRoZSBTRUxFQ1QsIGFuZCB0aGF0J3Mgd2hhdCB3ZSBuZWVkIHRvIGxv b2sgYXQuIChVZ2x5IGtsdWdlCisJICogLi4uIHRyeSB0byBmaXggdGhpcyB3aGVuIHdlIHJlZGVz aWduIHF1ZXJ5dHJlZXMuKQorCSAqLworCXF1ZXJ5ID0gZ2V0SW5zZXJ0U2VsZWN0UXVlcnkocXVl cnksIE5VTEwpOworCisJLyogTXVzdCBhY3F1aXJlIGxvY2tzIHJpZ2h0IGF3YXk7IHNlZSBub3Rl cyBpbiBnZXRfcXVlcnlfZGVmKCkgKi8KKwlBY3F1aXJlUmV3cml0ZUxvY2tzKHF1ZXJ5LCBmYWxz ZSwgZmFsc2UpOworCisJY29udGV4dC5idWYgPSBidWY7CisJY29udGV4dC5uYW1lc3BhY2VzID0g bGlzdF9tYWtlMSgmZHBucyk7CisJY29udGV4dC53aW5kb3dDbGF1c2UgPSBOSUw7CisJY29udGV4 dC53aW5kb3dUTGlzdCA9IE5JTDsKKwljb250ZXh0LnZhcnByZWZpeCA9IChsaXN0X2xlbmd0aChx dWVyeS0+cnRhYmxlKSAhPSAxKTsKKwljb250ZXh0LnByZXR0eUZsYWdzID0gcHJldHR5RmxhZ3M7 CisJY29udGV4dC53cmFwQ29sdW1uID0gV1JBUF9DT0xVTU5fREVGQVVMVDsKKwljb250ZXh0Lmlu ZGVudExldmVsID0gUFJFVFRZSU5ERU5UX1NURDsKKwljb250ZXh0LnNwZWNpYWxfZXhwcmtpbmQg PSBFWFBSX0tJTkRfTk9ORTsKKwljb250ZXh0LmFwcGVuZHBhcmVudHMgPSBOVUxMOworCisJc2V0 X2RlcGFyc2VfZm9yX3F1ZXJ5KCZkcG5zLCBxdWVyeSwgTklMKTsKKworCWdldF9ydWxlX2V4cHIo cXVhbCwgJmNvbnRleHQsIGZhbHNlKTsKK30KIAogLyogLS0tLS0tLS0tLQogICogbWFrZV92aWV3 ZGVmCQkJLSByZWNvbnN0cnVjdCB0aGUgU0VMRUNUIHBhcnQgb2YgYQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKaW5kZXggOTE5OGRhMmViMS4uZjUyMmJjYzU1MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCkBAIC01NzIwLDYgKzU3MjAsNyBAQCBSZWxhdGlvbkJ1aWxkUHVibGlj YXRpb25EZXNjKFJlbGF0aW9uIHJlbGF0aW9uLCBQdWJsaWNhdGlvbkRlc2MgKnB1YmRlc2MpCiAJ CXB1YmRlc2MtPnB1YmFjdGlvbnMucHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKIAkJ cHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZWxldGUgfD0gcHViZm9ybS0+cHViZGVsZXRlOwogCQlw dWJkZXNjLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwor CQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRkbF9hbGwgfD0gcHViZm9ybS0+cHViZGRsX2FsbDsK IAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViZm9ybS0+cHViZGRsX3Rh YmxlOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0YjNiYjM1NzUyLi42OTMwMGZlMmIyIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTQwNjQsNiArNDA2NCw3IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpm b3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpbnQJCQlpX3B1YnVwZGF0ZTsKIAlpbnQJCQlp X3B1YmRlbGV0ZTsKIAlpbnQJCQlpX3B1YnRydW5jYXRlOworCWludAkJCWlfcHViZGRsX2FsbDsK IAlpbnQJCQlpX3B1YmRkbF90YWJsZTsKIAlpbnQJCQlpX3B1YnZpYXJvb3Q7CiAJaW50CQkJaSwK QEAgLTQwODQsMjUgKzQwODUsMjUgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtUHVibGljYXRpb25zKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJ CQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1 Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBk YXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJkZGxfdGFibGUsIHAucHVidmlh cm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRl LCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJkZGxfYWxsLCBwLnB1YmRkbF90YWJs ZSwgcC5wdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVs c2UgaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1l LCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5w dWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2Ug YXMgcC5wdWJkZGxfdGFibGUsIHAucHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxl cywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwg ZmFsc2UgYXMgcC5wdWJkZGxfYWxsLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgcC5wdWJ2aWFy b290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UgaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwK IAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJ ICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAu cHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxf dGFibGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAu cHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNl IGFzIHAucHViZGRsX2FsbCwgZmFsc2UgYXMgcC5wdWJkZGxfdGFibGUsIGZhbHNlIEFTIHB1YnZp YXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9p ZCwgcC5wdWJuYW1lLCAiCiAJCQkJCQkJICJwLnB1Ym93bmVyLCAiCi0JCQkJCQkJICJwLnB1YmFs bHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMg cHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290 ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAu cHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgYXMgcC5wdWJkZGxfYWxsLCBm YWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJG Uk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx dWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAgLTQxMTgsNiArNDExOSw3IEBAIGdldFB1 YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlpX3B1YnVw ZGF0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ1cGRhdGUiKTsKIAlpX3B1YmRlbGV0ZSA9IFBRZm51 bWJlcihyZXMsICJwdWJkZWxldGUiKTsKIAlpX3B1YnRydW5jYXRlID0gUFFmbnVtYmVyKHJlcywg InB1YnRydW5jYXRlIik7CisJaV9wdWJkZGxfYWxsID0gUFFmbnVtYmVyKHJlcywgInB1YmRkbF9h bGwiKTsKIAlpX3B1YmRkbF90YWJsZSA9IFBRZm51bWJlcihyZXMsICJwdWJkZGxfdGFibGUiKTsK IAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVidmlhcm9vdCIpOwogCkBAIC00MTQy LDYgKzQxNDQsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJs aWNhdGlvbnMpCiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRlbGV0ZSksICJ0 IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHVidHJ1bmNhdGUgPQogCQkJKHN0cmNtcChQUWdldHZh bHVlKHJlcywgaSwgaV9wdWJ0cnVuY2F0ZSksICJ0IikgPT0gMCk7CisJCXB1YmluZm9baV0ucHVi ZGRsX2FsbCA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRkbF9hbGwpLCAi dCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1YmRkbF90YWJsZSA9CiAJCQkoc3RyY21wKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3B1YmRkbF90YWJsZSksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0u cHVidmlhcm9vdCA9CkBAIC00MjI1LDggKzQyMjksMjIgQEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbykKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiJyIpOwogCi0JaWYgKHB1YmluZm8tPnB1YmRkbF90YWJsZSkKLQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGRkbCA9ICd0YWJsZSciKTsKKwlpZiAocHVi aW5mby0+cHViZGRsX2FsbCB8fCBwdWJpbmZvLT5wdWJkZGxfdGFibGUpCisJeworCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgZGRsID0gJyIpOworCQlpZiAocHViaW5mby0+cHViZGRs X2FsbCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiYWxsIik7CisKKwkJaWYgKHB1 YmluZm8tPnB1YmRkbF90YWJsZSkKKwkJeworCQkJaWYgKHB1YmluZm8tPnB1YmRkbF9hbGwpCisJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsICIpOworCisJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgInRhYmxlIik7CisJCX0KKworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiciKTsKKwl9CiAKIAlpZiAocHViaW5mby0+cHVidmlhcm9vdCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSIp OwpAQCAtODAwNiw3ICs4MDI0LDcgQEAgZ2V0UHVibGljYXRpb25FdmVudFRyaWdnZXJzKEFyY2hp dmUgKmZvdXQsIFNpbXBsZVN0cmluZ0xpc3QgKnNraXBUcmlnZ2VycykKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJICJTRUxFQ1Qgb2lkIEZST00gcGdfcHVibGljYXRpb24g IgotCQkJCQkJICJXSEVSRSBwdWJkZGxfdGFibGUiKTsKKwkJCQkJCSAiV0hFUkUgcHViZGRsX2Fs bCBPUiBwdWJkZGxfdGFibGUiKTsKIAogCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVy eS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmgKaW5kZXggYWU5MGIyY2Q4NC4uZDYxM2FjNTU5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02MjAs NiArNjIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwogCWJvb2wJCXB1YnVw ZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9vbAkJcHVi ZGRsX2FsbDsKIAlib29sCQlwdWJkZGxfdGFibGU7CiAJYm9vbAkJcHVidmlhcm9vdDsKIH0gUHVi bGljYXRpb25JbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA3MDBhODU4YWM4Li42OWIzN2YyYWZjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwpAQCAtNjIwNSw5ICs2MjA1LDE0IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJCQkJICBnZXR0ZXh0X25vb3AoIk93bmVyIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29w KCJBbGwgdGFibGVzIikpOwogCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwl7CisJCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsXG4gIHB1YmRkbF9hbGwgQVMgXCIlc1wi IiwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJBbGwgRERMcyIpKTsKIAkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgcHViZGRsX3RhYmxlIEFTIFwiJXNcIiIsCiAJCQkJCQkg IGdldHRleHRfbm9vcCgiVGFibGUgRERMcyIpKTsKKwl9CiAJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKIAkJCQkJICAiLFxuICBwdWJpbnNlcnQgQVMgXCIlc1wiLFxuIgogCQkJCQkgICIgIHB1YnVw ZGF0ZSBBUyBcIiVzXCIsXG4iCkBAIC02MzM5LDcgKzYzNDQsNyBAQCBkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkgICIgIHB1YmFsbHRhYmxlcyIpOwogCWlm IChoYXNfcHViZGRsKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAotCQkJCQkJCSAiLCBw dWJkZGxfdGFibGUiKTsKKwkJCQkJCQkgIiwgcHViZGRsX2FsbCwgcHViZGRsX3RhYmxlIik7CiAJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKIAkJCQkJCSAiLCAgcHViaW5zZXJ0LCBwdWJ1cGRh dGUsIHB1YmRlbGV0ZSIpOwogCWlmIChoYXNfcHVidHJ1bmNhdGUpCkBAIC02NDAwLDcgKzY0MDUs NyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAoaGFz X3B1YnZpYXJvb3QpCiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1YmRkbCkKLQkJCW5jb2xzKys7 CisJCQluY29scyArPSAyOwogCiAJCWluaXRQUUV4cEJ1ZmZlcigmdGl0bGUpOwogCQlwcmludGZQ UUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlB1YmxpY2F0aW9uICVzIiksIHB1Ym5hbWUpOwpAQCAtNjQw OSw3ICs2NDE0LDEwIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4p CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiT3duZXIiKSwgdHJ1 ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkFs bCB0YWJsZXMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlpZiAoaGFzX3B1YmRkbCkKKwkJeworCQkJcHJp bnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJBbGwgRERMcyIpLCB0cnVlLCBh bGlnbik7CiAJCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlRhYmxl IERETHMiKSwgdHJ1ZSwgYWxpZ24pOworCQl9CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQs IGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRI ZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLCB0cnVlLCBhbGlnbik7CiAJCXBy aW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpLCB0cnVlLCBh bGlnbik7CkBAIC02NDI4LDcgKzY0MzYsMTAgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybikKIAkJaWYgKGhhc19wdWJ2aWFyb290KQogCQkJcHJpbnRUYWJsZUFkZENl bGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgZmFsc2UsIGZhbHNlKTsKIAkJaWYgKGhh c19wdWJkZGwpCisJCXsKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJl cywgaSwgOSksIGZhbHNlLCBmYWxzZSk7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFn ZXR2YWx1ZShyZXMsIGksIDEwKSwgZmFsc2UsIGZhbHNlKTsKKwkJfQogCiAJCWlmICghcHViYWxs dGFibGVzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNzRiMjhk NzM1MC4uNjg4M2I0M2MwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAt NjQsNiArNjQsOSBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxh dGlvbklkKQogCS8qIHRydWUgaWYgcGFydGl0aW9uIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB1c2lu ZyByb290IHNjaGVtYSAqLwogCWJvb2wJCXB1YnZpYXJvb3Q7CiAKKwkvKiB0cnVlIGlmIGFsbCBz dXBwb3J0ZWQgZGRscyBhcmUgcHVibGlzaGVkICovCisJYm9vbAkJcHViZGRsX2FsbDsKKwogCS8q IHRydWUgaWYgdGFibGUgZGRscyBhcmUgcHVibGlzaGVkICovCiAJYm9vbAkJcHViZGRsX3RhYmxl OwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsKQEAgLTg0LDYgKzg3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJCXB1YmRl bGV0ZTsKIAlib29sCQlwdWJ0cnVuY2F0ZTsKKwlib29sCQlwdWJkZGxfYWxsOwogCWJvb2wJCXB1 YmRkbF90YWJsZTsKIH0gUHVibGljYXRpb25BY3Rpb25zOwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb2xsYXRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb2xs YXRpb25jbWRzLmgKaW5kZXggYjc2YzdiM2RjMy4uNTNjNGExYThjMiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29sbGF0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NvbGxhdGlvbmNtZHMuaApAQCAtMTgsNyArMTgsOCBAQAogI2luY2x1ZGUgImNhdGFsb2cv b2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAKLWV4dGVy biBPYmplY3RBZGRyZXNzIERlZmluZUNvbGxhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg Km5hbWVzLCBMaXN0ICpwYXJhbWV0ZXJzLCBib29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIE9i amVjdEFkZHJlc3MgRGVmaW5lQ29sbGF0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqbmFt ZXMsIExpc3QgKnBhcmFtZXRlcnMsCisJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywgT2Jq ZWN0QWRkcmVzcyAqZnJvbV9jb2xsaWQpOwogZXh0ZXJuIHZvaWQgSXNUaGVyZUNvbGxhdGlvbklu TmFtZXNwYWNlKGNvbnN0IGNoYXIgKmNvbGxuYW1lLCBPaWQgbnNwT2lkKTsKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIEFsdGVyQ29sbGF0aW9uKEFsdGVyQ29sbGF0aW9uU3RtdCAqc3RtdCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaAppbmRleCBjYmE0ZTcyNDU1Li4zMzk1NTNkNDU2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCkBAIC0xMzIsNSArMTMyLDcgQEAg ZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVjdENyZWF0ZU9wQ2xhc3MoQ3JlYXRlT3BDbGFz c1N0bXQgKnN0bXQsCiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUU0NvbmZp ZyhBbHRlclRTQ29uZmlndXJhdGlvblN0bXQgKnN0bXQsCiAJCQkJCQkJCQkJCSBPaWQgY2ZnSWQs IE9pZCAqZGljdElkcywgaW50IG5kaWN0cyk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJDb2xs ZWN0QWx0ZXJEZWZQcml2cyhBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdCAqc3RtdCk7CitleHRl cm4gdm9pZCBFdmVudFRyaWdnZXJDb2xsZWN0U2VjTGFiZWwoT2JqZWN0QWRkcmVzcyBhZGRyZXNz LCBjaGFyICpwcm92aWRlciwKKwkJCQkJCQkJCQlTZWNMYWJlbFN0bXQgKnN0bXQpOwogCiAjZW5k aWYJCQkJCQkJLyogRVZFTlRfVFJJR0dFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90 Y29wL2RkbF9kZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKaW5kZXgg MmI3NzU0YmZhYy4uNTgxYTQ3MGMwOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxf ZGVwYXJzZS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaApAQCAtMTIsMTEg KzEyLDEzIEBACiAjaWZuZGVmIERETF9ERVBBUlNFX0gKICNkZWZpbmUgRERMX0RFUEFSU0VfSAog CisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1ZGUgInRjb3AvZGVw YXJzZV91dGlsaXR5LmgiCiAKIGV4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChD b2xsZWN0ZWRDb21tYW5kICpjbWQsIGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJib3NlX21v ZGUpOwogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25i LCBjaGFyKiogb3duZXIpOwogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0 IGNoYXIgKm9iamlkZW50aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAogCQkJCQkJCQkgIERy b3BCZWhhdmlvciBiZWhhdmlvcik7CitleHRlcm4gY2hhciAqIGRlcGFyc2VfQWx0ZXJQdWJsaWNh dGlvbkRyb3BTdG10KFNRTERyb3BPYmplY3QgKm9iaik7CiAKICNlbmRpZgkJCQkJCQkvKiBERExf REVQQVJTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0 eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAppbmRleCA4N2E3NjFiYjNl Li5jY2UzYzA3ZmMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0 eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKQEAgLTMwLDYgKzMw LDcgQEAgdHlwZWRlZiBlbnVtIENvbGxlY3RlZENvbW1hbmRUeXBlCiAJU0NUX0FsdGVyRGVmYXVs dFByaXZpbGVnZXMsCiAJU0NUX0NyZWF0ZU9wQ2xhc3MsCiAJU0NUX0FsdGVyVFNDb25maWcsCisJ U0NUX1NlY3VyaXR5TGFiZWwsCiAJU0NUX0NyZWF0ZVRhYmxlQXMKIH0gQ29sbGVjdGVkQ29tbWFu ZFR5cGU7CiAKQEAgLTEwNSw2ICsxMDYsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQ29t bWFuZAogCQkJT2JqZWN0VHlwZQlvYmp0eXBlOwogCQl9CQkJZGVmcHJpdnM7CiAKKwkJLyogU0VD VVJJVFkgTEFCRUwgKi8KKwkJc3RydWN0CisJCXsKKwkJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsK KwkJCWNoYXIJCSAqcHJvdmlkZXI7CisJCX0JCQlzZWNsYWJlbDsKKwogCQkvKiBDUkVBVEUgVEFC TEUgQVMgKi8KIAkJc3RydWN0CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Fj bC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKaW5kZXggZjhlMTIzOGZhMi4uZjA1NTc4ZDMy MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNsLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvYWNsLmgKQEAgLTIwOSw2ICsyMDksOCBAQCBleHRlcm4gQWNsTW9kZSBhY2xtYXNrKGNv bnN0IEFjbCAqYWNsLCBPaWQgcm9sZWlkLCBPaWQgb3duZXJJZCwKIAkJCQkJICAgQWNsTW9kZSBt YXNrLCBBY2xNYXNrSG93IGhvdyk7CiBleHRlcm4gaW50CWFjbG1lbWJlcnMoY29uc3QgQWNsICph Y2wsIE9pZCAqKnJvbGVpZHMpOwogCitleHRlcm4gY29uc3QgY2hhciAqcHJpdmlsZWdlX3RvX3N0 cmluZyhBY2xNb2RlIHByaXZpbGVnZSk7CisKIGV4dGVybiBib29sIGhhc19wcml2c19vZl9yb2xl KE9pZCBtZW1iZXIsIE9pZCByb2xlKTsKIGV4dGVybiBib29sIG1lbWJlcl9jYW5fc2V0X3JvbGUo T2lkIG1lbWJlciwgT2lkIHJvbGUpOwogZXh0ZXJuIHZvaWQgY2hlY2tfY2FuX3NldF9yb2xlKE9p ZCBtZW1iZXIsIE9pZCByb2xlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbGNo a19pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsY2hrX2ludGVybmFsLmgKaW5kZXgg NTVhZjYyNGZiMy4uOTQ2NTQ1ZjUzZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYWNs Y2hrX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYWNsY2hrX2ludGVybmFsLmgK QEAgLTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlMaXN0CSAgICpncmFudGVlczsKIAli b29sCQlncmFudF9vcHRpb247CiAJRHJvcEJlaGF2aW9yIGJlaGF2aW9yOworCU9pZAkJCWdyYW50 b3JfdWlkOwogfSBJbnRlcm5hbEdyYW50OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL2J1aWx0aW5zLmggYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCmluZGV4IGM5MGMz MmJmZjEuLjQ4YjhiZmQ3OWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5z LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaApAQCAtMTIzLDYgKzEyMyw3IEBA IGV4dGVybiBEYXR1bSBudW1lcmljX2Zsb2F0OF9ub19vdmVyZmxvdyhQR19GVU5DVElPTl9BUkdT KTsKICNkZWZpbmUgRk9STUFUX1RZUEVfRk9SQ0VfUVVBTElGWQkweDA0CS8qIGZvcmNlIHF1YWxp ZmljYXRpb24gb2YgdHlwZSAqLwogI2RlZmluZSBGT1JNQVRfVFlQRV9JTlZBTElEX0FTX05VTEwJ MHgwOAkvKiBOVUxMIGlmIHVuZGVmaW5lZCAqLwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2V4 dGVuZGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwgYml0czE2IGZsYWdzKTsKK2V4dGVy biBjaGFyICpmb3JtYXRfcHJvY2VkdXJlX2FyZ3MoT2lkIHByb2NlZHVyZV9vaWQsIGJvb2wgZm9y Y2VfcXVhbGlmeSk7CiAKIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9iZShPaWQgdHlwZV9vaWQp OwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2JlX3F1YWxpZmllZChPaWQgdHlwZV9vaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91 dGlscy9ydWxldXRpbHMuaAppbmRleCA5YWRjNTg5MTczLi5iNmUyMGU3ZWU0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9y dWxldXRpbHMuaApAQCAtMTMsOSArMTMsMTIgQEAKICNpZm5kZWYgUlVMRVVUSUxTX0gKICNkZWZp bmUgUlVMRVVUSUxTX0gKIAorI2luY2x1ZGUgImFjY2Vzcy9odHVwLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKICNpbmNsdWRlICJu b2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV9ub2RlLmgiCiAKIHN0cnVjdCBQbGFuOwkJCQkJLyogYXZvaWQgaW5jbHVk aW5nIHBsYW5ub2Rlcy5oIGhlcmUgKi8KIHN0cnVjdCBQbGFubmVkU3RtdDsKQEAgLTIzLDcgKzI2 LDEwIEBAIHN0cnVjdCBQbGFubmVkU3RtdDsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9pbmRleGRl Zl9zdHJpbmcoT2lkIGluZGV4cmVsaWQpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9pbmRleGRlZl9j b2x1bW5zKE9pZCBpbmRleHJlbGlkLCBib29sIHByZXR0eSk7CitleHRlcm4gY2hhciAqcGdfZ2V0 X3RyaWdnZXJfd2hlbmNsYXVzZShGb3JtX3BnX3RyaWdnZXIgdHJpZ3JlYywKKwkJCQkJCQkJCSAg IE5vZGUgKndoZW5DbGF1c2UsIGJvb2wgcHJldHR5KTsKIGV4dGVybiBjaGFyICpwZ19nZXRfcXVl cnlkZWYoUXVlcnkgKnF1ZXJ5LCBib29sIHByZXR0eSk7CitleHRlcm4gY2hhciAqcGdfZ2V0X3Zp ZXdkZWZfc3RyaW5nKE9pZCB2aWV3b2lkKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0a2V5 ZGVmX2NvbHVtbnMoT2lkIHJlbGlkLCBib29sIHByZXR0eSk7CiBleHRlcm4gY2hhciAqcGdfZ2V0 X3BhcnRrZXlkZWZfc3RyaW5nKE9pZCByZWxpZCk7CkBAIC0zMSw2ICszNyw5IEBAIGV4dGVybiBj aGFyICpwZ19nZXRfcGFydGNvbnN0cmRlZl9zdHJpbmcoT2lkIHBhcnRpdGlvbklkLCBjaGFyICph bGlhc25hbWUpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X2NvbnN0cmFpbnRkZWZfY29tbWFuZChP aWQgY29uc3RyYWludElkKTsKIGV4dGVybiBjaGFyICpwZ19nZXRfY29uc3RyYWludGRlZl9zdHJp bmcoT2lkIGNvbnN0cmFpbnRJZCk7CitleHRlcm4gdm9pZCBwZ19nZXRfcnVsZWRlZl9kZXRhaWxl ZChEYXR1bSBldl9xdWFsLCBEYXR1bSBldl9hY3Rpb24sCisJCQkJCQkJCQljaGFyICoqd2hlcmVD bGF1c2UsIExpc3QgKiphY3Rpb25zKTsKKwogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZXhwcmVzc2lv bihOb2RlICpleHByLCBMaXN0ICpkcGNvbnRleHQsCiAJCQkJCQkJCWJvb2wgZm9yY2VwcmVmaXgs IGJvb2wgc2hvd2ltcGxpY2l0KTsKIGV4dGVybiBMaXN0ICpkZXBhcnNlX2NvbnRleHRfZm9yKGNv bnN0IGNoYXIgKmFsaWFzbmFtZSwgT2lkIHJlbGlkKTsKQEAgLTUyLDUgKzYxLDYgQEAgZXh0ZXJu IHZvaWQgZ2V0X29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9kYXRhdHlwZSwK IGV4dGVybiBjaGFyICpmbGF0dGVuX3JlbG9wdGlvbnMoT2lkIHJlbGlkKTsKIAogZXh0ZXJuIGNo YXIgKnBnX2dldF9zdGF0aXN0aWNzb2JqZGVmX3N0cmluZyhPaWQgc3RhdGV4dGlkKTsKK2V4dGVy biB2b2lkIHByaW50X2Z1bmN0aW9uX3NxbGJvZHkoU3RyaW5nSW5mbyBidWYsIEhlYXBUdXBsZSBw cm9jdHVwKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJVTEVVVElMU19IICovCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wc3FsLm91dAppbmRleCAxYzZmMzMwOTVjLi43MjJiMzkxNzNjIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTYyMjMsOSArNjIyMyw5IEBAIExpc3Qgb2Ygc2NoZW1hcwog KDAgcm93cykKIAogXGRScCAibm8uc3VjaC5wdWJsaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gTmFtZSB8IE93bmVyIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJs aWNhdGlvbnMKKyBOYW1lIHwgT3duZXIgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogKDAgcm93 cykKIAogXGRScyAibm8uc3VjaC5zdWJzY3JpcHRpb24iCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDdkODY5NzdiMjkuLmIyMzE3ZTc5YmUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC0zMCwyMCArMzAsMjAgQEAg RVJST1I6ICBjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiAuLi51Yl94 eHggV0lUSCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScsIHB1Ymxpc2hfdmku Li4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5hbWUgICAgICAgIHwg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgfCBmICAgICAg IHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAg ICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3Rw dWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCiAoMiByb3dzKQogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2RlZmF1bHQg U0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUnKTsKIFxkUnAKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJs aWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHBpYl9pbnNfdHJ1bmN0 IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZh dWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgyIHJvd3MpCiAKIC0t LSBhZGRpbmcgdGFibGVzCkBAIC04NywxMCArODcsMTAgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNz YWdlczsKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVi bGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAg ICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtOTksMjAg Kzk5LDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9w IHNjaGVtYSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRl c3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIAog LS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlv bgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xMjMsMTAgKzEyMywxMCBAQCBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYSBGT1IgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdCwgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JfdGJsX3NjaGVt YQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoK QEAgLTEzNSwxMCArMTM1LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUg YWJsZSB0byBhZGQgYSB0YWJsZSBvZiB0aGUgc2FtZSBzY2hlbWEgdG8gdGhlIHNjaGVtYSBwdWJs aWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIFRBQkxFIHB1 Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAt MTQ3LDEwICsxNDcsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBiZSBhYmxl IHRvIGRyb3AgdGhlIHRhYmxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBE Uk9QIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRh YmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE2MSwxMCAr MTYxLDEwIEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2Yg dGhlIHB1YmxpY2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1h IHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIApAQCAtMTg2LDEwICsxODYsMTAg QEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKIAogXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IHQgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIERST1AgVEFCTEUgdGVzdHB1Yl90 YmwyOwpAQCAtMjAxLDE5ICsyMDEsMTkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZP UiBUQUJMRSB0ZXN0cHViX3RibDM7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRB QkxFIE9OTFkgdGVzdHB1Yl90YmwzOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnAr IHRlc3RwdWIzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogICAgICJwdWJsaWMudGVz dHB1Yl90YmwzYSIKIAogXGRScCsgdGVzdHB1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0Ci0gICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDMiCiAKQEAgLTIzNCwxMCArMjM0LDEwIEBAIFVQREFURSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEg PSAxOwogLS0gb25seSBwYXJlbnQgaXMgbGlzdGVkIGFzIGJlaW5nIGluIHB1YmxpY2F0aW9uLCBu b3QgdGhlIHBhcnRpdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgQURE IFRBQkxFIHRlc3RwdWJfcGFydGVkOwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0 ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjUyLDEwICsyNTIsMTAgQEAg QUxURVIgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQgREVUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3BhcnRl ZDE7CiBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ycGFydGVkIFNFVCAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSB0cnVl KTsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl9wYXJ0ZWQiCiAKQEAgLTI4NCwxMCArMjg0LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVz dHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIgV0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBkIDwg NSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERM cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAi cHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChk IDwgNSkpCkBAIC0zMDAsMTAgKzMwMCwxMCBAQCBUYWJsZXM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAxMDAwIEFORCBl IDwgMjAwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJs MSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUgKChjIDw+ICd0ZXN0Jzo6dGV4 dCkgQU5EIChkIDwgNSkpCkBAIC0zMTksMTAgKzMxOSwxMCBAQCBQdWJsaWNhdGlvbnM6CiAKIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOwogXGRS cCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1Ymxp Yy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDEwMDApIEFORCAoZSA8IDIwMDApKQpAQCAt MzMwLDEwICszMzAsMTAgQEAgVGFibGVzOgogLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQg YWRkIHRlc3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNzaW9uKQogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAo ZSA+IDMwMCBBTkQgZSA8IDUwMCk7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRl c3RwdWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMzAwKSBBTkQgKGUgPCA1MDApKQogCkBAIC0zNjYs MTAgKzM2NiwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIE9O TFkgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2Vy dCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9zeW50YXgxCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0 cHViX3JmX3RibDMiIFdIRVJFIChlIDwgOTk5KQpAQCAtMzc5LDEwICszNzksMTAgQEAgU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c3ludGF4MiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3NjaGVtYTEudGVz dHB1Yl9yZl90Ymw1IFdIRVJFIChoIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwog UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50 YXgyCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3RwdWJfcmZfc2NoZW1h MS50ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNDk3LDEwICs0OTcsMTAgQEAg Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJf cmZfc2NoZW1hMjsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRVMgSU4gU0NI RU1BIHRlc3RwdWJfcmZfc2NoZW1hMiwgVEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJf cmZfdGJsNiBXSEVSRSAoaSA8IDk5KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJw KyB0ZXN0cHViNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjYKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi NgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRh YmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAidGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiIg V0hFUkUgKGkgPCA5OSkKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC03MTQsMTAgKzcxNCwxMCBA QCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQsIHRydW5jYXRlJyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl90YWJsZV9pbnMgQUREIFRBQkxFIHRlc3RwdWJfdGJsNSAoYSk7CQkt LSBvawogXGRScCsgdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3RibDUiIChhKQogCkBAIC04OTEsMTAgKzg5MSwxMCBAQCBDUkVBVEUgVEFCTEUgdGVz dHB1Yl90YmxfYm90aF9maWx0ZXJzIChhIGludCwgYiBpbnQsIGMgaW50LCBQUklNQVJZIEtFWSAo YSxjKSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgUkVQTElDQSBJREVO VElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnNfcGtleTsKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3Ro X2ZpbHRlcnMgKGEsYykgV0hFUkUgKGMgIT0gMSk7CiBcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVy cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2JvdGhfZmls dGVycworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyIg KGEsIGMpIFdIRVJFIChjIDw+IDEpCiAKQEAgLTEwOTksMTAgKzEwOTksMTAgQEAgRVJST1I6ICBy ZWxhdGlvbiAidGVzdHB1Yl90YmwxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAi dGVzdHB1Yl9mb3J0YmwKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRibCBGT1IgVEFC TEUgdGVzdHB1Yl90YmwxOwogRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YmwiIGFs cmVhZHkgZXhpc3RzCiBcZFJwKyB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rl c3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTE0MCwxMCAr MTE0MCwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3RwdWJfZm9ydGJsIgogCiBcZFJwKyB0 ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBERExzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAg ICAgInB1YmxpYy50ZXN0cHViX3RibDEiCkBAIC0xMjIxLDEwICsxMjIxLDEwIEBAIFJFVk9LRSBD UkVBVEUgT04gREFUQUJBU0UgcmVncmVzc2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl cjI7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcGFydGVkOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDE7 CiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9kZWZhdWx0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBmYWlsIC0gbXVzdCBiZSBv d25lciBvZiBwdWJsaWNhdGlvbgpAQCAtMTIzNCwyMCArMTIzNCwyMCBAQCBFUlJPUjogIG11c3Qg YmUgb3duZXIgb2YgcHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0CiBSRVNFVCBST0xFOwogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFJFTkFNRSBUTyB0ZXN0cHViX2ZvbzsKIFxk UnAgdGVzdHB1Yl9mb28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotICAgIE5hbWUgICAgIHwgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28g fCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0 aW9ucworICAgIE5hbWUgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9vIHwg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJv dykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9vIFJFTkFNRSBUTyB0ZXN0cHViX2RlZmF1bHQ7CiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgT1dORVIgVE8gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy MjsKIFxkUnAgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gYWRk aW5nIHNjaGVtYXMgYW5kIHRhYmxlcwpAQCAtMTI2MywxOSArMTI2MywxOSBAQCBDUkVBVEUgVEFC TEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiKGlkIGludCk7CiBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9y c2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2Zv cnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERE THMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QxLCBwdWJfdGVzdDIsIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90 ZXN0MiIKQEAgLTEyODksNDQgKzEyODksNDQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 X2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSAiQ1VSUkVOVF9TQ0hFTUEiLCBDVVIKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSAiQ1VSUkVOVF9TQ0hF TUEiLiJDVVJSRU5UX1NDSEVNQSI7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Ymxp YyIKIAogXGRScCsgdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjVfZm9yc2NoZW1hCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIK IAogXGRScCsgdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWI2X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgIkNVUlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFi bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJs ZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRh YmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAg LTEzNjAsMTAgKzEzNjAsMTAgQEAgRVJST1I6ICBzY2hlbWEgInRlc3RwdWJfdmlldyIgZG9lcyBu b3QgZXhpc3QKIC0tIGRyb3BwaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5n ZSBpbiBwdWJsaWNhdGlvbgogRFJPUCBTQ0hFTUEgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg RERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAg ICAicHViX3Rlc3QyIgpAQCAtMTM3MSwyMCArMTM3MSwyMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFz OgogLS0gcmVuYW1pbmcgdGhlIHNjaGVtYSBzaG91bGQgcmVmbGVjdCB0aGUgY2hhbmdlIGluIHB1 YmxpY2F0aW9uCiBBTFRFUiBTQ0hFTUEgcHViX3Rlc3QxIFJFTkFNRSB0byBwdWJfdGVzdDFfcmVu YW1lZDsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJwdWJfdGVzdDFfcmVuYW1lZCIKICAgICAicHViX3Rlc3QyIgogCiBBTFRFUiBTQ0hF TUEgcHViX3Rlc3QxX3JlbmFtZWQgUkVOQU1FIHRvIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi Ml9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxs IERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAg ICAgInB1Yl90ZXN0MiIKQEAgLTEzOTIsMTAgKzEzOTIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rl c3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDA0LDEwICsxNDA0LDEwIEBAIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxF UyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhp c3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3Qy IgpAQCAtMTQxNiwxMCArMTQxNiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MTsKIEVSUk9SOiAgc2NoZW1hICJwdWJfdGVzdDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViMV9mb3JzY2hlbWEiCiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIi CkBAIC0xNDI3LDEwICsxNDI3LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBw dWJsaWNhdGlvbiBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIERST1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0x NDM4LDEwICsxNDM4LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIEVS Uk9SOiAgdGFibGVzIGZyb20gc2NoZW1hICJwdWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUg cHVibGljYXRpb24KIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTE0NDksMjkgKzE0NDksMjkgQEAgVGFibGVz IGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9Q IFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJu b25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIAogLS0gZHJv cCBhbGwgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1Ag VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgogKDEgcm93KQogCiAtLSBhbHRlciBwdWJsaWNhdGlvbiBzZXQgbXVsdGlwbGUgc2NoZW1hCiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QxLCBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0x NDgwLDEwICsxNDgwLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3Nj aGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhpc3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlz dAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ5MiwxMCArMTQ5MiwxMCBAQCBU YWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVtb3ZpbmcgdGhlIGR1cGxpY2F0ZSBzY2hlbWFzCiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QxLCBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNTc0LDE4ICsxNTc0LDE4 IEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViM19mb3JzY2hlbWE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIzX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgRERMcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJvdykKIAogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjNfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRl c3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIERETHMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dDEiCiAKQEAgLTE1OTUsMjAgKzE1OTUsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf Zm9yc2NoZW1hX2ZvcnRhYmxlIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgVEEKIENS RUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYSBGT1IgVEFCTEUgcHVi X3Rlc3QyLnRibDEsIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogUkVTRVQgY2xpZW50X21p bl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0 YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBERExzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hl bWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIERETHMgfCBU YWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0Mi50YmwxIgogVGFibGVzIGZyb20gc2NoZW1h czoKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0001-Deparser-for-Table-DDL-commands-and-exten-2023_03_30.patch" Content-Description: 0001-Deparser-for-Table-DDL-commands-and-exten-2023_03_30.patch Content-Disposition: attachment; filename="0001-Deparser-for-Table-DDL-commands-and-exten-2023_03_30.patch"; size=161226; creation-date="Thu, 30 Mar 2023 06:36:10 GMT"; modification-date="Thu, 30 Mar 2023 06:37:06 GMT" Content-Transfer-Encoding: base64 RnJvbSAzMmIyOTc4YWI4MmI0ZDBhMGQwMTY2OTEyNTNiNmMyM2QyZjMwNjc1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYW5nIFdlaSA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0 ZTogVGh1LCAzMCBNYXIgMjAyMyAxMzo1MDoyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMS81XSBE ZXBhcnNlciBmb3IgVGFibGUgRERMIGNvbW1hbmRzIGFuZCBleHRlbmRpbmcgZXZlbnQKIHRyaWdn ZXJzCgpUaGlzIHBhdGNoIGNvbnN0cnVjdHMgSlNPTiBibG9icyByZXByZXNlbnRpbmcgRERMIGNv bW1hbmRzLCB3aGljaCBjYW4KbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5n cyBieSB3ZWxsLWRlZmluZWQgc3ByaW50Zi1saWtlCmV4cGFuc2lvbi4gVGhlc2UgSlNPTiBvYmpl Y3RzIGFyZSBpbnRlbmRlZCB0byBhbGxvdyBmb3IgbWFjaGluZS1lZGl0aW5nIG9mCnRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgoKTXVj aCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZy b20gc3lzdGVtCmNhdGFsb2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBp dCBpcyBpbXBvc3NpYmxlIHRvIHJlbGlhYmx5CmNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBj b21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9wYXRoCmV0YykgbG9va2lu ZyBvbmx5IGF0IHRoZSBwYXJzZSBub2RlLgoKVGhpcyBwcm92aWRlcyBhIGJhc2UgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gb2YgRERMIHN0YXRlbWVudHMuIEN1cnJlbnRseSwKdGhlIHBhdGNoIGhh cyBzdXBwb3J0IGZvcjoKCkNSRUFURS9BTFRFUi9EUk9QIFRBQkxFIC0tIE5vdGUgIzEsIE5vdGUg IzIKCk5vdGU6IEZvciBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiwgd2UgaGF2ZW4ndCBhZGRlZCBl eHRyYSBsb2dpYyBvbgp0aGUgc3Vic2NyaWJlciB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhl IHRhYmxlIG9uIHRoZSBwdWJsaXNoZXIgaXMgYSBQQVJUSVRJT05FRApUQUJMRSB3aGlsZSB0aGUg dGFyZ2V0IHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgaXMgYSBOT1JNQUwgdGFibGUuIFdl IHdpbGwKcmVzZWFyY2ggdGhpcyBtb3JlIGFuZCBpbXByb3ZlIGl0IGxhdGVyLgotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyAgICAgIHwgICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf ZGVwYXJzZS5jICAgfCAzMzY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9kZGxfanNvbi5jICAgICAgfCAgNzgwICsrKysrKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgIDM1MCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21l c29uLmJ1aWxkICAgICB8ICAgIDIgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAg ICAgIHwgICA0MyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgfCAgIDEw ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICB8ICAxMDkgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2Zvcm1hdF90eXBlLmMgIHwgICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jICAgIHwgICAzMSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvZXZ0Y2FjaGUu YyAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgfCAgICA3 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCB8ICAgNTAgKy0KIHNyYy9p bmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICB8ICAgIDkgKwogc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBh cnNlLmggICAgICAgfCAgIDIyICsKIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5Lmgg ICB8ICAgMTIgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oICAgICAgICAgICB8ICAgIDIg Kwogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaCAgICAgICAgIHwgICAgMSArCiBzcmMvaW5j bHVkZS91dGlscy9ldnRjYWNoZS5oICAgICAgICAgfCAgICAzICstCiBzcmMvaW5jbHVkZS91dGls cy9ydWxldXRpbHMuaCAgICAgICAgfCAgICA5ICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICB8ICAgIDQgKwogMjQgZmlsZXMgY2hhbmdlZCwgNDc2NiBpbnNlcnRpb25zKCsp LCA2NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxfZGVwYXJzZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMv ZGRsX2pzb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFy c2UuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNDhmNzM0OGY5MS4uMTcxZGZiMjgwMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvTWFrZWZpbGUKQEAgLTI5LDYgKzI5LDggQEAgT0JKUyA9IFwKIAljb3B5dG8ubyBc CiAJY3JlYXRlYXMubyBcCiAJZGJjb21tYW5kcy5vIFwKKwlkZGxfZGVwYXJzZS5vIFwKKwlkZGxf anNvbi5vIFwKIAlkZWZpbmUubyBcCiAJZGlzY2FyZC5vIFwKIAlkcm9wY21kcy5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCmluZGV4IGU5MTkyMGNhMTQuLmE3YjIyY2I1ZGIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90b2FzdGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L2NyZWF0ZWFzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCkBAIC0xNDMsNiArMTQ0LDE1IEBAIGNyZWF0 ZV9jdGFzX2ludGVybmFsKExpc3QgKmF0dHJMaXN0LCBJbnRvQ2xhdXNlICppbnRvKQogCQlTdG9y ZVZpZXdRdWVyeShpbnRvUmVsYXRpb25BZGRyLm9iamVjdElkLCBxdWVyeSwgZmFsc2UpOwogCQlD b21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBGaXJl IHRoZSB0cmlnZ2VyIGZvciB0YWJsZV9pbml0X3dyaXRlIGFmdGVyIGNyZWF0aW5nIHRoZSB0YWJs ZSBzbworCQkgKiB0aGF0IHdlIGNhbiBhY2Nlc3MgdGhlIGNhdGFsb2cgaW5mbyBhYm91dCB0aGUg bmV3bHkgY3JlYXRlZCB0YWJsZQorCQkgKiBpbiB0aGUgdHJpZ2dlciBmdW5jdGlvbi4KKwkJICov CisJCUV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlKChOb2RlICopIGNyZWF0ZSwgaW50b1JlbGF0 aW9uQWRkcik7CisJfQogCiAJcmV0dXJuIGludG9SZWxhdGlvbkFkZHI7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZGRsX2RlcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45 MDk4MjIwYTljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2Rl cGFyc2UuYwpAQCAtMCwwICsxLDMzNjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRk bF9kZXBhcnNlLmMKKyAqCSAgRnVuY3Rpb25zIHRvIGNvbnZlcnQgdXRpbGl0eSBjb21tYW5kcyB0 byBtYWNoaW5lLXBhcnNlYWJsZQorICoJICByZXByZXNlbnRhdGlvbgorICoKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBOT1RFUworICoKKyAqIFRoaXMgaXMgaW50ZW5k ZWQgdG8gcHJvdmlkZSBKU09OIGJsb2JzIHJlcHJlc2VudGluZyBEREwgY29tbWFuZHMsIHdoaWNo IGNhbgorICogbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5ncyBieSB3ZWxs LWRlZmluZWQgc3ByaW50Zi1saWtlCisgKiBleHBhbnNpb24uICBUaGVzZSBKU09OIG9iamVjdHMg YXJlIGludGVuZGVkIHRvIGFsbG93IGZvciBtYWNoaW5lLWVkaXRpbmcgb2YKKyAqIHRoZSBjb21t YW5kcywgYnkgcmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgorICoK KyAqIE11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBvdXRwdXQgYmxvYiBhY3R1YWxseSBj b21lcyBmcm9tIHN5c3RlbQorICogY2F0YWxvZ3MsIG5vdCBmcm9tIHRoZSBjb21tYW5kIHBhcnNl IG5vZGUsIGFzIGl0IGlzIGltcG9zc2libGUgdG8gcmVsaWFibHkKKyAqIGNvbnN0cnVjdCBhIGZ1 bGx5LXNwZWNpZmllZCBjb21tYW5kIChpLmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9w YXRoCisgKiBldGMpIGxvb2tpbmcgb25seSBhdCB0aGUgcGFyc2Ugbm9kZS4KKyAqCisgKiBEZXBh cnNlIG9iamVjdCB0cmVlIGlzIGNyZWF0ZWQgYnkgdXNpbmc6CisgKiAJYSkgbmV3X29ianRyZWUo Imtub3cgY29udGVudHMiKSB3aGVyZSB0aGUgY29tcGxldGUgdHJlZSBjb250ZW50IGlzIGtub3du IG9yCisgKiAgICAgdGhlIGluaXRpYWwgdHJlZSBjb250ZW50IGlzIGtub3duLgorICogCWIpIG5l d19vYmp0cmVlKCIiKSBmb3IgdGhlIHN5bnRheCB3aGVyZSB0aGUgb2JqZWN0IHRyZWUgd2lsbCBi ZSBkZXJpdmVkCisgKiAgICAgYmFzZWQgb24gc29tZSBjb25kaXRpb25hbCBjaGVja3MuCisgKiAJ YykgbmV3X29ianRyZWVfVkEgd2hlcmUgdGhlIGNvbXBsZXRlIHRyZWUgY2FuIGJlIGRlcml2ZWQg dXNpbmcgc29tZSBmaXhlZAorICogICAgIGNvbnRlbnQgb3IgYnkgdXNpbmcgdGhlIGluaXRpYWwg dHJlZSBjb250ZW50IGFsb25nIHdpdGggc29tZSB2YXJpYWJsZQorICogICAgIGFyZ3VtZW50cy4K KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVw YXJzZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5o IgorCisjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9u LmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19h Z2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfY2FzdC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb252 ZXJzaW9uLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZXBlbmQuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX2V4dGVuc2lvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9kYXRhX3dy YXBwZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fc2VydmVyLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcmV3cml0ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVuY2UuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry YW5zZm9ybS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHNfY29uZmlnLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ190c19kaWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190c19wYXJzZXIuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3RzX3RlbXBsYXRlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ191c2VyX21hcHBpbmcuaCIKKyNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgorI2lu Y2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24u aCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNs dWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV90 eXBlLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInRj b3AvZGRsX2RlcGFyc2UuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAi dXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9ydWxl dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisvKiBFc3RpbWF0ZWQgbGVu Z3RoIG9mIHRoZSBnZW5lcmF0ZWQganNvbmIgc3RyaW5nICovCisjZGVmaW5lIEpTT05CX0VTVElN QVRFRF9MRU4gMTI4CisKKy8qCisgKiBCZWZvcmUgdGhleSBhcmUgdHVybmVkIGludG8gSlNPTkIg cmVwcmVzZW50YXRpb24sIGVhY2ggY29tbWFuZCBpcworICogcmVwcmVzZW50ZWQgYXMgYW4gb2Jq ZWN0IHRyZWUsIHVzaW5nIHRoZSBzdHJ1Y3RzIGJlbG93LgorICovCit0eXBlZGVmIGVudW0KK3sK KwlPYmpUeXBlTnVsbCwKKwlPYmpUeXBlQm9vbCwKKwlPYmpUeXBlU3RyaW5nLAorCU9ialR5cGVB cnJheSwKKwlPYmpUeXBlSW50ZWdlciwKKwlPYmpUeXBlRmxvYXQsCisJT2JqVHlwZU9iamVjdAor fSBPYmpUeXBlOworCisvKgorICogUmVwcmVzZW50IHRoZSBjb21tYW5kIGFzIGFuIG9iamVjdCB0 cmVlLgorICovCit0eXBlZGVmIHN0cnVjdCBPYmpUcmVlCit7CisJc2xpc3RfaGVhZAlwYXJhbXM7 CQkJLyogT2JqZWN0IHRyZWUgcGFyYW1ldGVycyAqLworCWludAkJCW51bVBhcmFtczsJCS8qIE51 bWJlciBvZiBwYXJhbWV0ZXJzIGluIHRoZSBvYmplY3QgdHJlZSAqLworCVN0cmluZ0luZm8JZm10 aW5mbzsJCS8qIEZvcm1hdCBzdHJpbmcgb2YgdGhlIE9ialRyZWUgKi8KKwlib29sCQlwcmVzZW50 OwkJLyogSW5kaWNhdGVzIGlmIGJvb2xlYW4gdmFsdWUgc2hvdWxkIGJlIHN0b3JlZCAqLworfSBP YmpUcmVlOworCisvKgorICogQW4gZWxlbWVudCBvZiBhbiBvYmplY3QgdHJlZSAoT2JqVHJlZSku CisgKi8KK3R5cGVkZWYgc3RydWN0IE9iakVsZW0KK3sKKwljaGFyCSAgICpuYW1lOwkJCS8qIE5h bWUgb2Ygb2JqZWN0IGVsZW1lbnQgKi8KKwlPYmpUeXBlCQlvYmp0eXBlOwkJLyogT2JqZWN0IHR5 cGUgKi8KKworCXVuaW9uCisJeworCQlib29sCQlib29sZWFuOworCQljaGFyCSAgICpzdHJpbmc7 CisJCWludDY0CQlpbnRlZ2VyOworCQlmbG9hdDgJCWZsdDsKKwkJT2JqVHJlZSAgICAqb2JqZWN0 OworCQlMaXN0CSAgICphcnJheTsKKwl9CQkJdmFsdWU7CQkJLyogU3RvcmUgdGhlIG9iamVjdCB2 YWx1ZSBiYXNlZCBvbiB0aGUgb2JqZWN0CisJCQkJCQkJCSAqIHR5cGUgKi8KKwlzbGlzdF9ub2Rl CW5vZGU7CQkJLyogVXNlZCBpbiBjb252ZXJ0aW5nIGJhY2sgdG8gT2JqRWxlbQorCQkJCQkJCQkg KiBzdHJ1Y3R1cmUgKi8KK30gT2JqRWxlbTsKKworLyoKKyAqIFJlZHVjZSBzb21lIHVubmVjZXNz YXJ5IHN0cmluZ3MgZnJvbSB0aGUgb3V0cHV0IGpzb24gd2hlbiB2ZXJib3NlCisgKiBhbmQgInBy ZXNlbnQiIG1lbWJlciBpcyBmYWxzZS4gVGhpcyBtZWFucyB0aGVzZSBzdHJpbmdzIHdvbid0IGJl IG1lcmdlZCBpbnRvCisgKiB0aGUgbGFzdCBEREwgY29tbWFuZC4KKyAqLworYm9vbAkJdmVyYm9z ZSA9IHRydWU7CisKK3N0YXRpYyB2b2lkIGFwcGVuZF9hcnJheV9vYmplY3QoT2JqVHJlZSAqdHJl ZSwgY2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpOworc3RhdGljIHZvaWQgYXBwZW5kX2Jvb2xf b2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFsdWUpOworc3RhdGlj IHZvaWQgYXBwZW5kX251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpOwor c3RhdGljIHZvaWQgYXBwZW5kX29iamVjdF9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3Vi X2ZtdCwgT2JqVHJlZSAqdmFsdWUpOworc3RhdGljIGNoYXIgKmFwcGVuZF9vYmplY3RfdG9fZm9y bWF0X3N0cmluZyhPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10KTsKK3N0YXRpYyB2b2lkIGFw cGVuZF9wcmVtYWRlX29iamVjdChPYmpUcmVlICp0cmVlLCBPYmpFbGVtICplbGVtKTsKK3N0YXRp YyB2b2lkIGFwcGVuZF9zdHJpbmdfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQs IGNoYXIgKm5hbWUsCisJCQkJCQkJCSBjaGFyICp2YWx1ZSk7CitzdGF0aWMgdm9pZCBmb3JtYXRf dHlwZV9kZXRhaWxlZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QsCisJCQkJCQkJCSBPaWQg Km5zcGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJCQkJCSBib29s ICp0eXBhcnJheSk7CitzdGF0aWMgT2JqRWxlbSAqbmV3X29iamVjdChPYmpUeXBlIHR5cGUsIGNo YXIgKm5hbWUpOworc3RhdGljIE9ialRyZWUgKm5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChP aWQgY2xhc3NJZCwgT2lkIG9iamVjdElkKTsKK3N0YXRpYyBPYmpFbGVtICpuZXdfb2JqZWN0X29i amVjdChPYmpUcmVlICp2YWx1ZSk7CitzdGF0aWMgT2JqVHJlZSAqbmV3X29ianRyZWVfVkEoY2hh ciAqZm10LCBpbnQgbnVtb2JqcywuLi4pOworc3RhdGljIEpzb25iVmFsdWUgKm9ianRyZWVfdG9f anNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUpOworc3RhdGlj IGNoYXIgKlJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIg YXR0bm8sCisJCQkJCQkJCQkgIExpc3QgKmRwY29udGV4dCwgTGlzdCAqKmV4cHJzKTsKKworc3Rh dGljIE9ialRyZWUgKmRlcGFyc2VfQ29sdW1uRGVmKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICpk cGNvbnRleHQsIGJvb2wgY29tcG9zaXRlLAorCQkJCQkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBi b29sIGlzX2FsdGVyLCBMaXN0ICoqZXhwcnMpOworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfQ29s dW1uSWRlbnRpdHkoT2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3RhYmxl KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX0NvbHVtblNldE9wdGlvbnMoQWx0ZXJUYWJsZUNt ZCAqc3ViY21kKTsKKworc3RhdGljIE9ialRyZWUgKmRlcGFyc2VfRGVmRWxlbShEZWZFbGVtICpl bGVtLCBib29sIGlzX3Jlc2V0KTsKK3N0YXRpYyBPYmpUcmVlICpkZXBhcnNlX09uQ29tbWl0Q2xh dXNlKE9uQ29tbWl0QWN0aW9uIG9wdGlvbik7CitzdGF0aWMgT2JqVHJlZSAqZGVwYXJzZV9SZWxT ZXRPcHRpb25zKEFsdGVyVGFibGVDbWQgKnN1YmNtZCk7CisKK3N0YXRpYyBpbmxpbmUgT2JqRWxl bSAqZGVwYXJzZV9TZXFfQ2FjaGUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVy X3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfQ3ljbGUoRm9ybV9w Z19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2Jq RWxlbSAqZGVwYXJzZV9TZXFfSW5jcmVtZW50QnkoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBi b29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWlu dmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRp YyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJzZV9TZXFfTWF4dmFsdWUoRm9ybV9wZ19zZXF1ZW5jZSBz ZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVwYXJz ZV9TZXFfUmVzdGFydChpbnQ2NCBsYXN0X3ZhbHVlKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAq ZGVwYXJzZV9TZXFfU3RhcnR3aXRoKEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRl cl90YWJsZSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfU2VxX0FzKEZvcm1fcGdf c2VxdWVuY2Ugc2VxZGF0YSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9T dG9yYWdlKEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVw YXJzZV9UeXBlX1JlY2VpdmUoRm9ybV9wZ190eXBlIHR5cEZvcm0pOworc3RhdGljIGlubGluZSBP YmpFbGVtICpkZXBhcnNlX1R5cGVfU2VuZChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CitzdGF0aWMg aW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9UeXBtb2RfSW4oRm9ybV9wZ190eXBlIHR5cEZv cm0pOworc3RhdGljIGlubGluZSBPYmpFbGVtICpkZXBhcnNlX1R5cGVfVHlwbW9kX091dChGb3Jt X3BnX3R5cGUgdHlwRm9ybSk7CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKmRlcGFyc2VfVHlwZV9B bmFseXplKEZvcm1fcGdfdHlwZSB0eXBGb3JtKTsKK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqZGVw YXJzZV9UeXBlX1N1YnNjcmlwdChGb3JtX3BnX3R5cGUgdHlwRm9ybSk7CisKK3N0YXRpYyBMaXN0 ICpkZXBhcnNlX0luaFJlbGF0aW9ucyhPaWQgb2JqZWN0SWQpOworc3RhdGljIExpc3QgKmRlcGFy c2VfVGFibGVFbGVtZW50cyhSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqdGFibGVFbGVtZW50cywg TGlzdCAqZHBjb250ZXh0LAorCQkJCQkJCQkgICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0ZSk7 CisKKy8qCisgKiBBcHBlbmQgcHJlc2VudCBhcyBmYWxzZSB0byBhIHRyZWUuCisgKi8KK3N0YXRp YyB2b2lkCithcHBlbmRfbm90X3ByZXNlbnQoT2JqVHJlZSAqdHJlZSkKK3sKKwlhcHBlbmRfYm9v bF9vYmplY3QodHJlZSwgInByZXNlbnQiLCBmYWxzZSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4g YXJyYXkgcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9hcnJh eV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCwgTGlzdCAqYXJyYXkpCit7CisJ T2JqRWxlbSAgICAqcGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWU7CisKKwlBc3NlcnQoc3Vi X2ZtdCk7CisKKwlpZiAobGlzdF9sZW5ndGgoYXJyYXkpID09IDApCisJCXJldHVybjsKKworCWlm ICghdmVyYm9zZSkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFJlbW92ZSBlbGVtZW50 cyB3aGVyZSBwcmVzZW50IGZsYWcgaXMgZmFsc2UgKi8KKwkJZm9yZWFjaChsYywgYXJyYXkpCisJ CXsKKwkJCU9iakVsZW0gICAgKmVsZW0gPSAoT2JqRWxlbSAqKSBsZmlyc3QobGMpOworCisJCQlB c3NlcnQoZWxlbS0+b2JqdHlwZSA9PSBPYmpUeXBlT2JqZWN0IHx8CisJCQkJICAgZWxlbS0+b2Jq dHlwZSA9PSBPYmpUeXBlU3RyaW5nKTsKKworCQkJaWYgKCFlbGVtLT52YWx1ZS5vYmplY3QtPnBy ZXNlbnQgJiYKKwkJCQllbGVtLT5vYmp0eXBlID09IE9ialR5cGVPYmplY3QpCisJCQkJYXJyYXkg PSBmb3JlYWNoX2RlbGV0ZV9jdXJyZW50KGFycmF5LCBsYyk7CisJCX0KKworCX0KKworCS8qIENo ZWNrIGZvciBlbXB0eSBsaXN0IGFmdGVyIHJlbW92aW5nIGVsZW1lbnRzICovCisJaWYgKGxpc3Rf bGVuZ3RoKGFycmF5KSA9PSAwKQorCQlyZXR1cm47CisKKwlvYmplY3RfbmFtZSA9IGFwcGVuZF9v YmplY3RfdG9fZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJfZm10KTsKKworCXBhcmFtID0gbmV3X29i amVjdChPYmpUeXBlQXJyYXksIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+dmFsdWUuYXJyYXkgPSBh cnJheTsKKwlhcHBlbmRfcHJlbWFkZV9vYmplY3QodHJlZSwgcGFyYW0pOworfQorCisvKgorICog QXBwZW5kIGEgYm9vbGVhbiBwYXJhbWV0ZXIgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAor YXBwZW5kX2Jvb2xfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQsIGJvb2wgdmFs dWUpCit7CisJT2JqRWxlbSAgICAqcGFyYW07CisJY2hhcgkgICAqb2JqZWN0X25hbWUgPSBzdWJf Zm10OworCWJvb2wJCWlzX3ByZXNlbnRfZmxhZyA9IGZhbHNlOworCisJQXNzZXJ0KHN1Yl9mbXQp OworCisJLyoKKwkgKiBDaGVjayBpZiB0aGUgZm9ybWF0IHN0cmluZyBpcyAncHJlc2VudCcgYW5k IGlmIHllcywgc3RvcmUgdGhlIGJvb2xlYW4KKwkgKiB2YWx1ZQorCSAqLworCWlmIChzdHJjbXAo c3ViX2ZtdCwgInByZXNlbnQiKSA9PSAwKQorCXsKKwkJaXNfcHJlc2VudF9mbGFnID0gdHJ1ZTsK KwkJdHJlZS0+cHJlc2VudCA9IHZhbHVlOworCX0KKworCWlmICghaXNfcHJlc2VudF9mbGFnKQor CQlvYmplY3RfbmFtZSA9IGFwcGVuZF9vYmplY3RfdG9fZm9ybWF0X3N0cmluZyh0cmVlLCBzdWJf Zm10KTsKKworCXBhcmFtID0gbmV3X29iamVjdChPYmpUeXBlQm9vbCwgb2JqZWN0X25hbWUpOwor CXBhcmFtLT52YWx1ZS5ib29sZWFuID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRy ZWUsIHBhcmFtKTsKK30KKworLyoKKyAqIEFwcGVuZCB0aGUgaW5wdXQgZm9ybWF0IHN0cmluZyB0 byB0aGUgT2JqVHJlZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGVuZF9mb3JtYXRfc3RyaW5nKE9i alRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpCit7CisJaW50CQkJbGVuOworCWNoYXIJICAgKmZt dDsKKworCWlmICh0cmVlLT5mbXRpbmZvID09IE5VTEwpCisJCXJldHVybjsKKworCWZtdCA9IHRy ZWUtPmZtdGluZm8tPmRhdGE7CisJbGVuID0gdHJlZS0+Zm10aW5mby0+bGVuOworCisJLyogQWRk IGEgc2VwYXJhdG9yIGlmIG5lY2Vzc2FyeSAqLworCWlmIChsZW4gPiAwICYmIGZtdFtsZW4gLSAx XSAhPSAnICcpCisJCWFwcGVuZFN0cmluZ0luZm9TcGFjZXModHJlZS0+Zm10aW5mbywgMSk7CisK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKHRyZWUtPmZtdGluZm8sIHN1Yl9mbXQpOworfQorCisv KgorICogQXBwZW5kIGEgTlVMTCBvYmplY3QgdG8gYSB0cmVlLgorICovCitzdGF0aWMgdm9pZAor YXBwZW5kX251bGxfb2JqZWN0KE9ialRyZWUgKnRyZWUsIGNoYXIgKnN1Yl9mbXQpCit7CisJY2hh cgkgICAqb2JqZWN0X25hbWU7CisKKwlBc3NlcnQoc3ViX2ZtdCk7CisKKwlpZiAoIXZlcmJvc2Up CisJCXJldHVybjsKKworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3Ry aW5nKHRyZWUsIHN1Yl9mbXQpOworCisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIG5ld19v YmplY3QoT2JqVHlwZU51bGwsIG9iamVjdF9uYW1lKSk7Cit9CisKKy8qCisgKiBBcHBlbmQgYW4g b2JqZWN0IHBhcmFtZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfb2Jq ZWN0X29iamVjdChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBPYmpUcmVlICp2YWx1ZSkK K3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKwljaGFyCSAgICpvYmplY3RfbmFtZTsKKworCUFzc2Vy dChzdWJfZm10KTsKKworCWlmICghdmVyYm9zZSAmJiAhdmFsdWUtPnByZXNlbnQpCisJCXJldHVy bjsKKworCW9iamVjdF9uYW1lID0gYXBwZW5kX29iamVjdF90b19mb3JtYXRfc3RyaW5nKHRyZWUs IHN1Yl9mbXQpOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIG9iamVjdF9u YW1lKTsKKwlwYXJhbS0+dmFsdWUub2JqZWN0ID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2Jq ZWN0KHRyZWUsIHBhcmFtKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgb2JqZWN0IG5hbWUgd2hp Y2ggaXMgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0ICIqJXtuYW1lWzouXX0qIgorICogc3R5bGUg c3RyaW5nLiBBbmQgYXBwZW5kIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nIHRvIHRoZSBPYmpUcmVl LgorICovCitzdGF0aWMgY2hhciAqCithcHBlbmRfb2JqZWN0X3RvX2Zvcm1hdF9zdHJpbmcoT2Jq VHJlZSAqdHJlZSwgY2hhciAqc3ViX2ZtdCkKK3sKKwlTdHJpbmdJbmZvRGF0YSBvYmplY3RfbmFt ZTsKKwljb25zdCBjaGFyICplbmRfcHRyLCAqc3RhcnRfcHRyOworCWludCAgICAgICAgIGxlbmd0 aDsKKwljaGFyICAgICAgICAqdG1wX3N0cjsKKworCWlmIChzdWJfZm10ID09IE5VTEwgfHwgdHJl ZS0+Zm10aW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gc3ViX2ZtdDsKKworCWluaXRTdHJpbmdJbmZv KCZvYmplY3RfbmFtZSk7CisKKwlzdGFydF9wdHIgPSBzdHJjaHIoc3ViX2ZtdCwgJ3snKTsKKwll bmRfcHRyID0gc3RyY2hyKHN1Yl9mbXQsICc6Jyk7CisJaWYgKGVuZF9wdHIgPT0gTlVMTCkKKwkJ ZW5kX3B0ciA9IHN0cmNocihzdWJfZm10LCAnfScpOworCisJaWYgKHN0YXJ0X3B0ciAhPSBOVUxM ICYmIGVuZF9wdHIgIT0gTlVMTCkKKwl7CisJCWxlbmd0aCA9IGVuZF9wdHIgLSBzdGFydF9wdHIg LSAxOworCQl0bXBfc3RyID0gKGNoYXIgKikgcGFsbG9jKGxlbmd0aCArIDEpOworCQlzdHJuY3B5 KHRtcF9zdHIsIHN0YXJ0X3B0ciArIDEsIGxlbmd0aCk7CisJCXRtcF9zdHJbbGVuZ3RoXSA9ICdc MCc7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJm9iamVjdF9uYW1lLCB0bXBfc3RyKTsKKwkJ cGZyZWUodG1wX3N0cik7CisJfQorCisJaWYgKG9iamVjdF9uYW1lLmxlbiA9PSAwKQorCQllbG9n KEVSUk9SLCAib2JqZWN0IG5hbWUgbm90IGZvdW5kIik7CisKKwlhcHBlbmRfZm9ybWF0X3N0cmlu Zyh0cmVlLCBzdWJfZm10KTsKKworCXJldHVybiBvYmplY3RfbmFtZS5kYXRhOworCit9CisKKy8q CisgKiBBcHBlbmQgYSBwcmVhbGxvY2F0ZWQgcGFyYW1ldGVyIHRvIGEgdHJlZS4KKyAqLworc3Rh dGljIGlubGluZSB2b2lkCithcHBlbmRfcHJlbWFkZV9vYmplY3QoT2JqVHJlZSAqdHJlZSwgT2Jq RWxlbSAqZWxlbSkKK3sKKwlzbGlzdF9wdXNoX2hlYWQoJnRyZWUtPnBhcmFtcywgJmVsZW0tPm5v ZGUpOworCXRyZWUtPm51bVBhcmFtcysrOworfQorCisvKgorICogQXBwZW5kIGEgc3RyaW5nIHBh cmFtZXRlciB0byBhIHRyZWUuCisgKi8KK3N0YXRpYyB2b2lkCithcHBlbmRfc3RyaW5nX29iamVj dChPYmpUcmVlICp0cmVlLCBjaGFyICpzdWJfZm10LCBjaGFyICogb2JqZWN0X25hbWUsCisJCQkJ CSBjaGFyICp2YWx1ZSkKK3sKKwlPYmpFbGVtICAgICpwYXJhbTsKKworCUFzc2VydChzdWJfZm10 KTsKKworCWlmICghdmVyYm9zZSAmJiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZVswXSA9PSAnXDAn KSkKKwkJcmV0dXJuOworCisJYXBwZW5kX2Zvcm1hdF9zdHJpbmcodHJlZSwgc3ViX2ZtdCk7CisJ cGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVTdHJpbmcsIG9iamVjdF9uYW1lKTsKKwlwYXJhbS0+ dmFsdWUuc3RyaW5nID0gdmFsdWU7CisJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIHBhcmFt KTsKK30KKworLyoKKyAqIFNpbWlsYXIgdG8gZm9ybWF0X3R5cGVfZXh0ZW5kZWQsIGV4Y2VwdCB3 ZSByZXR1cm4gZWFjaCBiaXQgb2YgaW5mb3JtYXRpb24KKyAqIHNlcGFyYXRlbHk6CisgKgorICog LSBuc3BpZCBpcyB0aGUgc2NoZW1hIE9JRC4gIEZvciBjZXJ0YWluIFNRTC1zdGFuZGFyZCB0eXBl cyB3aGljaCBoYXZlIHdlaXJkCisgKiAgIHR5cG1vZCBydWxlcywgd2UgcmV0dXJuIEludmFsaWRP aWQ7IHRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gbm90IHNjaGVtYS0KKyAqICAgcXVhbGlmeSB0 aGUgbmFtZSBub3IgYWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoaXMgY2FzZS4KKyAq CisgKiAtIHR5cG5hbWUgaXMgc2V0IHRvIHRoZSB0eXBlIG5hbWUsIHdpdGhvdXQgcXVvdGVzCisg KgorICogLSB0eXBlbW9kc3RyIGlzIHNldCB0byB0aGUgdHlwZW1vZCwgaWYgYW55LCBhcyBhIHN0 cmluZyB3aXRoIHBhcmVudGhlc2VzCisgKgorICogLSB0eXBhcnJheSBpbmRpY2F0ZXMgd2hldGhl ciBbXXMgbXVzdCBiZSBhZGRlZAorICoKKyAqIFdlIGRvbid0IHRyeSB0byBkZWNvZGUgdHlwZSBu YW1lcyB0byB0aGVpciBzdGFuZGFyZC1tYW5kYXRlZCBuYW1lcywgZXhjZXB0CisgKiBpbiB0aGUg Y2FzZXMgb2YgdHlwZXMgd2l0aCB1bnVzdWFsIHR5cG1vZCBydWxlcy4KKyAqLworc3RhdGljIHZv aWQKK2Zvcm1hdF90eXBlX2RldGFpbGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwKKwkJ CQkJIE9pZCAqbnNwaWQsIGNoYXIgKip0eXBlbmFtZSwgY2hhciAqKnR5cGVtb2RzdHIsCisJCQkJ CSBib29sICp0eXBlYXJyYXkpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfdHlwZSB0 eXBlZm9ybTsKKwlPaWQJCQlhcnJheV9iYXNlX3R5cGU7CisKKwl0dXBsZSA9IFNlYXJjaFN5c0Nh Y2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKHR5cGVfb2lkKSk7CisJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9y IHR5cGUgd2l0aCBPSUQgJXUiLCB0eXBlX29pZCk7CisKKwl0eXBlZm9ybSA9IChGb3JtX3BnX3R5 cGUpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkvKgorCSAqIENoZWNrIGlmIGl0J3MgYSByZWd1bGFy ICh2YXJpYWJsZSBsZW5ndGgpIGFycmF5IHR5cGUuICBBcyBhYm92ZSwKKwkgKiBmaXhlZC1sZW5n dGggYXJyYXkgdHlwZXMgc3VjaCBhcyAibmFtZSIgc2hvdWxkbid0IGdldCBkZWNvbnN0cnVjdGVk LgorCSAqLworCWFycmF5X2Jhc2VfdHlwZSA9IHR5cGVmb3JtLT50eXBlbGVtOworCisJKnR5cGVh cnJheSA9IChJc1RydWVBcnJheVR5cGUodHlwZWZvcm0pICYmIHR5cGVmb3JtLT50eXBzdG9yYWdl ICE9IFRZUFNUT1JBR0VfUExBSU4pOworCisJaWYgKCp0eXBlYXJyYXkpCisJeworCQkvKiBTd2l0 Y2ggb3VyIGF0dGVudGlvbiB0byB0aGUgYXJyYXkgZWxlbWVudCB0eXBlICovCisJCVJlbGVhc2VT eXNDYWNoZSh0dXBsZSk7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVj dElkR2V0RGF0dW0oYXJyYXlfYmFzZV90eXBlKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRo IE9JRCAldSIsIHR5cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNU UlVDVCh0dXBsZSk7CisJCXR5cGVfb2lkID0gYXJyYXlfYmFzZV90eXBlOworCX0KKworCS8qCisJ ICogU3BlY2lhbC1jYXNlIGNyb2NrIGZvciB0eXBlcyB3aXRoIHN0cmFuZ2UgdHlwbW9kIHJ1bGVz IHdoZXJlIHdlIHB1dAorCSAqIHR5cGVtb2QgYXQgdGhlIG1pZGRsZSBvZiBuYW1lIChlLmcuIFRJ TUUoNikgd2l0aCB0aW1lIHpvbmUpLiBXZSBjYW5ub3QKKwkgKiBzY2hlbWEtcXVhbGlmeSBub3Ig YWRkIHF1b3RlcyB0byB0aGUgdHlwZSBuYW1lIGluIHRoZXNlIGNhc2VzLgorCSAqLworCSpuc3Bp ZCA9IEludmFsaWRPaWQ7CisKKwlzd2l0Y2ggKHR5cGVfb2lkKQorCXsKKwkJY2FzZSBJTlRFUlZB TE9JRDoKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIklOVEVSVkFMIik7CisJCQlicmVhazsKKwkJ Y2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkqdHlwZW5hbWUg PSBwc3RyZHVwKCJUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBv dGhlcndpc2UsIFdJVEggVFogaXMgYWRkZWQgYnkgdHlwbW9kLiAqLworCQkJCSp0eXBlbmFtZSA9 IHBzdHJkdXAoIlRJTUVTVEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2UgVElNRVNUQU1QT0lEOgor CQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRVNUQU1QIik7CisJCQlicmVhazsKKwkJY2FzZSBU SU1FVFpPSUQ6CisJCQlpZiAodHlwZW1vZCA8IDApCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgi VElNRSBXSVRIIFRJTUUgWk9ORSIpOworCQkJZWxzZQorCQkJCS8qIG90aGVyd2lzZSwgV0lUSCBU WiBpcyBhZGRlZCBieSB0eXBtb2QuICovCisJCQkJKnR5cGVuYW1lID0gcHN0cmR1cCgiVElNRSIp OworCQkJYnJlYWs7CisJCWNhc2UgVElNRU9JRDoKKwkJCSp0eXBlbmFtZSA9IHBzdHJkdXAoIlRJ TUUiKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCisJCQkvKgorCQkJICogTm8gYWRkaXRpb25h bCBwcm9jZXNzaW5nIGlzIHJlcXVpcmVkIGZvciBvdGhlciB0eXBlcywgc28gZ2V0CisJCQkgKiB0 aGUgdHlwZSBuYW1lIGFuZCBzY2hlbWEgZGlyZWN0bHkgZnJvbSB0aGUgY2F0YWxvZy4KKwkJCSAq LworCQkJKm5zcGlkID0gdHlwZWZvcm0tPnR5cG5hbWVzcGFjZTsKKwkJCSp0eXBlbmFtZSA9IHBz dHJkdXAoTmFtZVN0cih0eXBlZm9ybS0+dHlwbmFtZSkpOworCX0KKworCWlmICh0eXBlbW9kID49 IDApCisJCSp0eXBlbW9kc3RyID0gcHJpbnRUeXBtb2QoIiIsIHR5cGVtb2QsIHR5cGVmb3JtLT50 eXBtb2RvdXQpOworCWVsc2UKKwkJKnR5cGVtb2RzdHIgPSBwc3RyZHVwKCIiKTsKKworCVJlbGVh c2VTeXNDYWNoZSh0dXBsZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNl bnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUkVMUEVSU0lTVEVOQ0UgdmFsdWUuCisgKi8KK3N0YXRpYyBj aGFyICoKK2dldF9wZXJzaXN0ZW5jZV9zdHIoY2hhciBwZXJzaXN0ZW5jZSkKK3sKKwlzd2l0Y2gg KHBlcnNpc3RlbmNlKQorCXsKKwkJY2FzZSBSRUxQRVJTSVNURU5DRV9URU1QOgorCQkJcmV0dXJu ICJURU1QT1JBUlkiOworCQljYXNlIFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEOgorCQkJcmV0dXJu ICJVTkxPR0dFRCI7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOgorCQkJcmV0dXJu ICIiOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGVyc2lzdGVuY2Ug bWFya2luZyAlYyIsIHBlcnNpc3RlbmNlKTsKKwkJCXJldHVybiAiIjsJCQkvKiBtYWtlIGNvbXBp bGVyIGhhcHB5ICovCisJfQorfQorCisvKgorICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50 YXRpb24gb2YgdGhlIGdpdmVuIHN0b3JhZ2V0eXBlIHZhbHVlLgorICovCitzdGF0aWMgaW5saW5l IGNoYXIgKgorZ2V0X3R5cGVfc3RvcmFnZShjaGFyIHN0b3JhZ2V0eXBlKQoreworCXN3aXRjaCAo c3RvcmFnZXR5cGUpCisJeworCQljYXNlICdwJzoKKwkJCXJldHVybiAicGxhaW4iOworCQljYXNl ICdlJzoKKwkJCXJldHVybiAiZXh0ZXJuYWwiOworCQljYXNlICd4JzoKKwkJCXJldHVybiAiZXh0 ZW5kZWQiOworCQljYXNlICdtJzoKKwkJCXJldHVybiAibWFpbiI7CisJCWRlZmF1bHQ6CisJCQll bG9nKEVSUk9SLCAiaW52YWxpZCBzdG9yYWdlIHNwZWNpZmllciAlYyIsIHN0b3JhZ2V0eXBlKTsK Kwl9Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIG5ldyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBP YmpFbGVtICoKK25ld19vYmplY3QoT2JqVHlwZSB0eXBlLCBjaGFyICpuYW1lKQoreworCU9iakVs ZW0gICAgKnBhcmFtOworCisJcGFyYW0gPSBwYWxsb2MwKHNpemVvZihPYmpFbGVtKSk7CisJcGFy YW0tPm5hbWUgPSBuYW1lOworCXBhcmFtLT5vYmp0eXBlID0gdHlwZTsKKworCXJldHVybiBwYXJh bTsKK30KKworLyoKKyAqIEFsbG9jYXRlIGEgbmV3IG9iamVjdCBwYXJhbWV0ZXIuCisgKi8KK3N0 YXRpYyBPYmpFbGVtICoKK25ld19vYmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVlKQoreworCU9i akVsZW0gICAgKnBhcmFtOworCisJcGFyYW0gPSBuZXdfb2JqZWN0KE9ialR5cGVPYmplY3QsIE5V TEwpOworCXBhcmFtLT52YWx1ZS5vYmplY3QgPSB2YWx1ZTsKKworCXJldHVybiBwYXJhbTsKK30K KworLyoKKyAqIEFsbG9jYXRlIGEgbmV3IG9iamVjdCB0cmVlIHRvIHN0b3JlIHBhcmFtZXRlciB2 YWx1ZXMuCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlKGNoYXIgKmZtdCkKK3sK KwlPYmpUcmVlICAgICpwYXJhbXM7CisKKwlwYXJhbXMgPSBwYWxsb2MwKHNpemVvZihPYmpUcmVl KSk7CisJcGFyYW1zLT5wcmVzZW50ID0gdHJ1ZTsKKwlzbGlzdF9pbml0KCZwYXJhbXMtPnBhcmFt cyk7CisKKwlpZiAoZm10KQorCXsKKwkJcGFyYW1zLT5mbXRpbmZvID0gbWFrZVN0cmluZ0luZm8o KTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhwYXJhbXMtPmZtdGluZm8sIGZtdCk7CisJfQor CisJcmV0dXJuIHBhcmFtczsKK30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVw ICV7fUQgYW5kICV7fU8gZWxlbWVudHMuCisgKgorICogRWxlbWVudHMgInNjaGVtYV9uYW1lIiBh bmQgIm9ial9uYW1lIiBhcmUgc2V0LiAgSWYgdGhlIG5hbWVzcGFjZSBPSUQKKyAqIGNvcnJlc3Bv bmRzIHRvIGEgdGVtcCBzY2hlbWEsIHRoYXQncyBzZXQgdG8gInBnX3RlbXAiLgorICoKKyAqIFRo ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhvc2UgdHdvIGVsZW1lbnQgdHlwZXMgaXMgd2hldGhlciB0 aGUgb2JqX25hbWUgd2lsbAorICogYmUgcXVvdGVkIGFzIGFuIGlkZW50aWZpZXIgb3Igbm90LCB3 aGljaCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgdGhpcyByb3V0aW5lCisgKiBjb25jZXJucyBpdHNl bGYgd2l0aDsgdGhhdCB3aWxsIGJlIHVwIHRvIHRoZSBleHBhbmQgZnVuY3Rpb24uCisgKi8KK3N0 YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShPaWQgbnNwaWQsIGNoYXIg Km5hbWUpCit7CisJT2JqVHJlZSAgICAqcXVhbGlmaWVkOworCWNoYXIJICAgKm5hbWVzcGFjZTsK KworCWlmIChpc0FueVRlbXBOYW1lc3BhY2UobnNwaWQpKQorCQluYW1lc3BhY2UgPSBwc3RyZHVw KCJwZ190ZW1wIik7CisJZWxzZQorCQluYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUobnNw aWQpOworCisJcXVhbGlmaWVkID0gbmV3X29ianRyZWVfVkEoTlVMTCwgMiwKKwkJCQkJCQkgICAi c2NoZW1hbmFtZSIsIE9ialR5cGVTdHJpbmcsIG5hbWVzcGFjZSwKKwkJCQkJCQkgICAib2JqbmFt ZSIsIE9ialR5cGVTdHJpbmcsIHBzdHJkdXAobmFtZSkpOworCisJcmV0dXJuIHF1YWxpZmllZDsK K30KKworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwICV7fUQgYW5kICV7fU8gZWxl bWVudHMsIHdpdGggdGhlIG9iamVjdCBzcGVjaWZpZWQKKyAqIGJ5IGNsYXNzSWQvb2JqSWQuCisg Ki8KK3N0YXRpYyBPYmpUcmVlICoKK25ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChPaWQgY2xh c3NJZCwgT2lkIG9iamVjdElkKQoreworCU9ialRyZWUgICAgKnF1YWxpZmllZDsKKwlSZWxhdGlv bgljYXRhbG9nOworCUhlYXBUdXBsZQljYXRvYmo7CisJRGF0dW0JCW9ial9uc3A7CisJRGF0dW0J CW9ial9uYW1lOworCUF0dHJOdW1iZXIJQW51bV9uYW1lOworCUF0dHJOdW1iZXIJQW51bV9uYW1l c3BhY2U7CisJQXR0ck51bWJlcglBbnVtX29pZCA9IGdldF9vYmplY3RfYXR0bnVtX29pZChjbGFz c0lkKTsKKwlib29sCQlpc251bGw7CisKKwljYXRhbG9nID0gdGFibGVfb3BlbihjbGFzc0lkLCBB Y2Nlc3NTaGFyZUxvY2spOworCisJY2F0b2JqID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChj YXRhbG9nLCBBbnVtX29pZCwgb2JqZWN0SWQpOworCWlmICghY2F0b2JqKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb2JqZWN0IHdpdGggT0lEICV1IG9mIGNhdGFsb2cg XCIlc1wiIiwKKwkJCSBvYmplY3RJZCwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoY2F0YWxvZykp OworCUFudW1fbmFtZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWUoY2xhc3NJZCk7CisJQW51bV9u YW1lc3BhY2UgPSBnZXRfb2JqZWN0X2F0dG51bV9uYW1lc3BhY2UoY2xhc3NJZCk7CisKKwlvYmpf bnNwID0gaGVhcF9nZXRhdHRyKGNhdG9iaiwgQW51bV9uYW1lc3BhY2UsIFJlbGF0aW9uR2V0RGVz Y3IoY2F0YWxvZyksCisJCQkJCQkgICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJS T1IsICJudWxsIG5hbWVzcGFjZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJb2JqX25h bWUgPSBoZWFwX2dldGF0dHIoY2F0b2JqLCBBbnVtX25hbWUsIFJlbGF0aW9uR2V0RGVzY3IoY2F0 YWxvZyksCisJCQkJCQkgICAmaXNudWxsKTsKKwlpZiAoaXNudWxsKQorCQllbG9nKEVSUk9SLCAi bnVsbCBhdHRyaWJ1dGUgbmFtZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJcXVhbGlm aWVkID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKERhdHVtR2V0T2JqZWN0SWQob2JqX25zcCks CisJCQkJCQkJCQkJIE5hbWVTdHIoKkRhdHVtR2V0TmFtZShvYmpfbmFtZSkpKTsKKwl0YWJsZV9j bG9zZShjYXRhbG9nLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHF1YWxpZmllZDsKK30K KworLyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0dXAgJXt9VCBlbGVtZW50cy4KKyAqLwor c3RhdGljIE9ialRyZWUgKgorbmV3X29ianRyZWVfZm9yX3R5cGUoT2lkIHR5cGVJZCwgaW50MzIg dHlwbW9kKQoreworCU9pZAkJCXR5cG5zcGlkOworCWNoYXIJICAgKnR5cGVfbnNwOworCWNoYXIJ ICAgKnR5cGVfbmFtZSA9IE5VTEw7CisJY2hhcgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGVf YXJyYXk7CisKKwlmb3JtYXRfdHlwZV9kZXRhaWxlZCh0eXBlSWQsIHR5cG1vZCwKKwkJCQkJCSAm dHlwbnNwaWQsICZ0eXBlX25hbWUsICZ0eXBtb2RzdHIsICZ0eXBlX2FycmF5KTsKKworCWlmIChP aWRJc1ZhbGlkKHR5cG5zcGlkKSkKKwkJdHlwZV9uc3AgPSBnZXRfbmFtZXNwYWNlX25hbWVfb3Jf dGVtcCh0eXBuc3BpZCk7CisJZWxzZQorCQl0eXBlX25zcCA9IHBzdHJkdXAoIiIpOworCisJcmV0 dXJuIG5ld19vYmp0cmVlX1ZBKE5VTEwsIDQsCisJCQkJCQkgICJzY2hlbWFuYW1lIiwgT2JqVHlw ZVN0cmluZywgdHlwZV9uc3AsCisJCQkJCQkgICJ0eXBlbmFtZSIsIE9ialR5cGVTdHJpbmcsIHR5 cGVfbmFtZSwKKwkJCQkJCSAgInR5cG1vZCIsIE9ialR5cGVTdHJpbmcsIHR5cG1vZHN0ciwKKwkJ CQkJCSAgInR5cGFycmF5IiwgT2JqVHlwZUJvb2wsIHR5cGVfYXJyYXkpOworfQorCisvKgorICog QWxsb2NhdGUgYSBuZXcgb2JqZWN0IHRyZWUgdG8gc3RvcmUgcGFyYW1ldGVyIHZhbHVlcyAtLSB2 YXJhcmdzIHZlcnNpb24uCisgKgorICogVGhlICJmbXQiIGFyZ3VtZW50IGlzIHVzZWQgdG8gYXBw ZW5kIGFzIGEgImZtdCIgZWxlbWVudCBpbiB0aGUgb3V0cHV0IGJsb2IuCisgKiBudW1vYmpzIGlu ZGljYXRlcyB0aGUgbnVtYmVyIG9mIGV4dHJhIGVsZW1lbnRzIHRvIGFwcGVuZDsgZm9yIGVhY2gg b25lLCBhCisgKiBuYW1lIChzdHJpbmcpLCB0eXBlIChmcm9tIHRoZSBPYmpUeXBlIGVudW0pIGFu ZCB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkLiAgVGhlCisgKiB2YWx1ZSBtdXN0IG1hdGNoIHRoZSB0 eXBlIGdpdmVuOyBmb3IgaW5zdGFuY2UsIE9ialR5cGVJbnRlZ2VyIHJlcXVpcmVzIGFuCisgKiBp bnQ2NCwgT2JqVHlwZVN0cmluZyByZXF1aXJlcyBhIGNoYXIgKiwgT2JqVHlwZUFycmF5IHJlcXVp cmVzIGEgbGlzdCAob2YKKyAqIE9iakVsZW0pLCBPYmpUeXBlT2JqZWN0IHJlcXVpcmVzIGFuIE9i alRyZWUsIGFuZCBzbyBvbi4gIEVhY2ggZWxlbWVudCB0eXBlICoKKyAqIG11c3QgbWF0Y2ggdGhl IGNvbnZlcnNpb24gc3BlY2lmaWVyIGdpdmVuIGluIHRoZSBmb3JtYXQgc3RyaW5nLCBhcyBkZXNj cmliZWQKKyAqIGluIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLCBxLnYuCisgKgorICogTm90 ZSB3ZSBkb24ndCBoYXZlIHRoZSBsdXh1cnkgb2Ygc3ByaW50Zi1saWtlIGNvbXBpbGVyIHdhcm5p bmdzIGZvcgorICogbWFsZm9ybWVkIGFyZ3VtZW50IGxpc3RzLgorICovCitzdGF0aWMgT2JqVHJl ZSAqCituZXdfb2JqdHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpzLC4uLikKK3sKKwlPYmpU cmVlICAgICp0cmVlOworCXZhX2xpc3QJCWFyZ3M7CisJaW50CQkJaTsKKworCS8qIFNldCB1cCB0 aGUgdG9wbGV2ZWwgb2JqZWN0IGFuZCBpdHMgImZtdCIgKi8KKwl0cmVlID0gbmV3X29ianRyZWUo Zm10KTsKKworCS8qIEFuZCBwcm9jZXNzIHRoZSBnaXZlbiB2YXJhcmdzICovCisJdmFfc3RhcnQo YXJncywgbnVtb2Jqcyk7CisJZm9yIChpID0gMDsgaSA8IG51bW9ianM7IGkrKykKKwl7CisJCWNo YXIJICAgKm5hbWU7CisJCU9ialR5cGUJCXR5cGU7CisJCU9iakVsZW0gICAgKmVsZW07CisKKwkJ bmFtZSA9IHZhX2FyZyhhcmdzLCBjaGFyICopOworCQl0eXBlID0gdmFfYXJnKGFyZ3MsIE9ialR5 cGUpOworCQllbGVtID0gbmV3X29iamVjdCh0eXBlLCBOVUxMKTsKKworCQkvKgorCQkgKiBGb3Ig YWxsIHBhcmFtIHR5cGVzIG90aGVyIHRoYW4gT2JqVHlwZU51bGwsIHRoZXJlIG11c3QgYmUgYSB2 YWx1ZSBpbgorCQkgKiB0aGUgdmFyYXJncy4gRmV0Y2ggaXQgYW5kIGFkZCB0aGUgZnVsbHkgZm9y bWVkIHN1Ym9iamVjdCBpbnRvIHRoZQorCQkgKiBtYWluIG9iamVjdC4KKwkJICovCisJCXN3aXRj aCAodHlwZSkKKwkJeworCQkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCQkvKiBOdWxsIHBhcmFtcyBk b24ndCBoYXZlIGEgdmFsdWUgKG9idmlvdXNseSkgKi8KKwkJCQlicmVhazsKKwkJCWNhc2UgT2Jq VHlwZUJvb2w6CisJCQkJZWxlbS0+dmFsdWUuYm9vbGVhbiA9IHZhX2FyZyhhcmdzLCBpbnQpOwor CQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlU3RyaW5nOgorCQkJCWVsZW0tPnZhbHVlLnN0cmlu ZyA9IHZhX2FyZyhhcmdzLCBjaGFyICopOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlQXJy YXk6CisJCQkJZWxlbS0+dmFsdWUuYXJyYXkgPSB2YV9hcmcoYXJncywgTGlzdCAqKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgT2JqVHlwZUludGVnZXI6CisJCQkJZWxlbS0+dmFsdWUuaW50ZWdlciA9 IHZhX2FyZyhhcmdzLCBpbnQpOworCQkJCWJyZWFrOworCQkJY2FzZSBPYmpUeXBlRmxvYXQ6CisJ CQkJZWxlbS0+dmFsdWUuZmx0ID0gdmFfYXJnKGFyZ3MsIGRvdWJsZSk7CisJCQkJYnJlYWs7CisJ CQljYXNlIE9ialR5cGVPYmplY3Q6CisJCQkJZWxlbS0+dmFsdWUub2JqZWN0ID0gdmFfYXJnKGFy Z3MsIE9ialRyZWUgKik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIE9ialRyZWUgZWxlbWVudCB0eXBlICVkIiwgdHlwZSk7CisJCX0KKworCQllbGVt LT5uYW1lID0gbmFtZTsKKwkJYXBwZW5kX3ByZW1hZGVfb2JqZWN0KHRyZWUsIGVsZW0pOworCX0K KworCXZhX2VuZChhcmdzKTsKKwlyZXR1cm4gdHJlZTsKK30KKworLyoKKyAqIFByb2Nlc3MgdGhl IHByZS1idWlsdCBmb3JtYXQgc3RyaW5nIGZyb20gdGhlIE9ialRyZWUgaW50byB0aGUgb3V0cHV0 IHBhcnNlCisgKiBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK29ianRyZWVfZm10X3RvX2pzb25i X2VsZW1lbnQoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2JqVHJlZSAqdHJlZSkKK3sKKwlKc29u YlZhbHVlCWtleTsKKwlKc29uYlZhbHVlCXZhbDsKKworCWlmICh0cmVlLT5mbXRpbmZvID09IE5V TEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCWtleS50eXBlID0g amJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZhbCA9ICJmbXQiOworCWtleS52YWwuc3RyaW5n LmxlbiA9IHN0cmxlbihrZXkudmFsLnN0cmluZy52YWwpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0tFWSwgJmtleSk7CisKKwkvKiBUaGVuIHByb2Nlc3MgdGhlIHByZS1idWlsdCBmb3Jt YXQgc3RyaW5nICovCisJdmFsLnR5cGUgPSBqYnZTdHJpbmc7CisJdmFsLnZhbC5zdHJpbmcubGVu ID0gdHJlZS0+Zm10aW5mby0+bGVuOworCXZhbC52YWwuc3RyaW5nLnZhbCA9IHRyZWUtPmZtdGlu Zm8tPmRhdGE7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworfQor CisvKgorICogQ3JlYXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlLgor ICovCitzdGF0aWMgSnNvbmIgKgorb2JqdHJlZV90b19qc29uYihPYmpUcmVlICp0cmVlKQorewor CUpzb25iVmFsdWUgKnZhbHVlOworCisJdmFsdWUgPSBvYmp0cmVlX3RvX2pzb25iX3JlYyh0cmVl LCBOVUxMKTsKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgorICog SGVscGVyIGZvciBvYmp0cmVlX3RvX2pzb25iOiBwcm9jZXNzIGFuIGluZGl2aWR1YWwgZWxlbWVu dCBmcm9tIGFuIG9iamVjdCBvcgorICogYW4gYXJyYXkgaW50byB0aGUgb3V0cHV0IHBhcnNlIHN0 YXRlLgorICovCitzdGF0aWMgdm9pZAorb2JqdHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFy c2VTdGF0ZSAqc3RhdGUsIE9iakVsZW0gKm9iamVjdCwKKwkJCQkJCSBKc29uYkl0ZXJhdG9yVG9r ZW4gZWxlbV90b2tlbikKK3sKKwlKc29uYlZhbHVlCXZhbDsKKworCXN3aXRjaCAob2JqZWN0LT5v Ymp0eXBlKQorCXsKKwkJY2FzZSBPYmpUeXBlTnVsbDoKKwkJCXZhbC50eXBlID0gamJ2TnVsbDsK KwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsK KworCQljYXNlIE9ialR5cGVTdHJpbmc6CisJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKKwkJCXZh bC52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihvYmplY3QtPnZhbHVlLnN0cmluZyk7CisJCQl2YWwu dmFsLnN0cmluZy52YWwgPSBvYmplY3QtPnZhbHVlLnN0cmluZzsKKwkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVJ bnRlZ2VyOgorCQkJdmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1lcmljID0g KE51bWVyaWMpCisJCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEoaW50OF9u dW1lcmljLAorCQkJCQkJCQkJCQkJCW9iamVjdC0+dmFsdWUuaW50ZWdlcikpOworCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBlbGVtX3Rva2VuLCAmdmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2Ug T2JqVHlwZUZsb2F0OgorCQkJdmFsLnR5cGUgPSBqYnZOdW1lcmljOworCQkJdmFsLnZhbC5udW1l cmljID0gKE51bWVyaWMpCisJCQkJRGF0dW1HZXROdW1lcmljKERpcmVjdEZ1bmN0aW9uQ2FsbDEo ZmxvYXQ4X251bWVyaWMsCisJCQkJCQkJCQkJCQkJb2JqZWN0LT52YWx1ZS5pbnRlZ2VyKSk7CisJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIGVsZW1fdG9rZW4sICZ2YWwpOworCQkJYnJlYWs7CisK KwkJY2FzZSBPYmpUeXBlQm9vbDoKKwkJCXZhbC50eXBlID0gamJ2Qm9vbDsKKwkJCXZhbC52YWwu Ym9vbGVhbiA9IG9iamVjdC0+dmFsdWUuYm9vbGVhbjsKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgZWxlbV90b2tlbiwgJnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIE9ialR5cGVPYmplY3Q6 CisJCQkvKiBSZWN1cnNpdmVseSBhZGQgdGhlIG9iamVjdCBpbnRvIHRoZSBleGlzdGluZyBwYXJz ZSBzdGF0ZSAqLworCQkJb2JqdHJlZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3Qs IHN0YXRlKTsKKwkJCWJyZWFrOworCisJCWNhc2UgT2JqVHlwZUFycmF5OgorCQkJeworCQkJCUxp c3RDZWxsICAgKmNlbGw7CisKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9B UlJBWSwgTlVMTCk7CisJCQkJZm9yZWFjaChjZWxsLCBvYmplY3QtPnZhbHVlLmFycmF5KQorCQkJ CXsKKwkJCQkJT2JqRWxlbSAgICAqZWxlbSA9IGxmaXJzdChjZWxsKTsKKworCQkJCQlvYmp0cmVl X3RvX2pzb25iX2VsZW1lbnQoc3RhdGUsIGVsZW0sIFdKQl9FTEVNKTsKKwkJCQl9CisJCQkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKwkJCX0KKwkJCWJyZWFr OworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBl ICVkIiwgb2JqZWN0LT5vYmp0eXBlKTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIFJlY3Vy c2l2ZSBoZWxwZXIgZm9yIG9ianRyZWVfdG9fanNvbmIuCisgKi8KK3N0YXRpYyBKc29uYlZhbHVl ICoKK29ianRyZWVfdG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUpCit7CisJc2xpc3RfaXRlcglpdGVyOworCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCW9ianRyZWVfZm10X3RvX2pzb25iX2VsZW1lbnQo c3RhdGUsIHRyZWUpOworCisJc2xpc3RfZm9yZWFjaChpdGVyLCAmdHJlZS0+cGFyYW1zKQorCXsK KwkJT2JqRWxlbSAgICAqb2JqZWN0ID0gc2xpc3RfY29udGFpbmVyKE9iakVsZW0sIG5vZGUsIGl0 ZXIuY3VyKTsKKwkJSnNvbmJWYWx1ZQlrZXk7CisKKwkJLyogUHVzaCB0aGUga2V5IGZpcnN0ICov CisJCWtleS50eXBlID0gamJ2U3RyaW5nOworCQlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4o b2JqZWN0LT5uYW1lKTsKKwkJa2V5LnZhbC5zdHJpbmcudmFsID0gb2JqZWN0LT5uYW1lOworCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOworCisJCS8qIFRoZW4gcHJvY2Vz cyB0aGUgdmFsdWUgYWNjb3JkaW5nIHRvIGl0cyB0eXBlICovCisJCW9ianRyZWVfdG9fanNvbmJf ZWxlbWVudChzdGF0ZSwgb2JqZWN0LCBXSkJfVkFMVUUpOworCX0KKworCXJldHVybiBwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIFN1YnJv dXRpbmUgZm9yIENSRUFURSBUQUJMRS9DUkVBVEUgRE9NQUlOIGRlcGFyc2luZy4KKyAqCisgKiBH aXZlbiBhIHRhYmxlIE9JRCBvciBkb21haW4gT0lELCBvYnRhaW4gaXRzIGNvbnN0cmFpbnRzIGFu ZCBhcHBlbmQgdGhlbSB0bworICogdGhlIGdpdmVuIGVsZW1lbnRzIGxpc3QuICBUaGUgdXBkYXRl ZCBsaXN0IGlzIHJldHVybmVkLgorICoKKyAqIFRoaXMgd29ya3MgZm9yIHR5cGVkIHRhYmxlcywg cmVndWxhciB0YWJsZXMsIGFuZCBkb21haW5zLgorICoKKyAqIE5vdGUgdGhhdCBDT05TVFJBSU5U X0ZPUkVJR04gY29uc3RyYWludHMgYXJlIGFsd2F5cyBpZ25vcmVkLgorICovCitzdGF0aWMgTGlz dCAqCitvYnRhaW5Db25zdHJhaW50cyhMaXN0ICplbGVtZW50cywgT2lkIHJlbGF0aW9uSWQsIE9p ZCBkb21haW5JZCkKK3sKKwlSZWxhdGlvbgljb25SZWw7CisJU2NhbktleURhdGEga2V5OworCVN5 c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cGxlOworCU9ialRyZWUgICAgKmNvbnN0cjsK KwlPaWQJCQlyZWxpZDsKKworCS8qIE9ubHkgb25lIG1heSBiZSB2YWxpZCAqLworCUFzc2VydChP aWRJc1ZhbGlkKHJlbGF0aW9uSWQpIF4gT2lkSXNWYWxpZChkb21haW5JZCkpOworCisJcmVsaWQg PSBPaWRJc1ZhbGlkKHJlbGF0aW9uSWQpID8gQ29uc3RyYWludFJlbGlkVHlwaWROYW1lSW5kZXhJ ZCA6CisJCQlDb25zdHJhaW50VHlwaWRJbmRleElkOworCisJLyoKKwkgKiBTY2FuIHBnX2NvbnN0 cmFpbnQgdG8gZmV0Y2ggYWxsIGNvbnN0cmFpbnRzIGxpbmtlZCB0byB0aGUgZ2l2ZW4KKwkgKiBy ZWxhdGlvbi4KKwkgKi8KKwljb25SZWwgPSB0YWJsZV9vcGVuKENvbnN0cmFpbnRSZWxhdGlvbklk LCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZrZXksIEFudW1fcGdfY29uc3RyYWlu dF9jb25yZWxpZCwgQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfT0lERVEsIE9iamVjdElk R2V0RGF0dW0ocmVsYXRpb25JZCkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29uUmVs LCByZWxpZCwgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisKKwkvKgorCSAqIEZvciBlYWNoIGNvbnN0 cmFpbnQsIGFkZCBhIG5vZGUgdG8gdGhlIGxpc3Qgb2YgdGFibGUgZWxlbWVudHMuICBJbgorCSAq IHRoZXNlIG5vZGVzIHdlIGluY2x1ZGUgbm90IG9ubHkgdGhlIHByaW50YWJsZSBpbmZvcm1hdGlv biAoImZtdCIpLCBidXQKKwkgKiBhbHNvIHNlcGFyYXRlIGF0dHJpYnV0ZXMgdG8gaW5kaWNhdGUg dGhlIHR5cGUgb2YgY29uc3RyYWludCwgZm9yCisJICogYXV0b21hdGljIHByb2Nlc3NpbmcuCisJ ICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb25zdHJGb3JtOworCQljaGFyCSAgICpj b250eXBlOworCisJCWNvbnN0ckZvcm0gPSAoRm9ybV9wZ19jb25zdHJhaW50KSBHRVRTVFJVQ1Qo dHVwbGUpOworCisJCXN3aXRjaCAoY29uc3RyRm9ybS0+Y29udHlwZSkKKwkJeworCQkJY2FzZSBD T05TVFJBSU5UX0NIRUNLOgorCQkJCWNvbnR5cGUgPSAiY2hlY2siOworCQkJCWJyZWFrOworCQkJ Y2FzZSBDT05TVFJBSU5UX0ZPUkVJR046CisJCQkJY29udGludWU7CQkvKiBub3QgaGVyZSAqLwor CQkJY2FzZSBDT05TVFJBSU5UX1BSSU1BUlk6CisJCQkJY29udHlwZSA9ICJwcmltYXJ5IGtleSI7 CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJTlRfVU5JUVVFOgorCQkJCWNvbnR5cGUgPSAi dW5pcXVlIjsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ09OU1RSQUlOVF9UUklHR0VSOgorCQkJCWNv bnR5cGUgPSAidHJpZ2dlciI7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJTlRfRVhDTFVT SU9OOgorCQkJCWNvbnR5cGUgPSAiZXhjbHVzaW9uIjsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6 CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBjb25zdHJhaW50IHR5cGUiKTsKKwkJfQor CisJCS8qCisJCSAqICJ0eXBlIiBhbmQgImNvbnR5cGUiIGFyZSBub3QgcGFydCBvZiB0aGUgcHJp bnRhYmxlIG91dHB1dCwgYnV0IGFyZQorCQkgKiB1c2VmdWwgdG8gcHJvZ3JhbW1hdGljYWxseSBk aXN0aW5ndWlzaCB0aGVzZSBmcm9tIGNvbHVtbnMgYW5kIGFtb25nCisJCSAqIGRpZmZlcmVudCBj b25zdHJhaW50IHR5cGVzLgorCQkgKgorCQkgKiBYWFggaXQgbWlnaHQgYmUgdXNlZnVsIHRvIGFs c28gbGlzdCB0aGUgY29sdW1uIG5hbWVzIGluIGEgUEssIGV0Yy4KKwkJICovCisJCWNvbnN0ciA9 IG5ld19vYmp0cmVlX1ZBKCJDT05TVFJBSU5UICV7bmFtZX1JICV7ZGVmaW5pdGlvbn1zIiwgNCwK KwkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiY29uc3RyYWludCIsCisJCQkJCQkJCSJj b250eXBlIiwgT2JqVHlwZVN0cmluZywgY29udHlwZSwKKwkJCQkJCQkJIm5hbWUiLCBPYmpUeXBl U3RyaW5nLCBOYW1lU3RyKGNvbnN0ckZvcm0tPmNvbm5hbWUpLAorCQkJCQkJCQkiZGVmaW5pdGlv biIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCXBnX2dldF9jb25zdHJhaW50ZGVmX3N0cmluZyhj b25zdHJGb3JtLT5vaWQpKTsKKwkJZWxlbWVudHMgPSBsYXBwZW5kKGVsZW1lbnRzLCBuZXdfb2Jq ZWN0X29iamVjdChjb25zdHIpKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRh YmxlX2Nsb3NlKGNvblJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBlbGVtZW50czsK K30KKworLyoKKyAqIE9idGFpbiB0aGUgZGVwYXJzZWQgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdp dmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gdGFibGUuCisgKgorICogQ2FsbGVyIG11c3QgaGF2ZSBz ZXQgYSBjb3JyZWN0IGRlcGFyc2UgY29udGV4dC4KKyAqLworc3RhdGljIGNoYXIgKgorUmVsYXRp b25HZXRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRubywgTGlzdCAq ZHBjb250ZXh0LAorCQkJCQkJIExpc3QgKipleHBycykKK3sKKwlOb2RlCSAgICpkZWZ2YWw7CisJ Y2hhcgkgICAqZGVmc3RyOworCisJZGVmdmFsID0gYnVpbGRfY29sdW1uX2RlZmF1bHQocmVsLCBh dHRubyk7CisJZGVmc3RyID0gZGVwYXJzZV9leHByZXNzaW9uKGRlZnZhbCwgZHBjb250ZXh0LCBm YWxzZSwgZmFsc2UpOworCisJLyogQ29sbGVjdCB0aGUgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgcmVw bGljYXRpb24gc2FmZXR5IGNoZWNrcyAqLworCWlmIChleHBycykKKwkJKmV4cHJzID0gbGFwcGVu ZCgqZXhwcnMsIGRlZnZhbCk7CisKKwlyZXR1cm4gZGVmc3RyOworfQorCisvKgorICogT2J0YWlu IHRoZSBkZXBhcnNlZCBwYXJ0aXRpb24gYm91bmQgZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIHRh YmxlLgorICovCitzdGF0aWMgY2hhciAqCitSZWxhdGlvbkdldFBhcnRpdGlvbkJvdW5kKE9pZCBy ZWxpZCkKK3sKKwlEYXR1bQkJZGVwYXJzZWQ7CisJRGF0dW0JCWJvdW5kRGF0dW07CisJYm9vbAkJ aXNudWxsOworCUhlYXBUdXBsZQl0dXBsZTsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJF TE9JRCwgcmVsaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiB3aXRoIE9JRCAldSIsIHJlbGlk KTsKKworCWJvdW5kRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoUkVMT0lELCB0dXBsZSwKKwkJCQkJ CQkJIEFudW1fcGdfY2xhc3NfcmVscGFydGJvdW5kLAorCQkJCQkJCQkgJmlzbnVsbCk7CisKKwlk ZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCisJCQkJCQkJCSAgIENT dHJpbmdHZXRUZXh0RGF0dW0oVGV4dERhdHVtR2V0Q1N0cmluZyhib3VuZERhdHVtKSksCisJCQkJ CQkJCSAgIHJlbGlkKTsKKworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gVGV4 dERhdHVtR2V0Q1N0cmluZyhkZXBhcnNlZCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGEgQ29sdW1u RGVmIG5vZGUgd2l0aGluIGEgcmVndWxhciAobm9uLXR5cGVkKSB0YWJsZSBjcmVhdGlvbi4KKyAq CisgKiBOT1QgTlVMTCBjb25zdHJhaW50cyBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24gYXJlIGVt aXR0ZWQgZGlyZWN0bHkgaW4gdGhlCisgKiBjb2x1bW4gZGVmaW5pdGlvbiBieSB0aGlzIHJvdXRp bmU7IG90aGVyIGNvbnN0cmFpbnRzIG11c3QgYmUgZW1pdHRlZAorICogZWxzZXdoZXJlICh0aGUg aW5mbyBpbiB0aGUgcGFyc2Ugbm9kZSBpcyBpbmNvbXBsZXRlIGFueXdheSkuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqICV7bmFtZX1JICV7Y29sdHlwZX1UICV7Y29tcHJlc3Npb259cyAle2Rl ZmF1bHR9cyAle25vdF9udWxsfXMgJXtjb2xsYXRpb259cworICovCitzdGF0aWMgT2JqVHJlZSAq CitkZXBhcnNlX0NvbHVtbkRlZihSZWxhdGlvbiByZWxhdGlvbiwgTGlzdCAqZHBjb250ZXh0LCBi b29sIGNvbXBvc2l0ZSwKKwkJCQkgIENvbHVtbkRlZiAqY29sZGVmLCBib29sIGlzX2FsdGVyLCBM aXN0ICoqZXhwcnMpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAgKnRtcF9vYmo7 CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwlIZWFwVHVwbGUJ YXR0clR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyRm9ybTsKKwlPaWQJCQl0eXBpZDsKKwlp bnQzMgkJdHlwbW9kOworCU9pZAkJCXR5cGNvbGxhdGlvbjsKKwlib29sCQlzYXdfbm90bnVsbDsK KwlMaXN0Q2VsbCAgICpjZWxsOworCisJLyoKKwkgKiBJbmhlcml0ZWQgY29sdW1ucyB3aXRob3V0 IGxvY2FsIGRlZmluaXRpb25zIG11c3Qgbm90IGJlIGVtaXR0ZWQuCisJICoKKwkgKiBYWFggbWF5 YmUgaXQgaXMgdXNlZnVsIHRvIGhhdmUgdGhlbSB3aXRoICJwcmVzZW50ID0gZmFsc2UiIG9yIHNv bWUKKwkgKiBzdWNoPworCSAqLworCWlmICghY29sZGVmLT5pc19sb2NhbCkKKwkJcmV0dXJuIE5V TEw7CisKKwlhdHRyVHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlkLCBjb2xkZWYtPmNv bG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJZWxvZyhFUlJPUiwg ImNvdWxkIG5vdCBmaW5kIGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9u ICV1IiwKKwkJCSBjb2xkZWYtPmNvbG5hbWUsIHJlbGlkKTsKKwlhdHRyRm9ybSA9IChGb3JtX3Bn X2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJUdXApOworCisJZ2V0X2F0dHR5cGV0eXBtb2Rjb2xs KHJlbGlkLCBhdHRyRm9ybS0+YXR0bnVtLAorCQkJCQkJICAmdHlwaWQsICZ0eXBtb2QsICZ0eXBj b2xsYXRpb24pOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoIiV7bmFtZX1JICV7Y29sdHlwZX1U IiwgMywKKwkJCQkJCSAidHlwZSIsIE9ialR5cGVTdHJpbmcsICJjb2x1bW4iLAorCQkJCQkJICJu YW1lIiwgT2JqVHlwZVN0cmluZywgY29sZGVmLT5jb2xuYW1lLAorCQkJCQkJICJjb2x0eXBlIiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZSh0eXBpZCwgdHlwbW9k KSk7CisKKwlpZiAoIWNvbXBvc2l0ZSkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiU1RP UkFHRSAle2NvbHN0b3JhZ2V9cyIsICJjb2xzdG9yYWdlIiwKKwkJCQkJCQkgZ2V0X3R5cGVfc3Rv cmFnZShhdHRyRm9ybS0+YXR0c3RvcmFnZSkpOworCisJLyogVVNJTkcgY2xhdXNlICovCisJdG1w X29iaiA9IG5ld19vYmp0cmVlKCJDT01QUkVTU0lPTiIpOworCWlmIChjb2xkZWYtPmNvbXByZXNz aW9uKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXtjb21wcmVzc2lvbl9tZXRo b2R9SSIsCisJCQkJCQkJICJjb21wcmVzc2lvbl9tZXRob2QiLCBjb2xkZWYtPmNvbXByZXNzaW9u KTsKKwllbHNlCisJeworCQlhcHBlbmRfbnVsbF9vYmplY3QodG1wX29iaiwgIiV7Y29tcHJlc3Np b25fbWV0aG9kfUkiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBl bmRfb2JqZWN0X29iamVjdChyZXQsICIle2NvbXByZXNzaW9ufXMiLCB0bXBfb2JqKTsKKworCXRt cF9vYmogPSBuZXdfb2JqdHJlZSgiQ09MTEFURSIpOworCWlmIChPaWRJc1ZhbGlkKHR5cGNvbGxh dGlvbikpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmosICIle25hbWV9RCIsCisJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChDb2xsYXRpb25SZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkgdHlwY29sbGF0aW9uKSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQo dG1wX29iaik7CisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtjb2xsYXRpb259cyIsIHRt cF9vYmopOworCisJaWYgKCFjb21wb3NpdGUpCisJeworCQlPaWQJCQlzZXFyZWxpZCA9IEludmFs aWRPaWQ7CisKKwkJLyoKKwkJICogRW1pdCBhIE5PVCBOVUxMIGRlY2xhcmF0aW9uIGlmIG5lY2Vz c2FyeS4gIE5vdGUgdGhhdCB3ZSBjYW5ub3QKKwkJICogdHJ1c3QgcGdfYXR0cmlidXRlLmF0dG5v dG51bGwgaGVyZSwgYmVjYXVzZSB0aGF0IGJpdCBpcyBhbHNvIHNldAorCQkgKiB3aGVuIHByaW1h cnkga2V5cyBhcmUgc3BlY2lmaWVkOyB3ZSBtdXN0IG5vdCBlbWl0IGEgTk9UIE5VTEwKKwkJICog Y29uc3RyYWludCBpbiB0aGF0IGNhc2UsIHVubGVzcyBleHBsaWNpdGx5IHNwZWNpZmllZC4gIFRo ZXJlZm9yZSwKKwkJICogd2Ugc2NhbiB0aGUgbGlzdCBvZiBjb25zdHJhaW50cyBhdHRhY2hlZCB0 byB0aGlzIGNvbHVtbiB0bworCQkgKiBkZXRlcm1pbmUgd2hldGhlciB3ZSBuZWVkIHRvIGVtaXQg YW55dGhpbmcuIChGb3J0dW5hdGVseSwgTk9UIE5VTEwKKwkJICogY29uc3RyYWludHMgY2Fubm90 IGJlIHRhYmxlIGNvbnN0cmFpbnRzLikKKwkJICoKKwkJICogSW4gdGhlIEFMVEVSIFRBQkxFIGNh c2VzLCB3ZSBhbHNvIGFkZCBhIE5PVCBOVUxMIGlmIHRoZSBjb2xEZWYgaXMKKwkJICogbWFya2Vk IGlzX25vdF9udWxsLgorCQkgKi8KKwkJc2F3X25vdG51bGwgPSBmYWxzZTsKKwkJZm9yZWFjaChj ZWxsLCBjb2xkZWYtPmNvbnN0cmFpbnRzKQorCQl7CisJCQlDb25zdHJhaW50ICpjb25zdHIgPSAo Q29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisKKwkJCWlmIChjb25zdHItPmNvbnR5cGUgPT0g Q09OU1RSX05PVE5VTEwpCisJCQl7CisJCQkJc2F3X25vdG51bGwgPSB0cnVlOworCQkJCWJyZWFr OworCQkJfQorCQl9CisKKwkJaWYgKGlzX2FsdGVyICYmIGNvbGRlZi0+aXNfbm90X251bGwpCisJ CQlzYXdfbm90bnVsbCA9IHRydWU7CisKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtu b3RfbnVsbH1zIiwgIm5vdF9udWxsIiwKKwkJCQkJCQkgc2F3X25vdG51bGwgPyAiTk9UIE5VTEwi IDogIiIpOworCisJCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiREVGQVVMVCIpOworCQlpZiAoYXR0 ckZvcm0tPmF0dGhhc2RlZiAmJgorCQkJY29sZGVmLT5nZW5lcmF0ZWQgIT0gQVRUUklCVVRFX0dF TkVSQVRFRF9TVE9SRUQpCisJCXsKKwkJCWNoYXIJICAgKmRlZnN0cjsKKworCQkJZGVmc3RyID0g UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAorCQkJ CQkJCQkJCQkgIGRwY29udGV4dCwgZXhwcnMpOworCisJCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0 bXBfb2JqLCAiJXtkZWZhdWx0fXMiLCAiZGVmYXVsdCIsIGRlZnN0cik7CisJCX0KKwkJZWxzZQor CQkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCQlhcHBlbmRfb2JqZWN0X29iamVjdChy ZXQsICIle2RlZmF1bHR9cyIsIHRtcF9vYmopOworCisJCS8qIElERU5USVRZIENPTFVNTiAqLwor CQlpZiAoY29sZGVmLT5pZGVudGl0eSkKKwkJeworCQkJT2lkCQkJYXR0bm8gPSBnZXRfYXR0bnVt KHJlbGlkLCBjb2xkZWYtPmNvbG5hbWUpOworCisJCQlzZXFyZWxpZCA9IGdldElkZW50aXR5U2Vx dWVuY2UocmVsaWQsIGF0dG5vLCB0cnVlKTsKKwkJCWlmIChPaWRJc1ZhbGlkKHNlcXJlbGlkKSAm JiBjb2xkZWYtPmlkZW50aXR5U2VxdWVuY2UpCisJCQkJc2VxcmVsaWQgPSBSYW5nZVZhckdldFJl bGlkKGNvbGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSwgTm9Mb2NrLCBmYWxzZSk7CisJCX0KKworCQlp ZiAoT2lkSXNWYWxpZChzZXFyZWxpZCkpCisJCXsKKwkJCXRtcF9vYmogPSBkZXBhcnNlX0NvbHVt bklkZW50aXR5KHNlcXJlbGlkLCBjb2xkZWYtPmlkZW50aXR5LCBpc19hbHRlcik7CisJCQlhcHBl bmRfb2JqZWN0X29iamVjdChyZXQsICIle2lkZW50aXR5X2NvbHVtbn1zIiwgdG1wX29iaik7CisJ CX0KKworCQkvKiBHRU5FUkFURUQgQ09MVU1OIEVYUFJFU1NJT04gKi8KKwkJdG1wX29iaiA9IG5l d19vYmp0cmVlKCJHRU5FUkFURUQgQUxXQVlTIEFTIik7CisJCWlmIChjb2xkZWYtPmdlbmVyYXRl ZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKKwkJeworCQkJY2hhcgkgICAqZGVmc3Ry OworCisJCQlkZWZzdHIgPSBSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJG b3JtLT5hdHRudW0sCisJCQkJCQkJCQkJCSAgZHBjb250ZXh0LCBleHBycyk7CisJCQlhcHBlbmRf c3RyaW5nX29iamVjdCh0bXBfb2JqLCAiKCV7Z2VuZXJhdGlvbl9leHByfXMpIFNUT1JFRCIsCisJ CQkJCQkJCSAiZ2VuZXJhdGlvbl9leHByIiwgZGVmc3RyKTsKKwkJfQorCQllbHNlCisJCQlhcHBl bmRfbm90X3ByZXNlbnQodG1wX29iaik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAi JXtnZW5lcmF0ZWRfY29sdW1ufXMiLCB0bXBfb2JqKTsKKwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUo YXR0clR1cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSBhIENvbHVtbkRl ZiBub2RlIHdpdGhpbiBhIHR5cGVkIHRhYmxlIGNyZWF0aW9uLglUaGlzIGlzIHNpbXBsZXIKKyAq IHRoYW4gdGhlIHJlZ3VsYXIgY2FzZSwgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRvIGVtaXQgdGhl IHR5cGUgZGVjbGFyYXRpb24sCisgKiBjb2xsYXRpb24sIG9yIGRlZmF1bHQuICBIZXJlIHdlIG9u bHkgcmV0dXJuIHNvbWV0aGluZyBpZiB0aGUgY29sdW1uIGlzIGJlaW5nCisgKiBkZWNsYXJlZCBO T1QgTlVMTC4KKyAqCisgKiBBcyBpbiBkZXBhcnNlX0NvbHVtbkRlZiwgYW55IG90aGVyIGNvbnN0 cmFpbnQgaXMgcHJvY2Vzc2VkIGVsc2V3aGVyZS4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog JXtuYW1lfUkgV0lUSCBPUFRJT05TICV7bm90X251bGx9cyAle2RlZmF1bHR9cy4KKyAqLworc3Rh dGljIE9ialRyZWUgKgorZGVwYXJzZV9Db2x1bW5EZWZfdHlwZWQoUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKmRwY29udGV4dCwgQ29sdW1uRGVmICpjb2xkZWYpCit7CisJT2JqVHJlZSAgICAqcmV0 ID0gTlVMTDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCU9pZAkJCXJlbGlkID0gUmVsYXRpb25H ZXRSZWxpZChyZWxhdGlvbik7CisJSGVhcFR1cGxlCWF0dHJUdXA7CisJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ckZvcm07CisJT2lkCQkJdHlwaWQ7CisJaW50MzIJCXR5cG1vZDsKKwlPaWQJCQl0eXBj b2xsYXRpb247CisJYm9vbAkJc2F3X25vdG51bGw7CisJTGlzdENlbGwgICAqY2VsbDsKKworCWF0 dHJUdXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUocmVsaWQsIGNvbGRlZi0+Y29sbmFtZSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGF0dHJUdXApKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90 IGZpbmQgY2FjaGUgZW50cnkgZm9yIGNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gJXUiLAorCQkJ IGNvbGRlZi0+Y29sbmFtZSwgcmVsaWQpOworCWF0dHJGb3JtID0gKEZvcm1fcGdfYXR0cmlidXRl KSBHRVRTVFJVQ1QoYXR0clR1cCk7CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVsaWQsIGF0 dHJGb3JtLT5hdHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxhdGlvbik7 CisKKwkvKgorCSAqIFNlYXJjaCBmb3IgYSBOT1QgTlVMTCBkZWNsYXJhdGlvbi4gQXMgaW4gZGVw YXJzZV9Db2x1bW5EZWYsIHdlIHJlbHkgb24KKwkgKiBmaW5kaW5nIGEgY29uc3RyYWludCBvbiB0 aGUgY29sdW1uIHJhdGhlciB0aGFuIGNvbGRlZi0+aXNfbm90X251bGwuCisJICogKFRoaXMgcm91 dGluZSBpcyBuZXZlciB1c2VkIGZvciBBTFRFUiBjYXNlcy4pCisJICovCisJc2F3X25vdG51bGwg PSBmYWxzZTsKKwlmb3JlYWNoKGNlbGwsIGNvbGRlZi0+Y29uc3RyYWludHMpCisJeworCQlDb25z dHJhaW50ICpjb25zdHIgPSAoQ29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKGNv bnN0ci0+Y29udHlwZSA9PSBDT05TVFJfTk9UTlVMTCkKKwkJeworCQkJc2F3X25vdG51bGwgPSB0 cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoIXNhd19ub3RudWxsICYmICFhdHRyRm9y bS0+YXR0aGFzZGVmKQorCXsKKwkJUmVsZWFzZVN5c0NhY2hlKGF0dHJUdXApOworCQlyZXR1cm4g TlVMTDsKKwl9CisKKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIkRFRkFVTFQiKTsKKwlpZiAoYXR0 ckZvcm0tPmF0dGhhc2RlZikKKwl7CisJCWNoYXIJICAgKmRlZnN0cjsKKworCQlkZWZzdHIgPSBS ZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJ CQkJCQkJICBkcGNvbnRleHQsIE5VTEwpOworCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9v YmosICIle2RlZmF1bHR9cyIsICJkZWZhdWx0IiwgZGVmc3RyKTsKKwl9CisJZWxzZQorCQlhcHBl bmRfbm90X3ByZXNlbnQodG1wX29iaik7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiJXtuYW1l fUkgV0lUSCBPUFRJT05TICV7bm90X251bGx9cyAle2RlZmF1bHR9cyIsIDQsCisJCQkJCQkgInR5 cGUiLCBPYmpUeXBlU3RyaW5nLCAiY29sdW1uIiwKKwkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJp bmcsIGNvbGRlZi0+Y29sbmFtZSwKKwkJCQkJCSAibm90X251bGwiLCBPYmpUeXBlU3RyaW5nLAor CQkJCQkJIHNhd19ub3RudWxsID8gIk5PVCBOVUxMIiA6ICIiLAorCQkJCQkJICJkZWZhdWx0Iiwg T2JqVHlwZU9iamVjdCwgdG1wX29iaik7CisKKwkvKiBHZW5lcmF0ZWQgY29sdW1ucyBhcmUgbm90 IHN1cHBvcnRlZCBvbiB0eXBlZCB0YWJsZXMsIHNvIHdlIGFyZSBkb25lICovCisKKwlSZWxlYXNl U3lzQ2FjaGUoYXR0clR1cCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSB0 aGUgZGVmaW5pdGlvbiBvZiBjb2x1bW4gaWRlbnRpdHkuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIFNFVCBHRU5FUkFURUQgJXtvcHRpb259cyAle2lkZW50aXR5X3R5cGV9cyAle3NlcV9kZWZp bml0aW9uOiB9cworICogCU9SCisgKiBHRU5FUkFURUQgJXtvcHRpb259cyBBUyBJREVOVElUWSAl e2lkZW50aXR5X3R5cGV9cyAoICV7c2VxX2RlZmluaXRpb246IH1zICkKKyAqLworc3RhdGljIE9i alRyZWUgKgorZGVwYXJzZV9Db2x1bW5JZGVudGl0eShPaWQgc2VxcmVsaWQsIGNoYXIgaWRlbnRp dHksIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0OworCU9ialRyZWUgICAg KmlkZW50X29iajsKKwlMaXN0CSAgICplbGVtcyA9IE5JTDsKKwlGb3JtX3BnX3NlcXVlbmNlIHNl cWZvcm07CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1ZXM7CisJY2hhcgkgICAqaWRlbnRmbXQ7 CisJY2hhcgkgICAqb2JqZm10OworCisJaWYgKGFsdGVyX3RhYmxlKQorCXsKKwkJaWRlbnRmbXQg PSAiU0VUIEdFTkVSQVRFRCAiOworCQlvYmpmbXQgPSAiJXtvcHRpb259cyI7CisJfQorCWVsc2UK Kwl7CisJCWlkZW50Zm10ID0gIkdFTkVSQVRFRCAiOworCQlvYmpmbXQgPSAiJXtvcHRpb259cyBB UyBJREVOVElUWSI7CisJfQorCisJaWRlbnRfb2JqID0gbmV3X29ianRyZWUoaWRlbnRmbXQpOwor CisJaWYgKGlkZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9BTFdBWVMpCisJCWFwcGVuZF9z dHJpbmdfb2JqZWN0KGlkZW50X29iaiwgb2JqZm10LCAib3B0aW9uIiwgIkFMV0FZUyIpOworCWVs c2UgaWYgKGlkZW50aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9CWV9ERUZBVUxUKQorCQlhcHBl bmRfc3RyaW5nX29iamVjdChpZGVudF9vYmosIG9iamZtdCwgIm9wdGlvbiIsICJCWSBERUZBVUxU Iik7CisJZWxzZQorCQlhcHBlbmRfbm90X3ByZXNlbnQoaWRlbnRfb2JqKTsKKworCXJldCA9IG5l d19vYmp0cmVlX1ZBKCIle2lkZW50aXR5X3R5cGV9cyIsIDEsCisJCQkJCQkgImlkZW50aXR5X3R5 cGUiLCBPYmpUeXBlT2JqZWN0LCBpZGVudF9vYmopOworCisJc2VxdmFsdWVzID0gZ2V0X3NlcXVl bmNlX3ZhbHVlcyhzZXFyZWxpZCk7CisJc2VxZm9ybSA9IHNlcXZhbHVlcy0+c2VxZm9ybTsKKwor CS8qIERlZmluaXRpb24gZWxlbWVudHMgKi8KKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFy c2VfU2VxX0NhY2hlKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVs ZW1zLCBkZXBhcnNlX1NlcV9DeWNsZShzZXFmb3JtLCBhbHRlcl90YWJsZSkpOworCWVsZW1zID0g bGFwcGVuZChlbGVtcywgZGVwYXJzZV9TZXFfSW5jcmVtZW50Qnkoc2VxZm9ybSwgYWx0ZXJfdGFi bGUpKTsKKwllbGVtcyA9IGxhcHBlbmQoZWxlbXMsIGRlcGFyc2VfU2VxX01pbnZhbHVlKHNlcWZv cm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBsYXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9N YXh2YWx1ZShzZXFmb3JtLCBhbHRlcl90YWJsZSkpOworCWVsZW1zID0gbGFwcGVuZChlbGVtcywg ZGVwYXJzZV9TZXFfU3RhcnR3aXRoKHNlcWZvcm0sIGFsdGVyX3RhYmxlKSk7CisJZWxlbXMgPSBs YXBwZW5kKGVsZW1zLCBkZXBhcnNlX1NlcV9SZXN0YXJ0KHNlcXZhbHVlcy0+bGFzdF92YWx1ZSkp OworCS8qIFdlIHB1cnBvc2VmdWxseSBkbyBub3QgZW1pdCBPV05FRCBCWSBoZXJlICovCisKKwlp ZiAoYWx0ZXJfdGFibGUpCisJCWFwcGVuZF9hcnJheV9vYmplY3QocmV0LCAiJXtzZXFfZGVmaW5p dGlvbjogfXMiLCBlbGVtcyk7CisJZWxzZQorCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHJldCwgIigg JXtzZXFfZGVmaW5pdGlvbjogfXMgKSIsIGVsZW1zKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8q CisgKiAuLi4gQUxURVIgQ09MVU1OIC4uLiBTRVQvUkVTRVQgKC4uLikKKyAqCisgKiBWZXJib3Nl IHN5bnRheAorICogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgUkVTRVR8U0VUICgle29wdGlvbnM6 LCB9cykKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9Db2x1bW5TZXRPcHRpb25zKEFs dGVyVGFibGVDbWQgKnN1YmNtZCkKK3sKKwlMaXN0CSAgICpzZXRzID0gTklMOworCUxpc3RDZWxs ICAgKmNlbGw7CisJT2JqVHJlZSAgICAqcmV0OworCWJvb2wJCWlzX3Jlc2V0ID0gc3ViY21kLT5z dWJ0eXBlID09IEFUX1Jlc2V0T3B0aW9uczsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJBTFRF UiBDT0xVTU4gJXtjb2x1bW59SSAle29wdGlvbn1zIiwgMiwKKwkJCQkJCSAiY29sdW1uIiwgT2Jq VHlwZVN0cmluZywgc3ViY21kLT5uYW1lLAorCQkJCQkJICJvcHRpb24iLCBPYmpUeXBlU3RyaW5n LCBpc19yZXNldCA/ICJSRVNFVCIgOiAiU0VUIik7CisKKwlmb3JlYWNoKGNlbGwsIChMaXN0ICop IHN1YmNtZC0+ZGVmKQorCXsKKwkJRGVmRWxlbSAgICAqZWxlbTsKKwkJT2JqVHJlZSAgICAqc2V0 OworCisJCWVsZW0gPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisJCXNldCA9IGRlcGFyc2Vf RGVmRWxlbShlbGVtLCBpc19yZXNldCk7CisJCXNldHMgPSBsYXBwZW5kKHNldHMsIG5ld19vYmpl Y3Rfb2JqZWN0KHNldCkpOworCX0KKworCUFzc2VydChzZXRzKTsKKwlhcHBlbmRfYXJyYXlfb2Jq ZWN0KHJldCwgIigle29wdGlvbnM6LCB9cykiLCBzZXRzKTsKKworCXJldHVybiByZXQ7Cit9CisK Ky8qCisgKiAuLi4gQUxURVIgQ09MVU1OIC4uLiBTRVQvUkVTRVQgKC4uLikKKyAqCisgKiBWZXJi b3NlIHN5bnRheAorICogUkVTRVR8U0VUICgle29wdGlvbnM6LCB9cykKKyAqLworc3RhdGljIE9i alRyZWUgKgorZGVwYXJzZV9SZWxTZXRPcHRpb25zKEFsdGVyVGFibGVDbWQgKnN1YmNtZCkKK3sK KwlMaXN0CSAgICpzZXRzID0gTklMOworCUxpc3RDZWxsICAgKmNlbGw7CisJYm9vbAkJaXNfcmVz ZXQgPSBzdWJjbWQtPnN1YnR5cGUgPT0gQVRfUmVzZXRSZWxPcHRpb25zOworCisJZm9yZWFjaChj ZWxsLCAoTGlzdCAqKSBzdWJjbWQtPmRlZikKKwl7CisJCURlZkVsZW0gICAgKmVsZW07CisJCU9i alRyZWUgICAgKnNldDsKKworCQllbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCQlz ZXQgPSBkZXBhcnNlX0RlZkVsZW0oZWxlbSwgaXNfcmVzZXQpOworCQlzZXRzID0gbGFwcGVuZChz ZXRzLCBuZXdfb2JqZWN0X29iamVjdChzZXQpKTsKKwl9CisKKwlBc3NlcnQoc2V0cyk7CisKKwly ZXR1cm4gbmV3X29ianRyZWVfVkEoIiV7c2V0X3Jlc2V0fXMgKCV7b3B0aW9uczosIH1zKSIsIDIs CisJCQkJCQkgICJzZXRfcmVzZXQiLCBPYmpUeXBlU3RyaW5nLCBpc19yZXNldCA/ICJSRVNFVCIg OiAiU0VUIiwKKwkJCQkJCSAgIm9wdGlvbnMiLCBPYmpUeXBlQXJyYXksIHNldHMpOworfQorCisv KgorICogRGVwYXJzZSBEZWZFbGVtcywgYXMgdXNlZCBlLmcuIGJ5IEFMVEVSIENPTFVNTiAuLi4g U0VULCBpbnRvIGEgbGlzdCBvZiBTRVQKKyAqICguLi4pICBvciBSRVNFVCAoLi4uKSBjb250ZW50 cy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogJXtsYWJlbH1zID0gJXt2YWx1ZX1MCisgKi8K K3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfRGVmRWxlbShEZWZFbGVtICplbGVtLCBib29sIGlz X3Jlc2V0KQoreworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICpvcHRuYW1lID0gbmV3 X29ianRyZWUoIiIpOworCisJaWYgKGVsZW0tPmRlZm5hbWVzcGFjZSAhPSBOVUxMKQorCQlhcHBl bmRfc3RyaW5nX29iamVjdChvcHRuYW1lLCAiJXtzY2hlbWF9SS4iLCAic2NoZW1hIiwKKwkJCQkJ CQkgZWxlbS0+ZGVmbmFtZXNwYWNlKTsKKworCWFwcGVuZF9zdHJpbmdfb2JqZWN0KG9wdG5hbWUs ICIle2xhYmVsfUkiLCAibGFiZWwiLCBlbGVtLT5kZWZuYW1lKTsKKworCXJldCA9IG5ld19vYmp0 cmVlX1ZBKCIle2xhYmVsfXMiLCAxLAorCQkJCQkJICJsYWJlbCIsIE9ialR5cGVPYmplY3QsIG9w dG5hbWUpOworCisJaWYgKCFpc19yZXNldCkKKwkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAi PSAle3ZhbHVlfUwiLCAidmFsdWUiLAorCQkJCQkJCSBlbGVtLT5hcmcgPyBkZWZHZXRTdHJpbmco ZWxlbSkgOgorCQkJCQkJCSBkZWZHZXRCb29sZWFuKGVsZW0pID8gIlRSVUUiIDogIkZBTFNFIik7 CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogRGVwYXJzZSB0aGUgSU5IRVJJVFMgcmVsYXRp b25zLgorICoKKyAqIEdpdmVuIGEgdGFibGUgT0lELCByZXR1cm4gYSBzY2hlbWEtcXVhbGlmaWVk IHRhYmxlIGxpc3QgcmVwcmVzZW50aW5nCisgKiB0aGUgcGFyZW50IHRhYmxlcy4KKyAqLworc3Rh dGljIExpc3QgKgorZGVwYXJzZV9JbmhSZWxhdGlvbnMoT2lkIG9iamVjdElkKQoreworCUxpc3QJ ICAgKnBhcmVudHMgPSBOSUw7CisJUmVsYXRpb24JaW5oUmVsOworCVN5c1NjYW5EZXNjIHNjYW47 CisJU2NhbktleURhdGEga2V5OworCUhlYXBUdXBsZQl0dXBsZTsKKworCWluaFJlbCA9IHRhYmxl X29wZW4oSW5oZXJpdHNSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCVNjYW5LZXlJ bml0KCZrZXksCisJCQkJQW51bV9wZ19pbmhlcml0c19pbmhyZWxpZCwKKwkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShvYmplY3RJZCkpOwor CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihpbmhSZWwsIEluaGVyaXRzUmVsaWRTZXFub0lu ZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAma2V5KTsKKworCXdoaWxlIChIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlPYmpUcmVl ICAgICpwYXJlbnQ7CisJCUZvcm1fcGdfaW5oZXJpdHMgZm9ybUluaCA9IChGb3JtX3BnX2luaGVy aXRzKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCXBhcmVudCA9IG5ld19vYmp0cmVlX2Zvcl9xdWFs bmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCSBmb3JtSW5oLT5pbmhwYXJl bnQpOworCQlwYXJlbnRzID0gbGFwcGVuZChwYXJlbnRzLCBuZXdfb2JqZWN0X29iamVjdChwYXJl bnQpKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGluaFJl bCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gcGFyZW50czsKK30KKworLyoKKyAqIERl cGFyc2UgdGhlIE9OIENPTU1JVCAuLi4gY2xhdXNlIGZvciBDUkVBVEUgLi4uIFRFTVBPUkFSWSAu Li4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogT04gQ09NTUlUICV7b25fY29tbWl0X3ZhbHVl fXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9PbkNvbW1pdENsYXVzZShPbkNvbW1p dEFjdGlvbiBvcHRpb24pCit7CisJT2JqVHJlZSAgICAqcmV0ICA9IG5ld19vYmp0cmVlKCJPTiBD T01NSVQiKTsKKwlzd2l0Y2ggKG9wdGlvbikKKwl7CisJCWNhc2UgT05DT01NSVRfRFJPUDoKKwkJ CWFwcGVuZF9zdHJpbmdfb2JqZWN0KHJldCwgIiV7b25fY29tbWl0X3ZhbHVlfXMiLAorCQkJCQkJ CQkgIm9uX2NvbW1pdF92YWx1ZSIsICJEUk9QIik7CisJCQlicmVhazsKKworCQljYXNlIE9OQ09N TUlUX0RFTEVURV9ST1dTOgorCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtvbl9jb21t aXRfdmFsdWV9cyIsCisJCQkJCQkJCSAib25fY29tbWl0X3ZhbHVlIiwgIkRFTEVURSBST1dTIik7 CisJCQlicmVhazsKKworCQljYXNlIE9OQ09NTUlUX1BSRVNFUlZFX1JPV1M6CisJCQlhcHBlbmRf c3RyaW5nX29iamVjdChyZXQsICIle29uX2NvbW1pdF92YWx1ZX1zIiwKKwkJCQkJCQkJICJvbl9j b21taXRfdmFsdWUiLCAiUFJFU0VSVkUgUk9XUyIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBPTkNP TU1JVF9OT09QOgorCQkJYXBwZW5kX251bGxfb2JqZWN0KHJldCwgIiV7b25fY29tbWl0X3ZhbHVl fXMiKTsKKwkJCWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOworCQkJYnJlYWs7CisJfQorCisJcmV0 dXJuIHJldDsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIENBQ0hFIG9wdGlvbi4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogU0VUIENBQ0hFICV7dmFsdWV9cworICogT1IKKyAq IENBQ0hFICV7dmFsdWV9CisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1Nl cV9DYWNoZShGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJ T2JqVHJlZSAgICAqcmV0OworCWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8g IlNFVCBDQUNIRSAle3ZhbHVlfXMiIDogIkNBQ0hFICV7dmFsdWV9cyI7CisKKwlyZXQgPSBuZXdf b2JqdHJlZV9WQShmbXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJjYWNo ZSIsCisJCQkJCQkgInZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3ByaW50ZihJTlQ2 NF9GT1JNQVQsIHNlcWRhdGEtPnNlcWNhY2hlKSk7CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmpl Y3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIENZQ0xFIG9wdGlvbi4K KyAqCisgKiBWZXJib3NlIHN5bnRheAorICogU0VUICV7bm99cyBDWUNMRQorICogT1IKKyAqICV7 bm99cyBDWUNMRQorICovCitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfQ3lj bGUoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQoreworCU9ialRy ZWUgICAgKnJldDsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQg JXtub31zIENZQ0xFIiA6ICIle25vfXMgQ1lDTEUiOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEo Zm10LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiY3ljbGUiLAorCQkJCQkJ ICJubyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgc2VxZGF0YS0+c2VxY3ljbGUgPyAiIiA6ICJO TyIpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBEZXBh cnNlIHRoZSBzZXF1ZW5jZSBJTkNSRU1FTlQgQlkgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBTRVQgSU5DUkVNRU5UIEJZICV7dmFsdWV9cworICogT1IKKyAqIElOQ1JFTUVOVCBC WSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX0lu Y3JlbWVudEJ5KEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKK3sK KwlPYmpUcmVlICAgICpyZXQ7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJfdGFibGUg PyAiU0VUIElOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiIDogIklOQ1JFTUVOVCBCWSAle3ZhbHVlfXMi OworCisJcmV0ID0gbmV3X29ianRyZWVfVkEoZm10LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpU eXBlU3RyaW5nLCAic2VxaW5jcmVtZW50IiwKKwkJCQkJCSAidmFsdWUiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJIHBzcHJpbnRmKElOVDY0X0ZPUk1BVCwgc2VxZGF0YS0+c2VxaW5jcmVtZW50KSk7 CisKKwlyZXR1cm4gbmV3X29iamVjdF9vYmplY3QocmV0KTsKK30KKworLyoKKyAqIERlcGFyc2Ug dGhlIHNlcXVlbmNlIE1BWFZBTFVFIG9wdGlvbi4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICog U0VUIE1BWFZBTFVFICV7dmFsdWV9cworICogT1IKKyAqIE1BWFZBTFVFICV7dmFsdWV9cworICov CitzdGF0aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfTWF4dmFsdWUoRm9ybV9wZ19z ZXF1ZW5jZSBzZXFkYXRhLCBib29sIGFsdGVyX3RhYmxlKQoreworCU9ialRyZWUgICAgKnJldDsK KwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgTUFYVkFMVUUgJXt2 YWx1ZX1zIiA6ICJNQVhWQUxVRSAle3ZhbHVlfXMiOworCisJcmV0ID0gbmV3X29ianRyZWVfVkEo Zm10LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAibWF4dmFsdWUiLAorCQkJ CQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFU LCBzZXFkYXRhLT5zZXFtYXgpKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVjdChyZXQpOwor fQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgTUlOVkFMVUUgb3B0aW9uLgorICoKKyAq IFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgTUlOVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgorICogTUlO VkFMVUUgJXt2YWx1ZX1zCisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAqCitkZXBhcnNlX1Nl cV9NaW52YWx1ZShGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7 CisJT2JqVHJlZSAgICAqcmV0OworCWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxl ID8gIlNFVCBNSU5WQUxVRSAle3ZhbHVlfXMiIDogIk1JTlZBTFVFICV7dmFsdWV9cyI7CisKKwly ZXQgPSBuZXdfb2JqdHJlZV9WQShmbXQsIDIsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJp bmcsICJtaW52YWx1ZSIsCisJCQkJCQkgInZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBw c3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEtPnNlcW1pbikpOworCisJcmV0dXJuIG5ld19v YmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBSRVNU QVJUIG9wdGlvbi4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogUkVTVEFSVCAle3ZhbHVlfXMK KyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX1Jlc3RhcnQoaW50NjQg bGFzdF92YWx1ZSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9W QSgiUkVTVEFSVCAle3ZhbHVlfXMiLCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5n LCAicmVzdGFydCIsCisJCQkJCQkgInZhbHVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBwc3By aW50ZihJTlQ2NF9GT1JNQVQsIGxhc3RfdmFsdWUpKTsKKworCXJldHVybiBuZXdfb2JqZWN0X29i amVjdChyZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQVMgb3B0aW9uLgor ICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBUyAle3NlcXR5cGV9VAorICovCitzdGF0aWMgaW5s aW5lIE9iakVsZW0gKgorZGVwYXJzZV9TZXFfQXMoRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQor eworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlKCJBUyIpOworCWlmIChP aWRJc1ZhbGlkKHNlcWRhdGEtPnNlcXR5cGlkKSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0 LCAiJXtzZXF0eXBlfVQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfdHlwZShzZXFkYXRhLT5z ZXF0eXBpZCwgLTEpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0 dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1 ZW5jZSBTVEFSVCBXSVRIIG9wdGlvbi4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogU0VUIFNU QVJUIFdJVEggJXt2YWx1ZX1zCisgKiBPUgorICogU1RBUlQgV0lUSCAle3ZhbHVlfXMKKyAqLwor c3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfU2VxX1N0YXJ0d2l0aChGb3JtX3BnX3Nl cXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCit7CisJT2JqVHJlZSAgICAqcmV0Owor CWNoYXIJICAgKmZtdDsKKworCWZtdCA9IGFsdGVyX3RhYmxlID8gIlNFVCBTVEFSVCBXSVRIICV7 dmFsdWV9cyIgOiAiU1RBUlQgV0lUSCAle3ZhbHVlfXMiOworCisJcmV0ID0gbmV3X29ianRyZWVf VkEoZm10LCAyLAorCQkJCQkJICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAic3RhcnQiLAorCQkJ CQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFU LCBzZXFkYXRhLT5zZXFzdGFydCkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7 Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIFNUT1JBR0Ugb3B0aW9uLgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBTVE9SQUdFPSV7dmFsdWV9cworICovCitzdGF0aWMgaW5saW5lIE9i akVsZW0gKgorZGVwYXJzZV9UeXBlX1N0b3JhZ2UoRm9ybV9wZ190eXBlIHR5cEZvcm0pCit7CisJ T2JqVHJlZSAgICAqcmV0OworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTVE9SQUdFID0gJXt2YWx1 ZX1zIiwgMiwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInN0b3JhZ2UiLAorCQkJ CQkJICJ2YWx1ZSIsIE9ialR5cGVTdHJpbmcsIGdldF90eXBlX3N0b3JhZ2UodHlwRm9ybS0+dHlw c3RvcmFnZSkpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisg KiBEZXBhcnNlIHRoZSB0eXBlIFJFQ0VJVkUgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4 CisgKiBSRUNFSVZFPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoK K2RlcGFyc2VfVHlwZV9SZWNlaXZlKEZvcm1fcGdfdHlwZSB0eXBGb3JtKQoreworCU9ialRyZWUg ICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJSRUNFSVZFPSIsIDEsCisJCQkJCQkg ImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJyZWNlaXZlIik7CisJaWYgKE9pZElzVmFsaWQodHlw Rm9ybS0+dHlwcmVjZWl2ZSkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cHJvY2Vk dXJlfUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVs YXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cHJlY2VpdmUpKTsKKwllbHNlCisJ CWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJl dCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIFNFTkQgb3B0aW9uLgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiBTRU5EPSV7cHJvY2VkdXJlfUQKKyAqLworc3RhdGljIGlubGluZSBP YmpFbGVtICoKK2RlcGFyc2VfVHlwZV9TZW5kKEZvcm1fcGdfdHlwZSB0eXBGb3JtKQoreworCU9i alRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJTRU5EPSIsIDEsCisJCQkJ CQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzZW5kIik7CisJaWYgKE9pZElzVmFsaWQodHlw Rm9ybS0+dHlwc2VuZCkpCisJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7cHJvY2VkdXJl fUQiLAorCQkJCQkJCSBuZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUHJvY2VkdXJlUmVsYXRp b25JZCwKKwkJCQkJCQkJCQkJCQkJIHR5cEZvcm0tPnR5cHNlbmQpKTsKKwllbHNlCisJCWFwcGVu ZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9 CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIHR5cG1vZF9pbiBvcHRpb24uCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIFRZUE1PRF9JTj0le3Byb2NlZHVyZX1ECisgKi8KK3N0YXRpYyBpbmxp bmUgT2JqRWxlbSAqCitkZXBhcnNlX1R5cGVfVHlwbW9kX0luKEZvcm1fcGdfdHlwZSB0eXBGb3Jt KQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJUWVBNT0Rf SU49IiwgMSwKKwkJCQkJCSAiY2xhdXNlIiwgT2JqVHlwZVN0cmluZywgInR5cG1vZF9pbiIpOwor CWlmIChPaWRJc1ZhbGlkKHR5cEZvcm0tPnR5cG1vZGluKSkKKwkJYXBwZW5kX29iamVjdF9vYmpl Y3QocmV0LCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFt ZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwbW9k aW4pKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOworCisJcmV0dXJuIG5ld19v YmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSB0eXBlIHR5cG1vZF9v dXQgb3B0aW9uLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBUWVBNT0RfT1VUPSV7cHJvY2Vk dXJlfUQKKyAqLworc3RhdGljIGlubGluZSBPYmpFbGVtICoKK2RlcGFyc2VfVHlwZV9UeXBtb2Rf T3V0KEZvcm1fcGdfdHlwZSB0eXBGb3JtKQoreworCU9ialRyZWUgICAgKnJldDsKKworCXJldCA9 IG5ld19vYmp0cmVlX1ZBKCJUWVBNT0RfT1VUPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5 cGVTdHJpbmcsICJ0eXBtb2Rfb3V0Iik7CisJaWYgKE9pZElzVmFsaWQodHlwRm9ybS0+dHlwbW9k b3V0KSkKKwkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiJXtwcm9jZWR1cmV9RCIsCisJCQkJ CQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChQcm9jZWR1cmVSZWxhdGlvbklkLAorCQkJ CQkJCQkJCQkJCQkgdHlwRm9ybS0+dHlwbW9kb3V0KSk7CisJZWxzZQorCQlhcHBlbmRfbm90X3By ZXNlbnQocmV0KTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVjdChyZXQpOworfQorCisvKgor ICogRGVwYXJzZSB0aGUgdHlwZSBhbmFseXplIG9wdGlvbi4KKyAqCisgKiBWZXJib3NlIHN5bnRh eAorICogQU5BTFlaRT0le3Byb2NlZHVyZX1ECisgKi8KK3N0YXRpYyBpbmxpbmUgT2JqRWxlbSAq CitkZXBhcnNlX1R5cGVfQW5hbHl6ZShGb3JtX3BnX3R5cGUgdHlwRm9ybSkKK3sKKwlPYmpUcmVl ICAgICpyZXQ7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQU5BTFlaRT0iLCAxLAorCQkJCQkJ ICJjbGF1c2UiLCBPYmpUeXBlU3RyaW5nLCAiYW5hbHl6ZSIpOworCWlmIChPaWRJc1ZhbGlkKHR5 cEZvcm0tPnR5cGFuYWx5emUpKQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3Byb2Nl ZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJl bGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBGb3JtLT50eXBhbmFseXplKSk7CisJZWxzZQor CQlhcHBlbmRfbm90X3ByZXNlbnQocmV0KTsKKworCXJldHVybiBuZXdfb2JqZWN0X29iamVjdChy ZXQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgdHlwZSBzdWJzY3JpcHQgb3B0aW9uLgorICoK KyAqIFZlcmJvc2Ugc3ludGF4CisgKiBTVUJTQ1JJUFQ9JXtwcm9jZWR1cmV9RAorICovCitzdGF0 aWMgaW5saW5lIE9iakVsZW0gKgorZGVwYXJzZV9UeXBlX1N1YnNjcmlwdChGb3JtX3BnX3R5cGUg dHlwRm9ybSkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgi U1VCU0NSSVBUPSIsIDEsCisJCQkJCQkgImNsYXVzZSIsIE9ialR5cGVTdHJpbmcsICJzdWJzY3Jp cHQiKTsKKwlpZiAoT2lkSXNWYWxpZCh0eXBGb3JtLT50eXBzdWJzY3JpcHQpKQorCQlhcHBlbmRf b2JqZWN0X29iamVjdChyZXQsICIle3Byb2NlZHVyZX1EIiwKKwkJCQkJCQkgbmV3X29ianRyZWVf Zm9yX3F1YWxuYW1lX2lkKFByb2NlZHVyZVJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSB0eXBG b3JtLT50eXBzdWJzY3JpcHQpKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudChyZXQpOwor CisJcmV0dXJuIG5ld19vYmplY3Rfb2JqZWN0KHJldCk7Cit9CisKKy8qCisgKiBTdWJyb3V0aW5l IGZvciBDUkVBVEUgVEFCTEUgZGVwYXJzaW5nLgorICoKKyAqIERlYWwgd2l0aCBhbGwgdGhlIHRh YmxlIGVsZW1lbnRzIChjb2x1bW5zIGFuZCBjb25zdHJhaW50cykuCisgKgorICogTm90ZSB3ZSBp Z25vcmUgY29uc3RyYWludHMgaW4gdGhlIHBhcnNlIG5vZGUgaGVyZTsgdGhleSBhcmUgZXh0cmFj dGVkIGZyb20KKyAqIHN5c3RlbSBjYXRhbG9ncyBpbnN0ZWFkLgorICovCitzdGF0aWMgTGlzdCAq CitkZXBhcnNlX1RhYmxlRWxlbWVudHMoUmVsYXRpb24gcmVsYXRpb24sIExpc3QgKnRhYmxlRWxl bWVudHMsIExpc3QgKmRwY29udGV4dCwKKwkJCQkJICBib29sIHR5cGVkLCBib29sIGNvbXBvc2l0 ZSkKK3sKKwlMaXN0CSAgICplbGVtZW50cyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZv cmVhY2gobGMsIHRhYmxlRWxlbWVudHMpCisJeworCQlOb2RlCSAgICplbHQgPSAoTm9kZSAqKSBs Zmlyc3QobGMpOworCisJCXN3aXRjaCAobm9kZVRhZyhlbHQpKQorCQl7CisJCQljYXNlIFRfQ29s dW1uRGVmOgorCQkJCXsKKwkJCQkJT2JqVHJlZSAgICAqdHJlZTsKKworCQkJCQl0cmVlID0gdHlw ZWQgPworCQkJCQkJZGVwYXJzZV9Db2x1bW5EZWZfdHlwZWQocmVsYXRpb24sIGRwY29udGV4dCwK KwkJCQkJCQkJCQkJCShDb2x1bW5EZWYgKikgZWx0KSA6CisJCQkJCQlkZXBhcnNlX0NvbHVtbkRl ZihyZWxhdGlvbiwgZHBjb250ZXh0LAorCQkJCQkJCQkJCSAgY29tcG9zaXRlLCAoQ29sdW1uRGVm ICopIGVsdCwKKwkJCQkJCQkJCQkgIGZhbHNlLCBOVUxMKTsKKwkJCQkJaWYgKHRyZWUgIT0gTlVM TCkKKwkJCQkJCWVsZW1lbnRzID0gbGFwcGVuZChlbGVtZW50cywgbmV3X29iamVjdF9vYmplY3Qo dHJlZSkpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Db25zdHJhaW50OgorCQkJCWJy ZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBub2RlIHR5cGUgJWQi LCBub2RlVGFnKGVsdCkpOworCQl9CisJfQorCisJcmV0dXJuIGVsZW1lbnRzOworfQorCisvKgor ICogRGVwYXJzZSBhIENyZWF0ZVN0bXQgKENSRUFURSBUQUJMRSkuCisgKgorICogR2l2ZW4gYSB0 YWJsZSBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuIE9i alRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBWZXJi b3NlIHN5bnRheAorICogQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlz dHN9cyAle2lkZW50aXR5fUQgW09GCisgKiAle29mX3R5cGV9VCB8IFBBUlRJVElPTiBPRiAle3Bh cmVudF9pZGVudGl0eX1EXSAle3RhYmxlX2VsZW1lbnRzfXMKKyAqICV7aW5oZXJpdHN9cyAle3Bh cnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9cworICogJXtvbl9j b21taXR9cyAle3RhYmxlc3BhY2V9cworICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0Ny ZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCit7CisJQ3JlYXRlU3RtdCAq bm9kZSA9IChDcmVhdGVTdG10ICopIHBhcnNldHJlZTsKKwlSZWxhdGlvbglyZWxhdGlvbiA9IHJl bGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJTGlzdAkgICAqZHBjb250 ZXh0OworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCUxpc3QJICAg Kmxpc3QgPSBOSUw7CisJTGlzdENlbGwgICAqY2VsbDsKKworCXJldCA9IG5ld19vYmp0cmVlX1ZB KCJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRp dHl9RCIsIDMsCisJCQkJCQkgInBlcnNpc3RlbmNlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBn ZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKSwKKwkJ CQkJCSAiaWZfbm90X2V4aXN0cyIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgbm9kZS0+aWZfbm90 X2V4aXN0cyA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiLAorCQkJCQkJICJpZGVudGl0eSIsIE9ialR5 cGVPYmplY3QsCisJCQkJCQkgbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJlbGF0aW9uLT5yZF9y ZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKSk7CisKKwlkcGNvbnRleHQgPSBkZXBhcnNlX2NvbnRleHRfZm9yKFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwKKwkJCQkJCQkJCW9iamVjdElkKTsKKworCS8qCisJ ICogVHlwZWQgdGFibGVzIGFuZCBwYXJ0aXRpb25zIHVzZSBhIHNsaWdodGx5IGRpZmZlcmVudCBm b3JtYXQgc3RyaW5nOiB3ZQorCSAqIG11c3Qgbm90IHB1dCB0YWJsZV9lbGVtZW50cyB3aXRoIHBh cmVudHMgZGlyZWN0bHkgaW4gdGhlIGZtdCBzdHJpbmcsCisJICogYmVjYXVzZSBpZiB0aGVyZSBh cmUgbm8gb3B0aW9ucyB0aGUgcGFyZW50aGVzZXMgbXVzdCBub3QgYmUgZW1pdHRlZDsKKwkgKiBh bmQgYWxzbywgdHlwZWQgdGFibGVzIGRvIG5vdCBhbGxvdyBmb3IgaW5oZXJpdGFuY2UuCisJICov CisJaWYgKG5vZGUtPm9mVHlwZW5hbWUgfHwgbm9kZS0+cGFydGJvdW5kKQorCXsKKwkJTGlzdAkg ICAqdGFibGVlbHRzID0gTklMOworCisJCS8qCisJCSAqIFdlIGNhbid0IHB1dCB0YWJsZSBlbGVt ZW50cyBkaXJlY3RseSBpbiB0aGUgZm10IHN0cmluZyBhcyBhbiBhcnJheQorCQkgKiBzdXJyb3Vu ZGVkIGJ5IHBhcmVudGhlc2VzIGhlcmUsIGJlY2F1c2UgYW4gZW1wdHkgY2xhdXNlIHdvdWxkIGNh dXNlCisJCSAqIGEgc3ludGF4IGVycm9yLiAgVGhlcmVmb3JlLCB3ZSB1c2UgYW4gaW5kaXJlY3Rp b24gZWxlbWVudCBhbmQgc2V0CisJCSAqIHByZXNlbnQ9ZmFsc2Ugd2hlbiB0aGVyZSBhcmUgbm8g ZWxlbWVudHMuCisJCSAqLworCQlpZiAobm9kZS0+b2ZUeXBlbmFtZSkKKwkJeworCQkJdG1wX29i aiA9IG5ld19vYmp0cmVlX2Zvcl90eXBlKHJlbGF0aW9uLT5yZF9yZWwtPnJlbG9mdHlwZSwgLTEp OworCQkJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAiT0YgJXtvZl90eXBlfVQiLCB0bXBfb2Jq KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUxpc3QJICAgKnBhcmVudHM7CisJCQlPYmpFbGVtICAg ICplbGVtOworCisJCQlwYXJlbnRzID0gZGVwYXJzZV9JbmhSZWxhdGlvbnMob2JqZWN0SWQpOwor CQkJZWxlbSA9IChPYmpFbGVtICopIGxpbml0aWFsKHBhcmVudHMpOworCisJCQlBc3NlcnQobGlz dF9sZW5ndGgocGFyZW50cykgPT0gMSk7CisKKwkJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwg IlBBUlRJVElPTiBPRiIpOworCisJCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3BhcmVu dF9pZGVudGl0eX1EIiwKKwkJCQkJCQkJIGVsZW0tPnZhbHVlLm9iamVjdCk7CisJCX0KKworCQl0 YWJsZWVsdHMgPSBkZXBhcnNlX1RhYmxlRWxlbWVudHMocmVsYXRpb24sIG5vZGUtPnRhYmxlRWx0 cywgZHBjb250ZXh0LAorCQkJCQkJCQkJCSAgdHJ1ZSwgLyogdHlwZWQgdGFibGUgKi8KKwkJCQkJ CQkJCQkgIGZhbHNlKTsJLyogbm90IGNvbXBvc2l0ZSAqLworCQl0YWJsZWVsdHMgPSBvYnRhaW5D b25zdHJhaW50cyh0YWJsZWVsdHMsIG9iamVjdElkLCBJbnZhbGlkT2lkKTsKKworCQl0bXBfb2Jq ID0gbmV3X29ianRyZWUoIiIpOworCQlpZiAodGFibGVlbHRzKQorCQkJYXBwZW5kX2FycmF5X29i amVjdCh0bXBfb2JqLCAiKCV7ZWxlbWVudHM6LCB9cykiLCB0YWJsZWVsdHMpOworCQllbHNlCisJ CQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisKKwkJYXBwZW5kX29iamVjdF9vYmplY3Qo cmV0LCAiJXt0YWJsZV9lbGVtZW50c31zIiwgdG1wX29iaik7CisJfQorCWVsc2UKKwl7CisJCUxp c3QJICAgKnRhYmxlZWx0cyA9IE5JTDsKKworCQkvKgorCQkgKiBUaGVyZSBpcyBubyBuZWVkIHRv IHByb2Nlc3MgTElLRSBjbGF1c2VzIHNlcGFyYXRlbHk7IHRoZXkgaGF2ZQorCQkgKiBhbHJlYWR5 IGJlZW4gdHJhbnNmb3JtZWQgaW50byBjb2x1bW5zIGFuZCBjb25zdHJhaW50cy4KKwkJICovCisK KwkJLyoKKwkJICogUHJvY2VzcyB0YWJsZSBlbGVtZW50czogY29sdW1uIGRlZmluaXRpb25zIGFu ZCBjb25zdHJhaW50cy4gIE9ubHkKKwkJICogdGhlIGNvbHVtbiBkZWZpbml0aW9ucyBhcmUgb2J0 YWluZWQgZnJvbSB0aGUgcGFyc2Ugbm9kZSBpdHNlbGYuICBUbworCQkgKiBnZXQgY29uc3RyYWlu dHMgd2UgcmVseSBvbiBwZ19jb25zdHJhaW50LCBiZWNhdXNlIHRoZSBwYXJzZSBub2RlCisJCSAq IG1pZ2h0IGJlIG1pc3Npbmcgc29tZSB0aGluZ3Mgc3VjaCBhcyB0aGUgbmFtZSBvZiB0aGUgY29u c3RyYWludHMuCisJCSAqLworCQl0YWJsZWVsdHMgPSBkZXBhcnNlX1RhYmxlRWxlbWVudHMocmVs YXRpb24sIG5vZGUtPnRhYmxlRWx0cywgZHBjb250ZXh0LAorCQkJCQkJCQkJCSAgZmFsc2UsCS8q IG5vdCB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJCSAgZmFsc2UpOwkvKiBub3QgY29tcG9zaXRl ICovCisJCXRhYmxlZWx0cyA9IG9idGFpbkNvbnN0cmFpbnRzKHRhYmxlZWx0cywgb2JqZWN0SWQs IEludmFsaWRPaWQpOworCisJCWlmICh0YWJsZWVsdHMpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0 KHJldCwgIigle3RhYmxlX2VsZW1lbnRzOiwgfXMpIiwgdGFibGVlbHRzKTsKKwkJZWxzZQorCQkJ YXBwZW5kX2Zvcm1hdF9zdHJpbmcocmV0LCAiKCkiKTsKKworCQkvKgorCQkgKiBBZGQgaW5oZXJp dGFuY2Ugc3BlY2lmaWNhdGlvbi4gIFdlIGNhbm5vdCBzaW1wbHkgc2NhbiB0aGUgbGlzdCBvZgor CQkgKiBwYXJlbnRzIGZyb20gdGhlIHBhcnNlciBub2RlLCBiZWNhdXNlIHRoYXQgbWF5IGxhY2sg dGhlIGFjdHVhbAorCQkgKiBxdWFsaWZpZWQgbmFtZXMgb2YgdGhlIHBhcmVudCByZWxhdGlvbnMu ICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8KKwkJICogcmUtcmVzb2x2ZSB0aGVtIGZyb20gdGhlIGlu Zm9ybWF0aW9uIGluIHRoZSBwYXJzZSBub2RlLCBpdCBzZWVtcworCQkgKiBtb3JlIGFjY3VyYXRl IGFuZCBjb252ZW5pZW50IHRvIGdyYWIgaXQgZnJvbSBwZ19pbmhlcml0cy4KKwkJICovCisJCXRt cF9vYmogPSBuZXdfb2JqdHJlZSgiSU5IRVJJVFMiKTsKKwkJaWYgKG5vZGUtPmluaFJlbGF0aW9u cyAhPSBOSUwpCisJCQlhcHBlbmRfYXJyYXlfb2JqZWN0KHRtcF9vYmosICIoJXtwYXJlbnRzOiwg fUQpIiwgZGVwYXJzZV9JbmhSZWxhdGlvbnMob2JqZWN0SWQpKTsKKwkJZWxzZQorCQl7CisJCQlh cHBlbmRfbnVsbF9vYmplY3QodG1wX29iaiwgIigle3BhcmVudHM6LCB9RCkiKTsKKwkJCWFwcGVu ZF9ub3RfcHJlc2VudCh0bXBfb2JqKTsKKwkJfQorCQlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQs ICIle2luaGVyaXRzfXMiLCB0bXBfb2JqKTsKKwl9CisKKwkvKiBGT1IgVkFMVUVTIGNsYXVzZSAq LworCWlmIChub2RlLT5wYXJ0Ym91bmQpCisJeworCQkvKgorCQkgKiBHZXQgcGdfY2xhc3MucmVs cGFydGJvdW5kLiBXZSBjYW5ub3QgdXNlIHBhcnRib3VuZCBpbiB0aGUgcGFyc2V0cmVlCisJCSAq IGRpcmVjdGx5IGFzIGl0J3MgdGhlIG9yaWdpbmFsIHBhcnRib3VuZCBleHByZXNzaW9uIHdoaWNo IGhhdmVuJ3QKKwkJICogYmVlbiB0cmFuc2Zvcm1lZC4KKwkJICovCisJCWFwcGVuZF9zdHJpbmdf b2JqZWN0KHJldCwgIiV7cGFydGl0aW9uX2JvdW5kfXMiLCAicGFydGl0aW9uX2JvdW5kIiwKKwkJ CQkJCQkgUmVsYXRpb25HZXRQYXJ0aXRpb25Cb3VuZChvYmplY3RJZCkpOworCX0KKworCS8qIFBB UlRJVElPTiBCWSBjbGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIlBBUlRJVElPTiBC WSIpOworCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIle2RlZmluaXRpb259 cyIsICJkZWZpbml0aW9uIiwKKwkJCQkJCQkgcGdfZ2V0X3BhcnRrZXlkZWZfc3RyaW5nKG9iamVj dElkKSk7CisJZWxzZQorCXsKKwkJYXBwZW5kX251bGxfb2JqZWN0KHRtcF9vYmosICIle2RlZmlu aXRpb259cyIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJfQorCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7cGFydGl0aW9uX2J5fXMiLCB0bXBfb2JqKTsKKworCS8qIFVT SU5HIGNsYXVzZSAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiVVNJTkciKTsKKwlpZiAobm9k ZS0+YWNjZXNzTWV0aG9kKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXthY2Nl c3NfbWV0aG9kfUkiLCAiYWNjZXNzX21ldGhvZCIsCisJCQkJCQkJIG5vZGUtPmFjY2Vzc01ldGhv ZCk7CisJZWxzZQorCXsKKwkJYXBwZW5kX251bGxfb2JqZWN0KHRtcF9vYmosICIle2FjY2Vzc19t ZXRob2R9SSIpOworCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iaik7CisJfQorCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHJldCwgIiV7YWNjZXNzX21ldGhvZH1zIiwgdG1wX29iaik7CisKKwkvKiBX SVRIIGNsYXVzZSAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiV0lUSCIpOworCisJZm9yZWFj aChjZWxsLCBub2RlLT5vcHRpb25zKQorCXsKKwkJT2JqVHJlZSAgICAqdG1wX29iajI7CisJCURl ZkVsZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQl0bXBfb2JqMiA9 IGRlcGFyc2VfRGVmRWxlbShvcHQsIGZhbHNlKTsKKwkJbGlzdCA9IGxhcHBlbmQobGlzdCwgbmV3 X29iamVjdF9vYmplY3QodG1wX29iajIpKTsKKwl9CisKKwlpZiAobGlzdCkKKwkJYXBwZW5kX2Fy cmF5X29iamVjdCh0bXBfb2JqLCAiKCV7d2l0aDosIH1zKSIsIGxpc3QpOworCWVsc2UKKwkJYXBw ZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCisJYXBwZW5kX29iamVjdF9vYmplY3QocmV0LCAi JXt3aXRoX2NsYXVzZX1zIiwgdG1wX29iaik7CisKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQs ICIle29uX2NvbW1pdH1zIiwKKwkJCQkJCSBkZXBhcnNlX09uQ29tbWl0Q2xhdXNlKG5vZGUtPm9u Y29tbWl0KSk7CisKKwl0bXBfb2JqID0gbmV3X29ianRyZWUoIlRBQkxFU1BBQ0UiKTsKKwlpZiAo bm9kZS0+dGFibGVzcGFjZW5hbWUpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIl e3RhYmxlc3BhY2V9SSIsICJ0YWJsZXNwYWNlIiwKKwkJCQkJCQkgbm9kZS0+dGFibGVzcGFjZW5h bWUpOworCWVsc2UKKwl7CisJCWFwcGVuZF9udWxsX29iamVjdCh0bXBfb2JqLCAiJXt0YWJsZXNw YWNlfUkiKTsKKwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCX0KKwlhcHBlbmRfb2Jq ZWN0X29iamVjdChyZXQsICIle3RhYmxlc3BhY2V9cyIsIHRtcF9vYmopOworCisJcmVsYXRpb25f Y2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCisv KgorICogRGVwYXJzZSBDUkVBVEUgVEFCTEUgQVMgY29tbWFuZC4KKyAqCisgKiBkZXBhcnNlX0Ny ZWF0ZVN0bXQgZG8gdGhlIGFjdHVhbCB3b3JrIGFzIHdlIGRlcGFyc2UgdGhlIGZpbmFsIENyZWF0 ZVN0bXQgZm9yCisgKiBDUkVBVEUgVEFCTEUgQVMgY29tbWFuZC4KKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9DcmVhdGVUYWJsZUFzU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7 CisJT2lkCQkJb2JqZWN0SWQ7CisJTm9kZQkgICAqcGFyc2V0cmVlOworCisJQXNzZXJ0KGNtZC0+ dHlwZSA9PSBTQ1RfQ3JlYXRlVGFibGVBcyk7CisKKwlwYXJzZXRyZWUgPSBjbWQtPmQuY3Rhcy5y ZWFsX2NyZWF0ZTsKKwlvYmplY3RJZCA9IGNtZC0+ZC5jdGFzLmFkZHJlc3Mub2JqZWN0SWQ7CisK KwlyZXR1cm4gZGVwYXJzZV9DcmVhdGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworfQorCisv KgorICogRGVwYXJzZSBhbGwgdGhlIGNvbGxlY3RlZCBzdWJjb21tYW5kcyBhbmQgcmV0dXJuIGFu IE9ialRyZWUgcmVwcmVzZW50aW5nIHRoZQorICogYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJi b3NlIHN5bnRheAorICogQUxURVIgcmVsdHlwZSAle29ubHl9cyAle2lkZW50aXR5fUQgJXtzdWJj bWRzOiwgfXMKKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlclJlbGF0aW9uKENv bGxlY3RlZENvbW1hbmQgKmNtZCkKK3sKKwlPYmpUcmVlICAgICpyZXQ7CisJT2JqVHJlZSAgICAq dG1wX29iajsKKwlPYmpUcmVlICAgICp0bXBfb2JqMjsKKwlMaXN0CSAgICpkcGNvbnRleHQ7CisJ UmVsYXRpb24JcmVsOworCUxpc3QJICAgKnN1YmNtZHMgPSBOSUw7CisJTGlzdENlbGwgICAqY2Vs bDsKKwljb25zdCBjaGFyICpyZWx0eXBlOworCWJvb2wJCWlzdHlwZSA9IGZhbHNlOworCUxpc3QJ ICAgKmV4cHJzID0gTklMOworCU9pZAkJCXJlbElkID0gY21kLT5kLmFsdGVyVGFibGUub2JqZWN0 SWQ7CisJQWx0ZXJUYWJsZVN0bXQgKnN0bXQgPSBOVUxMOworCisJQXNzZXJ0KGNtZC0+dHlwZSA9 PSBTQ1RfQWx0ZXJUYWJsZSk7CisJc3RtdCA9IChBbHRlclRhYmxlU3RtdCAqKSBjbWQtPnBhcnNl dHJlZTsKKwlBc3NlcnQoSXNBKHN0bXQsIEFsdGVyVGFibGVTdG10KSk7CisKKwkvKgorCSAqIEFM VEVSIFRBQkxFIHN1YmNvbW1hbmRzIGdlbmVyYXRlZCBmb3IgVGFibGVMaWtlQ2xhdXNlIGlzIHBy b2Nlc3NlZCBpbgorCSAqIHRoZSB0b3AgbGV2ZWwgQ1JFQVRFIFRBQkxFIGNvbW1hbmQ7IHJldHVy biBlbXB0eSBoZXJlLgorCSAqLworCWlmIChzdG10LT50YWJsZV9saWtlKQorCQlyZXR1cm4gTlVM TDsKKworCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJZHBj b250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LAorCQkJCQkJCQkJcmVsSWQpOworCisJc3dpdGNoIChyZWwtPnJkX3JlbC0+cmVsa2luZCkKKwl7 CisJCWNhc2UgUkVMS0lORF9SRUxBVElPTjoKKwkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFOgorCQkJcmVsdHlwZSA9ICJUQUJMRSI7CisJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX0lO REVYOgorCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVg6CisJCQlyZWx0eXBlID0gIklO REVYIjsKKwkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfVklFVzoKKwkJCXJlbHR5cGUgPSAiVklF VyI7CisJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5EX0NPTVBPU0lURV9UWVBFOgorCQkJcmVsdHlw ZSA9ICJUWVBFIjsKKwkJCWlzdHlwZSA9IHRydWU7CisJCQlicmVhazsKKwkJY2FzZSBSRUxLSU5E X0ZPUkVJR05fVEFCTEU6CisJCQlyZWx0eXBlID0gIkZPUkVJR04gVEFCTEUiOworCQkJYnJlYWs7 CisJCWNhc2UgUkVMS0lORF9NQVRWSUVXOgorCQkJcmVsdHlwZSA9ICJNQVRFUklBTElaRUQgVklF VyI7CisJCQlicmVhazsKKworCQkJLyogVE9ETyBzdXBwb3J0IGZvciBwYXJ0aXRpb25lZCB0YWJs ZSAqLworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCByZWxraW5kICVk IiwgcmVsLT5yZF9yZWwtPnJlbGtpbmQpOworCX0KKworCXJldCA9IG5ld19vYmp0cmVlX1ZBKCJB TFRFUiAle29ianR5cGV9cyAle2lkZW50aXR5fUQiLCAyLAorCQkJCQkJICJvYmp0eXBlIiwgT2Jq VHlwZVN0cmluZywgcmVsdHlwZSwKKwkJCQkJCSAiaWRlbnRpdHkiLCBPYmpUeXBlT2JqZWN0LAor CQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShyZWwtPnJkX3JlbC0+cmVsbmFtZXNwYWNl LAorCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisKKwlmb3Jl YWNoKGNlbGwsIGNtZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMpCisJeworCQlDb2xsZWN0ZWRBVFN1 YmNtZCAqc3ViID0gKENvbGxlY3RlZEFUU3ViY21kICopIGxmaXJzdChjZWxsKTsKKwkJQWx0ZXJU YWJsZUNtZCAqc3ViY21kID0gKEFsdGVyVGFibGVDbWQgKikgc3ViLT5wYXJzZXRyZWU7CisJCU9i alRyZWUgICAgKnRyZWU7CisKKwkJQXNzZXJ0KElzQShzdWJjbWQsIEFsdGVyVGFibGVDbWQpKTsK KworCSAgIC8qCisJCSogSWYgdGhlIEFMVEVSIFRBQkxFIGNvbW1hbmQgZm9yIHRoZSBwYXJlbnQg dGFibGUgaW5jbHVkZXMgc3ViY29tbWFuZHMKKwkJKiBmb3IgY2hpbGQgdGFibGUocyksIGRvIG5v dCBkZXBhcnNlIHRoZSBzdWJjb21tYW5kIGZvciBjaGlsZAorCQkqIHRhYmxlKHMpLgorCQkqLwor CQlpZiAoc3ViLT5hZGRyZXNzLm9iamVjdElkICE9IHJlbElkICYmCisJCQloYXNfc3VwZXJjbGFz cyhzdWItPmFkZHJlc3Mub2JqZWN0SWQpKQorCQkJY29udGludWU7CisKKwkJc3dpdGNoIChzdWJj bWQtPnN1YnR5cGUpCisJCXsKKwkJCWNhc2UgQVRfQWRkQ29sdW1uOgorCQkJCS8qIFhYWCBuZWVk IHRvIHNldCB0aGUgInJlY3Vyc2UiIGJpdCBzb21ld2hlcmU/ICovCisJCQkJQXNzZXJ0KElzQShz dWJjbWQtPmRlZiwgQ29sdW1uRGVmKSk7CisJCQkJdHJlZSA9IGRlcGFyc2VfQ29sdW1uRGVmKHJl bCwgZHBjb250ZXh0LCBmYWxzZSwKKwkJCQkJCQkJCQkgKENvbHVtbkRlZiAqKSBzdWJjbWQtPmRl ZiwgdHJ1ZSwgJmV4cHJzKTsKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFERCAle29i anR5cGV9cyAle2lmX25vdF9leGlzdHN9cyAle2RlZmluaXRpb259cyIsIDQsCisJCQkJCQkJCQkJ Im9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCWlzdHlwZSA/ICJBVFRSSUJVVEUi IDogIkNPTFVNTiIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRkIGNvbHVt biIsCisJCQkJCQkJCQkJImlmX25vdF9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJ CXN1YmNtZC0+bWlzc2luZ19vayA/ICJJRiBOT1QgRVhJU1RTIiA6ICIiLAorCQkJCQkJCQkJCSJk ZWZpbml0aW9uIiwgT2JqVHlwZU9iamVjdCwgdHJlZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQo c3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQlj YXNlIEFUX0FkZEluZGV4Q29uc3RyYWludDoKKwkJCQl7CisJCQkJCUluZGV4U3RtdCAgKmlzdG10 OworCQkJCQlSZWxhdGlvbglpZHg7CisJCQkJCU9pZAkJCWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVz cy5vYmplY3RJZDsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbmRleFN0bXQpKTsK KwkJCQkJaXN0bXQgPSAoSW5kZXhTdG10ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCUFzc2VydChp c3RtdC0+aXNjb25zdHJhaW50ICYmIGlzdG10LT51bmlxdWUpOworCisJCQkJCWlkeCA9IHJlbGF0 aW9uX29wZW4oaXN0bXQtPmluZGV4T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQkJCS8qCisJ CQkJCSAqIFZlcmJvc2Ugc3ludGF4CisJCQkJCSAqCisJCQkJCSAqIEFERCBDT05TVFJBSU5UICV7 bmFtZX1JICV7Y29uc3RyYWludF90eXBlfXMgVVNJTkcgSU5ERVgKKwkJCQkJICogJWluZGV4X25h bWV9SSAle2RlZmVycmFibGV9cyAle2luaXRfZGVmZXJyZWR9cworCQkJCQkgKi8KKwkJCQkJdG1w X29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2NvbnN0cmFp bnRfdHlwZX1zIFVTSU5HIElOREVYICV7aW5kZXhfbmFtZX1JICV7ZGVmZXJyYWJsZX1zICV7aW5p dF9kZWZlcnJlZH1zIiwgNiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRk IGNvbnN0cmFpbnQgdXNpbmcgaW5kZXgiLAorCQkJCQkJCQkJCQkibmFtZSIsIE9ialR5cGVTdHJp bmcsIGdldF9jb25zdHJhaW50X25hbWUoY29uc3RyT2lkKSwKKwkJCQkJCQkJCQkJImNvbnN0cmFp bnRfdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdG10LT5wcmltYXJ5ID8gIlBS SU1BUlkgS0VZIiA6ICJVTklRVUUiLAorCQkJCQkJCQkJCQkiaW5kZXhfbmFtZSIsIE9ialR5cGVT dHJpbmcsCisJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlkeCksCisJCQkJCQkJ CQkJCSJkZWZlcnJhYmxlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJaXN0bXQtPmRlZmVy cmFibGUgPyAiREVGRVJSQUJMRSIgOiAiTk9UIERFRkVSUkFCTEUiLAorCQkJCQkJCQkJCQkiaW5p dF9kZWZlcnJlZCIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCWlzdG10LT5pbml0ZGVmZXJy ZWQgPyAiSU5JVElBTExZIERFRkVSUkVEIiA6ICJJTklUSUFMTFkgSU1NRURJQVRFIik7CisKKwkJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCisJCQkJCXJlbGF0aW9uX2Nsb3NlKGlkeCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfUmVBZGRJbmRleDoKKwkJCWNhc2UgQVRfUmVBZGRDb25z dHJhaW50OgorCQkJY2FzZSBBVF9SZUFkZERvbWFpbkNvbnN0cmFpbnQ6CisJCQljYXNlIEFUX1Jl QWRkQ29tbWVudDoKKwkJCWNhc2UgQVRfUmVwbGFjZVJlbE9wdGlvbnM6CisJCQljYXNlIEFUX0No ZWNrTm90TnVsbDoKKwkJCWNhc2UgQVRfUmVBZGRTdGF0aXN0aWNzOgorCQkJCS8qIFN1YnR5cGVz IHVzZWQgZm9yIGludGVybmFsIG9wZXJhdGlvbnM7IG5vdGhpbmcgdG8gZG8gaGVyZSAqLworCQkJ CWJyZWFrOworCisJCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1bHQ6CisJCQkJeworCQkJCQlS ZWxhdGlvbglhdHRycmVsOworCQkJCQlIZWFwVHVwbGUJYXR0dHVwOworCQkJCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRTdHJ1Y3Q7CisKKwkJCQkJYXR0cnJlbCA9IHRhYmxlX29wZW4oQXR0cmlidXRl UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJCQkJCWF0dHR1cCA9IFNlYXJjaFN5c0Nh Y2hlQ29weTIoQVRUTlVNLAorCQkJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25H ZXRSZWxpZChyZWwpKSwKKwkJCQkJCQkJCQkJCSBJbnQxNkdldERhdHVtKHN1YmNtZC0+bnVtKSk7 CisJCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHR0dXApKQorCQkJCQkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGF0dHJpYnV0ZSAlZCBvZiByZWxhdGlvbiB3aXRoIE9J RCAldSIsCisJCQkJCQkJIHN1YmNtZC0+bnVtLCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCQkJ CQlhdHRTdHJ1Y3QgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChhdHR0dXApOworCisJ CQkJCS8qCisJCQkJCSAqIEJvdGggZGVmYXVsdCBhbmQgZ2VuZXJhdGlvbiBleHByZXNzaW9uIG5v dCBzdXBwb3J0ZWQKKwkJCQkJICogdG9nZXRoZXIuCisJCQkJCSAqLworCQkJCQlpZiAoIWF0dFN0 cnVjdC0+YXR0Z2VuZXJhdGVkKQorCQkJCQkJZWxvZyhXQVJOSU5HLCAidW5zdXBwb3J0ZWQgYWx0 ZXIgdGFibGUgc3VidHlwZSAlZCIsCisJCQkJCQkJIHN1YmNtZC0+c3VidHlwZSk7CisKKwkJCQkJ aGVhcF9mcmVldHVwbGUoYXR0dHVwKTsKKwkJCQkJdGFibGVfY2xvc2UoYXR0cnJlbCwgUm93RXhj bHVzaXZlTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBBVF9BZGRDb2x1bW5U b1ZpZXc6CisJCQkJLyogQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyAtLSBub3RoaW5nIHRvIGRvIGhl cmUgKi8KKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Db2x1bW5EZWZhdWx0OgorCQkJCWlmIChz dWJjbWQtPmRlZiA9PSBOVUxMKQorCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVS IENPTFVNTiAle2NvbHVtbn1JIERST1AgREVGQVVMVCIsIDIsCisJCQkJCQkJCQkJCSJ0eXBlIiwg T2JqVHlwZVN0cmluZywgImRyb3AgZGVmYXVsdCIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpU eXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCWVsc2UKKwkJCQl7CisJCQkJCUxpc3QJICAg KmRwY29udGV4dF9yZWw7CisJCQkJCUhlYXBUdXBsZQlhdHRydHVwOworCQkJCQlBdHRyTnVtYmVy CWF0dG5vOworCisJCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgQ09MVU1OICV7 Y29sdW1ufUkgU0VUIERFRkFVTFQiLCAyLAorCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJp bmcsICJzZXQgZGVmYXVsdCIsCisJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBz dWJjbWQtPm5hbWUpOworCisJCQkJCWRwY29udGV4dF9yZWwgPSBkZXBhcnNlX2NvbnRleHRfZm9y KFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0 UmVsaWQocmVsKSk7CisJCQkJCWF0dHJ0dXAgPSBTZWFyY2hTeXNDYWNoZUF0dE5hbWUoUmVsYXRp b25HZXRSZWxpZChyZWwpLCBzdWJjbWQtPm5hbWUpOworCQkJCQlhdHRubyA9ICgoRm9ybV9wZ19h dHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRydHVwKSktPmF0dG51bTsKKwkJCQkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iaiwgIiV7ZGVmaW5pdGlvbn1zIiwgImRlZmluaXRpb24iLAorCQkJCQkJ CQkJCSBSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsLCBhdHRubywKKwkJCQkJCQkJCQkJCQkJ CQkgIGRwY29udGV4dF9yZWwsCisJCQkJCQkJCQkJCQkJCQkJICBOVUxMKSk7CisJCQkJCVJlbGVh c2VTeXNDYWNoZShhdHRydHVwKTsKKwkJCQl9CisKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJj bWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRHJvcE5vdE51bGw6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xV TU4gJXtjb2x1bW59SSBEUk9QIE5PVCBOVUxMIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5 cGVTdHJpbmcsICJkcm9wIG5vdCBudWxsIiwKKwkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0 cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdf b2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRm9yY2VS b3dTZWN1cml0eToKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWUoIkZPUkNFIFJPVyBMRVZFTCBT RUNVUklUWSIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ob0ZvcmNlUm93U2VjdXJp dHk6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJOTyBGT1JDRSBST1cgTEVWRUwgU0VDVVJJ VFkiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0 bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0Tm90TnVsbDoKKwkJCQl0bXBf b2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBOT1QgTlVM TCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IG5vdCBudWxsIiwK KwkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlz dWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcEV4cHJlc3Npb246CisJCQkJdG1wX29iaiA9IG5l d19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBEUk9QIEVYUFJFU1NJT04gJXtp Zl9leGlzdHN9cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJvcCBl eHByZXNzaW9uIiwKKwkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3ViY21kLT5u YW1lLAorCQkJCQkJCQkJCSJpZl9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCXN1 YmNtZC0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOworCQkJCXN1YmNtZHMgPSBsYXBw ZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9TZXRTdGF0aXN0aWNzOgorCQkJCXsKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQt PmRlZiwgSW50ZWdlcikpOworCQkJCQlpZiAoc3ViY21kLT5uYW1lKQorCQkJCQkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgU1RBVElTVElDUyAl e3N0YXRpc3RpY3N9biIsIDMsCisJCQkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJz ZXQgc3RhdGlzdGljcyIsCisJCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3Vi Y21kLT5uYW1lLAorCQkJCQkJCQkJCQkJInN0YXRpc3RpY3MiLCBPYmpUeXBlSW50ZWdlciwKKwkJ CQkJCQkJCQkJCWludFZhbCgoSW50ZWdlciAqKSBzdWJjbWQtPmRlZikpOworCQkJCQllbHNlCisJ CQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1uIFNF VCBTVEFUSVNUSUNTICV7c3RhdGlzdGljc31uIiwgMywKKwkJCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCBzdGF0aXN0aWNzIiwKKwkJCQkJCQkJCQkJCSJjb2x1bW4iLCBPYmpU eXBlSW50ZWdlciwgc3ViY21kLT5udW0sCisJCQkJCQkJCQkJCQkic3RhdGlzdGljcyIsIE9ialR5 cGVJbnRlZ2VyLAorCQkJCQkJCQkJCQkJaW50VmFsKChJbnRlZ2VyICopIHN1YmNtZC0+ZGVmKSk7 CisJCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9v YmopKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0T3B0aW9uczoKKwkJCWNh c2UgQVRfUmVzZXRPcHRpb25zOgorCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19v YmplY3Rfb2JqZWN0KAorCQkJCQkJCQkJCQkJCQkJIGRlcGFyc2VfQ29sdW1uU2V0T3B0aW9ucyhz dWJjbWQpKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0U3RvcmFnZToKKwkJCQlBc3Nl cnQoSXNBKHN1YmNtZC0+ZGVmLCBTdHJpbmcpKTsKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBTVE9SQUdFICV7c3RvcmFnZX1zIiwgMywK KwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJzZXQgc3RvcmFnZSIsCisJCQkJCQkJ CQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkJCQkic3Rv cmFnZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJc3RyVmFsKChTdHJpbmcgKikgc3ViY21k LT5kZWYpKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVj dCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0Q29tcHJlc3Npb246CisJ CQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisJCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgQ09NUFJFU1NJT04gJXtjb21w cmVzc2lvbl9tZXRob2R9cyIsIDMsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi c2V0IGNvbXByZXNzaW9uIiwKKwkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3Vi Y21kLT5uYW1lLAorCQkJCQkJCQkJCSJjb21wcmVzc2lvbl9tZXRob2QiLCBPYmpUeXBlU3RyaW5n LAorCQkJCQkJCQkJCXN0clZhbCgoU3RyaW5nICopIHN1YmNtZC0+ZGVmKSk7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0Ryb3BDb2x1bW46CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVl X1ZBKCJEUk9QICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtjb2x1bW59SSIsIDQsCisJCQkJ CQkJCQkJIm9ianR5cGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCWlzdHlwZSA/ICJBVFRS SUJVVEUiIDogIkNPTFVNTiIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZHJv cCBjb2x1bW4iLAorCQkJCQkJCQkJCSJpZl9leGlzdHMiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJ CQkJCXN1YmNtZC0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIsCisJCQkJCQkJCQkJImNv bHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJdG1wX29iajIgPSBuZXdf b2JqdHJlZV9WQSgiQ0FTQ0FERSIsIDEsCisJCQkJCQkJCQkJICJwcmVzZW50IiwgT2JqVHlwZUJv b2wsIHN1YmNtZC0+YmVoYXZpb3IpOworCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRtcF9vYmos ICIle2Nhc2NhZGV9cyIsIHRtcF9vYmoyKTsKKworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNt ZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBB VF9BZGRJbmRleDoKKwkJCQl7CisJCQkJCU9pZAkJCWlkeE9pZCA9IHN1Yi0+YWRkcmVzcy5vYmpl Y3RJZDsKKwkJCQkJSW5kZXhTdG10ICAqaXN0bXQ7CisJCQkJCVJlbGF0aW9uCWlkeDsKKwkJCQkJ Y29uc3QgY2hhciAqaWR4bmFtZTsKKwkJCQkJT2lkCQkJY29uc3RyT2lkOworCisJCQkJCUFzc2Vy dChJc0Eoc3ViY21kLT5kZWYsIEluZGV4U3RtdCkpOworCQkJCQlpc3RtdCA9IChJbmRleFN0bXQg Kikgc3ViY21kLT5kZWY7CisKKwkJCQkJaWYgKCFpc3RtdC0+aXNjb25zdHJhaW50KQorCQkJCQkJ YnJlYWs7CisKKwkJCQkJaWR4ID0gcmVsYXRpb25fb3BlbihpZHhPaWQsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCQkJCWlkeG5hbWUgPSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpZHgpOworCisJCQkJ CWNvbnN0ck9pZCA9IGdldF9yZWxhdGlvbl9jb25zdHJhaW50X29pZCgKKwkJCQkJCQkJCQkJCQkJ CWNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkLCBpZHhuYW1lLCBmYWxzZSk7CisKKwkJCQkJdG1w X29iaiA9IG5ld19vYmp0cmVlX1ZBKCJBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2RlZmluaXRp b259cyIsIDMsCisJCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFkZCBjb25zdHJh aW50IiwKKwkJCQkJCQkJCQkJIm5hbWUiLCBPYmpUeXBlU3RyaW5nLCBpZHhuYW1lLAorCQkJCQkJ CQkJCQkiZGVmaW5pdGlvbiIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJCXBnX2dldF9jb25z dHJhaW50ZGVmX3N0cmluZyhjb25zdHJPaWQpKTsKKwkJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3Vi Y21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCisJCQkJCXJlbGF0aW9uX2Nsb3Nl KGlkeCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf QWRkQ29uc3RyYWludDoKKwkJCQl7CisJCQkJCS8qIFhYWCBuZWVkIHRvIHNldCB0aGUgInJlY3Vy c2UiIGJpdCBzb21ld2hlcmU/ICovCisJCQkJCU9pZAkJCWNvbnN0ck9pZCA9IHN1Yi0+YWRkcmVz cy5vYmplY3RJZDsKKwkJCQkJYm9vbAkJaXNudWxsOworCQkJCQlIZWFwVHVwbGUJdHVwOworCQkJ CQlEYXR1bQkJdmFsOworCQkJCQlDb25zdHJhaW50ICpjb25zdHI7CisKKwkJCQkJLyogU2tpcCBh ZGRpbmcgY29uc3RyYWludCBmb3IgaW5oZXJpdHMgdGFibGUgc3ViIGNvbW1hbmQgKi8KKwkJCQkJ aWYgKCFjb25zdHJPaWQpCisJCQkJCQljb250aW51ZTsKKworCQkJCQlBc3NlcnQoSXNBKHN1YmNt ZC0+ZGVmLCBDb25zdHJhaW50KSk7CisJCQkJCWNvbnN0ciA9IGNhc3ROb2RlKENvbnN0cmFpbnQs IHN1YmNtZC0+ZGVmKTsKKworCQkJCQlpZiAoIWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uKQorCQkJ CQl7CisJCQkJCQl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELCBPYmplY3RJZEdldERh dHVtKGNvbnN0ck9pZCkpOworCisJCQkJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQkJ CQkJeworCQkJCQkJCWNoYXIJICAgKmNvbmJpbjsKKworCQkJCQkJCS8qIEZldGNoIGNvbnN0cmFp bnQgZXhwcmVzc2lvbiBpbiBwYXJzZXRyZWUgZm9ybSAqLworCQkJCQkJCXZhbCA9IFN5c0NhY2hl R2V0QXR0cihDT05TVFJPSUQsIHR1cCwKKwkJCQkJCQkJCQkJCSAgQW51bV9wZ19jb25zdHJhaW50 X2NvbmJpbiwgJmlzbnVsbCk7CisKKwkJCQkJCQlpZiAoIWlzbnVsbCkKKwkJCQkJCQl7CisJCQkJ CQkJCWNvbmJpbiA9IFRleHREYXR1bUdldENTdHJpbmcodmFsKTsKKwkJCQkJCQkJZXhwcnMgPSBs YXBwZW5kKGV4cHJzLCBzdHJpbmdUb05vZGUoY29uYmluKSk7CisJCQkJCQkJfQorCisJCQkJCQkJ UmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQl0bXBfb2JqID0g bmV3X29ianRyZWVfVkEoIkFERCBDT05TVFJBSU5UICV7bmFtZX1JICV7ZGVmaW5pdGlvbn1zIiwg MywKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRkIGNvbnN0cmFpbnQiLAor CQkJCQkJCQkJCQkibmFtZSIsIE9ialR5cGVTdHJpbmcsIGdldF9jb25zdHJhaW50X25hbWUoY29u c3RyT2lkKSwKKwkJCQkJCQkJCQkJImRlZmluaXRpb24iLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJ CQkJCQlwZ19nZXRfY29uc3RyYWludGRlZl9zdHJpbmcoY29uc3RyT2lkKSk7CisJCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQl9 CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQWx0ZXJDb25zdHJhaW50OgorCQkJCXsKKwkJCQkJ T2lkCQkJY29uc3RyT2lkID0gc3ViLT5hZGRyZXNzLm9iamVjdElkOworCQkJCQlDb25zdHJhaW50 ICpjID0gKENvbnN0cmFpbnQgKikgc3ViY21kLT5kZWY7CisKKwkJCQkJLyogSWYgbm8gY29uc3Ry YWludCB3YXMgYWx0ZXJlZCwgc2lsZW50bHkgc2tpcCBpdCAqLworCQkJCQlpZiAoIU9pZElzVmFs aWQoY29uc3RyT2lkKSkKKwkJCQkJCWJyZWFrOworCisJCQkJCUFzc2VydChJc0EoYywgQ29uc3Ry YWludCkpOworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTlNUUkFJTlQg JXtuYW1lfUkgJXtkZWZlcnJhYmxlfXMgJXtpbml0X2RlZmVycmVkfXMiLCA0LAorCQkJCQkJCQkJ CQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJhbHRlciBjb25zdHJhaW50IiwKKwkJCQkJCQkJCQkJ Im5hbWUiLCBPYmpUeXBlU3RyaW5nLCBnZXRfY29uc3RyYWludF9uYW1lKGNvbnN0ck9pZCksCisJ CQkJCQkJCQkJCSJkZWZlcnJhYmxlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJYy0+ZGVm ZXJyYWJsZSA/ICJERUZFUlJBQkxFIiA6ICJOT1QgREVGRVJSQUJMRSIsCisJCQkJCQkJCQkJCSJp bml0X2RlZmVycmVkIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJYy0+aW5pdGRlZmVycmVk ID8gIklOSVRJQUxMWSBERUZFUlJFRCIgOiAiSU5JVElBTExZIElNTUVESUFURSIpOworCisJCQkJ CXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsK KwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfVmFsaWRhdGVDb25zdHJhaW50OgorCQkJ CXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiVkFMSURBVEUgQ09OU1RSQUlOVCAle2NvbnN0cmFp bnR9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAidmFsaWRhdGUgY29u c3RyYWludCIsCisJCQkJCQkJCQkJImNvbnN0cmFpbnQiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQt Pm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0 KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKKwkJ CQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkRST1AgQ09OU1RSQUlOVCAle2lmX2V4aXN0c31z ICV7Y29uc3RyYWludH1JICV7Y2FzY2FkZX1zIiwgNCwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5 cGVTdHJpbmcsICJkcm9wIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkJCSJpZl9leGlzdHMiLCBPYmpU eXBlU3RyaW5nLAorCQkJCQkJCQkJCXN1YmNtZC0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDog IiIsCisJCQkJCQkJCQkJImNvbnN0cmFpbnQiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUs CisJCQkJCQkJCQkJImNhc2NhZGUiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJCXN1YmNtZC0+ YmVoYXZpb3IgPT0gRFJPUF9DQVNDQURFID8gIkNBU0NBREUiIDogIiIpOworCQkJCXN1YmNtZHMg PSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVh azsKKworCQkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CisJCQkJeworCQkJCQlUdXBsZURlc2MJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0OworCQkJCQlDb2x1bW5EZWYgICpkZWY7CisKKwkJCQkJYXR0ID0gJih0dXBkZXNjLT5hdHRy c1tzdWItPmFkZHJlc3Mub2JqZWN0U3ViSWQgLSAxXSk7CisJCQkJCWRlZiA9IChDb2x1bW5EZWYg Kikgc3ViY21kLT5kZWY7CisJCQkJCUFzc2VydChJc0EoZGVmLCBDb2x1bW5EZWYpKTsKKworCQkJ CQkvKgorCQkJCQkgKiBWZXJib3NlIHN5bnRheAorCQkJCQkgKgorCQkJCQkgKiBDb21wb3NpdGUg dHlwZXM6IEFMVEVSIHJlbHR5cGUgJXtjb2x1bW59SSBTRVQgREFUQSBUWVBFCisJCQkJCSAqICV7 ZGF0YXR5cGV9VCAle2NvbGxhdGlvbn1zIEFUVFJJQlVURSAle2Nhc2NhZGV9cworCQkJCQkgKgor CQkJCQkgKiBOb3JtYWwgdHlwZXM6IEFMVEVSIHJlbHR5cGUgJXtjb2x1bW59SSBTRVQgREFUQSBU WVBFCisJCQkJCSAqICV7ZGF0YXR5cGV9VCAle2NvbGxhdGlvbn1zIENPTFVNTiAle3VzaW5nfXMK KwkJCQkJICovCisJCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiQUxURVIgJXtvYmp0eXBl fXMgJXtjb2x1bW59SSBTRVQgREFUQSBUWVBFICV7ZGF0YXR5cGV9VCIsIDQsCisJCQkJCQkJCQkJ CSJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJaXN0eXBlID8gIkFUVFJJQlVU RSIgOiAiQ09MVU1OIiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWx0ZXIg Y29sdW1uIHR5cGUiLAorCQkJCQkJCQkJCQkiY29sdW1uIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lLAorCQkJCQkJCQkJCQkiZGF0YXR5cGUiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJ CQluZXdfb2JqdHJlZV9mb3JfdHlwZShhdHQtPmF0dHR5cGlkLAorCQkJCQkJCQkJCQkJCQkJCSBh dHQtPmF0dHR5cG1vZCkpOworCisJCQkJCS8qIEFkZCBhIENPTExBVEUgY2xhdXNlLCBpZiBuZWVk ZWQgKi8KKwkJCQkJdG1wX29iajIgPSBuZXdfb2JqdHJlZSgiQ09MTEFURSIpOworCQkJCQlpZiAo T2lkSXNWYWxpZChhdHQtPmF0dGNvbGxhdGlvbikpCisJCQkJCXsKKwkJCQkJCU9ialRyZWUgICAg KmNvbGxuYW1lOworCisJCQkJCQljb2xsbmFtZSA9IG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9p ZChDb2xsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJICAgYXR0LT5hdHRjb2xsYXRp b24pOworCQkJCQkJYXBwZW5kX29iamVjdF9vYmplY3QodG1wX29iajIsICIle25hbWV9RCIsIGNv bGxuYW1lKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1w X29iajIpOworCQkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2JqLCAiJXtjb2xsYXRpb259 cyIsIHRtcF9vYmoyKTsKKworCQkJCQkvKiBJZiBub3QgYSBjb21wb3NpdGUgdHlwZSwgYWRkIHRo ZSBVU0lORyBjbGF1c2UgKi8KKwkJCQkJaWYgKCFpc3R5cGUpCisJCQkJCXsKKwkJCQkJCS8qCisJ CQkJCQkgKiBJZiB0aGVyZSdzIGEgVVNJTkcgY2xhdXNlLCB0cmFuc2Zvcm1BbHRlclRhYmxlU3Rt dAorCQkJCQkJICogcmFuIGl0IHRocm91Z2ggdHJhbnNmb3JtRXhwciBhbmQgc3RvcmVkIHRoZQor CQkJCQkJICogcmVzdWx0aW5nIG5vZGUgaW4gY29va2VkX2RlZmF1bHQsIHdoaWNoIHdlIGNhbiB1 c2UKKwkJCQkJCSAqIGhlcmUuCisJCQkJCQkgKi8KKwkJCQkJCXRtcF9vYmoyID0gbmV3X29ianRy ZWUoIlVTSU5HIik7CisJCQkJCQlpZiAoZGVmLT5yYXdfZGVmYXVsdCkKKwkJCQkJCQlhcHBlbmRf c3RyaW5nX29iamVjdCh0bXBfb2JqMiwgIiV7ZXhwcmVzc2lvbn1zIiwKKwkJCQkJCQkJCQkJCSAi ZXhwcmVzc2lvbiIsCisJCQkJCQkJCQkJCQkgc3ViLT51c2luZ2V4cHIpOworCQkJCQkJZWxzZQor CQkJCQkJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2JqMik7CisJCQkJCQlhcHBlbmRfb2JqZWN0 X29iamVjdCh0bXBfb2JqLCAiJXt1c2luZ31zIiwgdG1wX29iajIpOworCQkJCQl9CisKKwkJCQkJ LyogSWYgaXQncyBhIGNvbXBvc2l0ZSB0eXBlLCBhZGQgdGhlIENBU0NBREUgY2xhdXNlICovCisJ CQkJCWlmIChpc3R5cGUpCisJCQkJCXsKKwkJCQkJCXRtcF9vYmoyID0gbmV3X29ianRyZWUoIkNB U0NBREUiKTsKKwkJCQkJCWlmIChzdWJjbWQtPmJlaGF2aW9yICE9IERST1BfQ0FTQ0FERSkKKwkJ CQkJCQlhcHBlbmRfbm90X3ByZXNlbnQodG1wX29iajIpOworCQkJCQkJYXBwZW5kX29iamVjdF9v YmplY3QodG1wX29iaiwgIiV7Y2FzY2FkZX1zIiwgdG1wX29iajIpOworCQkJCQl9CisKKwkJCQkJ c3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOwor CQkJCX0KKwkJCQlicmVhazsKKworI2lmZGVmIFRPRE9MSVNUCisJCQljYXNlIEFUX0FsdGVyQ29s dW1uR2VuZXJpY09wdGlvbnM6CisJCQkJdG1wX29iaiA9IGRlcGFyc2VfRmR3T3B0aW9ucygoTGlz dCAqKSBzdWJjbWQtPmRlZiwKKwkJCQkJCQkJCQkJc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRz ID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJl YWs7CisjZW5kaWYKKwkJCWNhc2UgQVRfQ2hhbmdlT3duZXI6CisJCQkJdG1wX29iaiA9IG5ld19v Ymp0cmVlX1ZBKCJPV05FUiBUTyAle293bmVyfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgImNoYW5nZSBvd25lciIsCisJCQkJCQkJCQkJIm93bmVyIiwgT2JqVHlwZVN0 cmluZywKKwkJCQkJCQkJCQlnZXRfcm9sZXNwZWNfbmFtZShzdWJjbWQtPm5ld293bmVyKSk7CisJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0NsdXN0ZXJPbjoKKwkJCQl0bXBfb2JqID0gbmV3 X29ianRyZWVfVkEoIkNMVVNURVIgT04gJXtpbmRleH1JIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIs IE9ialR5cGVTdHJpbmcsICJjbHVzdGVyIG9uIiwKKwkJCQkJCQkJCQkiaW5kZXgiLCBPYmpUeXBl U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5l d19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9w Q2x1c3RlcjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBXSVRIT1VUIENMVVNU RVIiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgInNldCB3aXRob3V0IGNs dXN0ZXIiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVj dCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0TG9nZ2VkOgorCQkJCXRt cF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiU0VUIExPR0dFRCIsIDEsCisJCQkJCQkJCQkJInR5cGUi LCBPYmpUeXBlU3RyaW5nLCAic2V0IGxvZ2dlZCIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1 YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBBVF9TZXRVbkxvZ2dlZDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIlNFVCBVTkxP R0dFRCIsIDEsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAic2V0IHVubG9nZ2Vk Iik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ryb3BPaWRzOgorCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiU0VUIFdJVEhPVVQgT0lEUyIsIDEsCisJCQkJCQkJCQkJInR5cGUi LCBPYmpUeXBlU3RyaW5nLCAic2V0IHdpdGhvdXQgb2lkcyIpOworCQkJCXN1YmNtZHMgPSBsYXBw ZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgQVRfU2V0QWNjZXNzTWV0aG9kOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi U0VUIEFDQ0VTUyBNRVRIT0QgJXthY2Nlc3NfbWV0aG9kfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBl IiwgT2JqVHlwZVN0cmluZywgInNldCBhY2Nlc3MgbWV0aG9kIiwKKwkJCQkJCQkJCQkiYWNjZXNz X21ldGhvZCIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOwor CQkJY2FzZSBBVF9TZXRUYWJsZVNwYWNlOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi U0VUIFRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgInNldCB0YWJsZXNwYWNlIiwKKwkJCQkJCQkJCQkidGFibGVzcGFjZSIsIE9i alR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21k cywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFU X1NldFJlbE9wdGlvbnM6CisJCQljYXNlIEFUX1Jlc2V0UmVsT3B0aW9uczoKKwkJCQlzdWJjbWRz ID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCgKKwkJCQkJCQkJCQkJCQkJCSBk ZXBhcnNlX1JlbFNldE9wdGlvbnMoc3ViY21kKSkpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFU X0VuYWJsZVRyaWc6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgVFJJR0dF UiAle3RyaWdnZXJ9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5h YmxlIHRyaWdnZXIiLAorCQkJCQkJCQkJCSJ0cmlnZ2VyIiwgT2JqVHlwZVN0cmluZywgc3ViY21k LT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVj dCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlQWx3YXlzVHJpZzoK KwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBBTFdBWVMgVFJJR0dFUiAle3Ry aWdnZXJ9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIGFs d2F5cyB0cmlnZ2VyIiwKKwkJCQkJCQkJCQkidHJpZ2dlciIsIE9ialR5cGVTdHJpbmcsIHN1YmNt ZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FUcmln OgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAl e3RyaWdnZXJ9SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxl IHJlcGxpY2EgdHJpZ2dlciIsCisJCQkJCQkJCQkJInRyaWdnZXIiLCBPYmpUeXBlU3RyaW5nLCBz dWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rf b2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9EaXNhYmxlVHJpZzoK KwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkRJU0FCTEUgVFJJR0dFUiAle3RyaWdnZXJ9 SSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZGlzYWJsZSB0cmlnZ2Vy IiwKKwkJCQkJCQkJCQkidHJpZ2dlciIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZVRyaWdBbGw6CisJCQkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUgVFJJR0dFUiBBTEwiLCAxLAorCQkJCQkJCQkJCSJ0eXBl IiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSB0cmlnZ2VyIGFsbCIpOworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9EaXNhYmxlVHJpZ0FsbDoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVf VkEoIkRJU0FCTEUgVFJJR0dFUiBBTEwiLCAxLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0 cmluZywgImRpc2FibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJj bWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRW5hYmxlVHJpZ1VzZXI6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJFTkFCTEUg VFJJR0dFUiBVU0VSIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJlbmFi bGUgdHJpZ2dlciB1c2VyIik7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29i amVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVU cmlnVXNlcjoKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkRJU0FCTEUgVFJJR0dFUiBV U0VSIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJkaXNhYmxlIHRyaWdn ZXIgdXNlciIpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2Jq ZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSdWxlOgorCQkJ CXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFJVTEUgJXtydWxlfUkiLCAyLAorCQkJ CQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImVuYWJsZSBydWxlIiwKKwkJCQkJCQkJCQki cnVsZSIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJc3ViY21kcyA9IGxhcHBl bmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJyZWFrOworCisJ CQljYXNlIEFUX0VuYWJsZUFsd2F5c1J1bGU6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZB KCJFTkFCTEUgQUxXQVlTIFJVTEUgJXtydWxlfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2Jq VHlwZVN0cmluZywgImVuYWJsZSBhbHdheXMgcnVsZSIsCisJCQkJCQkJCQkJInJ1bGUiLCBPYmpU eXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMs IG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9F bmFibGVSZXBsaWNhUnVsZToKKwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkVOQUJMRSBS RVBMSUNBIFJVTEUgJXtydWxlfUkiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmlu ZywgImVuYWJsZSByZXBsaWNhIHJ1bGUiLAorCQkJCQkJCQkJCSJydWxlIiwgT2JqVHlwZVN0cmlu Zywgc3ViY21kLT5uYW1lKTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2Jq ZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRGlzYWJsZVJ1 bGU6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFJVTEUgJXtydWxlfUki LCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRpc2FibGUgcnVsZSIsCisJ CQkJCQkJCQkJInJ1bGUiLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXN1YmNt ZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9BZGRJbmhlcml0OgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJl ZV9WQSgiSU5IRVJJVCAle3BhcmVudH1EIiwgMiwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVT dHJpbmcsICJpbmhlcml0IiwKKwkJCQkJCQkJCQkicGFyZW50IiwgT2JqVHlwZU9iamVjdCwKKwkJ CQkJCQkJCQluZXdfb2JqdHJlZV9mb3JfcXVhbG5hbWVfaWQoUmVsYXRpb25SZWxhdGlvbklkLAor CQkJCQkJCQkJCQkJCQkJCQlzdWItPmFkZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlzdWJjbWRzID0g bGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgQVRfRHJvcEluaGVyaXQ6CisJCQkJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZB KCJOTyBJTkhFUklUICV7cGFyZW50fUQiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0 cmluZywgImRyb3AgaW5oZXJpdCIsCisJCQkJCQkJCQkJInBhcmVudCIsIE9ialR5cGVPYmplY3Qs CisJCQkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkJCQkJCQkJc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisJCQkJc3ViY21k cyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0FkZE9mOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9WQSgi T0YgJXt0eXBlX29mfVQiLCAyLAorCQkJCQkJCQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImFk ZCBvZiIsCisJCQkJCQkJCQkJInR5cGVfb2YiLCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJCQkJCW5l d19vYmp0cmVlX2Zvcl90eXBlKHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwgLTEpKTsKKwkJCQlzdWJj bWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcE9mOgorCQkJCXRtcF9vYmogPSBuZXdfb2JqdHJlZV9W QSgiTk9UIE9GIiwgMSwKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsICJub3Qgb2Yi KTsKKwkJCQlzdWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBf b2JqKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfUmVwbGljYUlkZW50aXR5OgorCQkJCXRt cF9vYmogPSBuZXdfb2JqdHJlZV9WQSgiUkVQTElDQSBJREVOVElUWSIsIDEsCisJCQkJCQkJCQkJ InR5cGUiLCBPYmpUeXBlU3RyaW5nLCAicmVwbGljYSBpZGVudGl0eSIpOworCQkJCXN3aXRjaCAo KChSZXBsaWNhSWRlbnRpdHlTdG10ICopIHN1YmNtZC0+ZGVmKS0+aWRlbnRpdHlfdHlwZSkKKwkJ CQl7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9ERUZBVUxUOgorCQkJCQkJYXBwZW5kX3N0 cmluZ19vYmplY3QodG1wX29iaiwgIiV7aWRlbnR9cyIsICJpZGVudCIsCisJCQkJCQkJCQkJCSAi REVGQVVMVCIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9GVUxM OgorCQkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7aWRlbnR9cyIsICJpZGVu dCIsCisJCQkJCQkJCQkJCSAiRlVMTCIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQTElD QV9JREVOVElUWV9OT1RISU5HOgorCQkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwg IiV7aWRlbnR9cyIsICJpZGVudCIsCisJCQkJCQkJCQkJCSAiTk9USElORyIpOworCQkJCQkJYnJl YWs7CisJCQkJCWNhc2UgUkVQTElDQV9JREVOVElUWV9JTkRFWDoKKwkJCQkJCXRtcF9vYmoyID0g bmV3X29ianRyZWVfVkEoIlVTSU5HIElOREVYICV7aW5kZXh9SSIsIDEsCisJCQkJCQkJCQkJCQkg ImluZGV4IiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJCQkJCSAoKFJlcGxpY2FJZGVudGl0eVN0 bXQgKikgc3ViY21kLT5kZWYpLT5uYW1lKTsKKwkJCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHRt cF9vYmosICIle2lkZW50fXMiLCB0bXBfb2JqMik7CisJCQkJCQlicmVhazsKKwkJCQl9CisJCQkJ c3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOwor CQkJCWJyZWFrOworCisJCQljYXNlIEFUX0VuYWJsZVJvd1NlY3VyaXR5OgorCQkJCXRtcF9vYmog PSBuZXdfb2JqdHJlZV9WQSgiRU5BQkxFIFJPVyBMRVZFTCBTRUNVUklUWSIsIDEsCisJCQkJCQkJ CQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZW5hYmxlIHJvdyBzZWN1cml0eSIpOworCQkJCXN1 YmNtZHMgPSBsYXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJ CQlicmVhazsKKworCQkJY2FzZSBBVF9EaXNhYmxlUm93U2VjdXJpdHk6CisJCQkJdG1wX29iaiA9 IG5ld19vYmp0cmVlX1ZBKCJESVNBQkxFIFJPVyBMRVZFTCBTRUNVUklUWSIsIDEsCisJCQkJCQkJ CQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiZGlzYWJsZSByb3cgc2VjdXJpdHkiKTsKKwkJCQlz dWJjbWRzID0gbGFwcGVuZChzdWJjbWRzLCBuZXdfb2JqZWN0X29iamVjdCh0bXBfb2JqKSk7CisJ CQkJYnJlYWs7CisjaWZkZWYgVE9ET0xJU1QKKwkJCWNhc2UgQVRfR2VuZXJpY09wdGlvbnM6CisJ CQkJdG1wX29iaiA9IGRlcGFyc2VfRmR3T3B0aW9ucygoTGlzdCAqKSBzdWJjbWQtPmRlZiwgTlVM TCk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1w X29iaikpOworCQkJCWJyZWFrOworI2VuZGlmCisJCQljYXNlIEFUX0F0dGFjaFBhcnRpdGlvbjoK KwkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFUVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRp b25faWRlbnRpdHl9RCIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYXR0 YWNoIHBhcnRpdGlvbiIsCisJCQkJCQkJCQkJInBhcnRpdGlvbl9pZGVudGl0eSIsIE9ialR5cGVP YmplY3QsCisJCQkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKFJlbGF0aW9uUmVs YXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQkJc3ViLT5hZGRyZXNzLm9iamVjdElkKSk7CisKKwkJ CQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkK KwkJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QodG1wX29iaiwgIiV7cGFydGl0aW9uX2JvdW5kfXMi LAorCQkJCQkJCQkJCSAicGFydGl0aW9uX2JvdW5kIiwKKwkJCQkJCQkJCQkgUmVsYXRpb25HZXRQ YXJ0aXRpb25Cb3VuZChzdWItPmFkZHJlc3Mub2JqZWN0SWQpKTsKKworCQkJCXN1YmNtZHMgPSBs YXBwZW5kKHN1YmNtZHMsIG5ld19vYmplY3Rfb2JqZWN0KHRtcF9vYmopKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uOgorCQkJeworCQkJCVBhcnRpdGlvbkNtZCAqY21k OworCisJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgUGFydGl0aW9uQ21kKSk7CisJCQkJY21k ID0gKFBhcnRpdGlvbkNtZCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCXRtcF9vYmogPSBuZXdfb2Jq dHJlZV9WQSgiREVUQUNIIFBBUlRJVElPTiAle3BhcnRpdGlvbl9pZGVudGl0eX1EICV7Y29uY3Vy cmVudH1zIiwgMywKKwkJCQkJCQkJCQkidHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCQkJ ImRldGFjaCBwYXJ0aXRpb24iLAorCQkJCQkJCQkJCSJwYXJ0aXRpb25faWRlbnRpdHkiLCBPYmpU eXBlT2JqZWN0LAorCQkJCQkJCQkJCW5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlv blJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJCQkJCXN1Yi0+YWRkcmVzcy5vYmplY3RJZCksCisJ CQkJCQkJCQkJY21kLT5jb25jdXJyZW50ID8gIkNPTkNVUlJFTlRMWSIgOiAiIik7CisJCQkJc3Vi Y21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJ CWJyZWFrOworCQkJfQorCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb25GaW5hbGl6ZToKKwkJCQl0 bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkRFVEFDSCBQQVJUSVRJT04gJXtwYXJ0aXRpb25faWRl bnRpdHl9RCBGSU5BTElaRSIsIDIsCisJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAi ZGV0YWNoIHBhcnRpdGlvbiBmaW5hbGl6ZSIsCisJCQkJCQkJCQkJInBhcnRpdGlvbl9pZGVudGl0 eSIsIE9ialR5cGVPYmplY3QsCisJCQkJCQkJCQkJbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lk KFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJCQkJCQkJc3ViLT5hZGRyZXNzLm9iamVj dElkKSk7CisJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3Qo dG1wX29iaikpOworCQkJCWJyZWFrOworCQkJY2FzZSBBVF9BZGRJZGVudGl0eToKKwkJCQl7CisJ CQkJCUF0dHJOdW1iZXIJYXR0bnVtOworCQkJCQlPaWQJCQlzZXFfcmVsaWQ7CisJCQkJCU9ialRy ZWUgICAgKnNlcWRlZjsKKwkJCQkJQ29sdW1uRGVmICAqY29sZGVmID0gKENvbHVtbkRlZiAqKSBz dWJjbWQtPmRlZjsKKworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIENPTFVN TiAle2NvbHVtbn1JIiwgMiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3RyaW5nLCAiYWRk IGlkZW50aXR5IiwKKwkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcsIHN1YmNtZC0+ bmFtZSk7CisKKwkJCQkJYXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCks IHN1YmNtZC0+bmFtZSk7CisJCQkJCXNlcV9yZWxpZCA9IGdldElkZW50aXR5U2VxdWVuY2UoUmVs YXRpb25HZXRSZWxpZChyZWwpLCBhdHRudW0sIHRydWUpOworCisJCQkJCWlmIChPaWRJc1ZhbGlk KHNlcV9yZWxpZCkpCisJCQkJCXsKKwkJCQkJCXNlcWRlZiA9IGRlcGFyc2VfQ29sdW1uSWRlbnRp dHkoc2VxX3JlbGlkLCBjb2xkZWYtPmlkZW50aXR5LCBmYWxzZSk7CisJCQkJCQlhcHBlbmRfb2Jq ZWN0X29iamVjdCh0bXBfb2JqLCAiQUREICV7aWRlbnRpdHlfY29sdW1ufXMiLCBzZXFkZWYpOwor CQkJCQl9CisKKwkJCQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmpl Y3QodG1wX29iaikpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgQVRfU2V0SWRlbnRpdHk6 CisJCQkJeworCQkJCQlEZWZFbGVtICAgICpkZWZlbDsKKwkJCQkJY2hhcgkJaWRlbnRpdHkgPSAw OworCQkJCQlPYmpUcmVlICAgICpzZXFkZWY7CisJCQkJCUF0dHJOdW1iZXIJYXR0bnVtOworCQkJ CQlPaWQJCQlzZXFfcmVsaWQ7CisKKworCQkJCQl0bXBfb2JqID0gbmV3X29ianRyZWVfVkEoIkFM VEVSIENPTFVNTiAle2NvbHVtbn1JIiwgMiwKKwkJCQkJCQkJCQkJInR5cGUiLCBPYmpUeXBlU3Ry aW5nLCAic2V0IGlkZW50aXR5IiwKKwkJCQkJCQkJCQkJImNvbHVtbiIsIE9ialR5cGVTdHJpbmcs IHN1YmNtZC0+bmFtZSk7CisKKwkJCQkJaWYgKHN1YmNtZC0+ZGVmKQorCQkJCQl7CisJCQkJCQlM aXN0CSAgICpkZWYgPSAoTGlzdCAqKSBzdWJjbWQtPmRlZjsKKworCQkJCQkJQXNzZXJ0KElzQShz dWJjbWQtPmRlZiwgTGlzdCkpOworCisJCQkJCQlkZWZlbCA9IGxpbml0aWFsX25vZGUoRGVmRWxl bSwgZGVmKTsKKwkJCQkJCWlkZW50aXR5ID0gZGVmR2V0SW50MzIoZGVmZWwpOworCQkJCQl9CisK KwkJCQkJYXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1YmNtZC0+ bmFtZSk7CisJCQkJCXNlcV9yZWxpZCA9IGdldElkZW50aXR5U2VxdWVuY2UoUmVsYXRpb25HZXRS ZWxpZChyZWwpLCBhdHRudW0sIHRydWUpOworCisJCQkJCWlmIChPaWRJc1ZhbGlkKHNlcV9yZWxp ZCkpCisJCQkJCXsKKwkJCQkJCXNlcWRlZiA9IGRlcGFyc2VfQ29sdW1uSWRlbnRpdHkoc2VxX3Jl bGlkLCBpZGVudGl0eSwgdHJ1ZSk7CisJCQkJCQlhcHBlbmRfb2JqZWN0X29iamVjdCh0bXBfb2Jq LCAiJXtkZWZpbml0aW9ufXMiLCBzZXFkZWYpOworCQkJCQl9CisKKwkJCQkJc3ViY21kcyA9IGxh cHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikpOworCQkJCQlicmVhazsK KwkJCQl9CisJCQljYXNlIEFUX0Ryb3BJZGVudGl0eToKKwkJCQl0bXBfb2JqID0gbmV3X29ianRy ZWVfVkEoIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgSURFTlRJVFkiLCAyLAorCQkJCQkJ CQkJCSJ0eXBlIiwgT2JqVHlwZVN0cmluZywgImRyb3AgaWRlbnRpdHkiLAorCQkJCQkJCQkJCSJj b2x1bW4iLCBPYmpUeXBlU3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCisJCQkJYXBwZW5kX3N0cmlu Z19vYmplY3QodG1wX29iaiwgIiV7aWZfZXhpc3RzfXMiLAorCQkJCQkJCQkJICJpZl9leGlzdHMi LAorCQkJCQkJCQkJIHN1YmNtZC0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIpOworCisJ CQkJc3ViY21kcyA9IGxhcHBlbmQoc3ViY21kcywgbmV3X29iamVjdF9vYmplY3QodG1wX29iaikp OworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKFdBUk5JTkcsICJ1bnN1cHBvcnRl ZCBhbHRlciB0YWJsZSBzdWJ0eXBlICVkIiwKKwkJCQkJIHN1YmNtZC0+c3VidHlwZSk7CisJCQkJ YnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBXZSBkb24ndCBzdXBwb3J0IHJlcGxpY2F0aW5nIEFM VEVSIFRBQkxFIHdoaWNoIGNvbnRhaW5zIHZvbGF0aWxlCisJCSAqIGZ1bmN0aW9ucyBiZWNhdXNl IEl0J3MgcG9zc2libGUgdGhlIGZ1bmN0aW9ucyBjb250YWluIERETC9ETUwgaW4KKwkJICogd2hp Y2ggY2FzZSB0aGVzZSBvcGVyYXRpb25zIHdpbGwgYmUgZXhlY3V0ZWQgdHdpY2UgYW5kIGNhdXNl CisJCSAqIGR1cGxpY2F0ZSBkYXRhLiBJbiBhZGRpdGlvbiwgd2UgZG9uJ3Qga25vdyB3aGV0aGVy IHRoZSB0YWJsZXMgYmVpbmcKKwkJICogYWNjZXNzZWQgYnkgdGhlc2UgRERML0RNTCBhcmUgcHVi bGlzaGVkIG9yIG5vdC4gU28gYmxpbmRseSBhbGxvd2luZworCQkgKiBzdWNoIGZ1bmN0aW9ucyBj YW4gYWxsb3cgdW5pbnRlbmRlZCBjbGF1c2VzIGxpa2UgdGhlIHRhYmxlcworCQkgKiBhY2Nlc3Nl ZCBpbiB0aG9zZSBmdW5jdGlvbnMgbWF5IG5vdCBldmVuIGV4aXN0IG9uIHRoZSBzdWJzY3JpYmVy LgorCQkgKi8KKwkJaWYgKGNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIGV4cHJz KSkKKwkJCWVsb2coRVJST1IsICJBTFRFUiBUQUJMRSBjb21tYW5kIHVzaW5nIHZvbGF0aWxlIGZ1 bmN0aW9uIGNhbm5vdCBiZSByZXBsaWNhdGVkIik7CisKKwkJLyoKKwkJICogQ2xlYW4gdGhlIGxp c3QgYXMgd2UgYWxyZWFkeSBjb25maXJtZWQgdGhlcmUgaXMgbm8gdm9sYXRpbGUKKwkJICogZnVu Y3Rpb24uCisJCSAqLworCQlsaXN0X2ZyZWUoZXhwcnMpOworCQlleHBycyA9IE5JTDsKKwl9CisK Kwl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlpZiAobGlzdF9sZW5ndGgo c3ViY21kcykgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwlhcHBlbmRfYXJyYXlfb2JqZWN0KHJl dCwgIiV7c3ViY21kczosIH1zIiwgc3ViY21kcyk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgor ICogSGFuZGxlIGRlcGFyc2luZyBvZiBEUk9QIGNvbW1hbmRzLgorICoKKyAqIFZlcmJvc2Ugc3lu dGF4CisgKiBEUk9QICV7b2JqdHlwZX1zIElGIEVYSVNUUyAlJXtvYmppZGVudGl0eX1zICV7Y2Fz Y2FkZX1zCisgKi8KK2NoYXIgKgorZGVwYXJzZV9kcm9wX2NvbW1hbmQoY29uc3QgY2hhciAqb2Jq aWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVo YXZpb3IpCit7CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCWNoYXIJICAgKmNvbW1hbmQ7CisJY2hh cgkgICAqaWRlbnRpdHkgPSAoY2hhciAqKSBvYmppZGVudGl0eTsKKwlPYmpUcmVlICAgICpzdG10 OworCU9ialRyZWUgICAgKnRtcF9vYmo7CisJSnNvbmIJICAgKmpzb25iOworCisJaW5pdFN0cmlu Z0luZm8oJnN0cik7CisKKwlzdG10ID0gbmV3X29ianRyZWVfVkEoIkRST1AgJXtvYmp0eXBlfXMg SUYgRVhJU1RTICV7b2JqaWRlbnRpdHl9cyIsIDIsCisJCQkJCQkgICJvYmp0eXBlIiwgT2JqVHlw ZVN0cmluZywgb2JqZWN0dHlwZSwKKwkJCQkJCSAgIm9iamlkZW50aXR5IiwgT2JqVHlwZVN0cmlu ZywgaWRlbnRpdHkpOworCisJdG1wX29iaiA9IG5ld19vYmp0cmVlX1ZBKCJDQVNDQURFIiwgMSwK KwkJCQkJCQkicHJlc2VudCIsIE9ialR5cGVCb29sLCBiZWhhdmlvciA9PSBEUk9QX0NBU0NBREUp OworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHN0bXQsICIle2Nhc2NhZGV9cyIsIHRtcF9vYmopOwor CisJanNvbmIgPSBvYmp0cmVlX3RvX2pzb25iKHN0bXQpOworCWNvbW1hbmQgPSBKc29uYlRvQ1N0 cmluZygmc3RyLCAmanNvbmItPnJvb3QsIEpTT05CX0VTVElNQVRFRF9MRU4pOworCisJcmV0dXJu IGNvbW1hbmQ7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyT2JqZWN0U2NoZW1hU3RtdCAo QUxURVIgLi4uIFNFVCBTQ0hFTUEgY29tbWFuZCkKKyAqCisgKiBHaXZlbiB0aGUgb2JqZWN0IGFk ZHJlc3MgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFuCisgKiBP YmpUcmVlIHJlcHJlc2VudGluZyB0aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5 bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIFNFVCBTQ0hFTUEgJXtuZXdz Y2hlbWF9SQorICovCitzdGF0aWMgT2JqVHJlZSAqCitkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1h U3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSwKKwkJCQkJCQkgIE9i amVjdEFkZHJlc3Mgb2xkX3NjaGVtYSkKK3sKKwlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm5vZGUg PSAoQWx0ZXJPYmplY3RTY2hlbWFTdG10ICopIHBhcnNldHJlZTsKKwljaGFyCSAgICppZGVudGl0 eTsKKwljaGFyCSAgICpuZXdfc2NoZW1hID0gbm9kZS0+bmV3c2NoZW1hOworCWNoYXIJICAgKm9s ZF9zY2huYW1lOworCWNoYXIJICAgKmlkZW50OworCisJLyoKKwkgKiBTaW5jZSB0aGUgY29tbWFu ZCBoYXMgYWxyZWFkeSB0YWtlbiBwbGFjZSBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mCisJICog Y2F0YWxvZ3MsIGdldE9iamVjdElkZW50aXR5IHJldHVybnMgdGhlIG9iamVjdCBuYW1lIHdpdGgg dGhlIGFscmVhZHkKKwkgKiBjaGFuZ2VkIHNjaGVtYS4gIFRoZSBvdXRwdXQgb2Ygb3VyIGRlcGFy c2luZyBtdXN0IHJldHVybiB0aGUgb3JpZ2luYWwKKwkgKiBzY2hlbWEgbmFtZSwgaG93ZXZlciwg c28gd2UgY2hvcCB0aGUgc2NoZW1hIG5hbWUgb2ZmIHRoZSBpZGVudGl0eQorCSAqIHN0cmluZyBh bmQgdGhlbiBwcmVwZW5kIHRoZSBxdW90ZWQgc2NoZW1hIG5hbWUuCisJICoKKwkgKiBYWFggVGhp cyBpcyBwcmV0dHkgY2x1bmt5LiBDYW4gd2UgZG8gYmV0dGVyPworCSAqLworCWlkZW50aXR5ID0g Z2V0T2JqZWN0SWRlbnRpdHkoJmFkZHJlc3MsIGZhbHNlKTsKKwlvbGRfc2NobmFtZSA9IGdldF9u YW1lc3BhY2VfbmFtZShvbGRfc2NoZW1hLm9iamVjdElkKTsKKwlpZiAoIW9sZF9zY2huYW1lKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2NoZW1hIHdpdGggT0lEICV1 IiwKKwkJCSBvbGRfc2NoZW1hLm9iamVjdElkKTsKKworCWlkZW50ID0gcHNwcmludGYoIiVzJXMi LCBxdW90ZV9pZGVudGlmaWVyKG9sZF9zY2huYW1lKSwKKwkJCQkJIGlkZW50aXR5ICsgc3RybGVu KHF1b3RlX2lkZW50aWZpZXIobmV3X3NjaGVtYSkpKTsKKworCXJldHVybiBuZXdfb2JqdHJlZV9W QSgiQUxURVIgJXtvYmp0eXBlfXMgJXtpZGVudGl0eX1zIFNFVCBTQ0hFTUEgJXtuZXdzY2hlbWF9 SSIsIDMsCisJCQkJCQkgICJvYmp0eXBlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgc3RyaW5n aWZ5X29ianR5cGUobm9kZS0+b2JqZWN0VHlwZSwgZmFsc2UpLAorCQkJCQkJICAiaWRlbnRpdHki LCBPYmpUeXBlU3RyaW5nLCBpZGVudCwKKwkJCQkJCSAgIm5ld3NjaGVtYSIsIE9ialR5cGVTdHJp bmcsIG5ld19zY2hlbWEpOworfQorCisvKgorICogRGVwYXJzZSBhbiBBbHRlck93bmVyU3RtdCAo QUxURVIgLi4uIE9XTkVSIFRPIC4uLikuCisgKgorICogR2l2ZW4gdGhlIG9iamVjdCBhZGRyZXNz IGFuZCB0aGUgcGFyc2UgdHJlZSB0aGF0IGNyZWF0ZWQgaXQsIHJldHVybiBhbgorICogT2JqVHJl ZSByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICogVmVyYm9zZSBzeW50YXgK KyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBPV05FUiBUTyAle25ld293bmVyfUkK KyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9BbHRlck93bmVyU3RtdChPYmplY3RBZGRy ZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlBbHRlck93bmVyU3RtdCAqbm9kZSA9 IChBbHRlck93bmVyU3RtdCAqKSBwYXJzZXRyZWU7CisKKwlyZXR1cm4gbmV3X29ianRyZWVfVkEo IkFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBPV05FUiBUTyAle25ld293bmVyfUkiLCAz LAorCQkJCQkJICAib2JqdHlwZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkgIHN0cmluZ2lmeV9v Ymp0eXBlKG5vZGUtPm9iamVjdFR5cGUsIGZhbHNlKSwKKwkJCQkJCSAgImlkZW50aXR5IiwgT2Jq VHlwZVN0cmluZywKKwkJCQkJCSAgZ2V0T2JqZWN0SWRlbnRpdHkoJmFkZHJlc3MsIGZhbHNlKSwK KwkJCQkJCSAgIm5ld293bmVyIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSAgZ2V0X3JvbGVzcGVj X25hbWUobm9kZS0+bmV3b3duZXIpKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBSZW5hbWVTdG10 LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0 c31zICV7aWRlbnRpdHl9RCBSRU5BTUUgVE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiBU QUJMRSAle29ubHl9cyAle2lkZW50aXR5fUQgUkVOQU1FIENPTlNUUkFJTlQgJXtvbGRuYW1lfUkg VE8gJXtuZXduYW1lfUkKKyAqIE9SCisgKiBBTFRFUiAle29ianR5cGV9cyAle2lmX2V4aXN0c31z ICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09MVU1OICV7Y29sbmFtZX1JIFRPICV7bmV3 bmFtZX1JICV7Y2FzY2FkZX1zCisgKi8KK3N0YXRpYyBPYmpUcmVlICoKK2RlcGFyc2VfUmVuYW1l U3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKK3sKKwlSZW5hbWVT dG10ICpub2RlID0gKFJlbmFtZVN0bXQgKikgcGFyc2V0cmVlOworCU9ialRyZWUgICAgKnJldDsK KwlSZWxhdGlvbglyZWxhdGlvbjsKKwlPaWQJCQlzY2hlbWFJZDsKKworCS8qCisJICogSW4gYW4g QUxURVIgLi4gUkVOQU1FIGNvbW1hbmQsIHdlIGRvbid0IGhhdmUgdGhlIG9yaWdpbmFsIG5hbWUg b2YgdGhlCisJICogb2JqZWN0IGluIHN5c3RlbSBjYXRhbG9nczogc2luY2Ugd2UgaW5zcGVjdCB0 aGVtIGFmdGVyIHRoZSBjb21tYW5kIGhhcworCSAqIGV4ZWN1dGVkLCB0aGUgb2xkIG5hbWUgaXMg YWxyZWFkeSBnb25lLiAgVGhlcmVmb3JlLCB3ZSBleHRyYWN0IGl0IGZyb20KKwkgKiB0aGUgcGFy c2Ugbm9kZS4gIE5vdGUgd2Ugc3RpbGwgZXh0cmFjdCB0aGUgc2NoZW1hIG5hbWUgZnJvbSB0aGUg Y2F0YWxvZworCSAqIChpdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgcGFyc2Ugbm9kZSk7 IGl0IGNhbm5vdCBwb3NzaWJseSBoYXZlCisJICogY2hhbmdlZCBhbnl3YXkuCisJICovCisJc3dp dGNoIChub2RlLT5yZW5hbWVUeXBlKQorCXsKKwkJY2FzZSBPQkpFQ1RfVEFCTEU6CisJCQlyZWxh dGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2NrKTsK KwkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRpb24pOworCQkJcmV0ID0g bmV3X29ianRyZWVfVkEoIkFMVEVSICV7b2JqdHlwZX1zICV7aWZfZXhpc3RzfXMgJXtpZGVudGl0 eX1EIFJFTkFNRSBUTyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJCSAib2JqdHlwZSIsIE9ialR5 cGVTdHJpbmcsCisJCQkJCQkJCSBzdHJpbmdpZnlfb2JqdHlwZShub2RlLT5yZW5hbWVUeXBlLCBm YWxzZSksCisJCQkJCQkJCSAiaWZfZXhpc3RzIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCQkJIG5v ZGUtPm1pc3Npbmdfb2sgPyAiSUYgRVhJU1RTIiA6ICIiLAorCQkJCQkJCQkgImlkZW50aXR5Iiwg T2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShzY2hlbWFJ ZCwKKwkJCQkJCQkJCQkJCQkJICBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCQkJCSAi bmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsCisJCQkJCQkJCSBub2RlLT5uZXduYW1lKTsKKwkJCXJl bGF0aW9uX2Nsb3NlKHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJY29uc3RydHVw OworCQkJCUZvcm1fcGdfY29uc3RyYWludCBjb25zdGZvcm07CisKKwkJCQljb25zdHJ0dXAgPSBT ZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lELAorCQkJCQkJCQkJCQlPYmplY3RJZEdldERhdHVtKGFk ZHJlc3Mub2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY29uc3RydHVwKSkK KwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGNvbnN0cmFpbnQgd2l0 aCBPSUQgJXUiLAorCQkJCQkJIGFkZHJlc3Mub2JqZWN0SWQpOworCQkJCWNvbnN0Zm9ybSA9IChG b3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVChjb25zdHJ0dXApOworCisJCQkJcmV0ID0gbmV3 X29ianRyZWVfVkEoIkFMVEVSIFRBQkxFICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09O U1RSQUlOVCAle29sZG5hbWV9SSBUTyAle25ld25hbWV9SSIsIDQsCisJCQkJCQkJCQkib25seSIs ICBPYmpUeXBlU3RyaW5nLAorCQkJCQkJCQkJbm9kZS0+cmVsYXRpb24tPmluaCA/ICIiIDogIk9O TFkiLAorCQkJCQkJCQkJImlkZW50aXR5IiwgT2JqVHlwZU9iamVjdCwKKwkJCQkJCQkJCW5ld19v Ymp0cmVlX2Zvcl9xdWFsbmFtZV9pZChSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJCQkJ CQkJY29uc3Rmb3JtLT5jb25yZWxpZCksCisJCQkJCQkJCQkib2xkbmFtZSIsIE9ialR5cGVTdHJp bmcsIG5vZGUtPnN1Ym5hbWUsCisJCQkJCQkJCQkibmV3bmFtZSIsIE9ialR5cGVTdHJpbmcsIG5v ZGUtPm5ld25hbWUpOworCQkJCVJlbGVhc2VTeXNDYWNoZShjb25zdHJ0dXApOworCQkJfQorCQkJ YnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfQ09MVU1OOgorCQkJcmVsYXRpb24gPSByZWxhdGlvbl9v cGVuKGFkZHJlc3Mub2JqZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlzY2hlbWFJZCA9IFJl bGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKworCQkJcmV0ID0gbmV3X29ianRyZWVfVkEo IkFMVEVSICV7b2JqdHlwZX1zIiwgMSwKKwkJCQkJCQkJICJvYmp0eXBlIiwgT2JqVHlwZVN0cmlu ZywKKwkJCQkJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPnJlbGF0aW9uVHlwZSwgZmFsc2Up KTsKKworCQkJLyogQ29tcG9zaXRlIHR5cGVzIGRvIG5vdCBzdXBwb3J0IElGIEVYSVNUUyAqLwor CQkJaWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0NPTFVNTikKKwkJCQlhcHBlbmRfc3Ry aW5nX29iamVjdChyZXQsICIle2lmX2V4aXN0c31zIiwKKwkJCQkJCQkJCSAiaWZfZXhpc3RzIiwK KwkJCQkJCQkJCSBub2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIik7CisJCQlpZiAo IW5vZGUtPnJlbGF0aW9uLT5pbmgpCisJCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiJXtv bmx5fXMiLAorCQkJCQkJCQkJICJvbmx5IiwKKwkJCQkJCQkJCSAiT05MWSIpOworCQkJYXBwZW5k X29iamVjdF9vYmplY3QocmV0LCAiJXtpZGVudGl0eX1EIiwKKwkJCQkJCQkJIG5ld19vYmp0cmVl X2Zvcl9xdWFsbmFtZShzY2hlbWFJZCwKKwkJCQkJCQkJCQkJCQkJICBub2RlLT5yZWxhdGlvbi0+ cmVsbmFtZSkpOworCQkJYXBwZW5kX3N0cmluZ19vYmplY3QocmV0LCAiUkVOQU1FIENPTFVNTiAl e2NvbG5hbWV9SSIsCisJCQkJCQkJCSAiY29sbmFtZSIsIG5vZGUtPnN1Ym5hbWUpOworCisJCQlh cHBlbmRfc3RyaW5nX29iamVjdChyZXQsICJUTyAle25ld25hbWV9SSIsICJuZXduYW1lIiwKKwkJ CQkJCQkJIG5vZGUtPm5ld25hbWUpOworCisJCQlpZiAobm9kZS0+cmVuYW1lVHlwZSA9PSBPQkpF Q1RfQVRUUklCVVRFKQorCQkJCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7Y2FzY2FkZX1z IiwKKwkJCQkJCQkJCSBuZXdfb2JqdHJlZV9WQSgiQ0FTQ0FERSIsIDEsCisJCQkJCQkJCQkJCQkJ InByZXNlbnQiLCBPYmpUeXBlQm9vbCwKKwkJCQkJCQkJCQkJCQlub2RlLT5iZWhhdmlvciA9PSBE Uk9QX0NBU0NBREUpKTsKKworCQkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJl TG9jayk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9y dGVkIG9iamVjdCB0eXBlICVkIiwgbm9kZS0+cmVuYW1lVHlwZSk7CisJfQorCisJcmV0dXJuIHJl dDsKK30KKworLyoKKyAqIEhhbmRsZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGNvdmVyIGFsbCBjYXNlcyBoYW5kbGVkIGluIFByb2Nl c3NVdGlsaXR5U2xvdy4KKyAqLworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9zaW1wbGVfY29t bWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCit7CisJT2lkCQkJb2JqZWN0SWQ7CisJTm9kZQkg ICAqcGFyc2V0cmVlOworCisJQXNzZXJ0KGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlKTsKKworCXBh cnNldHJlZSA9IGNtZC0+cGFyc2V0cmVlOworCW9iamVjdElkID0gY21kLT5kLnNpbXBsZS5hZGRy ZXNzLm9iamVjdElkOworCisJaWYgKGNtZC0+aW5fZXh0ZW5zaW9uICYmIChub2RlVGFnKHBhcnNl dHJlZSkgIT0gVF9DcmVhdGVFeHRlbnNpb25TdG10KSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBU aGlzIHN3aXRjaCBuZWVkcyB0byBoYW5kbGUgZXZlcnl0aGluZyB0aGF0IFByb2Nlc3NVdGlsaXR5 U2xvdyBkb2VzICovCisJc3dpdGNoIChub2RlVGFnKHBhcnNldHJlZSkpCisJeworCQljYXNlIFRf QWx0ZXJPYmplY3RTY2hlbWFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJPYmplY3RTY2hl bWFTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywKKwkJCQkJCQkJCQkJCSBwYXJzZXRyZWUsCisJ CQkJCQkJCQkJCQkgY21kLT5kLnNpbXBsZS5zZWNvbmRhcnlPYmplY3QpOworCisJCWNhc2UgVF9B bHRlck93bmVyU3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVyT3duZXJTdG10KGNtZC0+ZC5z aW1wbGUuYWRkcmVzcywgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJCXJl dHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJY2FzZSBU X1JlbmFtZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9SZW5hbWVTdG10KGNtZC0+ZC5zaW1wbGUu YWRkcmVzcywgcGFyc2V0cmVlKTsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhMT0csICJ1bnJlY29n bml6ZWQgbm9kZSB0eXBlIGluIGRlcGFyc2UgY29tbWFuZDogJWQiLAorCQkJCSAoaW50KSBub2Rl VGFnKHBhcnNldHJlZSkpOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogV29ya2hv cnNlIHRvIGRlcGFyc2UgYSBDb2xsZWN0ZWRDb21tYW5kLgorICovCitjaGFyICoKK2RlcGFyc2Vf dXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUp Cit7CisJT3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CisJTWVtb3J5Q29udGV4dCBv bGRjeHQ7CisJTWVtb3J5Q29udGV4dCB0bXBjeHQ7CisJT2JqVHJlZSAgICAqdHJlZTsKKwljaGFy CSAgICpjb21tYW5kID0gTlVMTDsKKwlTdHJpbmdJbmZvRGF0YSBzdHI7CisKKwkvKgorCSAqIEFs bG9jYXRlIGV2ZXJ5dGhpbmcgZG9uZSBieSB0aGUgZGVwYXJzaW5nIHJvdXRpbmVzIGludG8gYSB0 ZW1wIGNvbnRleHQsCisJICogdG8gYXZvaWQgaGF2aW5nIHRvIHNwcmlua2xlIHRoZW0gd2l0aCBt ZW1vcnkgaGFuZGxpbmcgY29kZSwgYnV0CisJICogYWxsb2NhdGUgdGhlIG91dHB1dCBTdHJpbmdJ bmZvIGJlZm9yZSBzd2l0Y2hpbmcuCisJICovCisJaW5pdFN0cmluZ0luZm8oJnN0cik7CisJdG1w Y3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJ CQkgICAiZGVwYXJzZSBjdHgiLAorCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX01JTlNJWkUs CisJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfSU5JVFNJWkUsCisJCQkJCQkJCSAgIEFMTE9D U0VUX0RFRkFVTFRfTUFYU0laRSk7CisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHRt cGN4dCk7CisKKwkvKgorCSAqIE1hbnkgcm91dGluZXMgdW5kZXJseWluZyB0aGlzIG9uZSB3aWxs IGludm9rZSBydWxldXRpbHMuYyBmdW5jdGlvbmFsaXR5CisJICogdG8gb2J0YWluIGRlcGFyc2Vk IHZlcnNpb25zIG9mIGV4cHJlc3Npb25zLiAgSW4gc3VjaCByZXN1bHRzLCB3ZSB3YW50CisJICog YWxsIG9iamVjdCBuYW1lcyB0byBiZSBxdWFsaWZpZWQsIHNvIHRoYXQgcmVzdWx0cyBhcmUgInBv cnRhYmxlIiB0bworCSAqIGVudmlyb25tZW50cyB3aXRoIGRpZmZlcmVudCBzZWFyY2hfcGF0aCBz ZXR0aW5ncy4gIFJhdGhlciB0aGFuIGluamVjdAorCSAqIHdoYXQgd291bGQgYmUgcmVwZXRpdGl2 ZSBjYWxscyB0byBvdmVycmlkZSBzZWFyY2ggcGF0aCBhbGwgb3ZlciB0aGUKKwkgKiBwbGFjZSwg d2UgZG8gaXQgY2VudHJhbGx5IGhlcmUuCisJICovCisJb3ZlcnJpZGVQYXRoID0gR2V0T3ZlcnJp ZGVTZWFyY2hQYXRoKEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwlvdmVycmlkZVBhdGgtPnNjaGVt YXMgPSBOSUw7CisJb3ZlcnJpZGVQYXRoLT5hZGRDYXRhbG9nID0gZmFsc2U7CisJb3ZlcnJpZGVQ YXRoLT5hZGRUZW1wID0gdHJ1ZTsKKwlQdXNoT3ZlcnJpZGVTZWFyY2hQYXRoKG92ZXJyaWRlUGF0 aCk7CisKKwl2ZXJib3NlID0gdmVyYm9zZV9tb2RlOworCisJc3dpdGNoIChjbWQtPnR5cGUpCisJ eworCQljYXNlIFNDVF9TaW1wbGU6CisJCQl0cmVlID0gZGVwYXJzZV9zaW1wbGVfY29tbWFuZChj bWQpOworCQkJYnJlYWs7CisJCWNhc2UgU0NUX0FsdGVyVGFibGU6CisJCQl0cmVlID0gZGVwYXJz ZV9BbHRlclJlbGF0aW9uKGNtZCk7CisJCQlicmVhazsKKwkJY2FzZSBTQ1RfQ3JlYXRlVGFibGVB czoKKwkJCXRyZWUgPSBkZXBhcnNlX0NyZWF0ZVRhYmxlQXNTdG10KGNtZCk7CisJCQlicmVhazsK KwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBl ICVkIiwgY21kLT50eXBlKTsKKwl9CisKKwlQb3BPdmVycmlkZVNlYXJjaFBhdGgoKTsKKworCWlm ICh0cmVlKQorCXsKKwkJSnNvbmIJICAgKmpzb25iOworCisJCWpzb25iID0gb2JqdHJlZV90b19q c29uYih0cmVlKTsKKwkJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9v dCwgSlNPTkJfRVNUSU1BVEVEX0xFTik7CisJfQorCisJLyoKKwkgKiBDbGVhbiB1cC4gIE5vdGUg dGhhdCBzaW5jZSB3ZSBjcmVhdGVkIHRoZSBTdHJpbmdJbmZvIGluIHRoZSBjYWxsZXIncworCSAq IGNvbnRleHQsIHRoZSBvdXRwdXQgc3RyaW5nIGlzIG5vdCBkZWxldGVkIGhlcmUuCisJICovCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZSh0bXBj eHQpOworCisJcmV0dXJuIGNvbW1hbmQ7Cit9CisKKy8qCisgKiBHaXZlbiBhIENvbGxlY3RlZENv bW1hbmQsIHJldHVybiBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgaXQuCisgKgorICogVGhlIGNv bW1hbmQgaXMgZXhwYW5kZWQgZnVsbHkgc28gdGhhdCB0aGVyZSBhcmUgbm8gYW1iaWd1aXRpZXMg ZXZlbiBpbiB0aGUKKyAqIGZhY2Ugb2Ygc2VhcmNoX3BhdGggY2hhbmdlcy4KKyAqLworRGF0dW0K K2RkbF9kZXBhcnNlX3RvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlDb2xsZWN0ZWRDb21t YW5kICpjbWQgPSAoQ29sbGVjdGVkQ29tbWFuZCAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKKwlj aGFyCSAgICpjb21tYW5kOworCisJY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNt ZCwgdHJ1ZSk7CisKKwlpZiAoY29tbWFuZCkKKwkJUEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3Rv X3RleHQoY29tbWFuZCkpOworCisJUEdfUkVUVVJOX05VTEwoKTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9qc29uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxf anNvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNhNTdkMjY5N2MK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfanNvbi5jCkBAIC0w LDAgKzEsNzgwIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxfanNvbi5jCisgKgkg IEpTT04gY29kZSByZWxhdGVkIHRvIERETCBjb21tYW5kIGRlcGFyc2luZworICoKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBV bml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMv YmFja2VuZC9jb21tYW5kcy9kZGxfanNvbi5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKKyNp bmNsdWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK KyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorCisKKy8qCisgKiBDb252ZXJzaW9uIHNwZWNpZmll ciB3aGljaCBkZXRlcm1pbmVzIGhvdyB0byBleHBhbmQgdGhlIEpTT04gZWxlbWVudAorICogaW50 byBhIHN0cmluZy4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJU3BlY0RvdHRlZE5hbWUsCisJU3Bl Y0lkZW50aWZpZXIsCisJU3BlY051bWJlciwKKwlTcGVjT3BlcmF0b3JOYW1lLAorCVNwZWNSb2xl LAorCVNwZWNTdHJpbmcsCisJU3BlY1N0cmluZ0xpdGVyYWwsCisJU3BlY1R5cGVOYW1lCit9IGNv bnZTcGVjaWZpZXI7CisKKy8qCisgKiBBIHRlcm5hcnkgdmFsdWUgdGhhdCByZXByZXNlbnRzIGEg Ym9vbGVhbiB0eXBlIEpzb25iVmFsdWUuCisgKi8KK3R5cGVkZWYgZW51bQoreworCXR2X2Fic2Vu dCwKKwl0dl90cnVlLAorCXR2X2ZhbHNlCit9CQkJanNvbl90cml2YWx1ZTsKKworc3RhdGljIGJv b2wgZXhwYW5kX29uZV9qc29uYl9lbGVtZW50KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwK KwkJCQkJCQkJCSBKc29uYlZhbHVlICpqc29udmFsLCBjb252U3BlY2lmaWVyIHNwZWNpZmllciwK KwkJCQkJCQkJCSBjb25zdCBjaGFyICpmbXQpOworc3RhdGljIHZvaWQgZXhwYW5kX2pzb25iX2Fy cmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKKwkJCQkJCQkgICBKc29uYlZhbHVlICpq c29uYXJyLCBjaGFyICphcnJheXNlcCwKKwkJCQkJCQkgICBjb252U3BlY2lmaWVyIHNwZWNpZmll ciwgY29uc3QgY2hhciAqZm10KTsKK3N0YXRpYyB2b2lkIGZtdHN0cl9lcnJvcl9jYWxsYmFjayh2 b2lkICphcmcpOworCisvKgorICogR2l2ZW4gYSBKc29uYkNvbnRhaW5lciwgZmluZCB0aGUgSnNv bmJWYWx1ZSB3aXRoIHRoZSBnaXZlbiBrZXkgbmFtZSBpbiBpdC4KKyAqIElmIGl0J3Mgb2YgYSB0 eXBlIG90aGVyIHRoYW4gamJ2Qm9vbCwgYW4gZXJyb3IgaXMgcmFpc2VkLiBJZiBpdCBkb2Vzbid0 CisgKiBleGlzdCwgdHZfYWJzZW50IGlzIHJldHVybmVkOyBvdGhlcndpc2UgcmV0dXJuIHRoZSBh Y3R1YWwganNvbl90cml2YWx1ZS4KKyAqLworc3RhdGljIGpzb25fdHJpdmFsdWUKK2ZpbmRfYm9v bF9pbl9qc29uYmNvbnRhaW5lcihKc29uYkNvbnRhaW5lciAqY29udGFpbmVyLCBjaGFyICprZXlu YW1lKQoreworCUpzb25iVmFsdWUJa2V5OworCUpzb25iVmFsdWUgKnZhbHVlOworCWpzb25fdHJp dmFsdWUgcmVzdWx0OworCisJa2V5LnR5cGUgPSBqYnZTdHJpbmc7CisJa2V5LnZhbC5zdHJpbmcu dmFsID0ga2V5bmFtZTsKKwlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4oa2V5bmFtZSk7CisJ dmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFpbmVyLAorCQkJCQkJCQkJ CUpCX0ZPQkpFQ1QsICZrZXkpOworCWlmICh2YWx1ZSA9PSBOVUxMKQorCQlyZXR1cm4gdHZfYWJz ZW50OworCWlmICh2YWx1ZS0+dHlwZSAhPSBqYnZCb29sKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJl bGVtZW50IFwiJXNcIiBpcyBub3Qgb2YgdHlwZSBib29sZWFuIiwga2V5bmFtZSkpOworCXJlc3Vs dCA9IHZhbHVlLT52YWwuYm9vbGVhbiA/IHR2X3RydWUgOiB0dl9mYWxzZTsKKwlwZnJlZSh2YWx1 ZSk7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogR2l2ZW4gYSBKc29uYkNvbnRhaW5l ciwgZmluZCB0aGUgSnNvbmJWYWx1ZSB3aXRoIHRoZSBnaXZlbiBrZXkgbmFtZSBpbiBpdC4KKyAq IElmIGl0J3Mgb2YgYSB0eXBlIG90aGVyIHRoYW4gamJ2U3RyaW5nLCBhbiBlcnJvciBpcyByYWlz ZWQuICBJZiBpdCBkb2Vzbid0CisgKiBleGlzdCwgYW4gZXJyb3IgaXMgcmFpc2VkIHVubGVzcyBt aXNzaW5nX29rOyBvdGhlcndpc2UgcmV0dXJuIE5VTEwuCisgKgorICogSWYgaXQgZXhpc3RzIGFu ZCBpcyBhIHN0cmluZywgYSBmcmVzaGx5IHBhbGxvYydlZCBjb3B5IGlzIHJldHVybmVkLgorICoK KyAqIElmICpsZW5ndGggaXMgbm90IE5VTEwsIGl0IGlzIHNldCB0byB0aGUgbGVuZ3RoIG9mIHRo ZSBzdHJpbmcuCisgKi8KK3N0YXRpYyBjaGFyICoKK2ZpbmRfc3RyaW5nX2luX2pzb25iY29udGFp bmVyKEpzb25iQ29udGFpbmVyICpjb250YWluZXIsIGNoYXIgKmtleW5hbWUsCisJCQkJCQkJICBi b29sIG1pc3Npbmdfb2ssIGludCAqbGVuZ3RoKQoreworCUpzb25iVmFsdWUJa2V5OworCUpzb25i VmFsdWUgKnZhbHVlOworCWNoYXIJICAgKnN0cjsKKworCS8qIFhYWCB2ZXJpZnkgdGhhdCB0aGlz IGlzIGFuIG9iamVjdCwgbm90IGFuIGFycmF5ICovCisKKwlrZXkudHlwZSA9IGpidlN0cmluZzsK KwlrZXkudmFsLnN0cmluZy52YWwgPSBrZXluYW1lOworCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0 cmxlbihrZXluYW1lKTsKKwl2YWx1ZSA9IGZpbmRKc29uYlZhbHVlRnJvbUNvbnRhaW5lcihjb250 YWluZXIsCisJCQkJCQkJCQkJSkJfRk9CSkVDVCwgJmtleSk7CisJaWYgKHZhbHVlID09IE5VTEwp CisJeworCQlpZiAobWlzc2luZ19vaykKKwkJCXJldHVybiBOVUxMOworCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJZXJy bXNnKCJtaXNzaW5nIGVsZW1lbnQgXCIlc1wiIGluIEpTT04gb2JqZWN0Iiwga2V5bmFtZSkpOwor CX0KKworCWlmICh2YWx1ZS0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2co ImVsZW1lbnQgXCIlc1wiIGlzIG5vdCBvZiB0eXBlIHN0cmluZyIsIGtleW5hbWUpKTsKKworCXN0 ciA9IHBuc3RyZHVwKHZhbHVlLT52YWwuc3RyaW5nLnZhbCwgdmFsdWUtPnZhbC5zdHJpbmcubGVu KTsKKwlpZiAobGVuZ3RoKQorCQkqbGVuZ3RoID0gdmFsdWUtPnZhbC5zdHJpbmcubGVuOworCXBm cmVlKHZhbHVlKTsKKwlyZXR1cm4gc3RyOworfQorCisjZGVmaW5lIEFEVkFOQ0VfUEFSU0VfUE9J TlRFUihwdHIsZW5kX3B0cikgXAorCWRvIHsgXAorCQlpZiAoKysocHRyKSA+PSAoZW5kX3B0cikp IFwKKwkJCWVyZXBvcnQoRVJST1IsIFwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwgXAorCQkJCQllcnJtc2coInVudGVybWluYXRlZCBmb3JtYXQgc3BlY2lm aWVyIikpOyBcCisJfSB3aGlsZSAoMCkKKworLyoKKyAqIFJlY3Vyc2l2ZSBoZWxwZXIgZm9yIGRl cGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nLgorICoKKyAqIEZpbmQgdGhlICJmbXQiIGVsZW1lbnQg aW4gdGhlIGdpdmVuIGNvbnRhaW5lciwgYW5kIGV4cGFuZCBpdCBpbnRvIHRoZQorICogcHJvdmlk ZWQgU3RyaW5nSW5mby4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9mbXRfcmVjdXJzaXZlKFN0 cmluZ0luZm8gYnVmLCBKc29uYkNvbnRhaW5lciAqY29udGFpbmVyKQoreworCUpzb25iVmFsdWUJ a2V5OworCUpzb25iVmFsdWUgKnZhbHVlOworCWNvbnN0IGNoYXIgKmNwOworCWNvbnN0IGNoYXIg KnN0YXJ0X3B0cjsKKwljb25zdCBjaGFyICplbmRfcHRyOworCWludAkJCWxlbjsKKworCXN0YXJ0 X3B0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGNvbnRhaW5lciwgImZtdCIsIGZh bHNlLCAmbGVuKTsKKwllbmRfcHRyID0gc3RhcnRfcHRyICsgbGVuOworCisJZm9yIChjcCA9IHN0 YXJ0X3B0cjsgY3AgPCBlbmRfcHRyOyBjcCsrKQorCXsKKwkJY29udlNwZWNpZmllciBzcGVjaWZp ZXI7CisJCWJvb2wJCWlzX2FycmF5ID0gZmFsc2U7CisJCWNoYXIJICAgKnBhcmFtID0gTlVMTDsK KwkJY2hhcgkgICAqYXJyYXlzZXAgPSBOVUxMOworCisJCWlmICgqY3AgIT0gJyUnKQorCQl7CisJ CQlhcHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKGJ1ZiwgKmNwKTsKKwkJCWNvbnRpbnVlOworCQl9 CisKKwkJQURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKworCQkvKiBFYXN5IGNh c2U6ICUlIG91dHB1dHMgYSBzaW5nbGUgJSAqLworCQlpZiAoKmNwID09ICclJykKKwkJeworCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXJNYWNybyhidWYsICpjcCk7CisJCQljb250aW51ZTsKKwkJfQor CisJCS8qCisJCSAqIFNjYW4gdGhlIG1hbmRhdG9yeSBlbGVtZW50IG5hbWUuICBBbGxvdyBmb3Ig YW4gYXJyYXkgc2VwYXJhdG9yCisJCSAqICh3aGljaCBtYXkgYmUgdGhlIGVtcHR5IHN0cmluZykg dG8gYmUgc3BlY2lmaWVkIGFmdGVyIGEgY29sb24uCisJCSAqLworCQlpZiAoKmNwID09ICd7JykK KwkJeworCQkJU3RyaW5nSW5mb0RhdGEgcGFyYnVmOworCQkJU3RyaW5nSW5mb0RhdGEgYXJyYXlz ZXBidWY7CisJCQlTdHJpbmdJbmZvCWFwcGVuZFRvOworCisJCQlpbml0U3RyaW5nSW5mbygmcGFy YnVmKTsKKwkJCWFwcGVuZFRvID0gJnBhcmJ1ZjsKKworCQkJQURWQU5DRV9QQVJTRV9QT0lOVEVS KGNwLCBlbmRfcHRyKTsKKwkJCXdoaWxlIChjcCA8IGVuZF9wdHIpCisJCQl7CisJCQkJaWYgKCpj cCA9PSAnOicpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBGb3VuZCBhcnJheSBzZXBhcmF0b3Ig ZGVsaW1pdGVyOyBlbGVtZW50IG5hbWUgaXMgbm93CisJCQkJCSAqIGNvbXBsZXRlLCBzdGFydCBm aWxsaW5nIHRoZSBzZXBhcmF0b3IuCisJCQkJCSAqLworCQkJCQlpbml0U3RyaW5nSW5mbygmYXJy YXlzZXBidWYpOworCQkJCQlhcHBlbmRUbyA9ICZhcnJheXNlcGJ1ZjsKKwkJCQkJaXNfYXJyYXkg PSB0cnVlOworCQkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3AsIGVuZF9wdHIpOworCQkJCQlj b250aW51ZTsKKwkJCQl9CisKKwkJCQlpZiAoKmNwID09ICd9JykKKwkJCQl7CisJCQkJCUFEVkFO Q0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhck1hY3JvKGFwcGVuZFRvLCAqY3ApOworCQkJCUFEVkFOQ0VfUEFS U0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisJCQl9CisJCQlwYXJhbSA9IHBhcmJ1Zi5kYXRhOwor CQkJaWYgKGlzX2FycmF5KQorCQkJCWFycmF5c2VwID0gYXJyYXlzZXBidWYuZGF0YTsKKwkJfQor CQlpZiAocGFyYW0gPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygibWlzc2luZyBjb252 ZXJzaW9uIG5hbWUgaW4gY29udmVyc2lvbiBzcGVjaWZpZXIiKSk7CisKKwkJc3dpdGNoICgqY3Ap CisJCXsKKwkJCWNhc2UgJ0knOgorCQkJCXNwZWNpZmllciA9IFNwZWNJZGVudGlmaWVyOworCQkJ CWJyZWFrOworCQkJY2FzZSAnRCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY0RvdHRlZE5hbWU7CisJ CQkJYnJlYWs7CisJCQljYXNlICdzJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjU3RyaW5nOworCQkJ CWJyZWFrOworCQkJY2FzZSAnTCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZ0xpdGVyYWw7 CisJCQkJYnJlYWs7CisJCQljYXNlICdUJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjVHlwZU5hbWU7 CisJCQkJYnJlYWs7CisJCQljYXNlICdPJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjT3BlcmF0b3JO YW1lOworCQkJCWJyZWFrOworCQkJY2FzZSAnbic6CisJCQkJc3BlY2lmaWVyID0gU3BlY051bWJl cjsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1InOgorCQkJCXNwZWNpZmllciA9IFNwZWNSb2xlOwor CQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiaW52YWxp ZCBjb252ZXJzaW9uIHNwZWNpZmllciBcIiVjXCIiLCAqY3ApKTsKKwkJfQorCisJCS8qCisJCSAq IE9idGFpbiB0aGUgZWxlbWVudCB0byBiZSBleHBhbmRlZC4KKwkJICovCisJCWtleS50eXBlID0g amJ2U3RyaW5nOworCQlrZXkudmFsLnN0cmluZy52YWwgPSBwYXJhbTsKKwkJa2V5LnZhbC5zdHJp bmcubGVuID0gc3RybGVuKHBhcmFtKTsKKworCQl2YWx1ZSA9IGZpbmRKc29uYlZhbHVlRnJvbUNv bnRhaW5lcihjb250YWluZXIsIEpCX0ZPQkpFQ1QsICZrZXkpOworCQlBc3NlcnQodmFsdWUgIT0g TlVMTCk7CisKKwkJLyoKKwkJICogRXhwYW5kIHRoZSBkYXRhIChwb3NzaWJseSBhbiBhcnJheSkg aW50byB0aGUgb3V0cHV0IFN0cmluZ0luZm8uCisJCSAqLworCQlpZiAoaXNfYXJyYXkpCisJCQll eHBhbmRfanNvbmJfYXJyYXkoYnVmLCBwYXJhbSwgdmFsdWUsIGFycmF5c2VwLCBzcGVjaWZpZXIs IHN0YXJ0X3B0cik7CisJCWVsc2UKKwkJCWV4cGFuZF9vbmVfanNvbmJfZWxlbWVudChidWYsIHBh cmFtLCB2YWx1ZSwgc3BlY2lmaWVyLCBzdGFydF9wdHIpOworCX0KK30KKworLyoKKyAqIEV4cGFu ZCBhIGpzb24gdmFsdWUgYXMgYSBxdW90ZWQgaWRlbnRpZmllci4gIFRoZSB2YWx1ZSBtdXN0IGJl IG9mIHR5cGUgc3RyaW5nLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfaWRlbnRp ZmllcihTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAgICpz dHI7CisKKwlBc3NlcnQoanNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpOworCisJc3RyID0gcG5z dHJkdXAoanNvbnZhbC0+dmFsLnN0cmluZy52YWwsIGpzb252YWwtPnZhbC5zdHJpbmcubGVuKTsK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihzdHIpKTsKKwlw ZnJlZShzdHIpOworfQorCisvKgorICogRXhwYW5kIGEganNvbiB2YWx1ZSBhcyBhIGRvdC1zZXBh cmF0ZWQtbmFtZS4gIFRoZSB2YWx1ZSBtdXN0IGJlIG9mIHR5cGUKKyAqIGJpbmFyeSBhbmQgbWF5 IGNvbnRhaW4gZWxlbWVudHMgInNjaGVtYW5hbWUiIChvcHRpb25hbCksICJvYmpuYW1lIgorICog KG1hbmRhdG9yeSksICJhdHRybmFtZSIgKG9wdGlvbmFsKS4gIERvdWJsZSBxdW90ZXMgYXJlIGFk ZGVkIHRvIGVhY2ggZWxlbWVudAorICogYXMgbmVjZXNzYXJ5LCBhbmQgZG90IHNlcGFyYXRvcnMg d2hlcmUgbmVlZGVkLgorICoKKyAqIE9uZSBkYXkgd2UgbWlnaHQgbmVlZCBhICJjYXRhbG9nIiBl bGVtZW50IGFzIHdlbGwsIGJ1dCBubyBjdXJyZW50IHVzZSBjYXNlCisgKiBuZWVkcyB0aGF0Lgor ICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfZG90dGVkbmFtZShTdHJpbmdJbmZvIGJ1 ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAgICpzdHI7CisJSnNvbmJDb250YWlu ZXIgKmRhdGEgPSBqc29udmFsLT52YWwuYmluYXJ5LmRhdGE7CisKKwlBc3NlcnQoanNvbnZhbC0+ dHlwZSA9PSBqYnZCaW5hcnkpOworCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWlu ZXIoZGF0YSwgInNjaGVtYW5hbWUiLCB0cnVlLCBOVUxMKTsKKwlpZiAoc3RyKQorCXsKKwkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIlcy4iLCBxdW90ZV9pZGVudGlmaWVyKHN0cikpOworCQlwZnJl ZShzdHIpOworCX0KKworCXN0ciA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEs ICJvYmpuYW1lIiwgZmFsc2UsIE5VTEwpOworCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMiLCBx dW90ZV9pZGVudGlmaWVyKHN0cikpOworCXBmcmVlKHN0cik7CisKKwlzdHIgPSBmaW5kX3N0cmlu Z19pbl9qc29uYmNvbnRhaW5lcihkYXRhLCAiYXR0cm5hbWUiLCB0cnVlLCBOVUxMKTsKKwlpZiAo c3RyKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIuJXMiLCBxdW90ZV9pZGVudGlmaWVy KHN0cikpOworCQlwZnJlZShzdHIpOworCX0KK30KKworLyoKKyAqIEV4cGFuZCBhIEpTT04gdmFs dWUgYXMgYSB0eXBlIG5hbWUuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF90eXBl bmFtZShTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwljaGFyCSAgICpz Y2hlbWEgPSBOVUxMOworCWNoYXIJICAgKnR5cGVuYW1lOworCWNoYXIJICAgKnR5cG1vZHN0cjsK Kwlqc29uX3RyaXZhbHVlIGlzX2FycmF5OworCWNoYXIJICAgKmFycmF5X2RlY29yOworCUpzb25i Q29udGFpbmVyICpkYXRhID0ganNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhOworCisJLyoKKwkgKiBX ZSBvbWl0IHNjaGVtYS1xdWFsaWZ5aW5nIHRoZSBvdXRwdXQgbmFtZSBpZiB0aGUgc2NoZW1hIGVs ZW1lbnQgaXMKKwkgKiBlaXRoZXIgdGhlIGVtcHR5IHN0cmluZyBvciBOVUxMOyB0aGUgZGlmZmVy ZW5jZSBiZXR3ZWVuIHRob3NlIHR3byBjYXNlcworCSAqIGlzIHRoYXQgaW4gdGhlIGxhdHRlciB3 ZSBxdW90ZSB0aGUgdHlwZSBuYW1lLCBpbiB0aGUgZm9ybWVyIHdlIGRvbid0LgorCSAqIFRoaXMg YWxsb3dzIGZvciB0eXBlcyB3aXRoIHNwZWNpYWwgdHlwbW9kIG5lZWRzLCBzdWNoIGFzIGludGVy dmFsIGFuZAorCSAqIHRpbWVzdGFtcCAoc2VlIGZvcm1hdF90eXBlX2RldGFpbGVkKSwgd2hpbGUg YXQgdGhlIHNhbWUgdGltZSBhbGxvd2luZworCSAqIGZvciB0aGUgc2NoZW1hIG5hbWUgdG8gYmUg b21pdHRlZCBmcm9tIHR5cGUgbmFtZXMgdGhhdCByZXF1aXJlIHF1b3RlcworCSAqIGJ1dCBhcmUg dG8gYmUgb2J0YWluZWQgZnJvbSBhIHVzZXIgc2NoZW1hLgorCSAqLworCisJc2NoZW1hID0gZmlu ZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoZGF0YSwgInNjaGVtYW5hbWUiLCB0cnVlLCBOVUxM KTsKKwl0eXBlbmFtZSA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBl bmFtZSIsIGZhbHNlLCBOVUxMKTsKKwl0eXBtb2RzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNv bnRhaW5lcihkYXRhLCAidHlwbW9kIiwgdHJ1ZSwgTlVMTCk7CisJaXNfYXJyYXkgPSBmaW5kX2Jv b2xfaW5fanNvbmJjb250YWluZXIoZGF0YSwgInR5cGFycmF5Iik7CisJc3dpdGNoIChpc19hcnJh eSkKKwl7CisJCWNhc2UgdHZfdHJ1ZToKKwkJCWFycmF5X2RlY29yID0gIltdIjsKKwkJCWJyZWFr OworCisJCWNhc2UgdHZfZmFsc2U6CisJCQlhcnJheV9kZWNvciA9ICIiOworCQkJYnJlYWs7CisK KwkJY2FzZSB0dl9hYnNlbnQ6CisJCWRlZmF1bHQ6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQll cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coIm1p c3NpbmcgdHlwYXJyYXkgZWxlbWVudCIpKTsKKwl9CisKKwlpZiAoc2NoZW1hID09IE5VTEwpCisJ CWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMiLCBxdW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSk7 CisJZWxzZSBpZiAoc2NoZW1hWzBdID09ICdcMCcpCisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAi JXMiLCB0eXBlbmFtZSk7CS8qIFNwZWNpYWwgdHlwbW9kIG5lZWRzICovCisJZWxzZQorCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiVzIiwgcXVvdGVfaWRlbnRpZmllcihzY2hlbWEpLAorCQkJ CQkJIHF1b3RlX2lkZW50aWZpZXIodHlwZW5hbWUpKTsKKworCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiJXMlcyIsIHR5cG1vZHN0ciA/IHR5cG1vZHN0ciA6ICIiLCBhcnJheV9kZWNvcik7CisJcGZy ZWUoc2NoZW1hKTsKKwlwZnJlZSh0eXBlbmFtZSk7CisJcGZyZWUodHlwbW9kc3RyKTsKK30KKwor LyoKKyAqIEV4cGFuZCBhIEpTT04gdmFsdWUgYXMgYW4gb3BlcmF0b3IgbmFtZS4gVGhlIHZhbHVl IG1heSBjb250YWluIGVsZW1lbnQKKyAqICJzY2hlbWFuYW1lIiAob3B0aW9uYWwpLgorICovCitz dGF0aWMgdm9pZAorZXhwYW5kX2pzb252YWxfb3BlcmF0b3IoU3RyaW5nSW5mbyBidWYsIEpzb25i VmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyOworCUpzb25iQ29udGFpbmVyICpkYXRh ID0ganNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhOworCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNv bmJjb250YWluZXIoZGF0YSwgInNjaGVtYW5hbWUiLCB0cnVlLCBOVUxMKTsKKwkvKiBTY2hlbWEg bWlnaHQgYmUgTlVMTCBvciBlbXB0eSAqLworCWlmIChzdHIgIT0gTlVMTCAmJiBzdHJbMF0gIT0g J1wwJykKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMuIiwgcXVvdGVfaWRlbnRpZmll cihzdHIpKTsKKwkJcGZyZWUoc3RyKTsKKwl9CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29u YmNvbnRhaW5lcihkYXRhLCAib2JqbmFtZSIsIGZhbHNlLCBOVUxMKTsKKwlpZiAoIXN0cikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCWVycm1zZygibWlzc2luZyBvcGVyYXRvciBuYW1lIikpOworCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIHN0cik7CisJcGZyZWUoc3RyKTsKK30KKworLyoKKyAqIEV4cGFu ZCBhIEpTT04gdmFsdWUgYXMgYSBzdHJpbmcuICBUaGUgdmFsdWUgbXVzdCBiZSBvZiB0eXBlIHN0 cmluZyBvciBvZgorICogdHlwZSBCaW5hcnkuICBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IG11c3Qg Y29udGFpbiBhICJmbXQiIGVsZW1lbnQgd2hpY2ggd2lsbAorICogYmUgcmVjdXJzaXZlbHkgZXhw YW5kZWQ7IGFsc28sIGlmIHRoZSBvYmplY3QgY29udGFpbnMgYW4gZWxlbWVudCAicHJlc2VudCIK KyAqIGFuZCBpdCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBleHBhbnNpb24gaXMgdGhlIGVtcHR5IHN0 cmluZy4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIG5vIGFjdHVhbCBleHBhbnNpb24gd2FzIG1h ZGUgZHVlIHRvIHRoZSAicHJlc2VudCIgZmxhZworICogYmVpbmcgc2V0IHRvICJmYWxzZSIuCisg KgorICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSB0byBjaGVjayBqc29udmFsIGlzIG9mIHR5 cGUgamJ2U3RyaW5nIG9yIGpidkJpbmFyeS4KKyAqLworc3RhdGljIGJvb2wKK2V4cGFuZF9qc29u dmFsX3N0cmluZyhTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkKK3sKKwlib29s IGV4cGFuZGVkID0gZmFsc2U7CisKKwlpZiAoanNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpCisJ eworCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGJ1ZiwganNvbnZhbC0+dmFsLnN0cmluZy52YWws CisJCQkJCQkJICAganNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOworCQlleHBhbmRlZCA9IHRydWU7 CisJfQorCWVsc2UgaWYgKGpzb252YWwtPnR5cGUgPT0gamJ2QmluYXJ5KQorCXsKKwkJanNvbl90 cml2YWx1ZSBwcmVzZW50OworCisJCXByZXNlbnQgPSBmaW5kX2Jvb2xfaW5fanNvbmJjb250YWlu ZXIoanNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhLAorCQkJCQkJCQkJCQkgICJwcmVzZW50Iik7CisK KwkJLyoKKwkJICogSWYgInByZXNlbnQiIGlzIHNldCB0byBmYWxzZSwgdGhpcyBlbGVtZW50IGV4 cGFuZHMgdG8gZW1wdHk7CisJCSAqIG90aGVyd2lzZSAoZWl0aGVyIHRydWUgb3IgYWJzZW50KSwg ZXhwYW5kICJmbXQiLgorCQkgKi8KKwkJaWYgKHByZXNlbnQgIT0gdHZfZmFsc2UpCisJCXsKKwkJ CWV4cGFuZF9mbXRfcmVjdXJzaXZlKGJ1ZiwganNvbnZhbC0+dmFsLmJpbmFyeS5kYXRhKTsKKwkJ CWV4cGFuZGVkID0gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBleHBhbmRlZDsKK30KKworLyoK KyAqIEV4cGFuZCBhIEpTT04gdmFsdWUgYXMgYSBzdHJpbmcgbGl0ZXJhbC4KKyAqLworc3RhdGlj IHZvaWQKK2V4cGFuZF9qc29udmFsX3N0cmxpdChTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAq anNvbnZhbCkKK3sKKwljaGFyCSAgICpzdHI7CisJU3RyaW5nSW5mb0RhdGEgZHFkZWxpbTsKKwlz dGF0aWMgY29uc3QgY2hhciBkcXN1ZmZpeGVzW10gPSAiX1hZWlpZWF8iOworCWludAkJCWRxbmV4 dGNoYXIgPSAwOworCisJc3RyID0gcG5zdHJkdXAoanNvbnZhbC0+dmFsLnN0cmluZy52YWwsIGpz b252YWwtPnZhbC5zdHJpbmcubGVuKTsKKworCS8qIEVhc3kgY2FzZTogaWYgdGhlcmUgYXJlIG5v ICcgYW5kIG5vIFwsIGp1c3QgdXNlIGEgc2luZ2xlIHF1b3RlICovCisJaWYgKHN0cnBicmsoc3Ry LCAiXCdcXCIpID09IE5VTEwpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiclcyciLCBz dHIpOworCQlwZnJlZShzdHIpOworCQlyZXR1cm47CisJfQorCisJLyogT3RoZXJ3aXNlIG5lZWQg dG8gZmluZCBhIHVzZWZ1bCBkb2xsYXItcXVvdGUgZGVsaW1pdGVyICovCisJaW5pdFN0cmluZ0lu Zm8oJmRxZGVsaW0pOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmRxZGVsaW0sICIkIik7CisJ d2hpbGUgKHN0cnN0cihzdHIsIGRxZGVsaW0uZGF0YSkgIT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZkcWRlbGltLCBkcXN1ZmZpeGVzW2RxbmV4dGNoYXIrK10pOworCQlkcW5l eHRjaGFyID0gZHFuZXh0Y2hhciAlIChzaXplb2YoZHFzdWZmaXhlcykgLSAxKTsKKwl9CisJLyog QWRkIHRyYWlsaW5nICQgKi8KKwlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmZHFkZWxpbSwgJyQnKTsK KworCS8qIEFuZCBmaW5hbGx5IHByb2R1Y2UgdGhlIHF1b3RlZCBsaXRlcmFsIGludG8gdGhlIG91 dHB1dCBTdHJpbmdJbmZvICovCisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyVzJXMiLCBkcWRl bGltLmRhdGEsIHN0ciwgZHFkZWxpbS5kYXRhKTsKKwlwZnJlZShkcWRlbGltLmRhdGEpOworCXBm cmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBKU09OIHZhbHVlIGFzIGFuIGludGVnZXIg cXVhbnRpdHkuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9udW1iZXIoU3RyaW5n SW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJY2hhcgkgICAqc3RyZGF0dW07CisK KwlBc3NlcnQoanNvbnZhbC0+dHlwZSA9PSBqYnZOdW1lcmljKTsKKworCXN0cmRhdHVtID0gRGF0 dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19vdXQsCisJCQkJCQkJCQkJ CQkgICBOdW1lcmljR2V0RGF0dW0oanNvbnZhbC0+dmFsLm51bWVyaWMpKSk7CisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsIHN0cmRhdHVtKTsKKwlwZnJlZShzdHJkYXR1bSk7Cit9CisKKy8q CisgKiBFeHBhbmQgYSBKU09OIHZhbHVlIGFzIGEgcm9sZSBuYW1lLiAgSWYgdGhlICdpc19wdWJs aWMnIGVsZW1lbnQgaXMgc2V0IHRvCisgKiB0cnVlLCBQVUJMSUMgaXMgZXhwYW5kZWQgKG5vIHF1 b3Rlcyk7IG90aGVyd2lzZSwgZXhwYW5kIHRoZSBnaXZlbiByb2xlIG5hbWUsCisgKiBxdW90aW5n IGFzIGFuIGlkZW50aWZpZXIuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9yb2xl KFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWpzb25fdHJpdmFsdWUg aXNfcHVibGljOworCisJaXNfcHVibGljID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGpz b252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJImlzX3B1YmxpYyIpOworCWlmIChp c19wdWJsaWMgPT0gdHZfdHJ1ZSkKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJQVUJM SUMiKTsKKwllbHNlCisJeworCQljaGFyCSAgICpyb2xlbmFtZTsKKworCQlyb2xlbmFtZSA9IGZp bmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSwKKwkJ CQkJCQkJCQkJCSAicm9sZW5hbWUiLCBmYWxzZSwgTlVMTCk7CisJCWlmIChyb2xlbmFtZSkKKwkJ eworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIocm9sZW5h bWUpKTsKKwkJCXBmcmVlKHJvbGVuYW1lKTsKKwkJfQorCX0KK30KKworLyoKKyAqIEV4cGFuZCBv bmUgSlNPTiBlbGVtZW50IGludG8gdGhlIG91dHB1dCBTdHJpbmdJbmZvIGFjY29yZGluZyB0byB0 aGUKKyAqIGNvbnZlcnNpb24gc3BlY2lmaWVyLiAgVGhlIGVsZW1lbnQgdHlwZSBpcyB2YWxpZGF0 ZWQsIGFuZCBhbiBlcnJvciBpcyByYWlzZWQKKyAqIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggd2hhdCB3 ZSBleHBlY3QgZm9yIHRoZSBjb252ZXJzaW9uIHNwZWNpZmllci4KKyAqCisgKiBSZXR1cm5zIHRy dWUsIGV4Y2VwdCBmb3IgdGhlIGZvcm1hdHRlZCBzdHJpbmcgY2FzZSBpZiBubyBhY3R1YWwgZXhw YW5zaW9uCisgKiB3YXMgbWFkZSAoZHVlIHRvIHRoZSAicHJlc2VudCIgZmxhZyBiZWluZyBzZXQg dG8gImZhbHNlIikuCisgKi8KK3N0YXRpYyBib29sCitleHBhbmRfb25lX2pzb25iX2VsZW1lbnQo U3RyaW5nSW5mbyBidWYsIGNoYXIgKnBhcmFtLCBKc29uYlZhbHVlICpqc29udmFsLAorCQkJCQkJ IGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLCBjb25zdCBjaGFyICpmbXQpCit7CisJYm9vbAkJc3Ry aW5nX2V4cGFuZGVkID0gdHJ1ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBzcWxlcnJjb250ZXh0 OworCisJLyogSWYgd2Ugd2VyZSBnaXZlbiBhIGZvcm1hdCBzdHJpbmcsIHNldHVwIGFuIGVyZXBv cnQoKSBjb250ZXh0IGNhbGxiYWNrICovCisJaWYgKGZtdCkKKwl7CisJCXNxbGVycmNvbnRleHQu Y2FsbGJhY2sgPSBmbXRzdHJfZXJyb3JfY2FsbGJhY2s7CisJCXNxbGVycmNvbnRleHQuYXJnID0g KHZvaWQgKikgZm10OworCQlzcWxlcnJjb250ZXh0LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9z dGFjazsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0OworCX0KKworCWlm ICghanNvbnZhbCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgbm90IGZvdW5k IiwgcGFyYW0pKTsKKworCXN3aXRjaCAoc3BlY2lmaWVyKQorCXsKKwkJY2FzZSBTcGVjSWRlbnRp ZmllcjoKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidlN0cmluZykKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBzdHJpbmcgZm9yICUlSSBlbGVtZW50IFwiJXNcIiwg Z290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pz b252YWxfaWRlbnRpZmllcihidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVj RG90dGVkTmFtZToKKwkJCWlmIChqc29udmFsLT50eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJCWVycm1zZygiZXhwZWN0ZWQgSlNPTiBzdHJ1Y3QgZm9yICUlRCBlbGVtZW50IFwi JXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhw YW5kX2pzb252YWxfZG90dGVkbmFtZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBTcGVjU3RyaW5nOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2U3RyaW5nICYmCisJCQkJ anNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4 cGVjdGVkIEpTT04gc3RyaW5nIG9yIHN0cnVjdCBmb3IgJSVzIGVsZW1lbnQgXCIlc1wiLCBnb3Qg JWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFsLT50eXBlKSk7CisJCQlzdHJpbmdfZXhwYW5k ZWQgPSBleHBhbmRfanNvbnZhbF9zdHJpbmcoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgU3BlY1N0cmluZ0xpdGVyYWw6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZTdHJp bmcpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIGZvciAl JUwgZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5 cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX3N0cmxpdChidWYsIGpzb252YWwpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBTcGVjVHlwZU5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5h cnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0IGZvciAl JVQgZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5 cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX3R5cGVuYW1lKGJ1ZiwganNvbnZhbCk7CisJCQlicmVh azsKKworCQljYXNlIFNwZWNPcGVyYXRvck5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBq YnZCaW5hcnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0 IGZvciAlJU8gZWxlbWVudCBcIiVzXCIsIGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252 YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9qc29udmFsX29wZXJhdG9yKGJ1ZiwganNvbnZhbCk7CisJ CQlicmVhazsKKworCQljYXNlIFNwZWNOdW1iZXI6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBq YnZOdW1lcmljKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIG51bWVy aWMgZm9yICUlbiBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNv bnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252YWxfbnVtYmVyKGJ1ZiwganNvbnZhbCk7CisJ CQlicmVhazsKKworCQljYXNlIFNwZWNSb2xlOgorCQkJaWYgKGpzb252YWwtPnR5cGUgIT0gamJ2 QmluYXJ5KQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIHN0cnVjdCBm b3IgJSVSIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBhcmFtLCBqc29udmFs LT50eXBlKSk7CisJCQlleHBhbmRfanNvbnZhbF9yb2xlKGJ1ZiwganNvbnZhbCk7CisJCQlicmVh azsKKwl9CisKKwlpZiAoZm10KQorCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4 dC5wcmV2aW91czsKKworCXJldHVybiBzdHJpbmdfZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBJdGVy YXRlIG9uIHRoZSBlbGVtZW50cyBvZiBhIEpTT04gYXJyYXksIGV4cGFuZGluZyBlYWNoIG9uZSBp bnRvIHRoZSBvdXRwdXQKKyAqIFN0cmluZ0luZm8gcGVyIHRoZSBnaXZlbiBjb252ZXJzaW9uIHNw ZWNpZmllciwgc2VwYXJhdGVkIGJ5IHRoZSBnaXZlbgorICogc2VwYXJhdG9yLgorICovCitzdGF0 aWMgdm9pZAorZXhwYW5kX2pzb25iX2FycmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwK KwkJCQkgICBKc29uYlZhbHVlICpqc29uYXJyLCBjaGFyICphcnJheXNlcCwgY29udlNwZWNpZmll ciBzcGVjaWZpZXIsCisJCQkJICAgY29uc3QgY2hhciAqZm10KQoreworCUVycm9yQ29udGV4dENh bGxiYWNrIHNxbGVycmNvbnRleHQ7CisJSnNvbmJDb250YWluZXIgKmNvbnRhaW5lcjsKKwlKc29u Ykl0ZXJhdG9yICppdDsKKwlKc29uYlZhbHVlCXY7CisJaW50CQkJdHlwZTsKKwlib29sCQlmaXJz dCA9IHRydWU7CisJU3RyaW5nSW5mb0RhdGEgYXJyYXllbGVtOworCisJLyogSWYgd2Ugd2VyZSBn aXZlbiBhIGZvcm1hdCBzdHJpbmcsIHNldHVwIGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxiYWNr ICovCisJaWYgKGZtdCkKKwl7CisJCXNxbGVycmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJfZXJy b3JfY2FsbGJhY2s7CisJCXNxbGVycmNvbnRleHQuYXJnID0gKHZvaWQgKikgZm10OworCQlzcWxl cnJjb250ZXh0LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29udGV4 dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0OworCX0KKworCWlmICghanNvbmFycikKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgbm90IGZvdW5kIiwgcGFyYW0pKTsKKworCWlmIChq c29uYXJyLT50eXBlICE9IGpidkJpbmFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBc IiVzXCIgaXMgbm90IGEgSlNPTiBhcnJheSIsIHBhcmFtKSk7CisKKwljb250YWluZXIgPSBqc29u YXJyLT52YWwuYmluYXJ5LmRhdGE7CisJaWYgKCFKc29uQ29udGFpbmVySXNBcnJheShjb250YWlu ZXIpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFN RVRFUl9WQUxVRSksCisJCQkJZXJybXNnKCJlbGVtZW50IFwiJXNcIiBpcyBub3QgYSBKU09OIGFy cmF5IiwgcGFyYW0pKTsKKworCWluaXRTdHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJaXQgPSBK c29uYkl0ZXJhdG9ySW5pdChjb250YWluZXIpOworCXdoaWxlICgodHlwZSA9IEpzb25iSXRlcmF0 b3JOZXh0KCZpdCwgJnYsIHRydWUpKSAhPSBXSkJfRE9ORSkKKwl7CisJCWlmICh0eXBlID09IFdK Ql9FTEVNKQorCQl7CisJCQlyZXNldFN0cmluZ0luZm8oJmFycmF5ZWxlbSk7CisKKwkJCWlmIChl eHBhbmRfb25lX2pzb25iX2VsZW1lbnQoJmFycmF5ZWxlbSwgcGFyYW0sICZ2LCBzcGVjaWZpZXIs IE5VTEwpKQorCQkJeworCQkJCWlmICghZmlyc3QpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCBhcnJheXNlcCk7CisKKwkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGJ1ZiwgYXJy YXllbGVtLmRhdGEsIGFycmF5ZWxlbS5sZW4pOworCQkJCWZpcnN0ID0gZmFsc2U7CisJCQl9CisJ CX0KKwl9CisKKwlpZiAoZm10KQorCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4 dC5wcmV2aW91czsKK30KKworLyoKKyAqIFdvcmtob3JzZSBmb3IgZGRsX2RlcGFyc2VfZXhwYW5k X2NvbW1hbmQuCisgKi8KK2NoYXIgKgorZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAq anNvbl9zdHIpCit7CisJRGF0dW0JCWQ7CisJSnNvbmIJICAgKmpzb25iOworCVN0cmluZ0luZm8J YnVmID0gKFN0cmluZ0luZm8pIHBhbGxvYzAoc2l6ZW9mKFN0cmluZ0luZm9EYXRhKSk7CisKKwlp bml0U3RyaW5nSW5mbyhidWYpOworCisJZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4s IFBvaW50ZXJHZXREYXR1bShqc29uX3N0cikpOworCWpzb25iID0gKEpzb25iICopIERhdHVtR2V0 UG9pbnRlcihkKTsKKworCWV4cGFuZF9mbXRfcmVjdXJzaXZlKGJ1ZiwgJmpzb25iLT5yb290KTsK KworCXJldHVybiBidWYtPmRhdGE7Cit9CisKKy8qLS0tLS0tCisgKiBSZXR1cm5zIGEgZm9ybWF0 dGVkIHN0cmluZyBmcm9tIGEgSlNPTiBvYmplY3QuCisgKgorICogVGhlIHN0YXJ0aW5nIHBvaW50 IGlzIHRoZSBlbGVtZW50IG5hbWVkICJmbXQiICh3aGljaCBtdXN0IGJlIGEgc3RyaW5nKS4KKyAq IFRoaXMgZm9ybWF0IHN0cmluZyBtYXkgY29udGFpbiB6ZXJvIG9yIG1vcmUgJS1lc2NhcGVzLCB3 aGljaCBjb25zaXN0IG9mIGFuCisgKiBlbGVtZW50IG5hbWUgZW5jbG9zZWQgaW4geyB9LCBwb3Nz aWJseSBmb2xsb3dlZCBieSBhIGNvbnZlcnNpb24gbW9kaWZpZXIsCisgKiBmb2xsb3dlZCBieSBh IGNvbnZlcnNpb24gc3BlY2lmaWVyLiAgUG9zc2libGUgY29udmVyc2lvbiBzcGVjaWZpZXJzIGFy ZToKKyAqCisgKiAlCQlleHBhbmQgdG8gYSBsaXRlcmFsICUKKyAqIEkJCWV4cGFuZCBhcyBhIHNp bmdsZSwgbm9uLXF1YWxpZmllZCBpZGVudGlmaWVyCisgKiBECQlleHBhbmQgYXMgYSBwb3NzaWJs eS1xdWFsaWZpZWQgaWRlbnRpZmllcgorICogVAkJZXhwYW5kIGFzIGEgdHlwZSBuYW1lCisgKiBP CQlleHBhbmQgYXMgYW4gb3BlcmF0b3IgbmFtZQorICogTAkJZXhwYW5kIGFzIGEgc3RyaW5nIGxp dGVyYWwgKHF1b3RlIHVzaW5nIHNpbmdsZSBxdW90ZXMpCisgKiBzCQlleHBhbmQgYXMgYSBzaW1w bGUgc3RyaW5nIChubyBxdW90aW5nKQorICogbgkJZXhwYW5kIGFzIGEgc2ltcGxlIG51bWJlciAo bm8gcXVvdGluZykKKyAqIFIJCWV4cGFuZCBhcyBhIHJvbGUgbmFtZSAocG9zc2libHkgcXVvdGVk IG5hbWUsIG9yIFBVQkxJQykKKyAqCisgKiBUaGUgZWxlbWVudCBuYW1lIG1heSBoYXZlIGFuIG9w dGlvbmFsIHNlcGFyYXRvciBzcGVjaWZpY2F0aW9uIHByZWNlZGVkCisgKiBieSBhIGNvbG9uLiAg SXRzIHByZXNlbmNlIGluZGljYXRlcyB0aGF0IHRoZSBlbGVtZW50IGlzIGV4cGVjdGVkIHRvIGJl CisgKiBhbiBhcnJheTsgdGhlIHNwZWNpZmllZCBzZXBhcmF0b3IgaXMgdXNlZCB0byBqb2luIHRo ZSBhcnJheSBlbGVtZW50cy4KKyAqLS0tLS0tCisgKi8KK0RhdHVtCitkZGxfZGVwYXJzZV9leHBh bmRfY29tbWFuZChQR19GVU5DVElPTl9BUkdTKQoreworCXRleHQJICAgKmpzb24gPSBQR19HRVRB UkdfVEVYVF9QKDApOworCWNoYXIJICAgKmpzb25fc3RyOworCisJanNvbl9zdHIgPSB0ZXh0X3Rv X2NzdHJpbmcoanNvbik7CisKKwlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChkZXBh cnNlX2RkbF9qc29uX3RvX3N0cmluZyhqc29uX3N0cikpKTsKK30KKworLyoKKyAqIEVycm9yIGNv bnRleHQgY2FsbGJhY2sgZm9yIEpTT04gZm9ybWF0IHN0cmluZyBleHBhbnNpb24uCisgKgorICog WFhYOiBpbmRpY2F0ZSB3aGljaCBlbGVtZW50IHdlJ3JlIGV4cGFuZGluZywgaWYgYXBwbGljYWJs ZS4KKyAqLworc3RhdGljIHZvaWQKK2ZtdHN0cl9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCit7 CisJZXJyY29udGV4dCgid2hpbGUgZXhwYW5kaW5nIGZvcm1hdCBzdHJpbmcgXCIlc1wiIiwgKGNo YXIgKikgYXJnKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCBkNGIw MGQxYTgyLi5jZmMzNmIwMmQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBA IC0zNiw4ICszNiwxMCBAQAogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCisjaW5jbHVkZSAicGFyc2Vy L3BhcnNlci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInRjb3AvZGVwYXJzZV91 dGlsaXR5LmgiCisjaW5jbHVkZSAidGNvcC9kZGxfZGVwYXJzZS5oIgogI2luY2x1ZGUgInRjb3Av dXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCkBAIC00OCw0NSArNTAsNyBAQAogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1 ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKLXR5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5 U3RhdGUKLXsKLQkvKiBtZW1vcnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMgKi8K LQlNZW1vcnlDb250ZXh0IGN4dDsKLQotCS8qIHNxbF9kcm9wICovCi0Jc2xpc3RfaGVhZAlTUUxE cm9wTGlzdDsKLQlib29sCQlpbl9zcWxfZHJvcDsKLQotCS8qIHRhYmxlX3Jld3JpdGUgKi8KLQlP aWQJCQl0YWJsZV9yZXdyaXRlX29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJsZV9y ZXdyaXRlCi0JCQkJCQkJCQkgKiBldmVudCAqLwotCWludAkJCXRhYmxlX3Jld3JpdGVfcmVhc29u OwkvKiBBVF9SRVdSSVRFIHJlYXNvbiAqLwotCi0JLyogU3VwcG9ydCBmb3IgY29tbWFuZCBjb2xs ZWN0aW9uICovCi0JYm9vbAkJY29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7Ci0JQ29sbGVjdGVk Q29tbWFuZCAqY3VycmVudENvbW1hbmQ7Ci0JTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxpc3Qg b2YgQ29sbGVjdGVkQ29tbWFuZDsgc2VlCi0JCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5oICov Ci0Jc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOwotfSBFdmVudFRyaWdn ZXJRdWVyeVN0YXRlOwotCi1zdGF0aWMgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZSAqY3VycmVudEV2 ZW50VHJpZ2dlclN0YXRlID0gTlVMTDsKLQotLyogU3VwcG9ydCBmb3IgZHJvcHBlZCBvYmplY3Rz ICovCi10eXBlZGVmIHN0cnVjdCBTUUxEcm9wT2JqZWN0Ci17Ci0JT2JqZWN0QWRkcmVzcyBhZGRy ZXNzOwotCWNvbnN0IGNoYXIgKnNjaGVtYW5hbWU7Ci0JY29uc3QgY2hhciAqb2JqbmFtZTsKLQlj b25zdCBjaGFyICpvYmppZGVudGl0eTsKLQljb25zdCBjaGFyICpvYmplY3R0eXBlOwotCUxpc3QJ ICAgKmFkZHJuYW1lczsKLQlMaXN0CSAgICphZGRyYXJnczsKLQlib29sCQlvcmlnaW5hbDsKLQli b29sCQlub3JtYWw7Ci0JYm9vbAkJaXN0ZW1wOwotCXNsaXN0X25vZGUJbmV4dDsKLX0gU1FMRHJv cE9iamVjdDsKK0V2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUgKmN1cnJlbnRFdmVudFRyaWdnZXJTdGF0 ZSA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIEFsdGVyRXZlbnRUcmlnZ2VyT3duZXJfaW50ZXJuYWwo UmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQlIZWFwVHVwbGUgdHVwLApAQCAtMTMwLDcgKzk0LDgg QEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQpCiAJaWYgKHN0 cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9zdGFydCIpICE9IDAgJiYKIAkJc3Ry Y21wKHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21tYW5kX2VuZCIpICE9IDAgJiYKIAkJc3RyY21w KHN0bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgIT0gMCAmJgotCQlzdHJjbXAoc3RtdC0+ZXZl bnRuYW1lLCAidGFibGVfcmV3cml0ZSIpICE9IDApCisJCXN0cmNtcChzdG10LT5ldmVudG5hbWUs ICJ0YWJsZV9yZXdyaXRlIikgIT0gMCAmJgorCQlzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFi bGVfaW5pdF93cml0ZSIpICE9IDApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBldmVudCBuYW1l IFwiJXNcIiIsCkBAIC0xNTYsNyArMTIxLDggQEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2 ZW50VHJpZ1N0bXQgKnN0bXQpCiAJLyogVmFsaWRhdGUgdGFnIGxpc3QsIGlmIGFueS4gKi8KIAlp ZiAoKHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9zdGFydCIpID09IDAgfHwK IAkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9lbmQiKSA9PSAwIHx8Ci0J CSBzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAic3FsX2Ryb3AiKSA9PSAwKQorCQkgc3RyY21wKHN0 bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgPT0gMCB8fAorCQkgc3RyY21wKHN0bXQtPmV2ZW50 bmFtZSwgInRhYmxlX2luaXRfd3JpdGUiKSA9PSAwKQogCQkmJiB0YWdzICE9IE5VTEwpCiAJCXZh bGlkYXRlX2RkbF90YWdzKCJ0YWciLCB0YWdzKTsKIAllbHNlIGlmIChzdHJjbXAoc3RtdC0+ZXZl bnRuYW1lLCAidGFibGVfcmV3cml0ZSIpID09IDAKQEAgLTU2MCw2ICs1MjYsNyBAQCBFdmVudFRy aWdnZXJDb21tb25TZXR1cChOb2RlICpwYXJzZXRyZWUsCiAJTGlzdAkgICAqY2FjaGVsaXN0Owog CUxpc3RDZWxsICAgKmxjOwogCUxpc3QJICAgKnJ1bmxpc3QgPSBOSUw7CisJaW50CQkJcHViX2Rl cGFyc2VfZnVuY19jbnQgPSAwOwogCiAJLyoKIAkgKiBXZSB3YW50IHRoZSBsaXN0IG9mIGNvbW1h bmQgdGFncyBmb3Igd2hpY2ggdGhpcyBwcm9jZWR1cmUgaXMgYWN0dWFsbHkKQEAgLTU4Miw3ICs1 NDksOCBAQCBFdmVudFRyaWdnZXJDb21tb25TZXR1cChOb2RlICpwYXJzZXRyZWUsCiAJCWRiZ3Rh ZyA9IENyZWF0ZUNvbW1hbmRUYWcocGFyc2V0cmVlKTsKIAkJaWYgKGV2ZW50ID09IEVWVF9ERExD b21tYW5kU3RhcnQgfHwKIAkJCWV2ZW50ID09IEVWVF9ERExDb21tYW5kRW5kIHx8Ci0JCQlldmVu dCA9PSBFVlRfU1FMRHJvcCkKKwkJCWV2ZW50ID09IEVWVF9TUUxEcm9wIHx8CisJCQlldmVudCA9 PSBFVlRfVGFibGVJbml0V3JpdGUpCiAJCXsKIAkJCWlmICghY29tbWFuZF90YWdfZXZlbnRfdHJp Z2dlcl9vayhkYmd0YWcpKQogCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGNvbW1hbmQgdGFn IFwiJXNcIiIsIEdldENvbW1hbmRUYWdOYW1lKGRiZ3RhZykpOwpAQCAtNjA5LDYgKzU3NywxMiBA QCBFdmVudFRyaWdnZXJDb21tb25TZXR1cChOb2RlICpwYXJzZXRyZWUsCiAJICogb25jZSB3ZSBk byBhbnl0aGluZyBhdCBhbGwgdGhhdCB0b3VjaGVzIHRoZSBjYXRhbG9ncywgYW4gaW52YWxpZGF0 aW9uCiAJICogbWlnaHQgbGVhdmUgY2FjaGVsaXN0IHBvaW50aW5nIGF0IGdhcmJhZ2UsIHNvIHdl IG11c3QgZG8gdGhpcyBiZWZvcmUgd2UKIAkgKiBjYW4gZG8gbXVjaCBlbHNlLgorCSAqCisJICog U3BlY2lhbCBoYW5kbGluZyBmb3IgZXZlbnQgdHJpZ2dlcnMgY3JlYXRlZCBhcyBwYXJ0IG9mIHB1 YmxpY2F0aW9ucy4KKwkgKiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcHVibGljYXRpb25zIHdoaWNo IHB1Ymxpc2ggZGRscywgb25seSBvbmUgc2V0IG9mIHRoZQorCSAqIGV2ZW50IHRyaWdnZXIgZnVu Y3Rpb25zIG5lZWQgdG8gYmUgaW52b2tlZC4gVGhlIGRkbCBkZXBhcnNlIGV2ZW50IHRyaWdnZXJz CisJICogd3JpdGUgdG8gV0FMLCBzbyBubyBuZWVkIHRvIGR1cGxpY2F0ZSBpdCBhcyBhbGwgd2Fs c2VuZGVycyB3aWxsIHJlYWQgdGhlIHNhbWUKKwkgKiBXQUwuCiAJICovCiAJZm9yZWFjaChsYywg Y2FjaGVsaXN0KQogCXsKQEAgLTYxNiw4ICs1OTAsMjUgQEAgRXZlbnRUcmlnZ2VyQ29tbW9uU2V0 dXAoTm9kZSAqcGFyc2V0cmVlLAogCiAJCWlmIChmaWx0ZXJfZXZlbnRfdHJpZ2dlcih0YWcsIGl0 ZW0pKQogCQl7Ci0JCQkvKiBXZSBtdXN0IHBsYW4gdG8gZmlyZSB0aGlzIHRyaWdnZXIuICovCi0J CQlydW5saXN0ID0gbGFwcGVuZF9vaWQocnVubGlzdCwgaXRlbS0+Zm5vaWQpOworCQkJc3RhdGlj IGNvbnN0IGNoYXIgKnRyaWdnZXJfZnVuY19wcmVmaXggPSAicHVibGljYXRpb25fZGVwYXJzZV8l cyI7CisJCQljaGFyCQl0cmlnZ2VyX2Z1bmNfbmFtZVtOQU1FREFUQUxFTl07CisJCQlPaWQJCQlw dWJfZnVuY29pZDsKKwkJCUxpc3QgCQkqcHViZnVuY25hbWU7CisKKwkJCS8qIEdldCBmdW5jdGlv biBvaWQgb2YgdGhlIHB1YmxpY2F0aW9uJ3MgZGRsIGRlcGFyc2UgZXZlbnQgdHJpZ2dlciAqLwor CQkJc25wcmludGYodHJpZ2dlcl9mdW5jX25hbWUsIHNpemVvZih0cmlnZ2VyX2Z1bmNfbmFtZSks IHRyaWdnZXJfZnVuY19wcmVmaXgsCisJCQkJCSBldmVudHN0cik7CisJCQlwdWJmdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKHRyaWdnZXJfZnVuY19uYW1lKTsKKwkJCXB1Yl9mdW5jb2lkID0gTG9v a3VwRnVuY05hbWUocHViZnVuY25hbWUsIDAsIE5VTEwsIHRydWUpOworCisJCQlpZiAoaXRlbS0+ Zm5vaWQgIT0gcHViX2Z1bmNvaWQpCisJCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3Qs IGl0ZW0tPmZub2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBPbmx5IHRoZSBmaXJzdCBkZGwg ZGVwYXJzZSBldmVudCB0cmlnZ2VyIG5lZWRzIHRvIGJlIGludm9rZWQgKi8KKwkJCQlpZiAocHVi X2RlcGFyc2VfZnVuY19jbnQrKyA9PSAwKQorCQkJCQlydW5saXN0ID0gbGFwcGVuZF9vaWQocnVu bGlzdCwgaXRlbS0+Zm5vaWQpOworCQkJfQogCQl9CiAJfQogCkBAIC04NjUsNiArODU2LDE0MCBA QCBFdmVudFRyaWdnZXJUYWJsZVJld3JpdGUoTm9kZSAqcGFyc2V0cmVlLCBPaWQgdGFibGVPaWQs IGludCByZWFzb24pCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIH0KIAorLyoKKyAqIEV2 ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlU3RhcnQKKyAqICAgICBQcmVwYXJlIHRvIHJlY2VpdmUg ZGF0YSBvbiBhbiBDUkVBVEUgVEFCTEUgQVMvU0VMRVQgSU5UTyBjb21tYW5kIGFib3V0CisgKiAg ICAgdG8gYmUgZXhlY3V0ZWQuCisgKi8KK3ZvaWQKK0V2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRl U3RhcnQoTm9kZSAqcGFyc2V0cmVlKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUNvbGxl Y3RlZENvbW1hbmQgKmNvbW1hbmQ7CisJQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQgPSAoQ3JlYXRl VGFibGVBc1N0bXQgKilwYXJzZXRyZWU7CisKKwkvKiBpZ25vcmUgaWYgZXZlbnQgdHJpZ2dlciBj b250ZXh0IG5vdCBzZXQsIG9yIGNvbGxlY3Rpb24gZGlzYWJsZWQgKi8KKwlpZiAoIWN1cnJlbnRF dmVudFRyaWdnZXJTdGF0ZSB8fAorCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmNvbW1hbmRD b2xsZWN0aW9uSW5oaWJpdGVkKQorCQlyZXR1cm47CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOworCisJY29tbWFuZCA9IHBh bGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOworCisJY29tbWFuZC0+dHlwZSA9IChzdG10 LT5vYmp0eXBlID09IE9CSkVDVF9UQUJMRSkgPyBTQ1RfQ3JlYXRlVGFibGVBcyA6IFNDVF9TaW1w bGU7CisJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1h bmQtPmQuY3Rhcy5hZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJY29tbWFuZC0+ZC5j dGFzLnJlYWxfY3JlYXRlID0gTlVMTDsKKwljb21tYW5kLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0 KHBhcnNldHJlZSk7CisKKwljb21tYW5kLT5wYXJlbnQgPSBjdXJyZW50RXZlbnRUcmlnZ2VyU3Rh dGUtPmN1cnJlbnRDb21tYW5kOworCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENv bW1hbmQgPSBjb21tYW5kOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisK Ky8qCisgKiBFdmVudFRyaWdnZXJUYWJsZUluaXRXcml0ZUVuZAorICoJCUZpbmlzaCB1cCBzYXZp bmcgYW4gQ1JFQVRFIFRBQkxFIEFTL1NFTEVDVCBJTlRPIGNvbW1hbmQuCisgKgorICogRklYTUUg dGhpcyBBUEkgaXNuJ3QgY29uc2lkZXJpbmcgdGhlIHBvc3NpYmlsaXR5IHRoYXQgYW4geGFjdC9z dWJ4YWN0IGlzCisgKiBhYm9ydGVkIHBhcnR3YXkgdGhyb3VnaC4gIFByb2JhYmx5IGl0J3MgYmVz dCB0byBhZGQgYW4KKyAqIEF0RU9TdWJYYWN0X0V2ZW50VHJpZ2dlcnMoKSB0byBmaXggdGhpcy4K KyAqLwordm9pZAorRXZlbnRUcmlnZ2VyVGFibGVJbml0V3JpdGVFbmQoT2JqZWN0QWRkcmVzcyBh ZGRyZXNzKQoreworCUNvbGxlY3RlZENvbW1hbmQgKnBhcmVudDsKKwlDcmVhdGVUYWJsZUFzU3Rt dCAqc3RtdDsKKworCS8qIGlnbm9yZSBpZiBldmVudCB0cmlnZ2VyIGNvbnRleHQgbm90IHNldCwg b3IgY29sbGVjdGlvbiBkaXNhYmxlZCAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRl IHx8CisJCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0 ZWQpCisJCXJldHVybjsKKworCXN0bXQgPSAgKENyZWF0ZVRhYmxlQXNTdG10ICopY3VycmVudEV2 ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+cGFyc2V0cmVlOworCisJaWYgKHN0bXQt Pm9ianR5cGUgPT0gT0JKRUNUX1RBQkxFKQorCXsKKwkJcGFyZW50ID0gY3VycmVudEV2ZW50VHJp Z2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+cGFyZW50OworCisJCXBmcmVlKGN1cnJlbnRFdmVu dFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQpOworCisJCWN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZS0+Y3VycmVudENvbW1hbmQgPSBwYXJlbnQ7CisJfQorCWVsc2UKKwl7CisJCU1lbW9yeUNv bnRleHQgb2xkY3h0OworCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50 RXZlbnRUcmlnZ2VyU3RhdGUtPmN4dCk7CisKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5j dXJyZW50Q29tbWFuZC0+ZC5zaW1wbGUuYWRkcmVzcyA9IGFkZHJlc3M7CisJCWN1cnJlbnRFdmVu dFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QgPQorCQkJbGFwcGVuZChjdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmNvbW1hbmRMaXN0LAorCQkJCQljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1 cnJlbnRDb21tYW5kKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9Cit9 CisKKy8qCisgKiBGaXJlIHRhYmxlX2luaXRfcmV3cml0ZSB0cmlnZ2Vycy4KKyAqLwordm9pZAor RXZlbnRUcmlnZ2VyVGFibGVJbml0V3JpdGUoTm9kZSAqcmVhbF9jcmVhdGUsIE9iamVjdEFkZHJl c3MgYWRkcmVzcykKK3sKKwlMaXN0CSAgICpydW5saXN0OworCUV2ZW50VHJpZ2dlckRhdGEgdHJp Z2RhdGE7CisJQ29sbGVjdGVkQ29tbWFuZCAqY29tbWFuZDsKKworCS8qCisJICogU2VlIEV2ZW50 VHJpZ2dlckRETENvbW1hbmRTdGFydCBmb3IgYSBkaXNjdXNzaW9uIGFib3V0IHdoeSBldmVudAor CSAqIHRyaWdnZXJzIGFyZSBkaXNhYmxlZCBpbiBzaW5nbGUgdXNlciBtb2RlLgorCSAqLworCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCisJCXJldHVybjsKKworCS8qCisJICogQWxzbyBkbyBub3Ro aW5nIGlmIG91ciBzdGF0ZSBpc24ndCBzZXQgdXAsIHdoaWNoIGl0IHdvbid0IGJlIGlmIHRoZXJl CisJICogd2VyZW4ndCBhbnkgcmVsZXZhbnQgZXZlbnQgdHJpZ2dlcnMgYXQgdGhlIHN0YXJ0IG9m IHRoZSBjdXJyZW50IERETAorCSAqIGNvbW1hbmQuICBUaGlzIHRlc3QgbWlnaHQgdGhlcmVmb3Jl IHNlZW0gb3B0aW9uYWwsIGJ1dCBpdCdzCisJICogKm5lY2Vzc2FyeSosIGJlY2F1c2UgRXZlbnRU cmlnZ2VyQ29tbW9uU2V0dXAgbWlnaHQgZmluZCB0cmlnZ2VycyB0aGF0CisJICogZGlkbid0IGV4 aXN0IGF0IHRoZSB0aW1lIHRoZSBjb21tYW5kIHN0YXJ0ZWQuCisJICovCisJaWYgKCFjdXJyZW50 RXZlbnRUcmlnZ2VyU3RhdGUpCisJCXJldHVybjsKKworCS8qIERvIG5vdGhpbmcgaWYgbm8gY29t bWFuZCB3YXMgY29sbGVjdGVkLiAqLworCWlmICghY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5j dXJyZW50Q29tbWFuZCkKKwkJcmV0dXJuOworCisJY29tbWFuZCA9IGN1cnJlbnRFdmVudFRyaWdn ZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQ7CisKKwlydW5saXN0ID0gRXZlbnRUcmlnZ2VyQ29tbW9u U2V0dXAoY29tbWFuZC0+cGFyc2V0cmVlLAorCQkJCQkJCQkJICBFVlRfVGFibGVJbml0V3JpdGUs CisJCQkJCQkJCQkgICJ0YWJsZV9pbml0X3dyaXRlIiwKKwkJCQkJCQkJCSAgJnRyaWdkYXRhKTsK KwlpZiAocnVubGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qIFNldCB0aGUgcmVhbCBDcmVh dGVUYWJsZSBzdGF0bWVudCBhbmQgb2JqZWN0IGFkZHJlc3MgKi8KKwljb21tYW5kLT5kLmN0YXMu cmVhbF9jcmVhdGUgPSByZWFsX2NyZWF0ZTsKKwljb21tYW5kLT5kLmN0YXMuYWRkcmVzcyA9IGFk ZHJlc3M7CisKKwkvKiBSdW4gdGhlIHRyaWdnZXJzLiAqLworCUV2ZW50VHJpZ2dlckludm9rZShy dW5saXN0LCAmdHJpZ2RhdGEpOworCisJLyogQ2xlYW51cC4gKi8KKwlsaXN0X2ZyZWUocnVubGlz dCk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSBhbnl0aGluZyB0aGUgZXZlbnQgdHJpZ2dlcnMgZGlk IHdpbGwgYmUgdmlzaWJsZSB0byB0aGUgbWFpbgorCSAqIGNvbW1hbmQuCisJICovCisJQ29tbWFu ZENvdW50ZXJJbmNyZW1lbnQoKTsKK30KKwogLyoKICAqIEludm9rZSBlYWNoIGV2ZW50IHRyaWdn ZXIgaW4gYSBsaXN0IG9mIGV2ZW50IHRyaWdnZXJzLgogICovCkBAIC0xMTQ2LDcgKzEyNzEsOCBA QCB0cmFja0Ryb3BwZWRPYmplY3RzTmVlZGVkKHZvaWQpCiAJICovCiAJcmV0dXJuIChFdmVudENh Y2hlTG9va3VwKEVWVF9TUUxEcm9wKSAhPSBOSUwpIHx8CiAJCShFdmVudENhY2hlTG9va3VwKEVW VF9UYWJsZVJld3JpdGUpICE9IE5JTCkgfHwKLQkJKEV2ZW50Q2FjaGVMb29rdXAoRVZUX0RETENv bW1hbmRFbmQpICE9IE5JTCk7CisJCShFdmVudENhY2hlTG9va3VwKEVWVF9ERExDb21tYW5kRW5k KSAhPSBOSUwpIHx8CisJCShFdmVudENhY2hlTG9va3VwKEVWVF9UYWJsZUluaXRXcml0ZSkgIT0g TklMKTsKIH0KIAogLyoKQEAgLTE1MzcsNiArMTY2Myw3IEBAIEV2ZW50VHJpZ2dlckFsdGVyVGFi bGVTdGFydChOb2RlICpwYXJzZXRyZWUpCiAKIAljb21tYW5kLT5kLmFsdGVyVGFibGUuY2xhc3NJ ZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKIAljb21tYW5kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQg PSBJbnZhbGlkT2lkOworCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlID0gZmFsc2U7CiAJ Y29tbWFuZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMgPSBOSUw7CiAJY29tbWFuZC0+cGFyc2V0cmVl ID0gY29weU9iamVjdChwYXJzZXRyZWUpOwogCkBAIC0xNTcwLDcgKzE2OTcsNyBAQCBFdmVudFRy aWdnZXJBbHRlclRhYmxlUmVsaWQoT2lkIG9iamVjdElkKQogICogaW50ZXJuYWxseSwgc28gdGhh dCdzIGFsbCB0aGF0IHRoaXMgY29kZSBuZWVkcyB0byBoYW5kbGUgYXQgdGhlIG1vbWVudC4KICAq Lwogdm9pZAotRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQoTm9kZSAqc3ViY21k LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCitFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1 YmNtZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3MgYWRkcmVzcywgYm9vbCByZXdyaXRlKQog ewogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCUNvbGxlY3RlZEFUU3ViY21kICpuZXdzdWI7CkBA IC0xNTkwLDEyICsxNzE3LDE0MCBAQCBFdmVudFRyaWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNt ZChOb2RlICpzdWJjbWQsIE9iamVjdEFkZHJlc3MgYWRkcmVzcykKIAluZXdzdWItPmFkZHJlc3Mg PSBhZGRyZXNzOwogCW5ld3N1Yi0+cGFyc2V0cmVlID0gY29weU9iamVjdChzdWJjbWQpOwogCisJ Y3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLnJl d3JpdGUgfD0gcmV3cml0ZTsKKwljdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21t YW5kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9CisJCWxhcHBlbmQoY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMsIG5ld3N1Yik7CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIEV2ZW50VHJpZ2dl ckFsdGVyVHlwZVN0YXJ0CisgKgkJU2F2ZSBkYXRhIGFib3V0IGEgc2luZ2xlIHBhcnQgb2YgYW4g QUxURVIgVFlQRS4KKyAqCisgKiBBTFRFUiBUQUJMRSBjYW4gaGF2ZSBtdWx0aXBsZSBzdWJjb21t YW5kcyB3aGljaCBtaWdodCBpbmNsdWRlIERST1AgQ09MVU1OCisgKiBjb21tYW5kIGFuZCBBTFRF UiBUWVBFIHJlZmVycmluZyB0aGUgZHJvcCBjb2x1bW4gaW4gVVNJTkcgZXhwcmVzc2lvbi4KKyAq IEFzIHRoZSBkcm9wcGVkIGNvbHVtbiBjYW5ub3QgYmUgYWNjZXNzZWQgYWZ0ZXIgdGhlIGV4ZWN1 dGlvbiBvZiBEUk9QIENPTFVNTiwKKyAqIGEgc3BlY2lhbCB0cmlnZ2VyIGlzIHJlcXVpcmVkIHRv IGhhbmRsZSB0aGlzIGNhc2UgYmVmb3JlIHRoZSBkcm9wIGNvbHVtbiBpcworICogZXhlY3V0ZWQu CisgKi8KK3ZvaWQKK0V2ZW50VHJpZ2dlckFsdGVyVHlwZVN0YXJ0KEFsdGVyVGFibGVDbWQgKnN1 YmNtZCwgUmVsYXRpb24gcmVsKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUNvbGxlY3Rl ZEFUU3ViY21kICpuZXdzdWI7CisJQ29sdW1uRGVmICAqZGVmOworCVJlbGF0aW9uCWF0dHJlbGF0 aW9uOworCUhlYXBUdXBsZQloZWFwVHVwOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dFR1cDsKKwlB dHRyTnVtYmVyCWF0dG51bTsKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisKKwkvKiBpZ25vcmUg aWYgZXZlbnQgdHJpZ2dlciBjb250ZXh0IG5vdCBzZXQsIG9yIGNvbGxlY3Rpb24gZGlzYWJsZWQg Ki8KKwlpZiAoIWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZSB8fAorCQljdXJyZW50RXZlbnRUcmln Z2VyU3RhdGUtPmNvbW1hbmRDb2xsZWN0aW9uSW5oaWJpdGVkKQorCQlyZXR1cm47CisKKwlBc3Nl cnQoSXNBKHN1YmNtZCwgQWx0ZXJUYWJsZUNtZCkpOworCUFzc2VydChzdWJjbWQtPnN1YnR5cGUg PT0gQVRfQWx0ZXJDb2x1bW5UeXBlKTsKKwlBc3NlcnQoY3VycmVudEV2ZW50VHJpZ2dlclN0YXRl LT5jdXJyZW50Q29tbWFuZCAhPSBOVUxMKTsKKwlBc3NlcnQoT2lkSXNWYWxpZChjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQpKTsK KworCWRlZiA9IChDb2x1bW5EZWYgKikgc3ViY21kLT5kZWY7CisJQXNzZXJ0KElzQShkZWYsIENv bHVtbkRlZikpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN1cnJlbnRFdmVu dFRyaWdnZXJTdGF0ZS0+Y3h0KTsKKworCW5ld3N1YiA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVk QVRTdWJjbWQpKTsKKwluZXdzdWItPnBhcnNldHJlZSA9IChOb2RlICopY29weU9iamVjdChzdWJj bWQpOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOworCisJLyogTG9vayB1cCB0aGUgdGFyZ2V0IGNvbHVtbiAqLworCWhl YXBUdXAgPSBTZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3ViY21kLT5uYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaGVhcFR1cCkpIC8qIHNob3Vs ZG4ndCBoYXBwZW4gKi8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfVU5E RUZJTkVEX0NPTFVNTiksCisJCQkJZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwi JXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCSAgIHN1YmNtZC0+bmFtZSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpOworCWF0dFR1cCA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RS VUNUKGhlYXBUdXApOworCWF0dG51bSA9IGF0dFR1cC0+YXR0bnVtOworCisJT2JqZWN0QWRkcmVz c1N1YlNldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQlSZWxhdGlvbkdldFJl bGlkKHJlbCksIGF0dG51bSk7CisJaGVhcF9mcmVldHVwbGUoaGVhcFR1cCk7CisJdGFibGVfY2xv c2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworCW5ld3N1Yi0+YWRkcmVzcyA9IGFk ZHJlc3M7CisKKwlpZiAoZGVmLT5yYXdfZGVmYXVsdCkKKwl7CisJCWNoYXIJICAgKmRlZmV4cHI7 CisKKwkJZGVmZXhwciA9IG5vZGVUb1N0cmluZyhkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJbmV3 c3ViLT51c2luZ2V4cHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDIo cGdfZ2V0X2V4cHIsCisJCQkJCQkJCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0oZGVmZXhw ciksCisJCQkJCQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCX0KKwllbHNl CisJCW5ld3N1Yi0+dXNpbmdleHByID0gTlVMTDsKKwogCWN1cnJlbnRFdmVudFRyaWdnZXJTdGF0 ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0KIAkJbGFwcGVuZChjdXJy ZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kLT5kLmFsdGVyVGFibGUuc3ViY21k cywgbmV3c3ViKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogfQogCisvKgor ICogRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kCisgKgkJRmluaXNoIHVwIHNhdmluZyBhbiBBTFRF UiBUWVBFIGNvbW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFuZCBsaXN0LgorICovCit2b2lkCitF dmVudFRyaWdnZXJBbHRlclR5cGVFbmQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJl c3MsIGJvb2wgcmV3cml0ZSkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRB VFN1YmNtZCAqbmV3c3ViOworCUxpc3RDZWxsICAgKmNlbGw7CisJQ29sbGVjdGVkQ29tbWFuZCAq Y21kOworCUFsdGVyVGFibGVDbWQgKmFsdHN1YmNtZCA9IChBbHRlclRhYmxlQ21kICopc3ViY21k OworCisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xs ZWN0aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJ Y3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJ cmV0dXJuOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFu ZDsKKworCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21kKSk7CisJQXNzZXJ0KGNtZCAh PSBOVUxMKTsKKwlBc3NlcnQoT2lkSXNWYWxpZChjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCkp OworCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzKQorCXsKKwkJQ29s bGVjdGVkQVRTdWJjbWQgKnN1YiA9IChDb2xsZWN0ZWRBVFN1YmNtZCAqKSBsZmlyc3QoY2VsbCk7 CisJCUFsdGVyVGFibGVDbWQgKmNvbGxjbWQgPSAoQWx0ZXJUYWJsZUNtZCAqKSBzdWItPnBhcnNl dHJlZTsKKworCQlpZiAoY29sbGNtZC0+c3VidHlwZSA9PSBhbHRzdWJjbWQtPnN1YnR5cGUgJiYK KwkJCWFkZHJlc3MuY2xhc3NJZCA9PSBzdWItPmFkZHJlc3MuY2xhc3NJZCAmJgorCQkJYWRkcmVz cy5vYmplY3RJZCA9PSBzdWItPmFkZHJlc3Mub2JqZWN0SWQgJiYKKwkJCWFkZHJlc3Mub2JqZWN0 U3ViSWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdFN1YklkKQorCQl7CisJCQljbWQtPmQuYWx0ZXJU YWJsZS5yZXdyaXRlIHw9IHJld3JpdGU7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jeHQpOwor CisJbmV3c3ViID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRBVFN1YmNtZCkpOworCW5ld3N1Yi0+ YWRkcmVzcyA9IGFkZHJlc3M7CisJbmV3c3ViLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0KHN1YmNt ZCk7CisKKwljbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlIHw9IHJld3JpdGU7CisJY21kLT5kLmFs dGVyVGFibGUuc3ViY21kcyA9IGxhcHBlbmQoY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcywgbmV3 c3ViKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworfQorCiAvKgogICogRXZl bnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZAogICoJCUZpbmlzaCB1cCBzYXZpbmcgYW4gQUxURVIgVEFC TEUgY29tbWFuZCwgYW5kIGFkZCBpdCB0byBjb21tYW5kIGxpc3QuCkBAIC0xODYzLDYgKzIxMTgs NyBAQCBwZ19ldmVudF90cmlnZ2VyX2RkbF9jb21tYW5kcyhQR19GVU5DVElPTl9BUkdTKQogCQkJ Y2FzZSBTQ1RfQWx0ZXJPcEZhbWlseToKIAkJCWNhc2UgU0NUX0NyZWF0ZU9wQ2xhc3M6CiAJCQlj YXNlIFNDVF9BbHRlclRTQ29uZmlnOgorCQkJY2FzZSBTQ1RfQ3JlYXRlVGFibGVBczoKIAkJCQl7 CiAJCQkJCWNoYXIJICAgKmlkZW50aXR5OwogCQkJCQljaGFyCSAgICp0eXBlOwpAQCAtMTg4MCw2 ICsyMTM2LDggQEAgcGdfZXZlbnRfdHJpZ2dlcl9kZGxfY29tbWFuZHMoUEdfRlVOQ1RJT05fQVJH UykKIAkJCQkJCWFkZHIgPSBjbWQtPmQuY3JlYXRlb3BjLmFkZHJlc3M7CiAJCQkJCWVsc2UgaWYg KGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJUU0NvbmZpZykKIAkJCQkJCWFkZHIgPSBjbWQtPmQuYXRz Y2ZnLmFkZHJlc3M7CisJCQkJCWVsc2UgaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQ3JlYXRlVGFibGVB cykKKwkJCQkJCWFkZHIgPSBjbWQtPmQuY3Rhcy5hZGRyZXNzOwogCiAJCQkJCS8qCiAJCQkJCSAq IElmIGFuIG9iamVjdCB3YXMgZHJvcHBlZCBpbiB0aGUgc2FtZSBjb21tYW5kIHdlIG1heSBlbmQK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNDJjY2VkOWViZS4uMjg0NGQzNjUyMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTE3LDYgKzE3LDggQEAgYmFja2VuZF9zb3VyY2Vz ICs9IGZpbGVzKAogICAnY29weXRvLmMnLAogICAnY3JlYXRlYXMuYycsCiAgICdkYmNvbW1hbmRz LmMnLAorICAnZGRsX2RlcGFyc2UuYycsCisgICdkZGxfanNvbi5jJywKICAgJ2RlZmluZS5jJywK ICAgJ2Rpc2NhcmQuYycsCiAgICdkcm9wY21kcy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCmlu ZGV4IGJmZTI3OWNkZGYuLjI5NjlkM2RmMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAt MTcwOCw2ICsxNzA4LDQ5IEBAIHByb2Nlc3Nfb3duZWRfYnkoUmVsYXRpb24gc2VxcmVsLCBMaXN0 ICpvd25lZF9ieSwgYm9vbCBmb3JfaWRlbnRpdHkpCiAJCXJlbGF0aW9uX2Nsb3NlKHRhYmxlcmVs LCBOb0xvY2spOwogfQogCisvKgorICogUmV0dXJuIHNlcXVlbmNlIHBhcmFtZXRlcnMsIGRldGFp bGVkCisgKi8KK1NlcXVlbmNlX3ZhbHVlcyAqCitnZXRfc2VxdWVuY2VfdmFsdWVzKE9pZCBzZXF1 ZW5jZUlkKQoreworCUJ1ZmZlciAgICAgIGJ1ZjsKKwlTZXFUYWJsZSAgICBlbG07CisJUmVsYXRp b24gICAgc2VxcmVsOworCUhlYXBUdXBsZQlzZXF0dXBsZTsKKwlIZWFwVHVwbGVEYXRhIHNlcXR1 cGxlZGF0YTsKKwlGb3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJRm9ybV9wZ19zZXF1ZW5jZV9k YXRhIHNlcTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKworCXNlcXR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUxKFNFUVJFTElELCBzZXF1ZW5jZUlkKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoc2VxdHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc2Vx dWVuY2UgJXUiLCBzZXF1ZW5jZUlkKTsKKwlzZXFmb3JtID0gKEZvcm1fcGdfc2VxdWVuY2UpIEdF VFNUUlVDVChzZXF0dXBsZSk7CisKKwlSZWxlYXNlU3lzQ2FjaGUoc2VxdHVwbGUpOworCisJLyog T3BlbiBhbmQgbG9jayBzZXF1ZW5jZSAqLworCWluaXRfc2VxdWVuY2Uoc2VxdWVuY2VJZCwgJmVs bSwgJnNlcXJlbCk7CisKKwlpZiAocGdfY2xhc3NfYWNsY2hlY2soc2VxdWVuY2VJZCwgR2V0VXNl cklkKCksCisJCUFDTF9TRUxFQ1QgfCBBQ0xfVVNBR0UpICE9IEFDTENIRUNLX09LKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwK KwkJCQllcnJtc2coInBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXF1ZW5jZSAlcyIsCisJCQkJCSAg IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXJlbCkpKTsKKworCXNlcSA9IHJlYWRfc2VxX3R1 cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcXR1cGxlZGF0YSk7CisKKwlzZXF2YWx1ZXMgPSAoU2VxdWVu Y2VfdmFsdWVzICopIHBhbGxvYyhzaXplb2YoU2VxdWVuY2VfdmFsdWVzKSk7CisJc2VxdmFsdWVz LT5sYXN0X3ZhbHVlID0gc2VxLT5sYXN0X3ZhbHVlOworCXNlcXZhbHVlcy0+c2VxZm9ybSA9IHNl cWZvcm07CisKKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisJcmVsYXRpb25fY2xvc2Uoc2Vx cmVsLCBOb0xvY2spOworCisJcmV0dXJuIHNlcXZhbHVlczsKK30KIAogLyoKICAqIFJldHVybiBz ZXF1ZW5jZSBwYXJhbWV0ZXJzIGluIGEgbGlzdCBvZiB0aGUgZm9ybSBjcmVhdGVkIGJ5IHRoZSBw YXJzZXIuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDMxNDdkZGRmMjguLjBmMjk1NzM2 N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00NzI3LDYgKzQ3MjcsOSBAQCBBVFBy ZXBDbWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJ CQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgcmVjdXJz ZSwgbG9ja21vZGUsCiAJCQkJCQkJCQkgIEFUX1BBU1NfVU5TRVQsIGNvbnRleHQpOwogCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlU3RhcnQoY21kLCBy ZWwpOworCiAJCQkvKiBQZXJmb3JtcyBvd24gcmVjdXJzaW9uICovCiAJCQlBVFByZXBBbHRlckNv bHVtblR5cGUod3F1ZXVlLCB0YWIsIHJlbCwgcmVjdXJzZSwgcmVjdXJzaW5nLCBjbWQsCiAJCQkJ CQkJCSAgbG9ja21vZGUsIGNvbnRleHQpOwpAQCAtNDk5OCw2ICs1MDAxLDcgQEAgQVRFeGVjQ21k KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIHsKIAlPYmplY3RBZGRyZXNz IGFkZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKIAlSZWxhdGlvbglyZWwgPSB0YWItPnJl bDsKKwlib29sCQljb21tYW5kQ29sbGVjdGVkID0gZmFsc2U7CiAKIAlzd2l0Y2ggKGNtZC0+c3Vi dHlwZSkKIAl7CkBAIC01MTIxLDYgKzUxMjUsOCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToJLyogQUxU RVIgQ09MVU1OIFRZUEUgKi8KIAkJCS8qIHBhcnNlIHRyYW5zZm9ybWF0aW9uIHdhcyBkb25lIGVh cmxpZXIgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNBbHRlckNvbHVtblR5cGUodGFiLCByZWwsIGNt ZCwgbG9ja21vZGUpOworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kKChOb2RlICopIGNtZCwg YWRkcmVzcywgdGFiLT5yZXdyaXRlKTsKKwkJCWNvbW1hbmRDb2xsZWN0ZWQgPSB0cnVlOwogCQkJ YnJlYWs7CiAJCWNhc2UgQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9uczoJLyogQUxURVIgQ09M VU1OIE9QVElPTlMgKi8KIAkJCWFkZHJlc3MgPQpAQCAtNTI5Myw4ICs1Mjk5LDggQEAgQVRFeGVj Q21kKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkvKgogCSAqIFJlcG9y dCB0aGUgc3ViY29tbWFuZCB0byBpbnRlcmVzdGVkIGV2ZW50IHRyaWdnZXJzLgogCSAqLwotCWlm IChjbWQpCi0JCUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNt ZCwgYWRkcmVzcyk7CisJaWYgKGNtZCAmJiAhY29tbWFuZENvbGxlY3RlZCkKKwkJRXZlbnRUcmln Z2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQoKE5vZGUgKikgY21kLCBhZGRyZXNzLCB0YWItPnJl d3JpdGUpOwogCiAJLyoKIAkgKiBCdW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gZW5zdXJlIHRo ZSBuZXh0IHN1YmNvbW1hbmQgaW4gdGhlIHNlcXVlbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYwppbmRleCAxNWExZGFiOGM1Li44ZDcyZWI2M2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKQEAgLTEzOTIsNiArMTM5Miw3IEBAIGV4cGFuZFRhYmxlTGlrZUNsYXVzZShSYW5n ZVZhciAqaGVhcFJlbCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYXVzZSkKIAkJYXRj bWQtPmNtZHMgPSBhdHN1YmNtZHM7CiAJCWF0Y21kLT5vYmp0eXBlID0gT0JKRUNUX1RBQkxFOwog CQlhdGNtZC0+bWlzc2luZ19vayA9IGZhbHNlOworCQlhdGNtZC0+dGFibGVfbGlrZSA9IHRydWU7 CiAJCXJlc3VsdCA9IGxjb25zKGF0Y21kLCByZXN1bHQpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRl eCAzMGI1MWJmNGQzLi40NTAxY2MzMzdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtMTY3NSw4ICsxNjc1 LDExIEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJYnJlYWs7 CiAKIAkJCWNhc2UgVF9DcmVhdGVUYWJsZUFzU3RtdDoKKwkJCQlFdmVudFRyaWdnZXJUYWJsZUlu aXRXcml0ZVN0YXJ0KHBhcnNldHJlZSk7CiAJCQkJYWRkcmVzcyA9IEV4ZWNDcmVhdGVUYWJsZUFz KHBzdGF0ZSwgKENyZWF0ZVRhYmxlQXNTdG10ICopIHBhcnNldHJlZSwKIAkJCQkJCQkJCQkJcGFy YW1zLCBxdWVyeUVudiwgcWMpOworCQkJCUV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlRW5kKGFk ZHJlc3MpOworCQkJCWNvbW1hbmRDb2xsZWN0ZWQgPSB0cnVlOwogCQkJCWJyZWFrOwogCiAJCQlj YXNlIFRfUmVmcmVzaE1hdFZpZXdTdG10OgpAQCAtMjIwNiw2ICsyMjA5LDExMiBAQCBVdGlsaXR5 Q29udGFpbnNRdWVyeShOb2RlICpwYXJzZXRyZWUpCiAJfQogfQogCisvKgorICogUmV0dXJuIHRo ZSBnaXZlbiBvYmplY3QgdHlwZSBhcyBhIHN0cmluZy4KKyAqCisgKiBJZiBpc2dyYW50IGlzIHRy dWUsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpbGUgZGVwYXJzaW5nIEdSQU5UCisg KiBzdGF0ZW1lbnQgYW5kIHNvbWUgb2JqZWN0IG5hbWVzIGFyZSByZXBsYWNlZC4KKyAqLworY29u c3QgY2hhciAqCitzdHJpbmdpZnlfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUsIGJvb2wgaXNn cmFudCkKK3sKKwlzd2l0Y2ggKG9ianR5cGUpCisJeworCQljYXNlIE9CSkVDVF9BR0dSRUdBVEU6 CisJCQlyZXR1cm4gIkFHR1JFR0FURSI7CisJCWNhc2UgT0JKRUNUX0NBU1Q6CisJCQlyZXR1cm4g IkNBU1QiOworCQljYXNlIE9CSkVDVF9DT0xMQVRJT046CisJCQlyZXR1cm4gIkNPTExBVElPTiI7 CisJCWNhc2UgT0JKRUNUX0NPTFVNTjoKKwkJCXJldHVybiBpc2dyYW50ID8gIlRBQkxFIiA6ICJD T0xVTU4iOworCQljYXNlIE9CSkVDVF9DT05WRVJTSU9OOgorCQkJcmV0dXJuICJDT05WRVJTSU9O IjsKKwkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CisJCQlyZXR1cm4gIkRBVEFCQVNFIjsKKwkJY2Fz ZSBPQkpFQ1RfRE9NQUlOOgorCQkJcmV0dXJuICJET01BSU4iOworCQljYXNlIE9CSkVDVF9FVkVO VF9UUklHR0VSOgorCQkJcmV0dXJuICJFVkVOVCBUUklHR0VSIjsKKwkJY2FzZSBPQkpFQ1RfRVhU RU5TSU9OOgorCQkJcmV0dXJuICJFWFRFTlNJT04iOworCQljYXNlIE9CSkVDVF9GRFc6CisJCQly ZXR1cm4gIkZPUkVJR04gREFUQSBXUkFQUEVSIjsKKwkJY2FzZSBPQkpFQ1RfRk9SRUlHTl9TRVJW RVI6CisJCQlyZXR1cm4gaXNncmFudCA/ICJGT1JFSUdOIFNFUlZFUiIgOiAiU0VSVkVSIjsKKwkJ Y2FzZSBPQkpFQ1RfRk9SRUlHTl9UQUJMRToKKwkJCXJldHVybiAiRk9SRUlHTiBUQUJMRSI7CisJ CWNhc2UgT0JKRUNUX0ZVTkNUSU9OOgorCQkJcmV0dXJuICJGVU5DVElPTiI7CisJCWNhc2UgT0JK RUNUX0lOREVYOgorCQkJcmV0dXJuICJJTkRFWCI7CisJCWNhc2UgT0JKRUNUX0xBTkdVQUdFOgor CQkJcmV0dXJuICJMQU5HVUFHRSI7CisJCWNhc2UgT0JKRUNUX0xBUkdFT0JKRUNUOgorCQkJcmV0 dXJuICJMQVJHRSBPQkpFQ1QiOworCQljYXNlIE9CSkVDVF9NQVRWSUVXOgorCQkJcmV0dXJuICJN QVRFUklBTElaRUQgVklFVyI7CisJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CisJCQlyZXR1cm4gIk9Q RVJBVE9SIENMQVNTIjsKKwkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CisJCQlyZXR1cm4gIk9QRVJB VE9SIjsKKwkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCQlyZXR1cm4gIk9QRVJBVE9SIEZBTUlM WSI7CisJCWNhc2UgT0JKRUNUX1BPTElDWToKKwkJCXJldHVybiAiUE9MSUNZIjsKKwkJY2FzZSBP QkpFQ1RfUFJPQ0VEVVJFOgorCQkJcmV0dXJuICJQUk9DRURVUkUiOworCQljYXNlIE9CSkVDVF9S T0xFOgorCQkJcmV0dXJuICJST0xFIjsKKwkJY2FzZSBPQkpFQ1RfUk9VVElORToKKwkJCXJldHVy biAiUk9VVElORSI7CisJCWNhc2UgT0JKRUNUX1JVTEU6CisJCQlyZXR1cm4gIlJVTEUiOworCQlj YXNlIE9CSkVDVF9TQ0hFTUE6CisJCQlyZXR1cm4gIlNDSEVNQSI7CisJCWNhc2UgT0JKRUNUX1NF UVVFTkNFOgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CisJCWNhc2UgT0JKRUNUX1NUQVRJU1RJQ19F WFQ6CisJCQlyZXR1cm4gIlNUQVRJU1RJQ1MiOworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCXJl dHVybiAiVEFCTEUiOworCQljYXNlIE9CSkVDVF9UQUJMRVNQQUNFOgorCQkJcmV0dXJuICJUQUJM RVNQQUNFIjsKKwkJY2FzZSBPQkpFQ1RfVFJJR0dFUjoKKwkJCXJldHVybiAiVFJJR0dFUiI7CisJ CWNhc2UgT0JKRUNUX1RTQ09ORklHVVJBVElPTjoKKwkJCXJldHVybiAiVEVYVCBTRUFSQ0ggQ09O RklHVVJBVElPTiI7CisJCWNhc2UgT0JKRUNUX1RTRElDVElPTkFSWToKKwkJCXJldHVybiAiVEVY VCBTRUFSQ0ggRElDVElPTkFSWSI7CisJCWNhc2UgT0JKRUNUX1RTUEFSU0VSOgorCQkJcmV0dXJu ICJURVhUIFNFQVJDSCBQQVJTRVIiOworCQljYXNlIE9CSkVDVF9UU1RFTVBMQVRFOgorCQkJcmV0 dXJuICJURVhUIFNFQVJDSCBURU1QTEFURSI7CisJCWNhc2UgT0JKRUNUX1RZUEU6CisJCQlyZXR1 cm4gIlRZUEUiOworCQljYXNlIE9CSkVDVF9VU0VSX01BUFBJTkc6CisJCQlyZXR1cm4gIlVTRVIg TUFQUElORyI7CisJCWNhc2UgT0JKRUNUX1ZJRVc6CisJCQlyZXR1cm4gIlZJRVciOworCQljYXNl IE9CSkVDVF9BQ0NFU1NfTUVUSE9EOgorCQljYXNlIE9CSkVDVF9BTU9QOgorCQljYXNlIE9CSkVD VF9BTVBST0M6CisJCWNhc2UgT0JKRUNUX0FUVFJJQlVURToKKwkJY2FzZSBPQkpFQ1RfREVGQVVM VDoKKwkJY2FzZSBPQkpFQ1RfREVGQUNMOgorCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgor CQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoK KwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgorCQljYXNlIE9CSkVDVF9QVUJM SUNBVElPTl9SRUw6CisJCWNhc2UgT0JKRUNUX1NVQlNDUklQVElPTjoKKwkJY2FzZSBPQkpFQ1Rf VEFCQ09OU1RSQUlOVDoKKwkJY2FzZSBPQkpFQ1RfVFJBTlNGT1JNOgorCQkJZWxvZyhFUlJPUiwg InVuc3VwcG9ydGVkIG9iamVjdCB0eXBlICVkIiwgb2JqdHlwZSk7CisJfQorCisJcmV0dXJuICI/ Pz8iOwkJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CiAKIC8qCiAgKiBBbHRlck9iamVj dFR5cGVDb21tYW5kVGFnCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0 X3R5cGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCmluZGV4IDEyNDAy YTA2MzcuLjdiNDc2YWRiMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXRfdHlwZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCkBAIC0y Nyw4ICsyNyw2IEBACiAjaW5jbHVkZSAidXRpbHMvbnVtZXJpYy5oIgogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAKLXN0YXRpYyBjaGFyICpwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBu YW1lLCBpbnQzMiB0eXBtb2QsIE9pZCB0eXBtb2RvdXQpOwotCiAKIC8qCiAgKiBTUUwgZnVuY3Rp b246IGZvcm1hdF90eXBlKHR5cGVfb2lkLCB0eXBlbW9kKQpAQCAtMzYzLDcgKzM2MSw3IEBAIGZv cm1hdF90eXBlX3dpdGhfdHlwZW1vZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QpCiAvKgog ICogQWRkIHR5cG1vZCBkZWNvcmF0aW9uIHRvIHRoZSBiYXNpYyB0eXBlIG5hbWUKICAqLwotc3Rh dGljIGNoYXIgKgorY2hhciAqCiBwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBuYW1lLCBpbnQz MiB0eXBtb2QsIE9pZCB0eXBtb2RvdXQpCiB7CiAJY2hhcgkgICAqcmVzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCmluZGV4IDVmOTUzMzM4ZjMuLmNlOGNiM2UxYTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKQEAgLTQ5OSwyMiArNDk5LDE1IEBAIHN0YXRpYyB2b2lkIGdldF9mcm9t X2NsYXVzZV9jb2xkZWZsaXN0KFJhbmdlVGJsRnVuY3Rpb24gKnJ0ZnVuYywKIAkJCQkJCQkJCSAg IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfdGFibGVzYW1wbGVf ZGVmKFRhYmxlU2FtcGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwKIAkJCQkJCQkJZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0KTsKLXN0YXRpYyB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3Ms IE9pZCBhY3R1YWxfZGF0YXR5cGUsCi0JCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKIHN0YXRpYyBO b2RlICpwcm9jZXNzSW5kaXJlY3Rpb24oTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KTsKIHN0YXRpYyB2b2lkIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3Jl ZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBjaGFyICpnZXRfcmVsYXRpb25f bmFtZShPaWQgcmVsaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3JlbGF0aW9uX25hbWUoT2lk IHJlbGlkLCBMaXN0ICpuYW1lc3BhY2VzKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9xdWFsaWZp ZWRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQpOwotc3RhdGljIGNoYXIgKmdlbmVyYXRlX2Z1bmN0 aW9uX25hbWUoT2lkIGZ1bmNpZCwgaW50IG5hcmdzLAotCQkJCQkJCQkJTGlzdCAqYXJnbmFtZXMs IE9pZCAqYXJndHlwZXMsCi0JCQkJCQkJCQlib29sIGhhc192YXJpYWRpYywgYm9vbCAqdXNlX3Zh cmlhZGljX3AsCi0JCQkJCQkJCQlQYXJzZUV4cHJLaW5kIHNwZWNpYWxfZXhwcmtpbmQpOwogc3Rh dGljIGNoYXIgKmdlbmVyYXRlX29wZXJhdG9yX25hbWUoT2lkIG9wZXJpZCwgT2lkIGFyZzEsIE9p ZCBhcmcyKTsKIHN0YXRpYyB2b2lkIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVmLCBPaWQgdHlw aWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUoT2lkIHR5cGlk KTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4dChjaGFyICpzdHIpOwotc3RhdGljIGNoYXIg KmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogc3RhdGljIHZvaWQgZ2V0X3JlbG9wdGlv bnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwogCiAjZGVmaW5lIG9ubHlfbWFy a2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQpAQCAtMTg4Myw2ICsxODc2LDE0 IEBAIHBnX2dldF9wYXJ0a2V5ZGVmX2NvbHVtbnMoT2lkIHJlbGlkLCBib29sIHByZXR0eSkKIAly ZXR1cm4gcGdfZ2V0X3BhcnRrZXlkZWZfd29ya2VyKHJlbGlkLCBwcmV0dHlGbGFncywgdHJ1ZSwg ZmFsc2UpOwogfQogCisvKiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQgcmVwb3J0cyB0aGUgZnVsbCBw YXJ0aXRpb24ga2V5IGRlZmluaXRpb24gKi8KK2NoYXIgKgorcGdfZ2V0X3BhcnRrZXlkZWZfc3Ry aW5nKE9pZCByZWxpZCkKK3sKKwlyZXR1cm4gcGdfZ2V0X3BhcnRrZXlkZWZfd29ya2VyKHJlbGlk LCBHRVRfUFJFVFRZX0ZMQUdTKGZhbHNlKSwgZmFsc2UsCisJCQkJCQkJCQlmYWxzZSk7Cit9CisK IC8qCiAgKiBJbnRlcm5hbCB3b3JraG9yc2UgdG8gZGVjb21waWxlIGEgcGFydGl0aW9uIGtleSBk ZWZpbml0aW9uLgogICovCkBAIC0yMTMwLDYgKzIxMzEsMTYgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4 dChyZXMpKTsKIH0KIAorLyoKKyAqIEludGVybmFsIHZlcnNpb24gdGhhdCByZXR1cm5zIHRoZSBk ZWZpbml0aW9uIG9mIGEgQ09OU1RSQUlOVCBjb21tYW5kCisgKi8KK2NoYXIgKgorcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfc3RyaW5nKE9pZCBjb25zdHJhaW50SWQpCit7CisJcmV0dXJuIHBnX2dldF9j b25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50SWQsIGZhbHNlLAorCQkJCQkJCQkJICAgR0VU X1BSRVRUWV9GTEFHUyhmYWxzZSksIGZhbHNlKTsKK30KKwogLyoKICAqIEludGVybmFsIHZlcnNp b24gdGhhdCByZXR1cm5zIGEgZnVsbCBBTFRFUiBUQUJMRSAuLi4gQUREIENPTlNUUkFJTlQgY29t bWFuZAogICovCkBAIC0xMTU3OSw3ICsxMTU5MCw3IEBAIGdldF90YWJsZXNhbXBsZV9kZWYoVGFi bGVTYW1wbGVDbGF1c2UgKnRhYmxlc2FtcGxlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAg KiBhY3R1YWxfZGF0YXR5cGUuICAoSWYgeW91IGRvbid0IHdhbnQgdGhpcyBiZWhhdmlvciwganVz dCBwYXNzCiAgKiBJbnZhbGlkT2lkIGZvciBhY3R1YWxfZGF0YXR5cGUuKQogICovCi1zdGF0aWMg dm9pZAordm9pZAogZ2V0X29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9kYXRh dHlwZSwKIAkJCQkgU3RyaW5nSW5mbyBidWYpCiB7CkBAIC0xMTk3Myw3ICsxMTk4NCw3IEBAIGdl bmVyYXRlX3F1YWxpZmllZF9yZWxhdGlvbl9uYW1lKE9pZCByZWxpZCkKICAqCiAgKiBUaGUgcmVz dWx0IGluY2x1ZGVzIGFsbCBuZWNlc3NhcnkgcXVvdGluZyBhbmQgc2NoZW1hLXByZWZpeGluZy4K ICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKE9pZCBm dW5jaWQsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsIE9pZCAqYXJndHlwZXMsCiAJCQkJCSAg IGJvb2wgaGFzX3ZhcmlhZGljLCBib29sICp1c2VfdmFyaWFkaWNfcCwKIAkJCQkJICAgUGFyc2VF eHByS2luZCBzcGVjaWFsX2V4cHJraW5kKQpAQCAtMTIzNTksNyArMTIzNzAsNyBAQCBnZXRfcmVs b3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucykKIC8qCiAgKiBHZW5lcmF0 ZSBhIEMgc3RyaW5nIHJlcHJlc2VudGluZyBhIHJlbGF0aW9uJ3MgcmVsb3B0aW9ucywgb3IgTlVM TCBpZiBub25lLgogICovCi1zdGF0aWMgY2hhciAqCitjaGFyICoKIGZsYXR0ZW5fcmVsb3B0aW9u cyhPaWQgcmVsaWQpCiB7CiAJY2hhcgkgICAqcmVzdWx0ID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9ldnRjYWNoZS5jCmluZGV4IDFmNWU3ZWI0YzYuLmYyYTlmNWRjYzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvZXZ0Y2FjaGUuYwpAQCAtMTY3LDYgKzE2Nyw4IEBAIEJ1aWxkRXZlbnRUcmlnZ2VyQ2Fj aGUodm9pZCkKIAkJCWV2ZW50ID0gRVZUX1NRTERyb3A7CiAJCWVsc2UgaWYgKHN0cmNtcChldnRl dmVudCwgInRhYmxlX3Jld3JpdGUiKSA9PSAwKQogCQkJZXZlbnQgPSBFVlRfVGFibGVSZXdyaXRl OworCQllbHNlIGlmIChzdHJjbXAoZXZ0ZXZlbnQsICJ0YWJsZV9pbml0X3dyaXRlIikgPT0gMCkK KwkJCWV2ZW50ID0gRVZUX1RhYmxlSW5pdFdyaXRlOwogCQllbHNlCiAJCQljb250aW51ZTsKIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNTczNmMxMDgyYy4uZGZlOTliNjQ3NSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMjA1Myw0ICsxMjA1MywxMSBAQAogICBwcm9uYW1lID0+ ICdhbnlfdmFsdWVfdHJhbnNmbicsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAogICBwcm9h cmd0eXBlcyA9PiAnYW55ZWxlbWVudCBhbnllbGVtZW50JywgcHJvc3JjID0+ICdhbnlfdmFsdWVf dHJhbnNmbicgfSwKIAoreyBvaWQgPT4gJzQ2NDInLCBkZXNjciA9PiAnZGVwYXJzZSB0aGUgRERM IGNvbW1hbmQgaW50byBhIEpTT04gZm9ybWF0IHN0cmluZycsCisgIHByb25hbWUgPT4gJ2RkbF9k ZXBhcnNlX3RvX2pzb24nLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4g J3BnX2RkbF9jb21tYW5kJywgcHJvc3JjID0+ICdkZGxfZGVwYXJzZV90b19qc29uJyB9LAoreyBv aWQgPT4gJzQ2NDMnLCBkZXNjciA9PiAnZXhwYW5kIEpTT04gZm9ybWF0IERETCB0byBhIHBsYWlu IHRleHQgRERMIGNvbW1hbmQnLAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJzZV9leHBhbmRfY29t bWFuZCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAorICBwcm9hcmd0eXBlcyA9PiAndGV4dCcsIHBy b3NyYyA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnIH0sCisKIF0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuaAppbmRleCA1ZWQ2ZWNlNTU1Li5jYmE0ZTcyNDU1IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9kZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19ldmVudF90cmlnZ2VyLmgiCisjaW5jbHVkZSAibGliL2ls aXN0LmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInRjb3AvY21k dGFnLmgiCiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKQEAgLTI5LDYgKzMwLDQ0 IEBAIHR5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlckRhdGEKIAlDb21tYW5kVGFnCXRhZzsKIH0g RXZlbnRUcmlnZ2VyRGF0YTsKIAordHlwZWRlZiBzdHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0 ZQoreworCS8qIG1lbW9yeSBjb250ZXh0IGZvciB0aGlzIHN0YXRlJ3Mgb2JqZWN0cyAqLworCU1l bW9yeUNvbnRleHQgY3h0OworCisJLyogc3FsX2Ryb3AgKi8KKwlzbGlzdF9oZWFkCVNRTERyb3BM aXN0OworCWJvb2wJCWluX3NxbF9kcm9wOworCisJLyogdGFibGVfcmV3cml0ZSAqLworCU9pZAkJ CXRhYmxlX3Jld3JpdGVfb2lkOwkvKiBJbnZhbGlkT2lkLCBvciBzZXQgZm9yIHRhYmxlX3Jld3Jp dGUKKwkJCQkJCQkJCSAqIGV2ZW50ICovCisJaW50CQkJdGFibGVfcmV3cml0ZV9yZWFzb247CS8q IEFUX1JFV1JJVEUgcmVhc29uICovCisKKwkvKiBTdXBwb3J0IGZvciBjb21tYW5kIGNvbGxlY3Rp b24gKi8KKwlib29sCQljb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZDsKKwlDb2xsZWN0ZWRDb21t YW5kICpjdXJyZW50Q29tbWFuZDsKKwlMaXN0CSAgICpjb21tYW5kTGlzdDsJLyogbGlzdCBvZiBD b2xsZWN0ZWRDb21tYW5kOyBzZWUKKwkJCQkJCQkJICogZGVwYXJzZV91dGlsaXR5LmggKi8KKwlz dHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZSAqcHJldmlvdXM7Cit9IEV2ZW50VHJpZ2dlclF1 ZXJ5U3RhdGU7CisKKy8qIFN1cHBvcnQgZm9yIGRyb3BwZWQgb2JqZWN0cyAqLwordHlwZWRlZiBz dHJ1Y3QgU1FMRHJvcE9iamVjdAoreworCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKKwljb25zdCBj aGFyICpzY2hlbWFuYW1lOworCWNvbnN0IGNoYXIgKm9iam5hbWU7CisJY29uc3QgY2hhciAqb2Jq aWRlbnRpdHk7CisJY29uc3QgY2hhciAqb2JqZWN0dHlwZTsKKwlMaXN0CSAgICphZGRybmFtZXM7 CisJTGlzdAkgICAqYWRkcmFyZ3M7CisJYm9vbAkJb3JpZ2luYWw7CisJYm9vbAkJbm9ybWFsOwor CWJvb2wJCWlzdGVtcDsKKwlzbGlzdF9ub2RlCW5leHQ7Cit9IFNRTERyb3BPYmplY3Q7CisKICNk ZWZpbmUgQVRfUkVXUklURV9BTFRFUl9QRVJTSVNURU5DRQkweDAxCiAjZGVmaW5lIEFUX1JFV1JJ VEVfREVGQVVMVF9WQUwJCQkweDAyCiAjZGVmaW5lIEFUX1JFV1JJVEVfQ09MVU1OX1JFV1JJVEUJ CTB4MDQKQEAgLTU1LDYgKzk0LDEwIEBAIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckRETENvbW1h bmRFbmQoTm9kZSAqcGFyc2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlclNRTERyb3Ao Tm9kZSAqcGFyc2V0cmVlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlclRhYmxlUmV3cml0ZShO b2RlICpwYXJzZXRyZWUsIE9pZCB0YWJsZU9pZCwgaW50IHJlYXNvbik7CiAKK2V4dGVybiB2b2lk IEV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKTsKK2V4dGVy biB2b2lkIEV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRlKE5vZGUgKnBhcnNldHJlZSwgT2JqZWN0 QWRkcmVzcyBhZGRyZXNzKTsKK2V4dGVybiB2b2lkIEV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRl RW5kKE9iamVjdEFkZHJlc3MgYWRkcmVzcyk7CisKIGV4dGVybiBib29sIEV2ZW50VHJpZ2dlckJl Z2luQ29tcGxldGVRdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckVuZENvbXBs ZXRlUXVlcnkodm9pZCk7CiBleHRlcm4gYm9vbCB0cmFja0Ryb3BwZWRPYmplY3RzTmVlZGVkKHZv aWQpOwpAQCAtNzEsNyArMTE0LDEyIEBAIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RT aW1wbGVDb21tYW5kKE9iamVjdEFkZHJlc3MgYWRkcmVzcywKIGV4dGVybiB2b2lkIEV2ZW50VHJp Z2dlckFsdGVyVGFibGVTdGFydChOb2RlICpwYXJzZXRyZWUpOwogZXh0ZXJuIHZvaWQgRXZlbnRU cmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCk7CiBleHRlcm4gdm9pZCBFdmVudFRy aWdnZXJDb2xsZWN0QWx0ZXJUYWJsZVN1YmNtZChOb2RlICpzdWJjbWQsCi0JCQkJCQkJCQkJCQlP YmplY3RBZGRyZXNzIGFkZHJlc3MpOworCQkJCQkJCQkJCQkJT2JqZWN0QWRkcmVzcyBhZGRyZXNz LAorCQkJCQkJCQkJCQkJYm9vbCByZXdyaXRlKTsKKworZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2Vy QWx0ZXJUeXBlU3RhcnQoQWx0ZXJUYWJsZUNtZCAqc3ViY21kLCBSZWxhdGlvbiByZWwpOworZXh0 ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kKE5vZGUgKnN1YmNtZCwgT2JqZWN0QWRk cmVzcyBhZGRyZXNzLAorCQkJCQkJCQkJIGJvb2wgcmV3cml0ZSk7CiBleHRlcm4gdm9pZCBFdmVu dFRyaWdnZXJBbHRlclRhYmxlRW5kKHZvaWQpOwogCiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJD b2xsZWN0R3JhbnQoSW50ZXJuYWxHcmFudCAqaXN0bXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgK aW5kZXggN2RiN2IzZGE3Yi4uYzBhMzk1OTZhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oCkBA IC0xNSw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlYWRlci5oIgogI2luY2x1 ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfc2VxdWVu Y2UuaCIKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKICNp bmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCkBAIC01MSw5ICs1MiwxNyBAQCB0eXBlZGVmIHN0 cnVjdCB4bF9zZXFfcmVjCiAJLyogU0VRVUVOQ0UgVFVQTEUgREFUQSBGT0xMT1dTIEFUIFRIRSBF TkQgKi8KIH0geGxfc2VxX3JlYzsKIAorLyogSW5mb3JtYXRpb24gbmVlZGVkIHRvIGRlZmluZSBh IHNlcXVlbmNlLiAqLwordHlwZWRlZiBzdHJ1Y3QgU2VxdWVuY2VfdmFsdWVzCit7CisJRm9ybV9w Z19zZXF1ZW5jZSBzZXFmb3JtOworCWludDY0CQlsYXN0X3ZhbHVlOworfSBTZXF1ZW5jZV92YWx1 ZXM7CisKIGV4dGVybiBpbnQ2NCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVj a19wZXJtaXNzaW9ucyk7CiBleHRlcm4gRGF0dW0gbmV4dHZhbChQR19GVU5DVElPTl9BUkdTKTsK IGV4dGVybiBMaXN0ICpzZXF1ZW5jZV9vcHRpb25zKE9pZCByZWxpZCk7CitleHRlcm4gU2VxdWVu Y2VfdmFsdWVzICpnZXRfc2VxdWVuY2VfdmFsdWVzKE9pZCBzZXF1ZW5jZUlkKTsKIAogZXh0ZXJu IE9iamVjdEFkZHJlc3MgRGVmaW5lU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVT ZXFTdG10ICpzZXEpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0 YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggMWMyOTZkYTMyNi4uMWFjYWVkZmU0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjE2 Nyw2ICsyMTY3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJUYWJsZVN0bXQKIAlMaXN0CSAgICpj bWRzOwkJCS8qIGxpc3Qgb2Ygc3ViY29tbWFuZHMgKi8KIAlPYmplY3RUeXBlCW9ianR5cGU7CQkv KiB0eXBlIG9mIG9iamVjdCAqLwogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBza2lwIGVycm9yIGlm IHRhYmxlIG1pc3NpbmcgKi8KKwlib29sICAgICAgICB0YWJsZV9saWtlOwkJLyogaW50ZXJuYWxs eSBnZW5lcmF0ZWQgZm9yIFRhYmxlTGlrZUNsYXVzZSAqLwogfSBBbHRlclRhYmxlU3RtdDsKIAog dHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29w L2RkbF9kZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWEyNzAyYzVhYwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaApAQCAtMCwwICsxLDIyIEBACisvKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxfZGVwYXJzZS5oCisgKgorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNp dHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaAor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIERETF9ERVBBUlNFX0gKKyNkZWZp bmUgRERMX0RFUEFSU0VfSAorCisjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKKwor ZXh0ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNt ZCwgYm9vbCB2ZXJib3NlX21vZGUpOworZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9f c3RyaW5nKGNoYXIgKmpzb25iKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfY29tbWFuZChj b25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0dHlwZSwKKwkJCQkJCQkJ ICBEcm9wQmVoYXZpb3IgYmVoYXZpb3IpOworCisjZW5kaWYJCQkJCQkJLyogRERMX0RFUEFSU0Vf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCBiL3Ny Yy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKaW5kZXggYjU4NTgxMGI5YS4uYTRhMTIz NzdiOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAorKysg Yi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCkBAIC0yOSw3ICsyOSw4IEBAIHR5 cGVkZWYgZW51bSBDb2xsZWN0ZWRDb21tYW5kVHlwZQogCVNDVF9BbHRlck9wRmFtaWx5LAogCVND VF9BbHRlckRlZmF1bHRQcml2aWxlZ2VzLAogCVNDVF9DcmVhdGVPcENsYXNzLAotCVNDVF9BbHRl clRTQ29uZmlnCisJU0NUX0FsdGVyVFNDb25maWcsCisJU0NUX0NyZWF0ZVRhYmxlQXMKIH0gQ29s bGVjdGVkQ29tbWFuZFR5cGU7CiAKIC8qCkBAIC0zOSw2ICs0MCw3IEBAIHR5cGVkZWYgc3RydWN0 IENvbGxlY3RlZEFUU3ViY21kCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwkJLyogYWZmZWN0 ZWQgY29sdW1uLCBjb25zdHJhaW50LCBpbmRleCwgLi4uICovCiAJTm9kZQkgICAqcGFyc2V0cmVl OworCWNoYXIJICAgKnVzaW5nZXhwcjsKIH0gQ29sbGVjdGVkQVRTdWJjbWQ7CiAKIHR5cGVkZWYg c3RydWN0IENvbGxlY3RlZENvbW1hbmQKQEAgLTYyLDYgKzY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q29sbGVjdGVkQ29tbWFuZAogCQl7CiAJCQlPaWQJCQlvYmplY3RJZDsKIAkJCU9pZAkJCWNsYXNz SWQ7CisJCQlib29sCQlyZXdyaXRlOwogCQkJTGlzdAkgICAqc3ViY21kczsKIAkJfQkJCWFsdGVy VGFibGU7CiAKQEAgLTEwMCw2ICsxMDMsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQ29t bWFuZAogCQl7CiAJCQlPYmplY3RUeXBlCW9ianR5cGU7CiAJCX0JCQlkZWZwcml2czsKKworCQkv KiBDUkVBVEUgVEFCTEUgQVMgKi8KKwkJc3RydWN0CisJCXsKKwkJCU9iamVjdEFkZHJlc3MgYWRk cmVzczsKKwkJCU5vZGUJCSAqcmVhbF9jcmVhdGU7CisJCX0JCQljdGFzOwogCX0JCQlkOwogCiAJ c3RydWN0IENvbGxlY3RlZENvbW1hbmQgKnBhcmVudDsJLyogd2hlbiBuZXN0ZWQgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC91dGls aXR5LmgKaW5kZXggNTllNjRhZWEwNy4uYTY4Y2UzZDMzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdGNvcC91dGlsaXR5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgKQEAgLTk5 LDYgKzk5LDggQEAgZXh0ZXJuIFF1ZXJ5ICpVdGlsaXR5Q29udGFpbnNRdWVyeShOb2RlICpwYXJz ZXRyZWUpOwogCiBleHRlcm4gQ29tbWFuZFRhZyBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNl dHJlZSk7CiAKK2V4dGVybiBjb25zdCBjaGFyICpzdHJpbmdpZnlfb2JqdHlwZShPYmplY3RUeXBl IG9ianR5cGUsIGJvb2wgaXNncmFudCk7CisKIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBD cmVhdGVDb21tYW5kTmFtZShOb2RlICpwYXJzZXRyZWUpCiB7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9idWlsdGlucy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRpbnMuaAppbmRl eCAyZjhiNDZkNmRhLi5jOTBjMzJiZmYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9i dWlsdGlucy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKQEAgLTEyNyw2ICsx MjcsNyBAQCBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfZXh0ZW5kZWQoT2lkIHR5cGVfb2lkLCBp bnQzMiB0eXBlbW9kLCBiaXRzMTYgZmxhZ3MpOwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2Jl KE9pZCB0eXBlX29pZCk7CiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfYmVfcXVhbGlmaWVkKE9p ZCB0eXBlX29pZCk7CiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9kKE9pZCB0 eXBlX29pZCwgaW50MzIgdHlwZW1vZCk7CitleHRlcm4gY2hhciAqcHJpbnRUeXBtb2QoY29uc3Qg Y2hhciAqdHlwbmFtZSwgaW50MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KTsKIAogZXh0ZXJuIGlu dDMyIHR5cGVfbWF4aW11bV9zaXplKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy9ldnRjYWNoZS5oCmluZGV4IGQzNDAwMjY1MTguLjkxZDRiZGQ2YjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2V2dGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvZXZ0Y2Fj aGUuaApAQCAtMjIsNyArMjIsOCBAQCB0eXBlZGVmIGVudW0KIAlFVlRfRERMQ29tbWFuZFN0YXJ0 LAogCUVWVF9ERExDb21tYW5kRW5kLAogCUVWVF9TUUxEcm9wLAotCUVWVF9UYWJsZVJld3JpdGUK KwlFVlRfVGFibGVSZXdyaXRlLAorCUVWVF9UYWJsZUluaXRXcml0ZQogfSBFdmVudFRyaWdnZXJF dmVudDsKIAogdHlwZWRlZiBzdHJ1Y3QKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3J1 bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKaW5kZXggMWE0MmQ5ZjM5 Yi4uOWFkYzU4OTE3MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgKQEAgLTI2LDkgKzI2LDExIEBAIGV4 dGVybiBjaGFyICpwZ19nZXRfaW5kZXhkZWZfY29sdW1ucyhPaWQgaW5kZXhyZWxpZCwgYm9vbCBw cmV0dHkpOwogZXh0ZXJuIGNoYXIgKnBnX2dldF9xdWVyeWRlZihRdWVyeSAqcXVlcnksIGJvb2wg cHJldHR5KTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0a2V5ZGVmX2NvbHVtbnMoT2lkIHJl bGlkLCBib29sIHByZXR0eSk7CitleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfc3RyaW5n KE9pZCByZWxpZCk7CiBleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRjb25zdHJkZWZfc3RyaW5nKE9p ZCBwYXJ0aXRpb25JZCwgY2hhciAqYWxpYXNuYW1lKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9j b25zdHJhaW50ZGVmX2NvbW1hbmQoT2lkIGNvbnN0cmFpbnRJZCk7CitleHRlcm4gY2hhciAqcGdf Z2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKE9pZCBjb25zdHJhaW50SWQpOwogZXh0ZXJuIGNoYXIg KmRlcGFyc2VfZXhwcmVzc2lvbihOb2RlICpleHByLCBMaXN0ICpkcGNvbnRleHQsCiAJCQkJCQkJ CWJvb2wgZm9yY2VwcmVmaXgsIGJvb2wgc2hvd2ltcGxpY2l0KTsKIGV4dGVybiBMaXN0ICpkZXBh cnNlX2NvbnRleHRfZm9yKGNvbnN0IGNoYXIgKmFsaWFzbmFtZSwgT2lkIHJlbGlkKTsKQEAgLTQw LDcgKzQyLDE0IEBAIGV4dGVybiBMaXN0ICpzZWxlY3RfcnRhYmxlX25hbWVzX2Zvcl9leHBsYWlu KExpc3QgKnJ0YWJsZSwKIAkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsc191c2VkKTsKIGV4dGVy biBjaGFyICpnZW5lcmF0ZV9jb2xsYXRpb25fbmFtZShPaWQgY29sbGlkKTsKIGV4dGVybiBjaGFy ICpnZW5lcmF0ZV9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MpOworZXh0ZXJuIGNoYXIgKmdlbmVy YXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1bmNpZCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywK KwkJCQkJCQkJCU9pZCAqYXJndHlwZXMsIGJvb2wgaGFzX3ZhcmlhZGljLAorCQkJCQkJCQkJYm9v bCAqdXNlX3ZhcmlhZGljX3AsCisJCQkJCQkJCQlQYXJzZUV4cHJLaW5kIHNwZWNpYWxfZXhwcmtp bmQpOwogZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJvdW5k X2RhdHVtcyk7CitleHRlcm4gdm9pZCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBPaWQg YWN0dWFsX2RhdGF0eXBlLAorCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CitleHRlcm4gY2hhciAq ZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRfc3Rh dGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKaW5kZXggNzVhMjk2OTIwZS4uNmU1NzkxYTQ2YyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKQEAgLTE2MjYsNiArMTYyNiw5IEBAIE9TSW5mbwogT1NTTENpcGhlcgogT1NTTERpZ2Vz dAogT1ZFUkxBUFBFRAorT2JqRWxlbQorT2JqVHJlZQorT2JqVHlwZQogT2JqZWN0QWNjZXNzRHJv cAogT2JqZWN0QWNjZXNzTmFtZXNwYWNlU2VhcmNoCiBPYmplY3RBY2Nlc3NQb3N0QWx0ZXIKQEAg LTMyMDEsNiArMzIwNCw3IEBAIGNvbXBhcmVfY29udGV4dAogY29uZmlnX3Zhcl92YWx1ZQogY29u dGFpbl9hZ2dzX29mX2xldmVsX2NvbnRleHQKIGNvbnZlcnRfdGVzdGV4cHJfY29udGV4dAorY29u dlNwZWNpZmllcgogY29weV9kYXRhX2Rlc3RfY2IKIGNvcHlfZGF0YV9zb3VyY2VfY2IKIGNvcmVf WVlTVFlQRQotLSAKMi4zMC4wLndpbmRvd3MuMgoK --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0002-DDL-replication-for-Table-DDL-commands-2023_03_30.patch" Content-Description: 0002-DDL-replication-for-Table-DDL-commands-2023_03_30.patch Content-Disposition: attachment; filename="0002-DDL-replication-for-Table-DDL-commands-2023_03_30.patch"; size=239731; creation-date="Thu, 30 Mar 2023 06:36:10 GMT"; modification-date="Thu, 30 Mar 2023 06:37:07 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMWY4NmY1ZTY1MjRkMDcwYjk3OTk5NDA1OWI3MmJkNTQ3OGQ2NmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXYW5nIFdlaSA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0 ZTogVGh1LCAzMCBNYXIgMjAyMyAxMzo1MToxNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggMi81XSBE REwgcmVwbGljYXRpb24gZm9yIFRhYmxlIERETCBjb21tYW5kcwoKVG8gc3VwcG9ydCBEREwgcmVw bGljYXRpb24sIGl0IHVzZSBldmVudCB0cmlnZ2VyIGFuZCBEREwgZGVwYXJzaW5nCmZhY2lsaXRp ZXMuIER1cmluZyBDUkVBVEUgUFVCTElDQVRJT04gd2UgcmVnaXN0ZXIgYSBjb21tYW5kIGVuZCB0 cmlnZ2VyIHRoYXQKZGVwYXJzZXMgdGhlIERETCAoaWYgdGhlIERETCBpcyBhbm5vdGF0ZWQgYXMg ZGRscmVwbG9rIGZvciBEREwgcmVwbGljYXRpb24gaW4KY21kdGFnbGlzdC5oKSBhcyBhIEpTT04g YmxvYiwgYW5kIFdBTCBsb2dzIGl0LiBUaGUgZXZlbnQgdHJpZ2dlciBpcyBhdXRvbWF0aWNhbGx5 CnJlbW92ZWQgYXQgdGhlIHRpbWUgb2YgRFJPUCBQVUJMSUNBVElPTi4gVGhlIFdBTFNlbmRlciBk ZWNvZGVzIHRoZSBXQUwgYW5kIHNlbmRzCml0IGRvd25zdHJlYW0gc2ltaWxhciB0byBvdGhlciBE TUwgY29tbWFuZHMuIFRoZSBzdWJzY3JpYmVyIHRoZW4gY29udmVydHMgSlNPTgpiYWNrIHRvIHRo ZSBEREwgY29tbWFuZCBzdHJpbmcgYW5kIGV4ZWN1dGVzIGl0LiBJbiB0aGUgc3Vic2NyaWJlciwg d2UgYWxzbyBhZGQKdGhlIG5ld2x5IGFkZGVkIHJlbCB0byBwZ19zdWJzY3JpcHRpb25fcmVsIHNv IHRoYXQgdGhlIERNTCBjaGFuZ2VzIG9uIHRoZSBuZXcKdGFibGUgY2FuIGJlIHJlcGxpY2F0ZWQg d2l0aG91dCBoYXZpbmcgdG8gbWFudWFsbHkgcnVuCiJBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJF RlJFU0ggUFVCTElDQVRJT04iLgoKLSBGb3Igbm9uLXJld3JpdGUgQUxURVIgb2JqZWN0IGNvbW1h bmQgYW5kCi0gICAgIENSRUFURSBvYmplY3QgY29tbWFuZDoKd2UgZGVwYXJzZSB0aGUgY29tbWFu ZCBhdCBkZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUKZGVwYXJz ZWQganNvbiBzdHJpbmcuIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBp dCB0bwpzdWJzY3JpYmVyIGlmIHRoZSBjcmVhdGVkL2FsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVk LiBJdCBzdXBwb3J0cyBtb3N0IG9mCkFMVEVSIFRBQkxFIGNvbW1hbmQgZXhjZXB0IHNvbWUgY29t bWFuZHMoRERMIHJlbGF0ZWQgdG8gUEFSVElUSU9ORUQgVEFCTEUKLi4uKSB0aGF0IGludHJvZHVj ZWQgcmVjZW50bHkgd2hpY2ggaGF2ZW4ndCBiZWVuIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudApk ZGxfZGVwYXJzZXIsIHdlIHdpbGwgc3VwcG9ydCB0aGF0IGxhdGVyLgoKLSBGb3IgRFJPUCBvYmpl Y3Q6ClRoZSAnY29tbWFuZCBzdGFydCcgZXZlbnQgaGFuZGxlciBsb2dzIGEgZGRsIG1lc3NhZ2Ug d2l0aCB0aGUgcmVsaWRzIG9mCnRoZSB0YWJsZXMgdGhhdCBhcmUgZHJvcHBlZCB3aGljaCB0aGUg b3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHN0b3JlcyBpbgppdHMgaW50ZXJuYWwgZGF0YSBzdHJ1 Y3R1cmUgYWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgaXQgaXMgZm9yIGEgdGFibGUgdGhhdCBpcwpwYXJ0 IG9mIHRoZSBwdWJsaWNhdGlvbi4gTGF0ZXIgdGhlICdjb21tYW5kIGVuZCcgZXZlbnQgaGFuZGxl ciBzZW5kcyB0aGUKYWN0dWFsIGRyb3AgbWVzc2FnZS4gUGdvdXRwdXQgb24gcmVjZWl2aW5nIHRo ZSBjb21tYW5kIGVuZCwgb25seSBzZW5kcyBvdXQKdGhlIGRyb3AgY29tbWFuZCBvbmx5IGlmIGl0 IGlzIGZvciBvbmUgb2YgdGhlIHJlbGlkcyBtYXJrZWQgZm9yIGRlbGV0aW5nLgoKVGhlIHJlYXNv biB3ZSBoYXZlIHRvIGRvIHRoaXMgaXMgYmVjYXVzZSwgb25jZSB0aGUgbG9naWNhbCBkZWNvZGVy CnJlY2VpdmVzIHRoZSAnY29tbWFuZCBlbmQnIG1lc3NhZ2UsICB0aGUgcmVsaWQgb2YgdGhlIHRh YmxlIGlzIG5vIGxvbmdlcgp2YWxpZCBhcyBpdCBoYXMgYmVlbiBkZWxldGVkIGFzIHBhcnQgb2Yg aW52YWxpZGF0aW9ucyByZWNlaXZlZCBmb3IgdGhlCmRyb3AgdGFibGUgY29tbWFuZC4gSXQgaXMg bm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHZlcmlmeSBpZiB0aGUgdGFibGUgaXMKcGFydCBvZiB0aGUg cHVibGljYXRpb24gbGlzdCBvciBub3QuIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgSSBoYXZlIGFk ZGVkCnR3byBtb3JlIGVsZW1lbnRzIHRvIHRoZSBkZGwgeGxvZyBhbmQgZGRsIG1lc3NhZ2UsIChy ZWxpZCBhbmQgY21kdHlwZSkuCgpXZSBjb3VsZCBoYXZlIGFsc28gaGFuZGxlZCBhbGwgdGhpcyBv biB0aGUgc3Vic2NyaWJlciBzaWRlIGFzIHdlbGwsIGJ1dAp0aGF0IHdvdWxkIG1lYW4gc2VuZGlu ZyBzcHVyaW91cyBkZGwgbWVzc2FnZXMgZm9yIHRhYmxlcyB0aGF0IGFyZSBub3QgcGFydApvZiB0 aGUgcHVibGljYXRpb24uCgotIEZvciB0YWJsZV9yZXdyaXRlIEFMVEVSIFRBQkxFIGNvbW1hbmQ6 CihBTFRFUiBDT0xVTU4gVFlQRSwgQUREIENPTFVNTiBERUZBVUxULCBTRVQgTE9HR0VELCBTRVQg QUNDRVNTIE1FVEhPRCkKCndlIGRlcGFyc2UgdGhlIGNvbW1hbmQgYW5kIFdBTCBsb2cgdGhlIGRl cGFyc2VkIGpzb24gc3RyaW5nIGF0CnRhYmxlX3Jld3JpdGUgZXZlbnQgdHJpZ2dlci4gVGhlIFdB TFNlbmRlciBkZWNvZGVzIHRoZSBXQUwgYW5kIHNlbmRzIGl0IHRvCnN1YnNjcmliZXIgaWYgdGhl IGFsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVkLiBUaGVuLCB0aGUgV0FMU2VuZGVyIHdpbGwKY29u dmVydCB0aGUgdXBjb21pbmcgcmV3cml0ZSBJTlNFUlRzIHRvIFVQREFURXMgYW5kIHNlbmQgdGhl bSB0bwpzdWJzY3JpYmVyIHNvIHRoYXQgdGhlIGRhdGEgYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1 YnNjcmliZXIgY2FuIGFsd2F5cyBiZQpjb25zaXN0ZW50LiBOb3RlIHRoYXQgdGhlIHRhYmxlcyB0 aGF0IHB1Ymxpc2ggcmV3cml0ZSBkZGwgbXVzdCBoYXZlIGEKcmVwbGljYSBpZGVudGl0eSBjb25m aWd1cmVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcmVwbGljYXRlIHRoZSB1cGNvbWluZwpyZXdy aXRlIFVQREFURXMuCgpXZSBkbyB0aGlzIHdheSBiZWNhdXNlIG9mIHR3byByZWFzb246CigxKSBU aGUgZGF0YSBiZWZvcmUgdGhlIHJld3JpdGUgZGRsIGNvdWxkIGFscmVhZHkgYmUgZGlmZmVyZW50 IGFtb25nCnB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4gVG8gbWFrZSBzdXJlIHRoZSBleHRyYSBk YXRhIGluIHN1YnNjcmliZXIgd2hpY2gKZG9lc24ndCBleGlzdCBpbiBwdWJsaXNoZXIgYWxzbyBn ZXQgcmV3cml0dGVuLCB3ZSBuZWVkIHRvIGxldCB0aGUKc3Vic2NyaWJlciBleGVjdXRlIHRoZSBv cmlnaW5hbCByZXdyaXRlIGRkbCB0byByZXdyaXRlIGFsbCB0aGUgZGF0YSBhdApmaXJzdC4KCigy KSB0aGUgZGF0YSBhZnRlciBleGVjdXRpbmcgcmV3cml0ZSBkZGwgY291bGQgYmUgZGlmZmVyZW50 IGFtb25nCnB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlcihkdWUgdG8gZGlmZmVyZW50IGZ1bmN0aW9u cy9vcGVyYXRvcnMgdXNlZCBkdXJpbmcKcmV3cml0ZSksIHNvIHdlIG5lZWQgdG8gcmVwbGljYXRl IHRoZSByZXdyaXRlIFVQREFURXMgdG8ga2VlcCB0aGUgZGF0YQpjb25zaXN0ZW50LgoKVE8gSU1Q Uk9WRToKVGhpcyBhcHByb2FjaCBjb3VsZCBiZSBpbXByb3ZlZCBieSBsZXR0aW5nIHRoZSBzdWJz Y3JpYmVyIHRyeSB0byB1cGRhdGUKdGhlIGV4dHJhIGRhdGEgaXRzZWxmIGluc3RlYWQgb2YgZG9p bmcgZnVsbHkgcmV3cml0ZSBkZGwgYW5kIHVzZSB0aGUKdXBjb21pbmcgcmV3cml0ZSBVUERBVEVz IHRvIHJld3JpdGUgdGhlIHJlc3QgZGF0YS4gVG8gYWNoaWV2ZSB0aGlzLCB3ZQpjb3VsZCBtb2Rp ZnkgdGhlIGRlcGFyc2VkIGpzb24gc3RyaW5nIHRvIHRlbXBvcmFyaWx5IHJlbW92ZSB0aGUgcmV3 cml0ZQpwYXJ0IGFuZCBhZGQgc29tZSBsb2dpYyBpbiBzdWJzY3JpYmVyIHRvIHVwZGF0ZSB0aGUg ZXh0cmEgZGF0YS4KQmVzaWRlcywgd2UgbWF5IG5vdCBuZWVkIHRvIHNlbmQgcmV3cml0ZSBjaGFu Z2VzIGZvciBhbGwgdHlwZSBvZiByZXdyaXRlCmRkbCwgZm9yIGV4YW1wbGUsIGl0IHNlZW1zIGZp bmUgdG8gc2tpcCBzZW5kaW5nIHJld3JpdGUgY2hhbmdlcyBmb3IgQUxURVIKVEFCTEUgU0VUIExP R0dFRCBhcyB0aGUgZGF0YSBpbiB0aGUgdGFibGUgZG9lc24ndCBhY3R1YWxseSBiZSBjaGFuZ2Vk LiBXZQpjb3VsZCB1c2UgdGhlIGRlcGFyc2VyIGFuZCBldmVudCB0cmlnZ2VyIHRvIGZpbHRlciB0 aGVzZSBkZGxzIGFuZCBza2lwCnNlbmRpbmcgcmV3cml0ZSBjaGFuZ2VzIGZvciB0aGVtLgotLS0K IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0ICAgICAgICB8ICAgMjYgKwog Y29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsICAgICAgICAgICAgIHwgICAgNSArCiBj b250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgICAgfCAgIDQ4ICsKIGRv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8IDEwNDUgKysrKysr KysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSAgICAgICAg ICB8ICAgIDEgKwogLi4uL2FjY2Vzcy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jICAgICAg IHwgICA1MiArCiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAg fCAgICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgICAgIHwg ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICAgfCAg ICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8ICAy MzQgKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgIHwg ICAgMiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYyAgfCAg IDg0ICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyAgfCAg MzYwICsrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAg IHwgICA0MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyAgICAg fCAgIDkzICsrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAgICAg fCAgIDI0ICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQgICB8 ICAgIDIgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwg ICA0MyArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAg MTM1ICsrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDI0MCArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAg fCAgMTkwICsrLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAgICAgICAg IHwgICAyNiArLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICAg IHwgICAgNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAg IHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgIDc4ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8 ICAgIDIgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9ybWdyZGVzYy5jICAgICAgICAgICAgICAgICB8 ICAgIDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwg ICAzMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggICAgICAgICAgICAgICAgIHwg ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg IDIwICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAg MzAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oICAgICAgICB8ICAg MTQgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oICAgICAgICAgIHwgICA2 MCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCAgICAgICAgICAgICAgfCAgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8ICAgIDQg Kwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oICAgICAgIHwgICAyNyAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAgICAxICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAgMzkgKwog c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWcuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQog c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAgIHwgIDM4NiArKyst LS0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAgICAgIHwgICAgNiAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICAgIHwgIDQyMCAr KystLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAg ICA1ICsKIDQ2IGZpbGVzIGNoYW5nZWQsIDMzMTMgaW5zZXJ0aW9ucygrKSwgNDg1IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9sb2dp Y2FsZGRsbXNnZGVzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZGxtZXNzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVj dGVkL2RkbC5vdXQKaW5kZXggOWEyOGI1ZGRjNS4uMGY1MWYyYjQxYSAxMDA2NDQKLS0tIGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKKysrIGIvY29udHJpYi90ZXN0X2Rl Y29kaW5nL2V4cGVjdGVkL2RkbC5vdXQKQEAgLTgzMSw2ICs4MzEsMzIgQEAgU0VMRUNUIGRhdGEg RlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEws IE5VTEwsICdpbmMKIC0tLS0tLQogKDAgcm93cykKIAorU0VMRUNUICdkZGwgbXNnMScgRlJPTSBw Z19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cxJywgMTYzOTQsIDEsICdtc2cxJyk7 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzEKKygxIHJvdykKKworU0VMRUNUICdk ZGwgbXNnMicgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cyJywgMTYz OTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgU0NIRU1BICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1J ICV7YXV0aG9yaXphdGlvbn1zIiwgIm5hbWUiOiAiZm9vIiwgImF1dGhvcml6YXRpb24iOiB7ImZt dCI6ICJBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXphdGlvbl9yb2xlfUkiLCAicHJlc2VudCI6IGZh bHNlLCAiYXV0aG9yaXphdGlvbl9yb2xlIjogbnVsbH0sICJpZl9ub3RfZXhpc3RzIjogIiJ9Jyk7 CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzIKKygxIHJvdykKKworU0VMRUNUICdk ZGwgbXNnMycgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2czJywgMTYz OTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4 aXN0c31zICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9lbGVtZW50czosIH1zKSAle2luaGVyaXRzfXMg JXt0YWJsZXNwYWNlfXMgJXtvbl9jb21taXR9cyAle3BhcnRpdGlvbl9ieX1zICV7YWNjZXNzX21l dGhvZH1zICV7d2l0aF9jbGF1c2V9cyIsICJpZGVudGl0eSI6IHsib2JqbmFtZSI6ICJmb28iLCAi c2NoZW1hbmFtZSI6ICJlbGVtZW50X3Rlc3QifSwgImluaGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJ VFMgKCV7cGFyZW50czosIH1EKSIsICJwYXJlbnRzIjogbnVsbCwgInByZXNlbnQiOiBmYWxzZX0s ICJvbl9jb21taXQiOiB7ImZtdCI6ICJPTiBDT01NSVQgJXtvbl9jb21taXRfdmFsdWV9cyIsICJw cmVzZW50IjogZmFsc2UsICJvbl9jb21taXRfdmFsdWUiOiBudWxsfSwgInRhYmxlc3BhY2UiOiB7 ImZtdCI6ICJUQUJMRVNQQUNFICV7dGFibGVzcGFjZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgInRh Ymxlc3BhY2UiOiBudWxsfSwgInBlcnNpc3RlbmNlIjogIiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10 IjogIldJVEgiLCAicHJlc2VudCI6IGZhbHNlfSwgInBhcnRpdGlvbl9ieSI6IHsiZm10IjogIlBB UlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsICJwcmVzZW50IjogZmFsc2UsICJkZWZpbml0aW9u IjogbnVsbH0sICJhY2Nlc3NfbWV0aG9kIjogeyJmbXQiOiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9k fUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYWNjZXNzX21ldGhvZCI6IG51bGx9LCAiaWZfbm90X2V4 aXN0cyI6ICIiLCAidGFibGVfZWxlbWVudHMiOiBbeyJmbXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBl fVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cyAl e25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5lcmF0ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJp ZCIsICJ0eXBlIjogImNvbHVtbiIsICJjb2x0eXBlIjogeyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5 IjogZmFsc2UsICJ0eXBlbmFtZSI6ICJpbnQ0IiwgInNjaGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9 LCAiZGVmYXVsdCI6IHsiZm10IjogIkRFRkFVTFQiLCAicHJlc2VudCI6IGZhbHNlfSwgIm5vdF9u dWxsIjogIiIsICJjb2xsYXRpb24iOiB7ImZtdCI6ICJDT0xMQVRFIiwgInByZXNlbnQiOiBmYWxz ZX0sICJjb2xzdG9yYWdlIjogInBsYWluIiwgImNvbXByZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJF U1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIsICJwcmVzZW50IjogZmFsc2UsICJjb21wcmVz c2lvbl9tZXRob2QiOiBudWxsfSwgImdlbmVyYXRlZF9jb2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFU RUQgQUxXQVlTIEFTIiwgInByZXNlbnQiOiBmYWxzZX19XX19Jyk7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgZGRsIG1zZzMKKygxIHJvdykKKworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtZXNzYWdlOiBwcmVmaXg6IGRkbCBt c2cxLCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3Agc3RhcnQsIHN6OiA0IGNvbnRlbnQ6bXNn MQorIG1lc3NhZ2U6IHByZWZpeDogZGRsIG1zZzIsIHJlbGlkOiAxNjM5NCwgY21kdHlwZTogRHJv cCBzdGFydCwgc3o6IDIxNyBjb250ZW50OnsiZm10IjogIkNSRUFURSBTQ0hFTUEgJXtpZl9ub3Rf ZXhpc3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAibmFtZSI6ICJmb28iLCAiYXV0 aG9yaXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXthdXRob3JpemF0aW9uX3JvbGV9 SSIsICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3JvbGUiOiBudWxsfSwgImlmX25v dF9leGlzdHMiOiAiIn0KKyBtZXNzYWdlOiBwcmVmaXg6IGRkbCBtc2czLCByZWxpZDogMTYzOTQs IGNtZHR5cGU6IERyb3Agc3RhcnQsIHN6OiAxMzk2IGNvbnRlbnQ6eyJmbXQiOiAiQ1JFQVRFICV7 cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgKCV7dGFi bGVfZWxlbWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFjZX1zICV7b25fY29tbWl0 fXMgJXtwYXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNlfXMiLCAi aWRlbnRpdHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUiOiAiZWxlbWVudF90ZXN0 In0sICJpbmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCkiLCAicGFy ZW50cyI6IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0IjogeyJmbXQiOiAiT04g Q09NTUlUICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZhbHNlLCAib25fY29tbWl0 X3ZhbHVlIjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFCTEVTUEFDRSAle3RhYmxl c3BhY2V9SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjogbnVsbH0sICJwZXJzaXN0 ZW5jZSI6ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwgInByZXNlbnQiOiBmYWxz ZX0sICJwYXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0aW9ufXMi LCAicHJlc2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAiYWNjZXNzX21ldGhvZCI6 IHsiZm10IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImFj Y2Vzc19tZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwgInRhYmxlX2VsZW1lbnRz IjogW3siZm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0UgJXtjb2xzdG9yYWdlfXMg JXtjb21wcmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zICV7 Z2VuZXJhdGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6ICJjb2x1bW4iLCAiY29s dHlwZSI6IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAidHlwZW5hbWUiOiAiaW50 NCIsICJzY2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQiOiB7ImZtdCI6ICJERUZB VUxUIiwgInByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAiY29sbGF0aW9uIjogeyJm bXQiOiAiQ09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3RvcmFnZSI6ICJwbGFpbiIs ICJjb21wcmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25fbWV0aG9k fUkiLCAicHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9kIjogbnVsbH0sICJnZW5l cmF0ZWRfY29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBBUyIsICJwcmVzZW50Ijog ZmFsc2V9fV19fQorKDMgcm93cykKKwogU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgn cmVncmVzc2lvbl9zbG90Jyk7CiAgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90IAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwv ZGRsLnNxbCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbAppbmRleCA0Zjc2YmVk NzJjLi4xZWE1YTRiMjcxIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2Rk bC5zcWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCkBAIC00MzEsNiAr NDMxLDExIEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdy ZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jCiAtLSBkb25lLCBmcmVlIGxvZ2ljYWwg cmVwbGljYXRpb24gc2xvdAogU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKIAorU0VMRUNUICdkZGwgbXNnMScgRlJPTSBwZ19s b2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBtc2cxJywgMTYzOTQsIDEsICdtc2cxJyk7CitT RUxFQ1QgJ2RkbCBtc2cyJyBGUk9NIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1z ZzInLCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFURSBTQ0hFTUEgJXtpZl9ub3RfZXhpc3RzfXMg JXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAibmFtZSI6ICJmb28iLCAiYXV0aG9yaXphdGlv biI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXthdXRob3JpemF0aW9uX3JvbGV9SSIsICJwcmVz ZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3JvbGUiOiBudWxsfSwgImlmX25vdF9leGlzdHMi OiAiIn0nKTsKK1NFTEVDVCAnZGRsIG1zZzMnIEZST00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNz YWdlKCdkZGwgbXNnMycsIDE2Mzk0LCAxLCAneyJmbXQiOiAiQ1JFQVRFICV7cGVyc2lzdGVuY2V9 cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lkZW50aXR5fUQgKCV7dGFibGVfZWxlbWVudHM6 LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFjZX1zICV7b25fY29tbWl0fXMgJXtwYXJ0aXRp b25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dpdGhfY2xhdXNlfXMiLCAiaWRlbnRpdHkiOiB7 Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUiOiAiZWxlbWVudF90ZXN0In0sICJpbmhlcml0 cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVudHM6LCB9RCkiLCAicGFyZW50cyI6IG51bGws ICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0IjogeyJmbXQiOiAiT04gQ09NTUlUICV7b25f Y29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZhbHNlLCAib25fY29tbWl0X3ZhbHVlIjogbnVs bH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9SSIsICJw cmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjogbnVsbH0sICJwZXJzaXN0ZW5jZSI6ICIiLCAi d2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwgInByZXNlbnQiOiBmYWxzZX0sICJwYXJ0aXRp b25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0aW9ufXMiLCAicHJlc2VudCI6 IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAiYWNjZXNzX21ldGhvZCI6IHsiZm10IjogIlVT SU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImFjY2Vzc19tZXRob2Qi OiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwgInRhYmxlX2VsZW1lbnRzIjogW3siZm10Ijog IiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0UgJXtjb2xzdG9yYWdlfXMgJXtjb21wcmVzc2lv bn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1zICV7ZGVmYXVsdH1zICV7Z2VuZXJhdGVkX2Nv bHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6ICJjb2x1bW4iLCAiY29sdHlwZSI6IHsidHlw bW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAidHlwZW5hbWUiOiAiaW50NCIsICJzY2hlbWFu YW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQiOiB7ImZtdCI6ICJERUZBVUxUIiwgInByZXNl bnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAiY29sbGF0aW9uIjogeyJmbXQiOiAiQ09MTEFU RSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3RvcmFnZSI6ICJwbGFpbiIsICJjb21wcmVzc2lv biI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25fbWV0aG9kfUkiLCAicHJlc2Vu dCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9kIjogbnVsbH0sICJnZW5lcmF0ZWRfY29sdW1u IjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBBUyIsICJwcmVzZW50IjogZmFsc2V9fV19fScp OworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Np b25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhh Y3RzJywgJzEnKTsKKwogU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lv bl9zbG90Jyk7CiAKIC8qIGNoZWNrIHRoYXQgdGhlIHNsb3QgaXMgZ29uZSAqLwpkaWZmIC0tZ2l0 IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXggNjI4YzZhMjU5NS4uNzYzZDVjMDA3ZiAxMDA2 NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250 cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCkBAIC0xNCw5ICsxNCwxMSBAQAogCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxt ZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJl cGxpY2F0aW9uL29yaWdpbi5oIgogCisjaW5jbHVkZSAidGNvcC9kZGxfZGVwYXJzZS5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcyLDYgKzc0LDEyIEBAIHN0YXRpYyB2b2lk IHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkg IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJICBib29sIHRy YW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkgIFNpemUgc3osIGNvbnN0 IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdfZGVjb2RlX2RkbF9tZXNzYWdlKExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4s CisJCQkJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJICBjb25zdCBjaGFy ICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJCQkJICBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5 cGUsCisJCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBzdGF0aWMgYm9v bCBwZ19kZWNvZGVfZmlsdGVyX3ByZXBhcmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAog CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIGNvbnN0IGNoYXIgKmdpZCk7 CkBAIC0xMzUsNiArMTQzLDcgQEAgX1BHX291dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5D YWxsYmFja3MgKmNiKQogCWNiLT5maWx0ZXJfYnlfb3JpZ2luX2NiID0gcGdfZGVjb2RlX2ZpbHRl cjsKIAljYi0+c2h1dGRvd25fY2IgPSBwZ19kZWNvZGVfc2h1dGRvd247CiAJY2ItPm1lc3NhZ2Vf Y2IgPSBwZ19kZWNvZGVfbWVzc2FnZTsKKwljYi0+ZGRsX2NiID0gcGdfZGVjb2RlX2RkbF9tZXNz YWdlOwogCWNiLT5maWx0ZXJfcHJlcGFyZV9jYiA9IHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZTsK IAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnX2RlY29kZV9iZWdpbl9wcmVwYXJlX3R4bjsKIAlj Yi0+cHJlcGFyZV9jYiA9IHBnX2RlY29kZV9wcmVwYXJlX3R4bjsKQEAgLTc1MCw2ICs3NTksNDUg QEAgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCU91dHB1 dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitwZ19kZWNvZGVfZGRs X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCisJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgY29uc3QgY2hhciAqcHJlZml4LCBP aWQgcmVsaWQsCisJCQkJCSAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLCBTaXplIHN6LCBj b25zdCBjaGFyICptZXNzYWdlKQoreworCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRy dWUpOworCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJtZXNzYWdlOiBwcmVmaXg6ICVzLCBy ZWxpZDogJXUsICIsCisJCQkJCSBwcmVmaXgsIHJlbGlkKTsKKworCXN3aXRjaChjbWR0eXBlKQor CXsKKwljYXNlIERDVF9TaW1wbGVDbWQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJj bWR0eXBlOiBTaW1wbGUsICIpOworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZURyb3BTdGFydDoK KwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IERyb3Agc3RhcnQsICIpOwor CQlicmVhazsKKwljYXNlIERDVF9UYWJsZURyb3BFbmQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4 LT5vdXQsICJjbWR0eXBlOiBEcm9wIGVuZCwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX1RhYmxl QWx0ZXI6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBBbHRlciB0YWJs ZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX09iamVjdENyZWF0ZToKKwkJYXBwZW5kU3RyaW5n SW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IENyZWF0ZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENU X09iamVjdERyb3A6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9w LCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwg ImNtZHR5cGU6IEludmFsaWQsICIpOworCQlicmVhazsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZv KGN0eC0+b3V0LCAic3o6ICV6dSBjb250ZW50OiIsIHN6KTsKKwlhcHBlbmRCaW5hcnlTdHJpbmdJ bmZvKGN0eC0+b3V0LCBtZXNzYWdlLCBzeik7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVl KTsKK30KKwogc3RhdGljIHZvaWQKIHBnX2RlY29kZV9zdHJlYW1fc3RhcnQoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA2MzU4YzVkYTA1Li45YjU2NjNlMWY1IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0NTAsNiArMTQ1MCwxMDUx IEBAIHRlc3Rfc3ViPSMgU0VMRUNUICogRlJPTSB0MSBPUkRFUiBCWSBpZDsKIAogIDwvc2VjdDE+ CiAKKyA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tZGRsIj4KKyAgPHRpdGxlPkRETCBS ZXBsaWNhdGlvbjwvdGl0bGU+CisgIDxwYXJhPgorICAgIERhdGEgRGVmaW5pdGlvbiBDb21tYW5k cyAoRERMcykgY2FuIGJlIHJlcGxpY2F0ZWQgdXNpbmcgbG9naWNhbCByZXBsaWNhdGlvbi4KKyAg ICBXaGlsZSBlbmFibGVkIHRoaXMgZmVhdHVyZSBhdXRvbWF0aWNhbGx5IHJlcGxpY2F0ZXMgc3Vw cG9ydGVkIERETCBjb21tYW5kcworICAgIHRoYXQgYXJlIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCBv biBhIHB1Ymxpc2hlciB0byBhIHN1YnNjcmliZXIuIFRoaXMgaXMKKyAgICBlc3BlY2lhbGx5IHVz ZWZ1bCBpZiB5b3UgaGF2ZSBsb3RzIHNjaGVtYSBjaGFuZ2VzIG92ZXIgdGltZSB0aGF0IG5lZWQg cmVwbGljYXRpb24uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgICBGb3IgZXhhbXBsZSwgd2hl biBlbmFibGVkIGEgQ1JFQVRFIFRBQkxFIGNvbW1hbmQgZXhlY3V0ZWQgb24gdGhlIHB1Ymxpc2hl ciBnZXRzCisgICAgV0FMLWxvZ2dlZCwgYW5kIGZvcndhcmRlZCB0byB0aGUgc3Vic2NyaWJlciB0 byByZXBsYXk7IGEgc3Vic2VxdWVudCAiQUxURVIKKyAgICBTVUJTQ1JJUFRJT04gLi4uIFJFRlJF U0ggUFVCTElDQVRJT04iIGlzIHJ1biBvbiB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZSBzbyBhbnkK KyAgICBmb2xsb3dpbmcgRE1MIGNoYW5nZXMgb24gdGhlIG5ldyB0YWJsZSBjYW4gYmUgcmVwbGlj YXRlZCB3aXRob3V0IGEgaGl0Y2guCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgICBEREwgcmVw bGljYXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgaXQgY2FuIGJlIGVuYWJsZWQgYXQgZGlm ZmVyZW50IGxldmVscworICAgIHVzaW5nIHRoZSBkZGwgUFVCTElDQVRJT04gb3B0aW9uLiBUaGlz IG9wdGlvbiBjdXJyZW50bHkgaGFzIHR3byBsZXZlbHMgYW5kIGFyZQorICAgIG9ubHkgYWxsb3dl ZCB0byBiZSBzZXQgaWYgdGhlIFBVQkxJQ0FUSU9OIGlzIEZPUiBBTEwgVEFCTEVTLgorICA8L3Bh cmE+CisKKyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICAgdGFibGU6IHRoaXMgb3B0aW9uIGVuYWJsZXMgcmVwbGljYXRpb24gb2YgVGFibGUgRERM IGNvbW1hbmRzLAorICAgICAgICB3aGljaCBpbmNsdWRlOgorICAgICAgICA8aXRlbWl6ZWRsaXN0 PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAg ICBDUkVBVEUvQUxURVIvRFJPUCBUQUJMRQorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAg IDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIEFTCisgICAgICAgICAgICA8L3BhcmE+CisgICAg ICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4KKworICA8c2VjdDIgaWQ9ImRk bC1yZXBsaWNhdGlvbi1vcHRpb24tZXhhbXBsZXMiPgorICAgIDx0aXRsZT5FeGFtcGxlcyAtIFNl dHVwIERETCBSZXBsaWNhdGlvbiBvbiB0aGUgUHVibGlzaGVyPC90aXRsZT4KKworICAgIDxwYXJh PgorICAgICAgRW5hYmxlIHRhYmxlIGRkbCByZXBsaWNhdGlvbiBmb3IgYW4gZXhpc3RpbmcgUHVi bGljYXRpb246Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YiBTRVQg KGRkbCA9ICd0YWJsZScpOworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisKKyAgPC9zZWN0Mj4K KworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1zdXBwb3J0ZWQtY29tbWFuZHMiPgorICAg IDx0aXRsZT5TdXBwb3J0ZWQgRERMIGNvbW1hbmRzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAg ICAgVGhlIERETCBjb21tYW5kcyBzdXBwb3J0ZWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gYXJl IGxpc3RlZCBpbiB0aGUgZm9sbG93aW5nCisgICAgICBtYXRyaXguIE5vdGUgdGhhdCBnbG9iYWwg Y29tbWFuZHMgY2FuIGJlIGV4ZWN1dGVkIGF0IGFueSBkYXRhYmFzZSBhbmQgYXJlIGN1cnJlbnRs eQorICAgICAgbm90IHN1cHBvcnRlZCBmb3IgcmVwbGljYXRpb24sIGdsb2JhbCBjb21tYW5kcyBp bmNsdWRlIFJPTEUgc3RhdGVtZW50cywgRGF0YWJhc2UKKyAgICAgIHN0YXRlbWVudHMsIFRhYmxl U3BhY2Ugc3RhdGVtZW50cyBhbmQgc29tZSBvZiB0aGUgR3JhbnRTdG10L1Jldm9rZVN0bXQgaWYg dGhlIHRhcmdldAorICAgICAgb2JqZWN0IGlzIGEgZ2xvYmFsIG9iamVjdC4KKyAgICA8L3BhcmE+ CisKKyAgICA8dGFibGUgaWQ9ImRkbC1yZXBsaWNhdGlvbi1ieS1jb21tYW5kLXRhZyI+CisgICAg ICA8dGl0bGU+RERMIFJlcGxpY2F0aW9uIFN1cHBvcnQgYnkgQ29tbWFuZCBUYWc8L3RpdGxlPgor ICAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMSIg Y29sd2lkdGg9IjIqIi8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDIiIGNvbHdpZHRo PSIxKiIvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wzIiBjb2x3aWR0aD0iMSoiLz4K KyAgICAgIDx0aGVhZD4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+Q29tbWFuZCBUYWc8 L2VudHJ5PgorICAgICAgICA8ZW50cnk+Rm9yIFJlcGxpY2F0aW9uPC9lbnRyeT4KKyAgICAgICAg PGVudHJ5Pk5vdGVzPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGhlYWQ+CisgICAg ICA8dGJvZHk+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5BTFRFUiBBR0dSRUdBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgQ0FTVDwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5B TFRFUiBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgQ09OVkVSU0lPTjwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9y b3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5B TFRFUiBEQVRBQkFTRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBERUZBVUxUIFBSSVZJTEVHRVM8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+QUxURVIgRE9NQUlOPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEVWRU5UIFRSSUdHRVI8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+QUxURVIgRVhURU5TSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEZPUkVJR04gREFUQSBXUkFQ UEVSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkFMVEVSIEZPUkVJR04gVEFCTEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgRlVO Q1RJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgSU5ERVg8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgTEFOR1VBR0U8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+QUxURVIgTEFSR0UgT0JKRUNUPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE1BVEVSSUFM SVpFRCBWSUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9Q RVJBVE9SIENMQVNTPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5BTFRFUiBQT0xJQ1k8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgUFJPQ0VEVVJFPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFM VEVSIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFJPTEU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIg Uk9VVElORTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBSVUxFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBTQ0hFTUE8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+QUxURVIgU0VRVUVOQ0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU0VSVkVSPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkFMVEVSIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgU1VCU0NSSVBUSU9OPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkFMVEVSIFNZU1RFTTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBUQUJMRTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5BTFRFUiBUQUJMRVNQQUNFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRFWFQgU0VBUkNIIENPTkZJR1VS QVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0ggRElDVElPTkFSWTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5BTFRFUiBURVhUIFNFQVJDSCBQQVJTRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVEVYVCBTRUFSQ0gg VEVNUExBVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVFJBTlNGT1JNPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIFRS SUdHRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+QUxURVIgVFlQRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTFRFUiBVU0VSIE1BUFBJ Tkc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+QUxURVIgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5BTkFMWVpFPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkJFR0lOPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkNBTEw8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q0hFQ0tQT0lOVDwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAg PC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJh bD5DTE9TRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5DTE9TRSBDVVJTT1I8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q0xPU0UgQ1VSU09S IEFMTDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5DTFVTVEVSPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNPTU1FTlQ8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwv cm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+ Q09NTUlUPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkNPTU1JVCBQUkVQQVJFRDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DT1BZPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNPUFkgRlJPTTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgQUNDRVNTIE1FVEhPRDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5DUkVBVEUgQUdHUkVHQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBDQVNUPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkNSRUFURSBDT0xMQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIENPTlNUUkFJTlQ8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIENPTlZFUlNJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIERBVEFCQVNFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkNSRUFURSBET01BSU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEVWRU5UIFRSSUdHRVI8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+Q1JFQVRFIEVYVEVOU0lPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgRk9SRUlHTiBEQVRBIFdS QVBQRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIEZPUkVJR04gVEFCTEU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRF IEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBJTkRFWDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgTEFO R1VBR0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIE1BVEVSSUFMSVpFRCBWSUVXPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNS RUFURSBPUEVSQVRPUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNl bnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgT1BFUkFUT1IgQ0xBU1M8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAg IDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVy YWw+Q1JFQVRFIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgUE9MSUNZPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkNSRUFURSBQUk9DRURVUkU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFBVQkxJQ0FUSU9OPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkNSRUFURSBST0xFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBSVUxFPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8 L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFs PkNSRUFURSBTQ0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNFUVVFTkNFPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNS RUFURSBTRVJWRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JF QVRFIFNVQlNDUklQVElPTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVEFCTEU8L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93 PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JF QVRFIFRBQkxFIEFTPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBUQUJMRVNQQUNFPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNS RUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNF QVJDSCBESUNUSU9OQVJZPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i Y2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBURVhUIFNFQVJDSCBQQVJTRVI8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+Q1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBU UkFOU0ZPUk08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRSSUdHRVI8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAg ICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFRZ UEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+Q1JFQVRFIFVTRVIgTUFQUElORzwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUgVklF VzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5ERUFMTE9DQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRFQUxMT0NBVEUgQUxMPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkRFQ0xBUkUgQ1VSU09SPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRFTEVURTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5ESVND QVJEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRJU0NBUkQgQUxMPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRJU0NBUkQgUExBTlM8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RElTQ0FSRCBTRVFVRU5DRVM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RElTQ0FSRCBURU1QPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkRPPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQUNDRVNTIE1FVEhPRDwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9Q IEFHR1JFR0FURTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIENBU1Q8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBDT0xMQVRJ T048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+RFJPUCBDT05TVFJBSU5UPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8 cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgQ09OVkVSU0lP TjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50 cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48bGl0ZXJhbD5EUk9QIERBVEFCQVNFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRE9NQUlOPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPkRST1AgRVZFTlQgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEVYVEVOU0lPTjwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+Cisg ICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 bGl0ZXJhbD5EUk9QIEZPUkVJR04gREFUQSBXUkFQUEVSPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgRk9SRUlH TiBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIEZVTkNUSU9OPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgSU5ERVg8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBMQU5HVUFHRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE1BVEVSSUFMSVpFRCBW SUVXPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgT1BFUkFUT1I8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBPUEVSQVRPUiBD TEFTUzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9QRVJBVE9SIEZBTUlMWTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIE9X TkVEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0 ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9l bnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImxlZnQiPjxsaXRlcmFsPkRST1AgUE9MSUNZPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxl bnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAg IDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgUFJPQ0VEVVJFPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4t PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K KyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQi PjxsaXRlcmFsPkRST1AgUFVCTElDQVRJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBST0xFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkRST1AgUk9VVElORTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249 ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFJVTEU8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBT Q0hFTUE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxs aXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48 L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGln bj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTRVFVRU5DRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFNFUlZFUjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIFNUQVRJU1RJQ1M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBTVUJTQ1JJUFRJT048 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFs Pi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+RFJPUCBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRBQkxFU1BBQ0U8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+RFJPUCBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVEVY VCBTRUFSQ0ggRElDVElPTkFSWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxp Z249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFBBUlNFUjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+ LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+ CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48bGl0ZXJhbD5EUk9QIFRFWFQgU0VBUkNIIFRFTVBMQVRFPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAg ICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJB TlNGT1JNPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48 bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxp Z249ImxlZnQiPjxsaXRlcmFsPkRST1AgVFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRZUEU8L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5Pgor ICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+ PGxpdGVyYWw+RFJPUCBVU0VSIE1BUFBJTkc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RFJPUCBWSUVXPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkVYRUNVVEU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50 ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJs ZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+RVhQTEFJTjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5GRVRDSDwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5HUkFOVDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5HUkFOVCBST0xFPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAg ICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPklNUE9SVCBGT1JF SUdOIFNDSEVNQTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxy b3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+TElTVEVOPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPkxPQUQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+TE9DSyBUQUJMRTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5NRVJHRTwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0 ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAg ICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0 ZXJhbD5NT1ZFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVy Ij48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPk5PVElGWTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJv dz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5QUkVQQVJFPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPlBSRVBBUkUgVFJBTlNBQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVu dHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVBU1NJR04gT1dORUQ8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xp dGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAg ICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxp dGVyYWw+UkVGUkVTSCBNQVRFUklBTElaRUQgVklFVzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5SRUlOREVYPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPlJFTEVBU0U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJj ZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxl bnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVTRVQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg ICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAg IDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+UkVWT0tFPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAg ICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxs aXRlcmFsPlJFVk9LRSBST0xFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGln bj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJPTExCQUNLPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlJPTExC QUNLIFBSRVBBUkVEPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2Vu dGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50 cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlNBVkVQT0lOVDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAg ICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5TRUNVUklUWSBM QUJFTDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwv ZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWdu PSJsZWZ0Ij48bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFs aWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAg ICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+U0VUIENPTlNUUkFJTlRTPC9saXRlcmFs PjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRl cmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAg ICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRl cmFsPlNIT1c8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIi PjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0 Ij48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBh bGlnbj0ibGVmdCI+PGxpdGVyYWw+U1RBUlQgVFJBTlNBQ1RJT048L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPi08L2xpdGVyYWw+PC9lbnRy eT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5PgorICAgICAgIDwvcm93Pgor ICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PGxpdGVyYWw+VU5MSVNU RU48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRl cmFsPi08L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2Vu dHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0i bGVmdCI+PGxpdGVyYWw+VVBEQVRFPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBh bGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRy eSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPlZBQ1VVTTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+ CisgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3NlY3QyPgor CisgIDxzZWN0MiBpZD0iZGRsLXJlcGxpY2F0aW9uLWRkbC1kZXBhcnNlciI+CisgICAgPHRpdGxl PkRETCBEZXBhcnNlcjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgRERMIGRlcGFyc2Vy IHV0aWxpdHkgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHJlcGxpY2F0aW9uIG9mIERETHMuIFRoZSBE REwKKyAgICAgIGRlcGFyc2VyIGlzIGNhcGFibGUgb2YgY29udmVydGluZyBhIERETCBjb21tYW5k IGludG8gZm9ybWF0dGVkIEpTT04gYmxvYiwgd2l0aAorICAgICAgdGhlIG5lY2Vzc2FyeSBpbmZv cm1hdGlvbiB0byByZWNvbnN0cnVjdCB0aGUgRERMIGNvbW1hbmRzIGF0IHRoZSBkZXN0aW5hdGlv bi4gVGhlCisgICAgICBiZW5lZml0IG9mIHVzaW5nIHRoZSBkZXBhcnNlciBvdXRwdXQgY29tcGFy ZWQgdG8gdGhlIG9yaWdpbmFsIGNvbW1hbmQgc3RyaW5nCisgICAgICBpbmNsdWRlczoKKyAgICAg IDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICAgIEV2ZXJ5IGRhdGFiYXNlIG9iamVjdCBpbiB0aGUgZGVwYXJzZWQgb3V0cHV0IGlz IHNjaGVtYS1xdWFsaWZpZWQsIHNvIHRoYXQKKyAgICAgICAgICAgIHRoZXJlIGFyZSBubyBhbWJp Z3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRoIGNoYW5nZXMuCisgICAgICAg ICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBzdHJ1Y3R1cmVkIEpTT04gYW5kIHRoZSBm b3JtYXR0ZWQgb3V0cHV0IG1ha2VzIGl0IHBvc3NpYmxlIGZvcgorICAgICAgICAgICAgbWFjaGlu ZSBlZGl0aW5nLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIHN1YnNjcmliZXIgaXMgb24gYSBk aWZmZXJlbnQKKyAgICAgICAgICAgIFBHIHZlcnNpb24gYW5kIGhhcyBjZXJ0YWluIERETCBzeW50 YXggZGlmZmVyZW5jZXMgd2hpY2ggbmVlZCB0byBiZQorICAgICAgICAgICAgcmVzb2x2ZWQgYmVm b3JlIGFwcGx5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKworICAg ICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGUg RERMIGRlcGFyc2VyIGV4cG9zZXMgdHdvIFNRTCBmdW5jdGlvbnM6CisgICAgICA8aXRlbWl6ZWRs aXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBk ZGxfZGVwYXJzZV90b19qc29uOiBnaXZlbiBhIENvbGxlY3RlZENvbW1hbmQgZnJvbSBldmVudCB0 cmlnZ2VyLAorICAgICAgICAgICAgcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgaXQu IFRoZSBjb21tYW5kIGlzIGV4cGFuZGVkIGZ1bGx5CisgICAgICAgICAgICBzbyB0aGF0IHRoZXJl IGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZSBmYWNlIG9mIHNlYXJjaF9wYXRoCisgICAg ICAgICAgICBjaGFuZ2VzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBkZGxfZGVwYXJzZV9leHBh bmRfY29tbWFuZDogRXhwYW5kIEpTT04gZm9ybWF0IERETCBnZW5lcmF0ZWQgYnkKKyAgICAgICAg ICAgIGRkbF9kZXBhcnNlX3RvX2pzb24gdG8gYSBwbGFpbiBEREwgY29tbWFuZC4KKyAgICAgICAg ICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJsb2dpY2Fs LXJlcGxpY2F0aW9uLWNvbmZsaWN0cyI+CiAgIDx0aXRsZT5Db25mbGljdHM8L3RpdGxlPgogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgYi9zcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKaW5kZXggZjg4ZDcyZmQ4Ni4uMmZmMDFlNjli ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQpAQCAtMTgsNiArMTgsNyBAQCBP QkpTID0gXAogCWdpc3RkZXNjLm8gXAogCWhhc2hkZXNjLm8gXAogCWhlYXBkZXNjLm8gXAorCWxv Z2ljYWxkZGxtc2dkZXNjLm8gXAogCWxvZ2ljYWxtc2dkZXNjLm8gXAogCW14YWN0ZGVzYy5vIFwK IAluYnRkZXNjLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2xv Z2ljYWxkZGxtc2dkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRk bG1zZ2Rlc2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNWU5MzBj OTBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2xvZ2lj YWxkZGxtc2dkZXNjLmMKQEAgLTAsMCArMSw1MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogbG9naWNhbGRkbG1zZ2Rlc2MuYworICoJICBybWdyIGRlc2NyaXB0b3Igcm91dGluZXMgZm9y IHJlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDE1LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9sb2dpY2FsZGRsbXNnZGVzYy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNs dWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgor Cit2b2lkCitsb2dpY2FsZGRsbXNnX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQoreworCWNoYXIJICAgKnJlYyA9IFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CisJ dWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01BU0s7CisK KwlpZiAoaW5mbyA9PSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJeworCQl4bF9sb2dpY2Fs X2RkbF9tZXNzYWdlICp4bHJlYyA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIHJlYzsKKwkJ Y2hhcgkgICAqcHJlZml4ID0geGxyZWMtPm1lc3NhZ2U7CisJCWNoYXIJICAgKm1lc3NhZ2UgPSB4 bHJlYy0+bWVzc2FnZSArIHhscmVjLT5wcmVmaXhfc2l6ZTsKKwkJY2hhcgkgICAqc2VwID0gIiI7 CisKKwkJQXNzZXJ0KHByZWZpeFt4bHJlYy0+cHJlZml4X3NpemVdICE9ICdcMCcpOworCisJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAicHJlZml4IFwiJXNcIjsgcGF5bG9hZCAoJXp1IGJ5dGVzKTog IiwKKwkJCQkJCSBwcmVmaXgsIHhscmVjLT5tZXNzYWdlX3NpemUpOworCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgInJlbGlkICV1IGNtZHR5cGUgJXUiLCB4bHJlYy0+cmVsaWQsIHhscmVjLT5jbWR0 eXBlKTsKKwkJLyogV3JpdGUgbWVzc2FnZSBwYXlsb2FkIGFzIGEgc2VyaWVzIG9mIGhleCBieXRl cyAqLworCQlmb3IgKGludCBjbnQgPSAwOyBjbnQgPCB4bHJlYy0+bWVzc2FnZV9zaXplOyBjbnQr KykKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcyUwMlgiLCBzZXAsICh1bnNpZ25l ZCBjaGFyKSBtZXNzYWdlW2NudF0pOworCQkJc2VwID0gIiAiOworCQl9CisJfQorfQorCitjb25z dCBjaGFyICoKK2xvZ2ljYWxkZGxtc2dfaWRlbnRpZnkodWludDggaW5mbykKK3sKKwlpZiAoKGlu Zm8gJiB+WExSX0lORk9fTUFTSykgPT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCQlyZXR1 cm4gIkRETCI7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9t ZXNvbi5idWlsZAppbmRleCAxNjZjZWU2N2I2Li43ODFlMmQ3NzEzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCkBAIC0xMSw2ICsxMSw3IEBAIHJtZ3JfZGVzY19zb3Vy Y2VzID0gZmlsZXMoCiAgICdnaXN0ZGVzYy5jJywKICAgJ2hhc2hkZXNjLmMnLAogICAnaGVhcGRl c2MuYycsCisgICdsb2dpY2FsZGRsbXNnZGVzYy5jJywKICAgJ2xvZ2ljYWxtc2dkZXNjLmMnLAog ICAnbXhhY3RkZXNjLmMnLAogICAnbmJ0ZGVzYy5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3Iu YwppbmRleCA3ZDY3ZWRhNWY3Li42NzhlODFhZTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1n ci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgImZ1bmNh cGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxt ZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDQ3NjM3ZjI4YWIuLmQyMDk2MDJlMjgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTEwMjgsNiArMTAyOCw3IEBA IEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlID0g cHViZm9ybS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBwdWJmb3Jt LT5wdWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gcHViZm9ybS0+cHVi dHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSA9IHB1YmZvcm0tPnB1YmRk bF90YWJsZTsKIAlwdWItPnB1YnZpYXJvb3QgPSBwdWJmb3JtLT5wdWJ2aWFyb290OwogCiAJUmVs ZWFzZVN5c0NhY2hlKHR1cCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXgg Y2ZjMzZiMDJkMC4uNzFkMmM0M2FmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIu YwpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgi CiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKICNpbmNsdWRlICJ0Y29wL2RkbF9k ZXBhcnNlLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCmluZGV4IGY0YmE1NzI2OTcuLjE2ZmFlYWJjM2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0zOCwxMCArMzgsMTIgQEAKICNpbmNsdWRl ICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVk ZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X3JlbGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2FycmF5 LmgiCkBAIC04MiwyMSArODQsMjUgQEAgc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1h cyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgdm9p ZAogcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkg IExpc3QgKm9wdGlvbnMsCisJCQkJCQkgIGJvb2wgZm9yX2FsbF90YWJsZXMsCiAJCQkJCQkgIGJv b2wgKnB1Ymxpc2hfZ2l2ZW4sCiAJCQkJCQkgIFB1YmxpY2F0aW9uQWN0aW9ucyAqcHViYWN0aW9u cywKIAkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4sCi0JCQkJ CQkgIGJvb2wgKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KQorCQkJCQkJICBib29sICpwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCSAgYm9vbCAqZGRsX3R5cGVfZ2l2ZW4pCiB7 CiAJTGlzdENlbGwgICAqbGM7CiAKIAkqcHVibGlzaF9naXZlbiA9IGZhbHNlOwogCSpwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiA9IGZhbHNlOworCSpkZGxfdHlwZV9naXZlbiA9IGZh bHNlOwogCiAJLyogZGVmYXVsdHMgKi8KIAlwdWJhY3Rpb25zLT5wdWJpbnNlcnQgPSB0cnVlOwog CXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHViZGVsZXRlID0g dHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJcHViYWN0aW9ucy0+cHVi ZGRsX3RhYmxlID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7 CiAKIAkvKiBQYXJzZSBvcHRpb25zICovCkBAIC0xMjMsNyArMTI5LDcgQEAgcGFyc2VfcHVibGlj YXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlwdWJhY3Rpb25zLT5wdWJ0cnVu Y2F0ZSA9IGZhbHNlOwogCiAJCQkqcHVibGlzaF9naXZlbiA9IHRydWU7Ci0JCQlwdWJsaXNoID0g ZGVmR2V0U3RyaW5nKGRlZmVsKTsKKwkJCXB1Ymxpc2ggPSBwc3RyZHVwKGRlZkdldFN0cmluZyhk ZWZlbCkpOwogCiAJCQlpZiAoIVNwbGl0SWRlbnRpZmllclN0cmluZyhwdWJsaXNoLCAnLCcsICZw dWJsaXNoX2xpc3QpKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTgsNiArMTY0LDQ2IEBAIHBh cnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJKnB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290X2dpdmVuID0gdHJ1ZTsKIAkJCSpwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChk ZWZlbC0+ZGVmbmFtZSwgImRkbCIpID09IDApCisJCXsKKwkJCWNoYXIJICAgKmRkbF9sZXZlbDsK KwkJCUxpc3QJICAgKmRkbF9saXN0OworCQkJTGlzdENlbGwgICAqbGMzOworCisJCQlpZiAoKmRk bF90eXBlX2dpdmVuKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUp OworCisJCQlpZiAoIWZvcl9hbGxfdGFibGVzKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiRERMIHJlcGxpY2F0 aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIikpOwor CQkJLyoKKwkJCSAqIElmIGRkbCBvcHRpb24gd2FzIGdpdmVuIG9ubHkgdGhlIGV4cGxpY2l0bHkg bGlzdGVkIGRkbCB0eXBlcworCQkJICogc2hvdWxkIGJlIHB1Ymxpc2hlZC4KKwkJCSAqLworCQkJ cHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gZmFsc2U7CisKKwkJCSpkZGxfdHlwZV9naXZlbiA9 IHRydWU7CisJCQlkZGxfbGV2ZWwgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCisJCQlpZiAoIVNw bGl0SWRlbnRpZmllclN0cmluZyhkZGxfbGV2ZWwsICcsJywgJmRkbF9saXN0KSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQll cnJtc2coImludmFsaWQgbGlzdCBzeW50YXggZm9yIFwiZGRsXCIgb3B0aW9uIikpOworCisJCQkv KiBQcm9jZXNzIHRoZSBvcHRpb24gbGlzdC4gKi8KKwkJCWZvcmVhY2gobGMzLCBkZGxfbGlzdCkK KwkJCXsKKwkJCQljaGFyCSAgICpwdWJsaXNoX29wdCA9IChjaGFyICopIGxmaXJzdChsYzMpOwor CisJCQkJaWYgKHN0cmNtcChwdWJsaXNoX29wdCwgInRhYmxlIikgPT0gMCkKKwkJCQkJcHViYWN0 aW9ucy0+cHViZGRsX3RhYmxlID0gdHJ1ZTsKKwkJCQllbHNlCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJ1 bnJlY29nbml6ZWQgXCJkZGxcIiB2YWx1ZTogXCIlc1wiIiwgcHVibGlzaF9vcHQpKTsKKwkJCX0K KwkJfQogCQllbHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCkBAIC01OTksMTQgKzY0NSw1NiBAQCBjaGVja19zaW1wbGVfcm93ZmlsdGVy X2V4cHIoTm9kZSAqbm9kZSwgUGFyc2VTdGF0ZSAqcHN0YXRlKQogCXJldHVybiBjaGVja19zaW1w bGVfcm93ZmlsdGVyX2V4cHJfd2Fsa2VyKG5vZGUsIHBzdGF0ZSk7CiB9CiAKKy8qCisgKiBIZWxw ZXIgZnVuY3Rpb24gdG8gdHJhbmZvcm0gYSB3aGVyZSBjbGF1c2UuCisgKgorICogQWxzbyBjaGVj ayB0aGUgcHVibGljYXRpb24gcm93IGZpbHRlciBleHByZXNzaW9uIGFuZCB0aHJvdyBhbiBlcnJv ciBpZgorICogYW55dGhpbmcgbm90IHBlcm1pdHRlZCBvciB1bmV4cGVjdGVkIGlzIGVuY291bnRl cmVkLgorICovCitzdGF0aWMgTm9kZSAqCitHZXRUcmFuc2Zvcm1XaGVyZUNsYXVzZXMoY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJIE5vZGUgKndoZXJl Q2xhdXNlLCBib29sIGNoZWNrX2V4cHIpCit7CisJTm9kZQkgICAqdHJhbnNmb3JtZWRXaGVyZUNs YXVzZSA9IE5VTEw7CisJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CisJUGFyc2VTdGF0ZSAq cHN0YXRlOworCisJLyoKKwkgKiBBIGZyZXNoIHBzdGF0ZSBpcyByZXF1aXJlZCBzbyB0aGF0IHdl IG9ubHkgaGF2ZSAidGhpcyIgdGFibGUgaW4gaXRzCisJICogcmFuZ2V0YWJsZQorCSAqLworCXBz dGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKKwlwc3RhdGUtPnBfc291cmNldGV4dCA9IHF1 ZXJ5U3RyaW5nOworCW5zaXRlbSA9IGFkZFJhbmdlVGFibGVFbnRyeUZvclJlbGF0aW9uKHBzdGF0 ZSwgcmVsYXRpb24sCisJCQkJCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrLCBOVUxMLAorCQkJCQkJ CQkJCSAgIGZhbHNlLCBmYWxzZSk7CisJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRlbSwg ZmFsc2UsIHRydWUsIHRydWUpOworCisJdHJhbnNmb3JtZWRXaGVyZUNsYXVzZSA9IHRyYW5zZm9y bVdoZXJlQ2xhdXNlKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCSAgY29weU9iamVjdCh3aGVyZUNsYXVz ZSksCisJCQkJCQkJCQkJCQkgIEVYUFJfS0lORF9XSEVSRSwKKwkJCQkJCQkJCQkJCSAgIlBVQkxJ Q0FUSU9OIFdIRVJFIik7CisKKwkvKiBGaXggdXAgY29sbGF0aW9uIGluZm9ybWF0aW9uICovCisJ YXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIHRyYW5zZm9ybWVkV2hlcmVDbGF1c2UpOwor CisJLyoKKwkgKiBXZSBhbGxvdyBvbmx5IHNpbXBsZSBleHByZXNzaW9ucyBpbiByb3cgZmlsdGVy cy4gU2VlCisJICogY2hlY2tfc2ltcGxlX3Jvd2ZpbHRlcl9leHByX3dhbGtlci4KKwkgKi8KKwlp ZiAoY2hlY2tfZXhwcikKKwkJY2hlY2tfc2ltcGxlX3Jvd2ZpbHRlcl9leHByKHRyYW5zZm9ybWVk V2hlcmVDbGF1c2UsIHBzdGF0ZSk7CisKKwlmcmVlX3BhcnNlc3RhdGUocHN0YXRlKTsKKworCXJl dHVybiB0cmFuc2Zvcm1lZFdoZXJlQ2xhdXNlOworfQorCiAvKgogICogVHJhbnNmb3JtIHRoZSBw dWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGZvciBhbGwgdGhlIHJlbGF0aW9ucyBpbiB0aGUg bGlzdCwKICAqIGVuc3VyaW5nIGl0IGlzIGNvZXJjZWQgdG8gYm9vbGVhbiBhbmQgbmVjZXNzYXJ5 IGNvbGxhdGlvbiBpbmZvcm1hdGlvbiBpcwogICogYWRkZWQgaWYgcmVxdWlyZWQsIGFuZCBhZGQg YSBuZXcgbnNpdGVtL1JURSBmb3IgdGhlIGFzc29jaWF0ZWQgcmVsYXRpb24gdG8KICAqIHRoZSBQ YXJzZVN0YXRlJ3MgbmFtZXNwYWNlIGxpc3QuCi0gKgotICogQWxzbyBjaGVjayB0aGUgcHVibGlj YXRpb24gcm93IGZpbHRlciBleHByZXNzaW9uIGFuZCB0aHJvdyBhbiBlcnJvciBpZgotICogYW55 dGhpbmcgbm90IHBlcm1pdHRlZCBvciB1bmV4cGVjdGVkIGlzIGVuY291bnRlcmVkLgogICovCiBz dGF0aWMgdm9pZAogVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKExpc3QgKnRhYmxlcywgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCkBAIC02MTYsOSArNzA0LDYgQEAgVHJhbnNmb3JtUHViV2hlcmVD bGF1c2VzKExpc3QgKnRhYmxlcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAKIAlmb3JlYWNo KGxjLCB0YWJsZXMpCiAJewotCQlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKLQkJTm9kZQkg ICAqd2hlcmVjbGF1c2UgPSBOVUxMOwotCQlQYXJzZVN0YXRlICpwc3RhdGU7CiAJCVB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobGMpOwogCiAJ CWlmIChwcmktPndoZXJlQ2xhdXNlID09IE5VTEwpCkBAIC02MzgsMzQgKzcyMyw4IEBAIFRyYW5z Zm9ybVB1YldoZXJlQ2xhdXNlcyhMaXN0ICp0YWJsZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n LAogCQkJCQkgZXJyZGV0YWlsKCJXSEVSRSBjbGF1c2UgY2Fubm90IGJlIHVzZWQgZm9yIGEgcGFy dGl0aW9uZWQgdGFibGUgd2hlbiAlcyBpcyBmYWxzZS4iLAogCQkJCQkJCSAgICJwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdCIpKSk7CiAKLQkJLyoKLQkJICogQSBmcmVzaCBwc3RhdGUgaXMgcmVx dWlyZWQgc28gdGhhdCB3ZSBvbmx5IGhhdmUgInRoaXMiIHRhYmxlIGluIGl0cwotCQkgKiByYW5n ZXRhYmxlCi0JCSAqLwotCQlwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7Ci0JCXBzdGF0 ZS0+cF9zb3VyY2V0ZXh0ID0gcXVlcnlTdHJpbmc7Ci0JCW5zaXRlbSA9IGFkZFJhbmdlVGFibGVF bnRyeUZvclJlbGF0aW9uKHBzdGF0ZSwgcHJpLT5yZWxhdGlvbiwKLQkJCQkJCQkJCQkJICAgQWNj ZXNzU2hhcmVMb2NrLCBOVUxMLAotCQkJCQkJCQkJCQkgICBmYWxzZSwgZmFsc2UpOwotCQlhZGRO U0l0ZW1Ub1F1ZXJ5KHBzdGF0ZSwgbnNpdGVtLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7Ci0KLQkJd2hl cmVjbGF1c2UgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCi0JCQkJCQkJCQkJICAgY29w eU9iamVjdChwcmktPndoZXJlQ2xhdXNlKSwKLQkJCQkJCQkJCQkgICBFWFBSX0tJTkRfV0hFUkUs Ci0JCQkJCQkJCQkJICAgIlBVQkxJQ0FUSU9OIFdIRVJFIik7Ci0KLQkJLyogRml4IHVwIGNvbGxh dGlvbiBpbmZvcm1hdGlvbiAqLwotCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgd2hl cmVjbGF1c2UpOwotCi0JCS8qCi0JCSAqIFdlIGFsbG93IG9ubHkgc2ltcGxlIGV4cHJlc3Npb25z IGluIHJvdyBmaWx0ZXJzLiBTZWUKLQkJICogY2hlY2tfc2ltcGxlX3Jvd2ZpbHRlcl9leHByX3dh bGtlci4KLQkJICovCi0JCWNoZWNrX3NpbXBsZV9yb3dmaWx0ZXJfZXhwcih3aGVyZWNsYXVzZSwg cHN0YXRlKTsKLQotCQlmcmVlX3BhcnNlc3RhdGUocHN0YXRlKTsKLQotCQlwcmktPndoZXJlQ2xh dXNlID0gd2hlcmVjbGF1c2U7CisJCXByaS0+d2hlcmVDbGF1c2UgPSBHZXRUcmFuc2Zvcm1XaGVy ZUNsYXVzZXMocXVlcnlTdHJpbmcsIHByaS0+cmVsYXRpb24sCisJCQkJCQkJCQkJCQkJcHJpLT53 aGVyZUNsYXVzZSwgdHJ1ZSk7CiAJfQogfQogCkBAIC03MjgsNiArNzg3LDUyIEBAIENoZWNrUHVi UmVsYXRpb25Db2x1bW5MaXN0KGNoYXIgKnB1Ym5hbWUsIExpc3QgKnRhYmxlcywKIAl9CiB9CiAK Ky8qCisgKiBDcmVhdGUgZXZlbnQgdHJpZ2dlciB3aGljaCBpcyB1c2VkIGZvciBEREwgcmVwbGlj YXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2VyKGNo YXIgKmV2ZW50bmFtZSwgQ29tbWFuZFRhZyAqY29tbWFuZHMsCisJCQkJCQkJIGludCBuY29tbWFu ZHMsIE9iamVjdEFkZHJlc3MgcHViYWRkcmVzcywKKwkJCQkJCQkgT2lkIHB1Ym9pZCkKK3sKKwlp bnQJCQlpOworCUxpc3QJICAgKnRhZ3MgPSBOSUw7CisJT2lkCQkJdHJpZ2dlcl9pZDsKKwlPYmpl Y3RBZGRyZXNzIHJlZmVyZW5jZWQ7CisJQ3JlYXRlRXZlbnRUcmlnU3RtdCAqZGRsX3RyaWdnZXI7 CisJY2hhcgkJdHJpZ2dlcl9uYW1lW05BTUVEQVRBTEVOXTsKKwljaGFyCQl0cmlnZ2VyX2Z1bmNf bmFtZVtOQU1FREFUQUxFTl07CisJc3RhdGljIGNvbnN0IGNoYXIgKnRyaWdnZXJfZnVuY19wcmVm aXggPSAicHVibGljYXRpb25fZGVwYXJzZV8lcyI7CisKKwlkZGxfdHJpZ2dlciA9IG1ha2VOb2Rl KENyZWF0ZUV2ZW50VHJpZ1N0bXQpOworCisJc25wcmludGYodHJpZ2dlcl9uYW1lLCBzaXplb2Yo dHJpZ2dlcl9uYW1lKSwgUFVCX0VWRU5UX1RSSUdfUFJFRklYLAorCQkJIGV2ZW50bmFtZSwgcHVi b2lkKTsKKwlzbnByaW50Zih0cmlnZ2VyX2Z1bmNfbmFtZSwgc2l6ZW9mKHRyaWdnZXJfZnVuY19u YW1lKSwgdHJpZ2dlcl9mdW5jX3ByZWZpeCwKKwkJCSBldmVudG5hbWUpOworCisJZGRsX3RyaWdn ZXItPnRyaWduYW1lID0gcHN0cmR1cCh0cmlnZ2VyX25hbWUpOworCWRkbF90cmlnZ2VyLT5ldmVu dG5hbWUgPSBldmVudG5hbWU7CisJZGRsX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUodHJpZ2dlcl9mdW5jX25hbWUpOworCisJZm9yIChpID0gMDsgaSA8IG5jb21tYW5kczsgaSsr KQorCXsKKwkJU3RyaW5nCSAgICp0YWcgPSBtYWtlU3RyaW5nKHBzdHJkdXAoR2V0Q29tbWFuZFRh Z05hbWUoY29tbWFuZHNbaV0pKSk7CisKKwkJdGFncyA9IGxhcHBlbmQodGFncywgdGFnKTsKKwl9 CisKKwlkZGxfdHJpZ2dlci0+d2hlbmNsYXVzZSA9IGxpc3RfbWFrZTEobWFrZURlZkVsZW0oInRh ZyIsIChOb2RlICopIHRhZ3MsIC0xKSk7CisKKwl0cmlnZ2VyX2lkID0gQ3JlYXRlRXZlbnRUcmln Z2VyKGRkbF90cmlnZ2VyKTsKKworCS8qCisJICogUmVnaXN0ZXIgdGhlIGV2ZW50IHRyaWdnZXJz IGFzIGludGVybmFsbHkgZGVwZW5kZW50IG9uIHRoZSBwdWJsaWNhdGlvbi4KKwkgKi8KKwlPYmpl Y3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQsIHRyaWdnZXJf aWQpOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNlZCwgJnB1YmFkZHJlc3MsIERFUEVO REVOQ1lfSU5URVJOQUwpOworfQorCiAvKgogICogQ3JlYXRlIG5ldyBwdWJsaWNhdGlvbi4KICAq LwpAQCAtNzQxLDYgKzg0Niw3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdf cHVibGljYXRpb25dOwogCUhlYXBUdXBsZQl0dXA7CiAJYm9vbAkJcHVibGlzaF9naXZlbjsKKwli b29sCQlkZGxfdHlwZV9naXZlbjsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAli b29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdDsKQEAgLTc4MSw5ICs4ODcsMTEgQEAgQ3JlYXRlUHVibGljYXRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAKIAlwYXJz ZV9wdWJsaWNhdGlvbl9vcHRpb25zKHBzdGF0ZSwKIAkJCQkJCQkgIHN0bXQtPm9wdGlvbnMsCisJ CQkJCQkJICBzdG10LT5mb3JfYWxsX3RhYmxlcywKIAkJCQkJCQkgICZwdWJsaXNoX2dpdmVuLCAm cHViYWN0aW9ucywKIAkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwK LQkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CisJCQkJCQkJICAmcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3QsCisJCQkJCQkJICAmZGRsX3R5cGVfZ2l2ZW4pOwogCiAJcHVi b2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgUHVibGljYXRpb25PYmplY3RJbmRleElkLAog CQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX29pZCk7CkBAIC03OTgsNiArOTA2LDggQEAgQ3Jl YXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQg KnN0bXQpCiAJCUJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YmRlbGV0ZSk7CiAJdmFsdWVzW0Fu dW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9CiAJCUJvb2xHZXREYXR1bShwdWJh Y3Rpb25zLnB1YnRydW5jYXRlKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxf dGFibGUgLSAxXSA9CisJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHViZGRsX3RhYmxlKTsKIAl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2aWFyb290IC0gMV0gPQogCQlCb29sR2V0RGF0 dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwogCkBAIC04NTgsNiArOTY4LDQ2IEBAIENy ZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10 ICpzdG10KQogCQl9CiAJfQogCisJLyoKKwkgKiBDcmVhdGUgYW4gZXZlbnQgdHJpZ2dlciB0byBh bGxvdyBsb2dnaW5nIG9mIERETCBzdGF0ZW1lbnRzLgorCSAqCisJICovCisJaWYgKHB1YmFjdGlv bnMucHViZGRsX3RhYmxlKQorCXsKKwkJQ29tbWFuZFRhZwlzdGFydF9jb21tYW5kc1tdID0ge0NN RFRBR19EUk9QX1RBQkxFfTsKKwkJQ29tbWFuZFRhZwlyZXdyaXRlX2NvbW1hbmRzW10gPSB7Q01E VEFHX0FMVEVSX1RBQkxFfTsKKwkJQ29tbWFuZFRhZwlpbml0X2NvbW1hbmRzW10gPSB7CisJCQlD TURUQUdfQ1JFQVRFX1RBQkxFX0FTLAorCQkJQ01EVEFHX1NFTEVDVF9JTlRPCisJCX07CisJCWlu dCBuY29tbWFuZHMgPSAwOworCQlDb21tYW5kVGFnICplbmRfY29tbWFuZHMgPSBOVUxMOworCisK KwkJbmNvbW1hbmRzID0gMzsKKwkJZW5kX2NvbW1hbmRzID0gcGFsbG9jMChuY29tbWFuZHMgKiBz aXplb2YoQ29tbWFuZFRhZykpOworCQllbmRfY29tbWFuZHNbMF0gPSBDTURUQUdfQ1JFQVRFX1RB QkxFOworCQllbmRfY29tbWFuZHNbMV0gPSBDTURUQUdfQUxURVJfVEFCTEU7CisJCWVuZF9jb21t YW5kc1syXSA9IENNRFRBR19EUk9QX1RBQkxFOworCisJCS8qIENyZWF0ZSB0aGUgZGRsX2NvbW1h bmRfZW5kIGV2ZW50IHRyaWdnZXIgKi8KKwkJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihQ VUJfVFJJR19FVkVOVDEsIGVuZF9jb21tYW5kcywKKwkJCQkJCQkJCSBuY29tbWFuZHMsIG15c2Vs ZiwgcHVib2lkKTsKKwkJcGZyZWUoZW5kX2NvbW1hbmRzKTsKKworCQkvKiBDcmVhdGUgdGhlIGRk bF9jb21tYW5kX3N0YXJ0IGV2ZW50IHRyaWdnZXIgKi8KKwkJQ3JlYXRlRERMUmVwbGljYUV2ZW50 VHJpZ2dlcihQVUJfVFJJR19FVkVOVDIsIHN0YXJ0X2NvbW1hbmRzLAorCQkJCQkJCQkJIGxlbmd0 aG9mKHN0YXJ0X2NvbW1hbmRzKSwgbXlzZWxmLCBwdWJvaWQpOworCisJCS8qIENyZWF0ZSB0aGUg dGFibGVfcmV3cml0ZSBldmVudCB0cmlnZ2VyICovCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRy aWdnZXIoUFVCX1RSSUdfRVZFTlQzLCByZXdyaXRlX2NvbW1hbmRzLAorCQkJCQkJCQkJIGxlbmd0 aG9mKHJld3JpdGVfY29tbWFuZHMpLCBteXNlbGYsIHB1Ym9pZCk7CisKKwkJLyogQ3JlYXRlIHRo ZSB0YWJsZV9pbml0X3dyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwkJQ3JlYXRlRERMUmVwbGljYUV2 ZW50VHJpZ2dlcihQVUJfVFJJR19FVkVOVDQsIGluaXRfY29tbWFuZHMsCisJCQkJCQkJCQkgbGVu Z3Rob2YoaW5pdF9jb21tYW5kcyksIG15c2VsZiwgcHVib2lkKTsKKwl9CisKIAl0YWJsZV9jbG9z ZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2so UHVibGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwpAQCAtODgyLDYgKzEwMzIsNyBAQCBB bHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlE YXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlib29sCQlwdWJsaXNoX2dpdmVu OworCWJvb2wJCWRkbF90eXBlX2dpdmVuOwogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25z OwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuOwogCWJvb2wJCXB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290OwpAQCAtODkwLDExICsxMDQxLDE1IEBAIEFsdGVyUHVibGlj YXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsCiAJTGlzdAkgICAqcm9vdF9yZWxpZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAKKwlw dWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCiAJcGFyc2Vf cHVibGljYXRpb25fb3B0aW9ucyhwc3RhdGUsCiAJCQkJCQkJICBzdG10LT5vcHRpb25zLAorCQkJ CQkJCSAgcHViZm9ybS0+cHViYWxsdGFibGVzLAogCQkJCQkJCSAgJnB1Ymxpc2hfZ2l2ZW4sICZw dWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuLAot CQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJCQkJCQkgICZwdWJsaXNo X3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCQkgICZkZGxfdHlwZV9naXZlbik7CiAKIAlwdWJm b3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwogCkBAIC05OTYsNiAr MTE1MSw5IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAKIAkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25f cHVidHJ1bmNhdGUgLSAxXSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnRydW5jYXRlKTsK IAkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0gdHJ1ZTsK KworCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUgLSAxXSA9IEJvb2xH ZXREYXR1bShwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSk7CisJCXJlcGxhY2VzW0FudW1fcGdfcHVi bGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPSB0cnVlOwogCX0KIAogCWlmIChwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01h a2VmaWxlCmluZGV4IDJkYzI1ZTM3YmIuLmI3OWRkZDhjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTYsNiArMTYsOCBAQCBvdmVycmlkZSBDUFBGTEFH UyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAogCWFwcGx5cGFyYWxsZWx3 b3JrZXIubyBcCisJZGRsbWVzc2FnZS5vIFwKKwlkZGx0cmlnZ2VyLm8gXAogCWRlY29kZS5vIFwK IAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RkbG1lc3NhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li5lMTFlNTZlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZGxtZXNzYWdlLmMKQEAgLTAsMCArMSw4NCBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogZGRsbWVzc2FnZS5jCisgKgkgIExvZ2ljYWwgRERMIG1lc3NhZ2VzLgorICoKKyAq IENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RkbG1lc3NhZ2UuYworICoKKyAqIE5PVEVTCisgKgorICogTG9naWNhbCBEREwgbWVzc2Fn ZXMgYWxsb3cgWExPRyBsb2dnaW5nIG9mIERETCBjb21tYW5kIHN0cmluZ3MgdGhhdAorICogZ2V0 IHBhc3NlZCB0byB0aGUgbG9naWNhbCBkZWNvZGluZyBwbHVnaW4uIEluIG5vcm1hbCBYTE9HIHBy b2Nlc3NpbmcgdGhleQorICogYXJlIHNhbWUgYXMgTk9PUC4KKyAqCisgKiBVbmxpa2UgZ2VuZXJp YyBsb2dpY2FsIG1lc3NhZ2VzLCB0aGVzZSBEREwgbWVzc2FnZXMgaGF2ZSBvbmx5IHRyYW5zYWN0 aW9uYWwKKyAqIG1vZGUuIE5vdGUgYnkgZGVmYXVsdCBERExzIGluIFBvc3RncmVTUUwgYXJlIHRy YW5zYWN0aW9uYWwuCisgKgorICogVGhlc2UgbWVzc2FnZXMgYXJlIHBhcnQgb2YgY3VycmVudCB0 cmFuc2FjdGlvbiBhbmQgd2lsbCBiZSBzZW50IHRvCisgKiBkZWNvZGluZyBwbHVnaW4gdXNpbmcg aW4gYSBzYW1lIHdheSBhcyBETUwgb3BlcmF0aW9ucy4KKyAqCisgKiBFdmVyeSBtZXNzYWdlIGNh cnJpZXMgcHJlZml4IHRvIGF2b2lkIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBkZWNvZGlu ZworICogcGx1Z2lucy4gVGhlIHBsdWdpbiBhdXRob3JzIG11c3QgdGFrZSBleHRyYSBjYXJlIHRv IHVzZSB1bmlxdWUgcHJlZml4LAorICogZ29vZCBvcHRpb25zIHNlZW1zIHRvIGJlIGZvciBleGFt cGxlIHRvIHVzZSB0aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uLgorICoKKyAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNz L3hhY3QuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFs b2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMv ZXhlY25vZGVzLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgor CisvKgorICogV3JpdGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisg Ki8KK1hMb2dSZWNQdHIKK0xvZ0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwg T2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSBjb25zdCBjaGFy ICptZXNzYWdlLCBzaXplX3Qgc2l6ZSkKK3sKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlIHhscmVj OworCisJIC8qIEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHJhbnNhY3Rpb24gaWQuICovCisJQXNz ZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwor CisJeGxyZWMuZGJJZCA9IE15RGF0YWJhc2VJZDsKKwkvKiBUcmFpbGluZyB6ZXJvIGlzIGNyaXRp Y2FsOyBzZWUgbG9naWNhbGRkbG1zZ19kZXNjICovCisJeGxyZWMucHJlZml4X3NpemUgPSBzdHJs ZW4ocHJlZml4KSArIDE7CisJeGxyZWMubWVzc2FnZV9zaXplID0gc2l6ZTsKKwl4bHJlYy5yZWxp ZCA9IHJlbGlkOworCXhscmVjLmNtZHR5cGUgPSBjbWR0eXBlOworCisJWExvZ0JlZ2luSW5zZXJ0 KCk7CisJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkxvZ2ljYWxERExN ZXNzYWdlKTsKKwlYTG9nUmVnaXN0ZXJEYXRhKHVuY29uc3RpZnkoY2hhciAqLCBwcmVmaXgpLCB4 bHJlYy5wcmVmaXhfc2l6ZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwg bWVzc2FnZSksIHNpemUpOworCisJLyogQWxsb3cgb3JpZ2luIGZpbHRlcmluZyAqLworCVhMb2dT ZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKworCXJldHVybiBYTG9nSW5zZXJ0 KFJNX0xPR0lDQUxERExNU0dfSUQsIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSk7Cit9CisKKy8q CisgKiBSZWRvIGlzIGJhc2ljYWxseSBqdXN0IG5vb3AgZm9yIGxvZ2ljYWwgZGVjb2RpbmcgZGRs IG1lc3NhZ2VzLgorICovCit2b2lkCitsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCit7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhM Ul9JTkZPX01BU0s7CisKKwlpZiAoaW5mbyAhPSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJ CWVsb2coUEFOSUMsICJsb2dpY2FsZGRsbXNnX3JlZG86IHVua25vd24gb3AgY29kZSAldSIsIGlu Zm8pOworCisJLyogVGhpcyBpcyBvbmx5IGludGVyZXN0aW5nIGZvciBsb2dpY2FsIGRlY29kaW5n LCBzZWUgZGVjb2RlLmMuICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RkbHRyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGRsdHJpZ2dlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjcwMDE4 YTMwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RkbHRyaWdnZXIuYwpAQCAtMCwwICsxLDM2MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgor ICogZGRsdHJpZ2dlci5jCisgKgkgIExvZ2ljYWwgRERMIG1lc3NhZ2VzLgorICoKKyAqIENvcHly aWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rk bHRyaWdnZXIuYworICoKKyAqIE5PVEVTCisgKgorICogRGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQg YW5kIGxvZyBpdC4KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfY2xhc3MuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9ldmVudF90cmlnZ2VyLmgiCisjaW5j bHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ0Y29wL2RkbF9kZXBhcnNlLmgiCisjaW5j bHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgor CitleHRlcm4gRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZSAqY3VycmVudEV2ZW50VHJpZ2dlclN0YXRl OworCisvKgorICogRGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBpdCBwcmlvciB0bwor ICogZXhlY3V0aW9uLiBDdXJyZW50bHkgb25seSB1c2VkIGZvciBEUk9QIFRBQkxFIGNvbW1hbmQK KyAqIHNvIHRoYXQgY2F0YWxvZyBjYW4gYmUgYWNjZXNzZWQgYmVmb3JlIGJlaW5nIGRlbGV0ZWQu CisgKiBUaGlzIGlzIHRvIGNoZWNrIGlmIHRoZSB0YWJsZSBpcyBwYXJ0IG9mIHRoZSBwdWJsaWNh dGlvbgorICogb3Igbm90LgorICovCitEYXR1bQorcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29t bWFuZF9zdGFydChQR19GVU5DVElPTl9BUkdTKQoreworCUV2ZW50VHJpZ2dlckRhdGEgKnRyaWdk YXRhOworCWNoYXIJICAgKmNvbW1hbmQgPSBwc3ByaW50ZigiRHJvcCB0YWJsZSBjb21tYW5kIHN0 YXJ0Iik7CisJRHJvcFN0bXQgICAqc3RtdDsKKwlMaXN0Q2VsbCAgICpjZWxsMTsKKworCWlmICgh Q0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJl ZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCXRyaWdkYXRhID0gKEV2ZW50VHJpZ2dl ckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCXN0bXQgPSAoRHJvcFN0bXQgKikgdHJpZ2RhdGEt PnBhcnNldHJlZTsKKworCS8qIEV4dHJhY3QgdGhlIHJlbGlkIGZyb20gdGhlIHBhcnNlIHRyZWUg Ki8KKwlmb3JlYWNoKGNlbGwxLCBzdG10LT5vYmplY3RzKQorCXsKKwkJY2hhcgkJcmVscGVyc2lz dDsKKwkJTm9kZQkgICAqb2JqZWN0ID0gbGZpcnN0KGNlbGwxKTsKKwkJT2JqZWN0QWRkcmVzcyBh ZGRyZXNzOworCQlSZWxhdGlvbglyZWxhdGlvbiA9IE5VTEw7CisKKwkJYWRkcmVzcyA9IGdldF9v YmplY3RfYWRkcmVzcyhzdG10LT5yZW1vdmVUeXBlLAorCQkJCQkJCQkJIG9iamVjdCwKKwkJCQkJ CQkJCSAmcmVsYXRpb24sCisJCQkJCQkJCQkgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJ CSB0cnVlKTsKKworCQkvKiBPYmplY3QgZG9lcyBub3QgZXhpc3QsIG5vdGhpbmcgdG8gZG8gKi8K KwkJaWYgKCFyZWxhdGlvbikKKwkJCWNvbnRpbnVlOworCisJCXJlbHBlcnNpc3QgPSBnZXRfcmVs X3BlcnNpc3RlbmNlKGFkZHJlc3Mub2JqZWN0SWQpOworCisJCS8qCisJCSAqIERvIG5vdCBnZW5l cmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJnZXQgdGFibGUgaXMgYQorCQkgKiB0 ZW1wb3JhcnkgdGFibGUuCisJCSAqCisJCSAqIFdlIHdpbGwgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9y IHVubG9nZ2VkIHRhYmxlcyBzbyB0aGF0IHVubG9nZ2VkCisJCSAqIHRhYmxlcyBjYW4gYWxzbyBi ZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIFRoaXMKKwkJICog bWFrZXMgaXQgcG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1h bmQgYW5kIHRoZQorCQkgKiBpbmNvbWluZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGlu ZyBhIG5ldyB0YWJsZS4KKwkJICovCisJCWlmIChyZWxwZXJzaXN0ICE9IFJFTFBFUlNJU1RFTkNF X1RFTVApCisJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIGFkZHJlc3Mub2JqZWN0 SWQsIERDVF9UYWJsZURyb3BTdGFydCwKKwkJCQkJCQkJIGNvbW1hbmQsIHN0cmxlbihjb21tYW5k KSArIDEpOworCisJCWlmIChyZWxhdGlvbikKKwkJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xv Y2spOworCX0KKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICogcHVi bGljYXRpb25fZGVwYXJzZV90YWJsZV9yZXdyaXRlCisgKgorICogRGVwYXJzZSB0aGUgZGRsIHRh YmxlIHJld3JpdGUgY29tbWFuZCBhbmQgbG9nIGl0LgorICovCitEYXR1bQorcHVibGljYXRpb25f ZGVwYXJzZV90YWJsZV9yZXdyaXRlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJY2hhcgkJcmVscGVy c2lzdDsKKwlDb2xsZWN0ZWRDb21tYW5kICpjbWQ7CisJY2hhcgkgICAqanNvbl9zdHJpbmc7CisK KwlpZiAoIUNBTExFRF9BU19FVkVOVF9UUklHR0VSKGZjaW5mbykpCisJCWVsb2coRVJST1IsICJu b3QgZmlyZWQgYnkgZXZlbnQgdHJpZ2dlciBtYW5hZ2VyIik7CisKKwljbWQgPSBjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5kOworCisJQXNzZXJ0KGNtZCAmJiBjbWQtPmQu YWx0ZXJUYWJsZS5yZXdyaXRlKTsKKworCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNl KGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKTsKKworCS8qCisJICogRG8gbm90IGdlbmVyYXRl IHdhbCBsb2cgZm9yIGNvbW1hbmRzIHdob3NlIHRhcmdldCB0YWJsZSBpcyBhIHRlbXBvcmFyeQor CSAqIHRhYmxlLgorCSAqCisJICogV2Ugd2lsbCBnZW5lcmF0ZSB3YWwgbG9ncyBmb3IgdW5sb2dn ZWQgdGFibGVzIHNvIHRoYXQgdW5sb2dnZWQgdGFibGVzCisJICogY2FuIGFsc28gYmUgY3JlYXRl ZCBhbmQgYWx0ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBUaGlzIG1ha2VzIGl0CisJICog cG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRo ZSBpbmNvbWluZworCSAqIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRh YmxlLgorCSAqLworCWlmIChyZWxwZXJzaXN0ICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJewor CQkvKiBEZXBhcnNlIHRoZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNv ZGluZyBvZiB0aGUgc2FtZS4gKi8KKwkJanNvbl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29t bWFuZChjbWQsIGZhbHNlKTsKKworCQlpZiAoanNvbl9zdHJpbmcgIT0gTlVMTCkKKwkJCUxvZ0xv Z2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQsIERD VF9UYWJsZUFsdGVyLAorCQkJCQkJCQkganNvbl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykg KyAxKTsKKwl9CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICog RGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBpdC4gVGhpcyBmdW5jdGlvbgorICogaXMg Y2FsbGVkIGFmdGVyIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvbW1hbmQgYnV0IGJlZm9yZSB0aGUK KyAqIHRyYW5zYWN0aW9uIGNvbW1pdHMuCisgKi8KK0RhdHVtCitwdWJsaWNhdGlvbl9kZXBhcnNl X2RkbF9jb21tYW5kX2VuZChQR19GVU5DVElPTl9BUkdTKQoreworCUxpc3RDZWxsICAgKmxjOwor CXNsaXN0X2l0ZXIJaXRlcjsKKwlEZXBhcnNlZENvbW1hbmRUeXBlIHR5cGU7CisJT2lkCQkJcmVs aWQ7CisJY2hhcgkJcmVsa2luZDsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNp bmZvKSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIi KTsKKworCWZvcmVhY2gobGMsIGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3Qp CisJeworCQljaGFyCQlyZWxwZXJzaXN0ID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOworCQlD b2xsZWN0ZWRDb21tYW5kICpjbWQgPSBsZmlyc3QobGMpOworCQljaGFyCSAgICpqc29uX3N0cmlu ZzsKKworCQkvKiBSZXdyaXRlIERETCBoYXMgYmVlbiBoYW5kbGVkIGluIHRhYmxlX3Jld3JpdGUg dHJpZ2dlciAqLworCQlpZiAoY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSkKKwkJeworCQkJUmVu YW1lU3RtdCAqcmVuYW1lU3RtdCA9IChSZW5hbWVTdG10ICopIGNtZC0+cGFyc2V0cmVlOworCisJ CQlpZiAocmVuYW1lU3RtdCAmJiByZW5hbWVTdG10LT5yZWxhdGlvblR5cGUgIT0gT0JKRUNUX1RZ UEUgJiYKKwkJCQlyZW5hbWVTdG10LT5yZWxhdGlvblR5cGUgIT0gT0JKRUNUX1RBQkxFKQorCQkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlICYmCisJCQkh T2lkSXNWYWxpZChjbWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQpKQorCQkJY29udGludWU7 CisKKwkJaWYgKGNtZC0+dHlwZSA9PSBTQ1RfQWx0ZXJUYWJsZSkKKwkJeworCQkJcmVsaWQgPSBj bWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZDsKKwkJCXR5cGUgPSBEQ1RfVGFibGVBbHRlcjsKKwkJ fQorCQllbHNlCisJCXsKKwkJCS8qIE9ubHkgU0NUX1NpbXBsZSBmb3Igbm93ICovCisJCQlyZWxp ZCA9IGNtZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZDsKKwkJCXR5cGUgPSBEQ1RfU2ltcGxl Q21kOworCQl9CisKKwkJcmVsa2luZCA9IGdldF9yZWxfcmVsa2luZChyZWxpZCk7CisJCWlmIChy ZWxraW5kKQorCQkJcmVscGVyc2lzdCA9IGdldF9yZWxfcGVyc2lzdGVuY2UocmVsaWQpOworCisJ CS8qCisJCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJn ZXQgdGFibGUgaXMgYQorCQkgKiB0ZW1wb3JhcnkgdGFibGUuCisJCSAqCisJCSAqIFdlIHdpbGwg Z2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxlcyBzbyB0aGF0IHVubG9nZ2VkCisJ CSAqIHRhYmxlcyBjYW4gYWxzbyBiZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9uIHRoZSBzdWJzY3Jp YmVyIHNpZGUuIFRoaXMKKwkJICogbWFrZXMgaXQgcG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5 IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRoZQorCQkgKiBpbmNvbWluZyByZXdyaXRlIG1l c3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhIG5ldyB0YWJsZS4KKwkJICovCisJCWlmIChyZWxwZXJz aXN0ICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCXsKKwkJCS8qCisJCQkgKiBEZXBhcnNlIHRo ZSBEREwgY29tbWFuZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUKKwkJ CSAqIHNhbWUuCisJCQkgKi8KKwkJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1h bmQoY21kLCBmYWxzZSk7CisKKwkJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQkJCUxvZ0xv Z2ljYWxERExNZXNzYWdlKCJkZXBhcnNlIiwgcmVsaWQsIHR5cGUsIGpzb25fc3RyaW5nLAorCQkJ CQkJCQkJIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKwkJfQorCX0KKworCXNsaXN0X2ZvcmVh Y2goaXRlciwgJihjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPlNRTERyb3BMaXN0KSkKKwl7CisJ CVNRTERyb3BPYmplY3QgKm9iajsKKwkJRHJvcFN0bXQgICAqc3RtdDsKKwkJRXZlbnRUcmlnZ2Vy RGF0YSAqdHJpZ2RhdGE7CisJCWNoYXIJICAgKmNvbW1hbmQ7CisJCURlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZTsKKwkJY29uc3QgY2hhciAqdG1wdHlwZTsKKwkJT2JqZWN0Q2xhc3MJb2JqY2xh c3M7CisJCU9iamVjdEFkZHJlc3Mgb2JqYWRkcjsKKworCQl0cmlnZGF0YSA9IChFdmVudFRyaWdn ZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwkJc3RtdCA9IChEcm9wU3RtdCAqKSB0cmlnZGF0 YS0+cGFyc2V0cmVlOworCisJCW9iaiA9IHNsaXN0X2NvbnRhaW5lcihTUUxEcm9wT2JqZWN0LCBu ZXh0LCBpdGVyLmN1cik7CisJCW9iamFkZHIgPSBvYmotPmFkZHJlc3M7CisJCW9iamNsYXNzID0g Z2V0T2JqZWN0Q2xhc3MoJm9iamFkZHIpOworCisJCWlmIChzdHJjbXAob2JqLT5vYmplY3R0eXBl LCAidGFibGUiKSA9PSAwKQorCQkJY21kdHlwZSA9IERDVF9UYWJsZURyb3BFbmQ7CisJCWVsc2Ug aWYgKG9iamNsYXNzID09IE9DTEFTU19TQ0hFTUEgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNT X09QRVJBVE9SIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19PUENMQVNTIHx8CisJCQkJIG9i amNsYXNzID09IE9DTEFTU19PUEZBTUlMWSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfQ0FT VCB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFlQRSB8fAorCQkJCSBvYmpjbGFzcyA9PSBP Q0xBU1NfVFJJR0dFUiB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfQ09OVkVSU0lPTiB8fAor CQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfUE9MSUNZIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFT U19SRVdSSVRFIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19FWFRFTlNJT04gfHwKKwkJCQkg b2JqY2xhc3MgPT0gT0NMQVNTX0ZEVyB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNDT05G SUcgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX1RTRElDVCB8fAorCQkJCSBvYmpjbGFzcyA9 PSBPQ0xBU1NfVFNURU1QTEFURSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVFNQQVJTRVIg fHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX1RSQU5TRk9STSB8fAorCQkJCSBvYmpjbGFzcyA9 PSBPQ0xBU1NfRk9SRUlHTl9TRVJWRVIgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX0NPTExB VElPTiB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfVVNFUl9NQVBQSU5HIHx8CisJCQkJIG9i amNsYXNzID09IE9DTEFTU19MQU5HVUFHRSB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfU1RB VElTVElDX0VYVCB8fAorCQkJCSBvYmpjbGFzcyA9PSBPQ0xBU1NfQU0gfHwKKwkJCQkgb2JqY2xh c3MgPT0gT0NMQVNTX1BVQkxJQ0FUSU9OIHx8CisJCQkJIG9iamNsYXNzID09IE9DTEFTU19QVUJM SUNBVElPTl9SRUwgfHwKKwkJCQkgb2JqY2xhc3MgPT0gT0NMQVNTX1BVQkxJQ0FUSU9OX05BTUVT UEFDRSB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAiZm9yZWlnbiB0YWJsZSIpID09 IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgImluZGV4IikgPT0gMCB8fAorCQkJ CSBzdHJjbXAob2JqLT5vYmplY3R0eXBlLCAic2VxdWVuY2UiKSA9PSAwIHx8CisJCQkJIHN0cmNt cChvYmotPm9iamVjdHR5cGUsICJ2aWV3IikgPT0gMCB8fAorCQkJCSBzdHJjbXAob2JqLT5vYmpl Y3R0eXBlLCAiZnVuY3Rpb24iKSA9PSAwIHx8CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUs ICJtYXRlcmlhbGl6ZWQgdmlldyIpID09IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlw ZSwgInByb2NlZHVyZSIpID09IDAgfHwKKwkJCQkgc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInJv dXRpbmUiKSA9PSAwIHx8CisJCQkJIHN0cmNtcChvYmotPm9iamVjdHR5cGUsICJhZ2dyZWdhdGUi KSA9PSAwKQorCQkJY21kdHlwZSA9IERDVF9PYmplY3REcm9wOworCQllbHNlCisJCQljb250aW51 ZTsKKworCQkvKiBDaGFuZ2UgZm9yZWlnbi1kYXRhIHdyYXBwZXIgdG8gZm9yZWlnbiBkYXRhIHdy YXBwZXIgKi8KKwkJaWYgKHN0cm5jbXAob2JqLT5vYmplY3R0eXBlLCAiZm9yZWlnbi1kYXRhIHdy YXBwZXIiLCAyMCkgPT0gMCkKKwkJeworCQkJdG1wdHlwZSA9IHBzdHJkdXAoImZvcmVpZ24gZGF0 YSB3cmFwcGVyIik7CisJCQljb21tYW5kID0gZGVwYXJzZV9kcm9wX2NvbW1hbmQob2JqLT5vYmpp ZGVudGl0eSwgdG1wdHlwZSwKKwkJCQkJCQkJCQkgICBzdG10LT5iZWhhdmlvcik7CisJCX0KKwor CQkvKiBDaGFuZ2Ugc3RhdGlzdGljcyBvYmplY3QgdG8gc3RhdGlzdGljcyAqLworCQllbHNlIGlm IChzdHJuY21wKG9iai0+b2JqZWN0dHlwZSwgInN0YXRpc3RpY3Mgb2JqZWN0IiwKKwkJCQkJCSBz dHJsZW4oInN0YXRpc3RpY3Mgb2JqZWN0IikpID09IDApCisJCXsKKwkJCXRtcHR5cGUgPSBwc3Ry ZHVwKCJzdGF0aXN0aWNzIik7CisJCQljb21tYW5kID0gZGVwYXJzZV9kcm9wX2NvbW1hbmQob2Jq LT5vYmppZGVudGl0eSwgdG1wdHlwZSwKKwkJCQkJCQkJCQkgICBzdG10LT5iZWhhdmlvcik7CisJ CX0KKworCQkvKgorCQkgKiBPYmplY3QgaWRlbnRpdHkgbmVlZHMgdG8gYmUgbW9kaWZpZWQgdG8g bWFrZSB0aGUgZHJvcCB3b3JrCisJCSAqCisJCSAqIEZST006IDxyb2xlPiBvbiBzZXJ2ZXIgPHNl cnZlcm5hbWU+IFRPICA6IGZvciA8cm9sZT4gc2VydmVyCisJCSAqIDxzZXJ2ZXJuYW1lPgorCQkg KgorCQkgKi8KKwkJZWxzZSBpZiAoc3RybmNtcChvYmotPm9iamVjdHR5cGUsICJ1c2VyIG1hcHBp bmciLCAxMikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqb25fc2VydmVyOworCisJCQl0bXB0eXBl ID0gcGFsbG9jKHN0cmxlbihvYmotPm9iamlkZW50aXR5KSArIDIpOworCQkJb25fc2VydmVyID0g c3Ryc3RyKG9iai0+b2JqaWRlbnRpdHksICJvbiBzZXJ2ZXIiKTsKKworCQkJc3ByaW50ZigoY2hh ciAqKSB0bXB0eXBlLCAiZm9yICIpOworCQkJc3RybmNhdCgoY2hhciAqKSB0bXB0eXBlLCBvYmot Pm9iamlkZW50aXR5LCBvbl9zZXJ2ZXIgLSBvYmotPm9iamlkZW50aXR5KTsKKwkJCXN0cmNhdCgo Y2hhciAqKSB0bXB0eXBlLCBvbl9zZXJ2ZXIgKyAzKTsKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ry b3BfY29tbWFuZCh0bXB0eXBlLCBvYmotPm9iamVjdHR5cGUsCisJCQkJCQkJCQkJICAgc3RtdC0+ YmVoYXZpb3IpOworCQl9CisJCWVsc2UKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfY29tbWFu ZChvYmotPm9iamlkZW50aXR5LCBvYmotPm9iamVjdHR5cGUsCisJCQkJCQkJCQkJICAgc3RtdC0+ YmVoYXZpb3IpOworCisJCWlmIChjb21tYW5kKQorCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRl cGFyc2UiLCBvYmotPmFkZHJlc3Mub2JqZWN0SWQsIGNtZHR5cGUsCisJCQkJCQkJCSBjb21tYW5k LCBzdHJsZW4oY29tbWFuZCkgKyAxKTsKKwl9CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5V TEwpOworfQorCisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUK KyAqCisgKiBEZXBhcnNlIHRoZSBkZGwgdGFibGUgY3JlYXRlIGNvbW1hbmQgYW5kIGxvZyBpdC4K KyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZShQR19GVU5D VElPTl9BUkdTKQoreworCWNoYXIJCXJlbHBlcnNpc3Q7CisJQ29sbGVjdGVkQ29tbWFuZCAqY21k OworCWNoYXIJICAgKmpzb25fc3RyaW5nOworCisJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dF UihmY2luZm8pKQorCQllbG9nKEVSUk9SLCAibm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFu YWdlciIpOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFu ZDsKKwlBc3NlcnQoY21kKTsKKworCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKGNt ZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCk7CisKKwkvKgorCSAqIERvIG5vdCBnZW5lcmF0 ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJnZXQgdGFibGUgaXMgYSB0ZW1wb3JhcnkK KwkgKiB0YWJsZS4KKwkgKgorCSAqIFdlIHdpbGwgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9n Z2VkIHRhYmxlcyBzbyB0aGF0IHVubG9nZ2VkIHRhYmxlcworCSAqIGNhbiBhbHNvIGJlIGNyZWF0 ZWQgYW5kIGFsdGVyZWQgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gVGhpcyBtYWtlcyBpdAorCSAq IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHJlcGxheSB0aGUgU0VUIExPR0dFRCBjb21tYW5kIGFuZCB0 aGUgaW5jb21pbmcKKwkgKiByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhIG5ldyB0 YWJsZS4KKwkgKi8KKwlpZiAocmVscGVyc2lzdCA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQly ZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworCisJLyogRGVwYXJzZSB0aGUgRERMIGNvbW1h bmQgYW5kIFdBTCBsb2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlIHNhbWUuICovCisJanNv bl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIGZhbHNlKTsKKworCWlmIChq c29uX3N0cmluZyAhPSBOVUxMKQorCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgiZGVwYXJzZSIsIGNt ZC0+ZC5zaW1wbGUuYWRkcmVzcy5vYmplY3RJZCwgRENUX1NpbXBsZUNtZCwKKwkJCQkJCQkganNv bl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKworCXJldHVybiBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpp bmRleCA4ZmU3YmI2NWYxLi5jNjE1YTIzZmU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0 aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vZGVjb2RlLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNz YWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCkBAIC02MTMsNiArNjE0LDQ2 IEBAIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKQogCQkJCQkJCSAgbWVzc2FnZS0+bWVzc2FnZSArIG1lc3NhZ2UtPnBy ZWZpeF9zaXplKTsKIH0KIAorLyoKKyAqIEhhbmRsZSBybWdyIExPR0lDQUxERExNU0dfSUQgcmVj b3JkcyBmb3IgRGVjb2RlUmVjb3JkSW50b1Jlb3JkZXJCdWZmZXIoKS4KKyAqLwordm9pZAorbG9n aWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3RfYnVpbGRl cjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29yZDsKKwlUcmFuc2FjdGlvbklkIHhp ZCA9IFhMb2dSZWNHZXRYaWQocik7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyKSAm IH5YTFJfSU5GT19NQVNLOworCVJlcE9yaWdpbklkIG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmln aW4ocik7CisJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqbWVzc2FnZTsKKworCWlmIChpbmZvICE9 IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUk1f TE9HSUNBTERETE1TR19JRCByZWNvcmQgdHlwZTogJXUiLCBpbmZvKTsKKworCVJlb3JkZXJCdWZm ZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRy KTsKKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVzdCBm YXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgZGRsIG1l c3NhZ2VzLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikgPCBTTkFQ QlVJTERfRlVMTF9TTkFQU0hPVCB8fAorCQljdHgtPmZhc3RfZm9yd2FyZCkKKwkJcmV0dXJuOwor CisJbWVzc2FnZSA9ICh4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICopIFhMb2dSZWNHZXREYXRhKHIp OworCisJaWYgKG1lc3NhZ2UtPmRiSWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlIHx8CisJ CUZpbHRlckJ5T3JpZ2luKGN0eCwgb3JpZ2luX2lkKSkKKwkJcmV0dXJuOworCisJaWYgKFNuYXBC dWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRlciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlSZW9yZGVy QnVmZmVyUXVldWVERExNZXNzYWdlKGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPmVuZHB0ciwKKwkJ CQkJCQkJCSBtZXNzYWdlLT5tZXNzYWdlLCAvKiBmaXJzdCBwYXJ0IG9mIG1lc3NhZ2UgaXMgcHJl Zml4ICovCisJCQkJCQkJCQkgbWVzc2FnZS0+bWVzc2FnZV9zaXplLAorCQkJCQkJCQkJIG1lc3Nh Z2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5wcmVmaXhfc2l6ZSwKKwkJCQkJCQkJCSBtZXNzYWdlLT5y ZWxpZCwgbWVzc2FnZS0+Y21kdHlwZSk7Cit9CisKIC8qCiAgKiBDb25zb2xpZGF0ZWQgY29tbWl0 IHJlY29yZCBoYW5kbGluZyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgZm9ybSBvZiBjb21taXQKICAq IHJlY29yZHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4 IGMzZWM5N2EwYTYuLmY1NmE3MTY1NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1 ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2lu LmgiCkBAIC03Myw2ICs3NCwxMCBAQCBzdGF0aWMgdm9pZCB0cnVuY2F0ZV9jYl93cmFwcGVyKFJl b3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9pZCBt ZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9u YWwsCiAJCQkJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29u c3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBkZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVm ZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkgIFhMb2dSZWNQdHIg bWVzc2FnZV9sc24sIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJICBPaWQgcmVsaWQsIERl cGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwg Y29uc3QgY2hhciAqbWVzc2FnZSk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRp YyB2b2lkIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05MCw2ICs5NSwxMSBAQCBzdGF0aWMgdm9pZCBzdHJlYW1f Y2hhbmdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4g KnR4bgogc3RhdGljIHZvaWQgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVy ICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBYTG9nUmVjUHRyIG1l c3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnBy ZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZv aWQgc3RyZWFtX2RkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVm ZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJ CQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENv bW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBj aGFyICptZXNzYWdlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyKFJl b3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkgICBp bnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJCdWZmZXJDaGFuZ2Ug KmNoYW5nZSk7CiAKQEAgLTIyMyw2ICsyMzMsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExp c3QgKm91dHB1dF9wbHVnaW5fb3B0aW9ucywKIAljdHgtPnJlb3JkZXItPmFwcGx5X3RydW5jYXRl ID0gdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPmNvbW1pdCA9IGNvbW1pdF9j Yl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+bWVzc2FnZSA9IG1lc3NhZ2VfY2Jfd3JhcHBlcjsK KwljdHgtPnJlb3JkZXItPmRkbCA9IGRkbF9jYl93cmFwcGVyOwogCiAJLyoKIAkgKiBUbyBzdXBw b3J0IHN0cmVhbWluZywgd2UgcmVxdWlyZSBzdGFydC9zdG9wL2Fib3J0L2NvbW1pdC9jaGFuZ2UK QEAgLTIzOSw2ICsyNTAsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9w bHVnaW5fb3B0aW9ucywKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jb21taXRfY2IgIT0gTlVM TCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9jaGFuZ2VfY2IgIT0gTlVMTCkgfHwKIAkJ KGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9tZXNzYWdlX2NiICE9IE5VTEwpIHx8CisJCShjdHgtPmNh bGxiYWNrcy5zdHJlYW1fZGRsX2NiICE9IE5VTEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJl YW1fdHJ1bmNhdGVfY2IgIT0gTlVMTCk7CiAKIAkvKgpAQCAtMjU2LDYgKzI2OCw3IEBAIFN0YXJ0 dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVv cmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVhbV9jb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJl b3JkZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJlYW1fY2hhbmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5y ZW9yZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4 LT5yZW9yZGVyLT5zdHJlYW1fZGRsID0gc3RyZWFtX2RkbF9jYl93cmFwcGVyOwogCWN0eC0+cmVv cmRlci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBwZXI7CiAKIApA QCAtMTIzMyw2ICsxMjQ2LDQ0IEBAIG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJj YWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK2RkbF9jYl93cmFwcGVyKFJlb3Jk ZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCSAgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwKKwkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVw YXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJ CQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0YXRl OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJQXNzZXJ0KCFjdHgtPmZh c3RfZm9yd2FyZCk7CisKKwlpZiAoY3R4LT5jYWxsYmFja3MuZGRsX2NiID09IE5VTEwpCisJCXJl dHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0 YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAiZGRsIjsK KwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKwllcnJjYWxsYmFjay5jYWxs YmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2suYXJnID0g KHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9z dGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJLyogc2V0IG91 dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94 aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+eGlkIDogSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4 LT53cml0ZV9sb2NhdGlvbiA9IG1lc3NhZ2VfbHNuOworCisJLyogZG8gdGhlIGFjdHVhbCB3b3Jr OiBjYWxsIGNhbGxiYWNrICovCisJY3R4LT5jYWxsYmFja3MuZGRsX2NiKGN0eCwgdHhuLCBtZXNz YWdlX2xzbiwgcHJlZml4LCByZWxpZCwgY21kdHlwZSwKKwkJCQkJCQkJIG1lc3NhZ2Vfc2l6ZSwg bWVzc2FnZSk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9j b250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBz dHJlYW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQkJWExvZ1JlY1B0ciBmaXJzdF9sc24pCkBAIC0xNTQ4LDYgKzE1OTks NDggQEAgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5w cmV2aW91czsKIH0KIAorc3RhdGljIHZvaWQKK3N0cmVhbV9kZGxfY2Jfd3JhcHBlcihSZW9yZGVy QnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCSBYTG9nUmVjUHRy IG1lc3NhZ2VfbHNuLAorCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVw YXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJ CQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHggPSBjYWNoZS0+cHJpdmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUgc3Rh dGU7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQoIWN0eC0+ ZmFzdF9mb3J3YXJkKTsKKworCS8qIFdlJ3JlIG9ubHkgc3VwcG9zZWQgdG8gY2FsbCB0aGlzIHdo ZW4gc3RyZWFtaW5nIGlzIHN1cHBvcnRlZC4gKi8KKwlBc3NlcnQoY3R4LT5zdHJlYW1pbmcpOwor CisJLyogdGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCAqLworCWlmIChjdHgtPmNhbGxiYWNrcy5z dHJlYW1fZGRsX2NiID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBp bmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0 YXRlLmNhbGxiYWNrX25hbWUgPSAic3RyZWFtX2RkbCI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9u ID0gbWVzc2FnZV9sc247CisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vy cm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJj YWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9z dGFjayA9ICZlcnJjYWxsYmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFj Y2VwdF93cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4t PnhpZCA6IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBtZXNz YWdlX2xzbjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLworCWN0 eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxfY2IoY3R4LCB0eG4sIG1lc3NhZ2VfbHNuLCBwcmVmaXgs IHJlbGlkLAorCQkJCQkJCQkJCWNtZHR5cGUsIG1lc3NhZ2Vfc2l6ZSwgbWVzc2FnZSk7CisKKwkv KiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJlYW1fdHJ1bmNhdGVf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CQkJCQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEy Yi4uOTJmNWY5MzU3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2lu Y2x1ZGUgInV0aWxzL2FycmF5LmgiCkBAIC0zODgsMyArMzg5LDI2IEBAIHBnX2xvZ2ljYWxfZW1p dF9tZXNzYWdlX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBieXRlYSBhbmQgdGV4dCBhcmUg Y29tcGF0aWJsZSAqLwogCXJldHVybiBwZ19sb2dpY2FsX2VtaXRfbWVzc2FnZV9ieXRlYShmY2lu Zm8pOwogfQorCisvKgorICogU1FMIGZ1bmN0aW9uIGZvciB3cml0aW5nIGxvZ2ljYWwgZGVjb2Rp bmcgRERMIG1lc3NhZ2UgaW50byBXQUwuCisgKi8KK0RhdHVtCitwZ19sb2dpY2FsX2VtaXRfZGRs X21lc3NhZ2VfYnl0ZWEoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljaGFyCSAgICpwcmVmaXggPSB0 ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCU9pZAkJCXJlbGlkID0gUEdf R0VUQVJHX09JRCgxKTsKKwlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUgPSBQR19HRVRBUkdf SU5UMTYoMik7CisJY2hhcgkgICAqZGF0YSA9IHRleHRfdG9fY3N0cmluZyhQR19HRVRBUkdfVEVY VF9QUCgzKSk7CisJWExvZ1JlY1B0cglsc247CisKKwlsc24gPSBMb2dMb2dpY2FsRERMTWVzc2Fn ZShwcmVmaXgsIHJlbGlkLCBjbWR0eXBlLCBkYXRhLCBzdHJsZW4oZGF0YSkpOworCVBHX1JFVFVS Tl9MU04obHNuKTsKK30KKworRGF0dW0KK3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV90ZXh0 KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogYnl0ZWEgYW5kIHRleHQgYXJlIGNvbXBhdGlibGUg Ki8KKwlyZXR1cm4gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX2J5dGVhKGZjaW5mbyk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAppbmRleCBkNDhj ZDRjNTkwLi4wNWU3NzU2OTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bWVzb24uYnVpbGQKQEAgLTIsNiArMiw4IEBACiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygK ICAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCisgICdkZGxtZXNzYWdlLmMnLAorICAnZGRsdHJp Z2dlci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmMzA4NzEzMjc1Li4x YmEzZmViMTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC02 NjMsNiArNjYzLDQ3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwg VHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCXBxX3NlbmRieXRlcyhvdXQsIG1l c3NhZ2UsIHN6KTsKIH0KIAorLyoKKyAqIFJlYWQgRERMIE1FU1NBR0UgZnJvbSBzdHJlYW0KKyAq LworY2hhciAqCitsb2dpY2FscmVwX3JlYWRfZGRsKFN0cmluZ0luZm8gaW4sIFhMb2dSZWNQdHIg KmxzbiwKKwkJCQkJCSAgIGNvbnN0IGNoYXIgKipwcmVmaXgsCisJCQkJCQkgICBTaXplICpzeikK K3sKKwl1aW50OCBmbGFnczsKKwljaGFyICptc2c7CisKKwlmbGFncyA9IHBxX2dldG1zZ2ludChp biwgMSk7CisJaWYgKGZsYWdzICE9IDApCisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgZmxh Z3MgJXUgaW4gZGRsIG1lc3NhZ2UiLCBmbGFncyk7CisKKwkqbHNuID0gcHFfZ2V0bXNnaW50NjQo aW4pOworCSpwcmVmaXggPSBwcV9nZXRtc2dzdHJpbmcoaW4pOworCSpzeiA9IHBxX2dldG1zZ2lu dChpbiwgNCk7CisJbXNnID0gKGNoYXIgKikgcHFfZ2V0bXNnYnl0ZXMoaW4sICpzeik7CisKKwly ZXR1cm4gbXNnOworfQorCisvKgorICogV3JpdGUgRERMIE1FU1NBR0UgdG8gc3RyZWFtCisgKi8K K3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfZGRsKFN0cmluZ0luZm8gb3V0LCBYTG9nUmVjUHRyIGxz biwKKwkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3Nh Z2UpCit7CisJdWludDgJCWZsYWdzID0gMDsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9S RVBfTVNHX0RETCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZsYWdzKTsKKwlwcV9zZW5kaW50NjQo b3V0LCBsc24pOworCXBxX3NlbmRzdHJpbmcob3V0LCBwcmVmaXgpOworCXBxX3NlbmRpbnQzMihv dXQsIHN6KTsKKwlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdlLCBzeik7Cit9CisKIC8qCiAgKiBX cml0ZSByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4KICAqLwpAQCAt MTIzOCw2ICsxMjc5LDggQEAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5 cGUgYWN0aW9uKQogCQkJcmV0dXJuICJUWVBFIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfTUVT U0FHRToKIAkJCXJldHVybiAiTUVTU0FHRSI7CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETDoK KwkJCXJldHVybiAiRERMIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRToK IAkJCXJldHVybiAiQkVHSU4gUFJFUEFSRSI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1BSRVBB UkU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j CmluZGV4IDlmNDQ5NzQ0NzMuLmU4OGViMmY0MmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVk ZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw Z3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3JkZXJidWZm ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC01MTYsNiArNTE3LDE0IEBA IFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZm ZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQlwZnJlZShjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UpOwog CQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTlVMTDsKIAkJCWJyZWFrOworCQljYXNlIFJF T1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQlpZiAoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgg IT0gTlVMTCkKKwkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCk7CisJCQljaGFuZ2Ut PmRhdGEuZGRsLnByZWZpeCA9IE5VTEw7CisJCQlpZiAoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdl ICE9IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlKTsKKwkJCWNoYW5n ZS0+ZGF0YS5kZGwubWVzc2FnZSA9IE5VTEw7CisJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgogCQkJaWYgKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZh bGlkYXRpb25zKQogCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zKTsK QEAgLTg5NSw2ICs5MDQsMzYgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJfQogfQogCisvKgorICogQSB0cmFuc2FjdGlv bmFsIERETCBtZXNzYWdlIGlzIHF1ZXVlZCB0byBiZSBwcm9jZXNzZWQgdXBvbiBjb21taXQuCisg Ki8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIs IFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSBYTG9nUmVjUHRyIGxzbiwgY29uc3QgY2hhciAq cHJlZml4LAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSwK KwkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUpCit7CisJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OworCVJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZTsKKwor CUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocmItPmNvbnRleHQpOworCisJY2hhbmdlID0gUmVvcmRlckJ1ZmZl ckdldENoYW5nZShyYik7CisJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf RERMOworCWNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ID0gcHN0cmR1cChwcmVmaXgpOworCWNoYW5n ZS0+ZGF0YS5kZGwucmVsaWQgPSByZWxpZDsKKwljaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUgPSBj bWR0eXBlOworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplID0gbWVzc2FnZV9zaXplOwor CWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOworCW1lbWNw eShjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2UsIG1lc3NhZ2UsIG1lc3NhZ2Vfc2l6ZSk7CisKKwlS ZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2UocmIsIHhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKKwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIEFzc2VydFRY Tkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFuc2FjdGlvbiBsaXN0cyBp biB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtMTk5Nyw2ICsyMDM2LDI5IEBAIFJlb3JkZXJCdWZmZXJB cHBseU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJ CQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIH0KIAorLyoKKyAqIEhlbHBlciBmdW5jdGlv biBmb3IgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4gZm9yIGFwcGx5aW5nIHRoZSBEREwgbWVzc2Fn ZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNzYWdl KFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJIFJlb3Jk ZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwgYm9vbCBzdHJlYW1pbmcpCit7CisJaWYgKHN0cmVhbWlu ZykKKwkJcmItPnN0cmVhbV9kZGwocmIsIHR4biwgY2hhbmdlLT5sc24sCisJCQkJCQkJICBjaGFu Z2UtPmRhdGEuZGRsLnByZWZpeCwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsCisJ CQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEu ZGRsLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSk7CisJ ZWxzZQorCQlyYi0+ZGRsKHJiLCB0eG4sIGNoYW5nZS0+bHNuLAorCQkJCQkgICBjaGFuZ2UtPmRh dGEuZGRsLnByZWZpeCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5yZWxpZCwKKwkJCQkJICAg Y2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsLm1lc3Nh Z2Vfc2l6ZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlKTsKK30KKwogLyoKICAq IEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hvdCBhdCB0aGUgZW5k IG9mIHRoZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUg d2hpbGUgc2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0yMzc5LDYgKzI0NDEsMTAgQEAgUmVv cmRlckJ1ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UsIHN0 cmVhbWluZyk7CiAJCQkJCWJyZWFrOwogCisJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf RERMOgorCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNzYWdlKHJiLCB0eG4sIGNoYW5nZSwg c3RyZWFtaW5nKTsKKwkJCQkJYnJlYWs7CisKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlZBTElEQVRJT046CiAJCQkJCS8qIEV4ZWN1dGUgdGhlIGludmFsaWRhdGlvbiBtZXNzYWdl cyBsb2NhbGx5ICovCiAJCQkJCVJlb3JkZXJCdWZmZXJFeGVjdXRlSW52YWxpZGF0aW9ucyhjaGFu Z2UtPmRhdGEuaW52YWwubmludmFsaWRhdGlvbnMsCkBAIC0zODM1LDYgKzM5MDEsMzkgQEAgUmVv cmRlckJ1ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CiAJCQkJ ZGF0YSArPSBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZTsKIAorCQkJCWJyZWFrOworCQkJ fQorCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQl7CisJCQkJY2hhcgkgICAq ZGF0YTsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEuZGRsLnBy ZWZpeCkgKyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEuZGRsLm1l c3NhZ2Vfc2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihPaWQpICsgc2l6ZW9mKGlu dCkgKyBzaXplb2YoU2l6ZSk7CisJCQkJUmVvcmRlckJ1ZmZlclNlcmlhbGl6ZVJlc2VydmUocmIs IHN6KTsKKworCQkJCWRhdGEgPSAoKGNoYXIgKikgcmItPm91dGJ1ZikgKyBzaXplb2YoUmVvcmRl ckJ1ZmZlckRpc2tDaGFuZ2UpOworCisJCQkJLyogbWlnaHQgaGF2ZSBiZWVuIHJlYWxsb2NhdGVk IGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlICopIHJiLT5v dXRidWY7CisKKwkJCQkvKiB3cml0ZSB0aGUgcHJlZml4LCByZWxpZCBhbmQgY21kdHlwZSBpbmNs dWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJnByZWZpeF9zaXplLCBzaXplb2Yo U2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweShkYXRhLCAmY2hh bmdlLT5kYXRhLmRkbC5yZWxpZCwgc2l6ZW9mKE9pZCkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKE9p ZCk7CisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsIHNpemVvZihE ZXBhcnNlZENvbW1hbmRUeXBlKSk7CisJCQkJZGF0YSArPSBzaXplb2YoaW50KTsKKwkJCQltZW1j cHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgsIHByZWZpeF9zaXplKTsKKwkJCQlkYXRh ICs9IHByZWZpeF9zaXplOworCisJCQkJLyogd3JpdGUgdGhlIG1lc3NhZ2UgaW5jbHVkaW5nIHRo ZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6 ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHko ZGF0YSwgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRs Lm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6 ZTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZB TElEQVRJT046CkBAIC00MTQ5LDYgKzQyNDgsMTUgQEAgUmVvcmRlckJ1ZmZlckNoYW5nZVNpemUo UmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJCXN6ICs9IHByZWZpeF9zaXplICsgY2hh bmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUgKwogCQkJCQlzaXplb2YoU2l6ZSkgKyBzaXplb2Yo U2l6ZSk7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf RERMOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplID0gc3RybGVuKGNoYW5nZS0+ZGF0YS5k ZGwucHJlZml4KSArIDE7CisKKwkJCQlzeiArPSBwcmVmaXhfc2l6ZSArIGNoYW5nZS0+ZGF0YS5k ZGwubWVzc2FnZV9zaXplICsKKwkJCQkJc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpICsgc2l6 ZW9mKE9pZCkgKyBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSk7CisKIAkJCQlicmVhazsKIAkJ CX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgpAQCAtNDQyNiw2 ICs0NTM0LDMzIEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJi LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCSAgIGNoYW5nZS0+ZGF0YS5tc2cubWVzc2Fn ZV9zaXplKTsKIAkJCQlkYXRhICs9IGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZV9zaXplOwogCisJ CQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETDoKKwkJCXsK KwkJCQlTaXplCQlwcmVmaXhfc2l6ZTsKKworCQkJCS8qIHJlYWQgcHJlZml4ICovCisJCQkJbWVt Y3B5KCZwcmVmaXhfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVv ZihTaXplKTsKKwkJCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsIGRhdGEsIHNpemVv ZihPaWQpKTsKKwkJCQlkYXRhICs9IHNpemVvZihPaWQpOworCQkJCW1lbWNweSgmY2hhbmdlLT5k YXRhLmRkbC5jbWR0eXBlLCBkYXRhLCBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSkpOworCQkJ CWRhdGEgKz0gc2l6ZW9mKGludCk7CisJCQkJY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXggPSBNZW1v cnlDb250ZXh0QWxsb2MocmItPmNvbnRleHQsIHByZWZpeF9zaXplKTsKKwkJCQltZW1jcHkoY2hh bmdlLT5kYXRhLmRkbC5wcmVmaXgsIGRhdGEsIHByZWZpeF9zaXplKTsKKwkJCQlBc3NlcnQoY2hh bmdlLT5kYXRhLmRkbC5wcmVmaXhbcHJlZml4X3NpemUgLSAxXSA9PSAnXDAnKTsKKwkJCQlkYXRh ICs9IHByZWZpeF9zaXplOworCisJCQkJLyogcmVhZCB0aGUgbWVzc2FnZSAqLworCQkJCW1lbWNw eSgmY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUsIGRhdGEsIHNpemVvZihTaXplKSk7CisJ CQkJZGF0YSArPSBzaXplb2YoU2l6ZSk7CisJCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0g TWVtb3J5Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICBjaGFuZ2Ut PmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5tc2cubWVz c2FnZSwgZGF0YSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOworCQkJ CWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CisKIAkJCQlicmVhazsKIAkJ CX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMTBmOTcxMTk3Mi4uOWUwNTNhM2Q4 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNjYsNiAr MTY2LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2Vy L2FuYWx5emUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCkBAIC0xOTEsNyAr MTkyLDEwIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL2Rk bF9kZXBhcnNlLmgiCisjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKICNpbmNsdWRlICJ0Y29wL3Rj b3Bwcm90LmgiCisjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMvYWNs LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9jYXRjYWNo ZS5oIgpAQCAtMzIyOCw2ICszMjMyLDIzOCBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5n SW5mbyBzKQogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiB9CiAKKy8qCisgKiBTcGVjaWFsIGhh bmRsaW5nIGZvciBDUkVBVEUgVEFCTEUgQVMgYW5kIFNFTEVDVCBJTlRPCisgKiB0byBub3QgcG9w dWxhdGUgZGF0YSBmcm9tIHRoZSBzb3VyY2UgdGFibGUgb24gdGhlIHN1YnNjcmliZXIuCisgKiBB bGxvdyB0aGUgZGF0YSB0byBiZSByZXBsaWNhdGVkIHRocm91Z2ggSU5TRVJUcyBvbiB0aGUgcHVi bGlzaGVyLgorICovCitzdGF0aWMgdm9pZAorcHJlcHJvY2Vzc19jcmVhdGVfdGFibGUoUmF3U3Rt dCAqY29tbWFuZCkKK3sKKwlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CisKKwljb21tYW5kVGFnID0g Q3JlYXRlQ29tbWFuZFRhZygoTm9kZSAqKSBjb21tYW5kKTsKKworCXN3aXRjaCAoY29tbWFuZFRh ZykKKwl7CisJCWNhc2UgQ01EVEFHX0NSRUFURV9UQUJMRV9BUzoKKwkJY2FzZSBDTURUQUdfU0VM RUNUX0lOVE86CisJCQl7CisJCQkJQ3JlYXRlVGFibGVBc1N0bXQgKmNhc3RtdCA9IChDcmVhdGVU YWJsZUFzU3RtdCAqKSBjb21tYW5kLT5zdG10OworCisJCQkJaWYgKGNhc3RtdC0+b2JqdHlwZSA9 PSBPQkpFQ1RfVEFCTEUpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBGb3JjZSBza2lwcGluZyBk YXRhIHBvcHVsYXRpb24gdG8gYXZvaWQgZGF0YQorCQkJCQkgKiBpbmNvbnNpc3RlbmN5LiBEYXRh IHNob3VsZCBiZSByZXBsaWNhdGVkIGZyb20gdGhlCisJCQkJCSAqIHB1Ymxpc2hlciBpbnN0ZWFk LgorCQkJCQkgKi8KKwkJCQkJY2FzdG10LT5pbnRvLT5za2lwRGF0YSA9IHRydWU7CisJCQkJfQor CQkJfQorCQkJYnJlYWs7CisJCWNhc2UgQ01EVEFHX1NFTEVDVDoKKwkJCXsKKwkJCQlTZWxlY3RT dG10ICpzc3RtdCA9IChTZWxlY3RTdG10ICopIGNvbW1hbmQtPnN0bXQ7CisKKwkJCQlpZiAoc3N0 bXQtPmludG9DbGF1c2UgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEZvcmNlIHNr aXBwaW5nIGRhdGEgcG9wdWxhdGlvbiB0byBhdm9pZCBkYXRhCisJCQkJCSAqIGluY29uc2lzdGVu Y3kuIERhdGEgc2hvdWxkIGJlIHJlcGxpY2F0ZWQgZnJvbSB0aGUKKwkJCQkJICogcHVibGlzaGVy IGluc3RlYWQuCisJCQkJCSAqLworCQkJCQlzc3RtdC0+aW50b0NsYXVzZS0+c2tpcERhdGEgPSB0 cnVlOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJfQor fQorCisvKgorICogSGFuZGxlIENSRUFURSBUQUJMRSBjb21tYW5kCisgKgorICogQ2FsbCBBZGRT dWJzY3JpcHRpb25SZWxTdGF0ZSBmb3IgQ1JFQVRFIExBQkVMIGNvbW1hbmQgdG8gc2V0IHRoZSBy ZWxzdGF0ZSB0bworICogU1VCUkVMX1NUQVRFX1JFQURZIHNvIERNTCBjaGFuZ2VzIG9uIHRoaXMg bmV3IHRhYmxlIGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQKKyAqIGhhdmluZyB0byBtYW51YWxs eSBydW4gImFsdGVyIHN1YnNjcmlwdGlvbiAuLi4gcmVmcmVzaCBwdWJsaWNhdGlvbiIKKyAqLwor c3RhdGljIHZvaWQKK2hhbmRsZV9jcmVhdGVfdGFibGUoUmF3U3RtdCAqY29tbWFuZCkKK3sKKwlD b21tYW5kVGFnCWNvbW1hbmRUYWc7CisJUmFuZ2VWYXIgICAqcnYgPSBOVUxMOworCU9pZAkJCXJl bGlkOworCU9pZAkJCXJlbG5hbWVzcGFjZSA9IEludmFsaWRPaWQ7CisJQ3JlYXRlU3RtdCAqY3N0 bXQ7CisJY2hhcgkgICAqc2NoZW1hbmFtZSA9IE5VTEw7CisJY2hhcgkgICAqcmVsbmFtZSA9IE5V TEw7CisKKwljb21tYW5kVGFnID0gQ3JlYXRlQ29tbWFuZFRhZygoTm9kZSAqKSBjb21tYW5kKTsK Kwljc3RtdCA9IChDcmVhdGVTdG10ICopIGNvbW1hbmQtPnN0bXQ7CisJcnYgPSBjc3RtdC0+cmVs YXRpb247CisKKwlpZiAoY29tbWFuZFRhZyA9PSBDTURUQUdfQ1JFQVRFX1RBQkxFKQorCXsKKwkJ Y3N0bXQgPSAoQ3JlYXRlU3RtdCAqKSBjb21tYW5kLT5zdG10OworCQlydiA9IGNzdG10LT5yZWxh dGlvbjsKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuOworCX0KKworCWlmICghcnYpCisJCXJldHVy bjsKKworCXNjaGVtYW5hbWUgPSBydi0+c2NoZW1hbmFtZTsKKwlyZWxuYW1lID0gcnYtPnJlbG5h bWU7CisKKwlpZiAoc2NoZW1hbmFtZSAhPSBOVUxMKQorCQlyZWxuYW1lc3BhY2UgPSBnZXRfbmFt ZXNwYWNlX29pZChzY2hlbWFuYW1lLCBmYWxzZSk7CisKKwlpZiAocmVsbmFtZXNwYWNlICE9IElu dmFsaWRPaWQpCisJCXJlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwgcmVsbmFtZXNw YWNlKTsKKwllbHNlCisJCXJlbGlkID0gUmVsbmFtZUdldFJlbGlkKHJlbG5hbWUpOworCisJaWYg KE9pZElzVmFsaWQocmVsaWQpKQorCXsKKwkJQWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJz Y3JpcHRpb24tPm9pZCwgcmVsaWQsCisJCQkJCQkJCVNVQlJFTF9TVEFURV9SRUFEWSwKKwkJCQkJ CQkJSW52YWxpZFhMb2dSZWNQdHIpOworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnX2lu dGVybmFsKCJ0YWJsZSBcIiVzXCIgYWRkZWQgdG8gc3Vic2NyaXB0aW9uIFwiJXNcIiIsCisJCQkJ CQkJCSByZWxuYW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwl9Cit9CisKKy8qCisgKiBI YW5kbGUgRERMIHJlcGxpY2F0aW9uIG1lc3NhZ2VzLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlf aGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCit7CisJWExvZ1JlY1B0cglsc247CisJY29uc3QgY2hh ciAqcHJlZml4ID0gTlVMTDsKKwljaGFyCSAgICptZXNzYWdlID0gTlVMTDsKKwljaGFyCSAgICpk ZGxfY29tbWFuZDsKKwlTaXplCQlzejsKKwlMaXN0CSAgICpwYXJzZXRyZWVfbGlzdDsKKwlMaXN0 Q2VsbCAgICpwYXJzZXRyZWVfaXRlbTsKKwlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVyOworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwljb25zdCBjaGFyICpzYXZlX2RlYnVnX3F1ZXJ5X3N0cmlu ZyA9IGRlYnVnX3F1ZXJ5X3N0cmluZzsKKworCW1lc3NhZ2UgPSBsb2dpY2FscmVwX3JlYWRfZGRs KHMsICZsc24sICZwcmVmaXgsICZzeik7CisKKwkvKiBNYWtlIHN1cmUgd2UgYXJlIGluIGEgdHJh bnNhY3Rpb24gY29tbWFuZCAqLworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWRkbF9j b21tYW5kID0gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7CisJZGVidWdfcXVl cnlfc3RyaW5nID0gZGRsX2NvbW1hbmQ7CisKKwkvKiBEZXN0Tm9uZSBmb3IgbG9naWNhbCByZXBs aWNhdGlvbiAqLworCXJlY2VpdmVyID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERlc3ROb25lKTsKKwlw YXJzZXRyZWVfbGlzdCA9IHBnX3BhcnNlX3F1ZXJ5KGRkbF9jb21tYW5kKTsKKworCWZvcmVhY2go cGFyc2V0cmVlX2l0ZW0sIHBhcnNldHJlZV9saXN0KQorCXsKKwkJTGlzdAkgICAqcGxhbnRyZWVf bGlzdDsKKwkJTGlzdAkgICAqcXVlcnl0cmVlX2xpc3Q7CisJCVJhd1N0bXQgICAgKmNvbW1hbmQg PSAoUmF3U3RtdCAqKSBsZmlyc3QocGFyc2V0cmVlX2l0ZW0pOworCQlDb21tYW5kVGFnCWNvbW1h bmRUYWc7CisJCU1lbW9yeUNvbnRleHQgcGVyX3BhcnNldHJlZV9jb250ZXh0ID0gTlVMTDsKKwkJ UG9ydGFsCQlwb3J0YWw7CisJCWJvb2wJCXNuYXBzaG90X3NldCA9IGZhbHNlOworCisJCWNvbW1h bmRUYWcgPSBDcmVhdGVDb21tYW5kVGFnKChOb2RlICopIGNvbW1hbmQpOworCisJCS8qIElmIHdl IGdvdCBhIGNhbmNlbCBzaWduYWwgaW4gcGFyc2luZyBvciBwcmlvciBjb21tYW5kLCBxdWl0ICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVtb3ZlIGRhdGEgcG9wdWxhdGlv biBmcm9tIHRoZSBjb21tYW5kICovCisJCXByZXByb2Nlc3NfY3JlYXRlX3RhYmxlKGNvbW1hbmQp OworCisJCS8qCisJCSAqIFNldCB1cCBhIHNuYXBzaG90IGlmIHBhcnNlIGFuYWx5c2lzL3BsYW5u aW5nIHdpbGwgbmVlZCBvbmUuCisJCSAqLworCQlpZiAoYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hv dChjb21tYW5kKSkKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCQlzbmFwc2hvdF9zZXQgPSB0cnVlOworCQl9CisKKwkJLyoKKwkJICogV2Ug ZG8gdGhlIHdvcmsgZm9yIGVhY2ggcGFyc2V0cmVlIGluIGEgc2hvcnQtbGl2ZWQgY29udGV4dCwg dG8KKwkJICogbGltaXQgdGhlIG1lbW9yeSB1c2VkIHdoZW4gdGhlcmUgYXJlIG1hbnkgY29tbWFu ZHMgaW4gdGhlIHN0cmluZy4KKwkJICovCisJCXBlcl9wYXJzZXRyZWVfY29udGV4dCA9CisJCQlB bGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCSAgImV4 ZWN1dGVfc3FsX3N0cmluZyBwZXItc3RhdGVtZW50IGNvbnRleHQiLAorCQkJCQkJCQkgIEFMTE9D U0VUX0RFRkFVTFRfU0laRVMpOworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBlcl9wYXJzZXRyZWVfY29udGV4dCk7CisKKwkJcXVlcnl0cmVlX2xpc3QgPSBwZ19hbmFseXpl X2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKGNvbW1hbmQsCisJCQkJCQkJCQkJCQkJCQlkZGxfY29t bWFuZCwKKwkJCQkJCQkJCQkJCQkJCU5VTEwsIDAsIE5VTEwpOworCisJCXBsYW50cmVlX2xpc3Qg PSBwZ19wbGFuX3F1ZXJpZXMocXVlcnl0cmVlX2xpc3QsIGRkbF9jb21tYW5kLCAwLCBOVUxMKTsK KworCQkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcnNpbmcvcGxhbm5pbmcg Ki8KKwkJaWYgKHNuYXBzaG90X3NldCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJcG9y dGFsID0gQ3JlYXRlUG9ydGFsKCJsb2dpY2FsIHJlcGxpY2F0aW9uIiwgdHJ1ZSwgdHJ1ZSk7CisK KwkJLyoKKwkJICogV2UgZG9uJ3QgaGF2ZSB0byBjb3B5IGFueXRoaW5nIGludG8gdGhlIHBvcnRh bCwgYmVjYXVzZSBldmVyeXRoaW5nCisJCSAqIHdlIGFyZSBwYXNzaW5nIGhlcmUgaXMgaW4gQXBw bHlNZXNzYWdlQ29udGV4dCBvciB0aGUKKwkJICogcGVyX3BhcnNldHJlZV9jb250ZXh0LCBhbmQg c28gd2lsbCBvdXRsaXZlIHRoZSBwb3J0YWwgYW55d2F5LgorCQkgKi8KKwkJUG9ydGFsRGVmaW5l UXVlcnkocG9ydGFsLAorCQkJCQkJICBOVUxMLAorCQkJCQkJICBkZGxfY29tbWFuZCwKKwkJCQkJ CSAgY29tbWFuZFRhZywKKwkJCQkJCSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJCSAgTlVMTCk7CisK KwkJLyoKKwkJICogU3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMgaGVyZS4KKwkJICov CisJCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90KTsKKworCQkv KgorCQkgKiBTd2l0Y2ggYmFjayB0byB0cmFuc2FjdGlvbiBjb250ZXh0IGZvciBleGVjdXRpb24u CisJCSAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkJKHZvaWQp IFBvcnRhbFJ1bihwb3J0YWwsCisJCQkJCQkgRkVUQ0hfQUxMLAorCQkJCQkJIHRydWUsCisJCQkJ CQkgdHJ1ZSwKKwkJCQkJCSByZWNlaXZlciwKKwkJCQkJCSByZWNlaXZlciwKKwkJCQkJCSBOVUxM KTsKKworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCisJCUNvbW1hbmRDb3VudGVySW5j cmVtZW50KCk7CisKKwkJLyoKKwkJICogVGFibGUgY3JlYXRlZCBieSBEREwgcmVwbGljYXRpb24g KGRhdGFiYXNlIGxldmVsKSBpcyBhdXRvbWF0aWNhbGx5CisJCSAqIGFkZGVkIHRvIHRoZSBzdWJz Y3JpcHRpb24gaGVyZS4KKwkJICovCisJCWhhbmRsZV9jcmVhdGVfdGFibGUoY29tbWFuZCk7CisK KwkJLyogTm93IHdlIG1heSBkcm9wIHRoZSBwZXItcGFyc2V0cmVlIGNvbnRleHQsIGlmIG9uZSB3 YXMgY3JlYXRlZC4gKi8KKwkJTWVtb3J5Q29udGV4dERlbGV0ZShwZXJfcGFyc2V0cmVlX2NvbnRl eHQpOworCX0KKworCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNhdmVfZGVidWdfcXVlcnlfc3RyaW5n OworCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Cit9CiAKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0 aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0Y2hlci4KQEAgLTMyOTMsNiArMzUyOSwxMCBAQCBh cHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX0RETDoKKwkJCWFwcGx5X2hhbmRsZV9kZGwocyk7CisJCQlicmVhazsK KwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJCQlhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwppbmRleCAzYTJkMmUzNTdlLi4wNGJiZDRhOWEzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVk ZSAiZm1nci5oIgpAQCAtNTUsNiArNTYsMTEgQEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfbWVzc2Fn ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFs LCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3Nh Z2UpOworc3RhdGljIHZvaWQgcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwKKwkJCQkJCQkJUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNu LAorCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJCQkJRGVwYXJz ZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQlTaXplIHN6LCBjb25zdCBjaGFyICptZXNz YWdlKTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGlj IHZvaWQgcGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LApAQCAtMjU0LDYgKzI2MCw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1 Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNi LT50cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdv dXRwdXRfbWVzc2FnZTsKKwljYi0+ZGRsX2NiID0gcGdvdXRwdXRfZGRsOwogCWNiLT5jb21taXRf Y2IgPSBwZ291dHB1dF9jb21taXRfdHhuOwogCiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291 dHB1dF9iZWdpbl9wcmVwYXJlX3R4bjsKQEAgLTI3MCw2ICsyNzcsNyBAQCBfUEdfb3V0cHV0X3Bs dWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRf Y2IgPSBwZ291dHB1dF9zdHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdv dXRwdXRfY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7 CisJY2ItPnN0cmVhbV9kZGxfY2IgPSBwZ291dHB1dF9kZGw7CiAJY2ItPnN0cmVhbV90cnVuY2F0 ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCS8qIHRyYW5zYWN0aW9uIHN0cmVhbWluZyAtIHR3 by1waGFzZSBjb21taXQgKi8KIAljYi0+c3RyZWFtX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9zdHJl YW1fcHJlcGFyZV90eG47CkBAIC00MjUsNiArNDMzLDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCS8q IFRoaXMgcGx1Z2luIHVzZXMgYmluYXJ5IHByb3RvY29sLiAqLwogCW9wdC0+b3V0cHV0X3R5cGUg PSBPVVRQVVRfUExVR0lOX0JJTkFSWV9PVVRQVVQ7CisJb3B0LT5yZWNlaXZlX3Jld3JpdGVzID0g dHJ1ZTsKIAogCS8qCiAJICogVGhpcyBpcyByZXBsaWNhdGlvbiBzdGFydCBhbmQgbm90IHNsb3Qg aW5pdGlhbGl6YXRpb24uCkBAIC01MDUsNiArNTE0LDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCQkv KiBJbml0IHB1YmxpY2F0aW9uIHN0YXRlLiAqLwogCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBOSUw7 CisJCWRhdGEtPmRlbGV0ZWRfcmVsaWRzID0gTklMOwogCQlwdWJsaWNhdGlvbnNfdmFsaWQgPSBm YWxzZTsKIAogCQkvKgpAQCAtMTQxMSw2ICsxNDIxLDE5IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlSZW9yZGVy QnVmZmVyQ2hhbmdlVHlwZSBhY3Rpb24gPSBjaGFuZ2UtPmFjdGlvbjsKIAlUdXBsZVRhYmxlU2xv dCAqb2xkX3Nsb3QgPSBOVUxMOwogCVR1cGxlVGFibGVTbG90ICpuZXdfc2xvdCA9IE5VTEw7CisJ Ym9vbAkJCXRhYmxlX3Jld3JpdGUgPSBmYWxzZTsKKworCS8qCisJICogRm9yIGhlYXAgcmV3cml0 ZXMsIHdlIG1pZ2h0IG5lZWQgdG8gcmVwbGljYXRlIHRoZW0gaWYgdGhlIHJld3JpdHRlbgorCSAq IHRhYmxlIHB1Ymxpc2hlcyByZXdyaXRlIGRkbCBtZXNzYWdlLiBTbyBnZXQgdGhlIGFjdHVhbCBy ZWxhdGlvbiBoZXJlCisJICogYW5kIGNoZWNrIHRoZSBwdWJhY3Rpb24gbGF0ZXIuCisJICovCisJ aWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHJld3JpdGUpCisJeworCQl0YWJsZV9yZXdyaXRlID0g dHJ1ZTsKKwkJcmVsYXRpb24gPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ocmVsYXRpb24tPnJkX3Jl bC0+cmVscmV3cml0ZSk7CisJCXRhcmdldHJlbCA9IHJlbGF0aW9uOworCX0KIAogCWlmICghaXNf cHVibGlzaGFibGVfcmVsYXRpb24ocmVsYXRpb24pKQogCQlyZXR1cm47CkBAIC0xNDQ1LDYgKzE0 NjgsMTMgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJQXNzZXJ0KGZhbHNlKTsKIAl9CiAKKwkvKgorCSAqIFdl IGRvbid0IHB1Ymxpc2ggdGFibGUgcmV3cml0ZSBjaGFuZ2UgdW5sZXNzIHdlIHB1Ymxpc2ggdGhl IHJld3JpdGUgZGRsCisJICogbWVzc2FnZS4KKwkgKi8KKwlpZiAodGFibGVfcmV3cml0ZSAmJiAh cmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCQlyZXR1cm47CisKIAkvKiBBdm9p ZCBsZWFraW5nIG1lbW9yeSBieSB1c2luZyBhbmQgcmVzZXR0aW5nIG91ciBvd24gY29udGV4dCAq LwogCW9sZCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhkYXRhLT5jb250ZXh0KTsKIApAQCAtMTQ3 NCw4ICsxNTA0LDggQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJfQogCiAJCQkvKiBDaGVjayByb3cgZmlsdGVy ICovCi0JCQlpZiAoIXBnb3V0cHV0X3Jvd19maWx0ZXIodGFyZ2V0cmVsLCBOVUxMLCAmbmV3X3Ns b3QsIHJlbGVudHJ5LAotCQkJCQkJCQkJICZhY3Rpb24pKQorCQkJaWYgKCF0YWJsZV9yZXdyaXRl ICYmCisJCQkJIXBnb3V0cHV0X3Jvd19maWx0ZXIodGFyZ2V0cmVsLCBOVUxMLCAmbmV3X3Nsb3Qs IHJlbGVudHJ5LCAmYWN0aW9uKSkKIAkJCQlicmVhazsKIAogCQkJLyoKQEAgLTE0OTUsOCArMTUy NSwyMCBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJCQltYXliZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5nZSwgcmVs YXRpb24sIHJlbGVudHJ5KTsKIAogCQkJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7Ci0JCQlsb2dpY2FscmVwX3dyaXRlX2luc2VydChjdHgtPm91dCwgeGlkLCB0YXJnZXRyZWws IG5ld19zbG90LAotCQkJCQkJCQkJZGF0YS0+YmluYXJ5LCByZWxlbnRyeS0+Y29sdW1ucyk7CisK KwkJCS8qCisJCQkgKiBDb252ZXJ0IHRoZSByZXdyaXRlIGluc2VydHMgdG8gdXBkYXRlcyBzbyB0 aGF0IHRoZSBzdWJzY3JpYmVyCisJCQkgKiBjYW4gcmVwbGF5IGl0LiBUaGlzIGlzIG5lZWRlZCB0 byBtYWtlIHN1cmUgdGhlIGRhdGEgYmV0d2VlbgorCQkJICogcHVibGlzaGVyIGFuZCBzdWJzY3Jp YmVyIGlzIGNvbnNpc3RlbnQuCisJCQkgKi8KKwkJCWlmICh0YWJsZV9yZXdyaXRlKQorCQkJCWxv Z2ljYWxyZXBfd3JpdGVfdXBkYXRlKGN0eC0+b3V0LCB4aWQsIHRhcmdldHJlbCwKKwkJCQkJCQkJ CQlOVUxMLCBuZXdfc2xvdCwgZGF0YS0+YmluYXJ5LAorCQkJCQkJCQkJCXJlbGVudHJ5LT5jb2x1 bW5zKTsKKwkJCWVsc2UKKwkJCQlsb2dpY2FscmVwX3dyaXRlX2luc2VydChjdHgtPm91dCwgeGlk LCB0YXJnZXRyZWwsIG5ld19zbG90LAorCQkJCQkJCQkJCWRhdGEtPmJpbmFyeSwgcmVsZW50cnkt PmNvbHVtbnMpOworCiAJCQlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCQkJYnJlYWs7 CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFURToKQEAgLTE2MjgsNiArMTY3MCw5 IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJYW5jZXN0b3IgPSBOVUxMOwogCX0KIAorCWlmICh0YWJsZV9yZXdy aXRlKQorCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKwogCS8qIENsZWFudXAgKi8KIAlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkKTsKIAlNZW1vcnlDb250ZXh0UmVzZXQoZGF0YS0+Y29udGV4 dCk7CkBAIC0xNzQyLDYgKzE3ODcsMTM4IEBAIHBnb3V0cHV0X21lc3NhZ2UoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJT3V0cHV0UGx1Z2luV3Jp dGUoY3R4LCB0cnVlKTsKIH0KIAorLyoKKyAqIFNlbmQgdGhlIGRlY29kZWQgRERMIG92ZXIgd2ly ZS4KKyAqLworc3RhdGljIHZvaWQKK3Bnb3V0cHV0X2RkbChMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwKKwkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZSwKKwkJCQkJU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlQR091 dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2 YXRlOworCVBHT3V0cHV0VHhuRGF0YSAqdHhuZGF0YSA9IChQR091dHB1dFR4bkRhdGEgKikgdHhu LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJUmVsYXRpb24JcmVsYXRpb24gPSBOVUxMOworCVJl bGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeTsKKworCXN3aXRjaCAoY21kdHlwZSkKKwl7CisJCWNh c2UgRENUX1RhYmxlRHJvcFN0YXJ0OgorCisJCQkvKgorCQkJICogT24gRFJPUCBzdGFydCwgYWRk IHRoZSByZWxpZCB0byBhIGRlbGV0ZWRfcmVsaWQgbGlzdCBpZiB0aGUKKwkJCSAqIHJlbGlkIGlz IHBhcnQgb2YgYSBwdWJsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIGRkbCBwdWJsaWNhdGlvbi4KKwkJ CSAqIFdlIG5lZWQgdGhpcyBiZWNhdXNlIG9uIERST1AgZW5kLCB0aGUgcmVsaWQgd2lsbCBubyBs b25nZXIgYmUKKwkJCSAqIHZhbGlkLiBMYXRlciBvbiBEcm9wIGVuZCwgdmVyaWZ5IHRoYXQgdGhl IGRyb3AgaXMgZm9yIGEgcmVsaWQKKwkJCSAqIHRoYXQgaXMgb24gdGhlIGRlbGV0ZWRfcmlkIGxp c3QsIGFuZCBvbmx5IHRoZW4gc2VuZCB0aGUgZGRsCisJCQkgKiBtZXNzYWdlLgorCQkJICovCisJ CQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihyZWxpZCk7CisKKwkJCUFzc2VydChy ZWxhdGlvbik7CisJCQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCByZWxhdGlv bik7CisKKwkJCWlmIChyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJCQkJZGF0 YS0+ZGVsZXRlZF9yZWxpZHMgPSBsYXBwZW5kX29pZChkYXRhLT5kZWxldGVkX3JlbGlkcywgcmVs aWQpOworCisJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKwkJCXJldHVybjsKKworCQljYXNl IERDVF9UYWJsZURyb3BFbmQ6CisJCQlpZiAoIWxpc3RfbWVtYmVyX29pZChkYXRhLT5kZWxldGVk X3JlbGlkcywgcmVsaWQpKQorCQkJCXJldHVybjsKKwkJCWVsc2UKKwkJCQlkYXRhLT5kZWxldGVk X3JlbGlkcyA9IGxpc3RfZGVsZXRlX29pZChkYXRhLT5kZWxldGVkX3JlbGlkcywgcmVsaWQpOwor CQkJYnJlYWs7CisKKwkJY2FzZSBEQ1RfVGFibGVBbHRlcjoKKworCQkJLyoKKwkJCSAqIEZvciB0 YWJsZSByZXdyaXRlIGRkbCwgd2UgZmlyc3Qgc2VuZCB0aGUgb3JpZ2luYWwgZGRsIG1lc3NhZ2UK KwkJCSAqIHRvIHN1YnNjcmliZXIsIHRoZW4gY29udmVydCB0aGUgdXBjb21pbmcgcmV3cml0ZSBJ TlNFUlQgdG8KKwkJCSAqIFVQREFURSBhbmQgc2VuZCB0aGVtIHRvIHN1YnNjcmliZXIgc28gdGhh dCB0aGUgZGF0YSBiZXR3ZWVuCisJCQkgKiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgY2FuIGFs d2F5cyBiZSBjb25zaXN0ZW50LgorCQkJICoKKwkJCSAqIFdlIGRvIHRoaXMgd2F5IGJlY2F1c2Ug b2YgdHdvIHJlYXNvbjoKKwkJCSAqCisJCQkgKiAoMSkgVGhlIGRhdGEgYmVmb3JlIHRoZSByZXdy aXRlIGRkbCBjb3VsZCBhbHJlYWR5IGJlIGRpZmZlcmVudAorCQkJICogYW1vbmcgcHVibGlzaGVy IGFuZCBzdWJzY3JpYmVyLiBUbyBtYWtlIHN1cmUgdGhlIGV4dHJhIGRhdGEgaW4KKwkJCSAqIHN1 YnNjcmliZXIgd2hpY2ggZG9lc24ndCBleGlzdCBpbiBwdWJsaXNoZXIgYWxzbyBnZXQgcmV3cml0 dGVuLAorCQkJICogd2UgbmVlZCB0byBsZXQgdGhlIHN1YnNjcmliZXIgZXhlY3V0ZSB0aGUgb3Jp Z2luYWwgcmV3cml0ZSBkZGwKKwkJCSAqIHRvIHJld3JpdGUgYWxsIHRoZSBkYXRhIGF0IGZpcnN0 LgorCQkJICoKKwkJCSAqICgyKSB0aGUgZGF0YSBhZnRlciBleGVjdXRpbmcgcmV3cml0ZSBkZGwg Y291bGQgYmUgZGlmZmVyZW50CisJCQkgKiBhbW9uZyBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIo ZHVlIHRvIGRpZmZlcmVudAorCQkJICogZnVuY3Rpb25zL29wZXJhdG9ycyB1c2VkIGR1cmluZyBy ZXdyaXRlKSwgc28gd2UgbmVlZCB0bworCQkJICogcmVwbGljYXRlIHRoZSByZXdyaXRlIFVQREFU RXMgdG8ga2VlcCB0aGUgZGF0YSBjb25zaXN0ZW50LgorCQkJICoKKwkJCSAqIFRPIElNUFJPVkU6 IFdlIGNvdWxkIGltcHJvdmUgdGhpcyBieSBsZXR0aW5nIHRoZSBzdWJzY3JpYmVyCisJCQkgKiBv bmx5IHJld3JpdGUgdGhlIGV4dHJhIGRhdGEgaW5zdGVhZCBvZiBkb2luZyBmdWxseSByZXdyaXRl IGFuZAorCQkJICogdXNlIHRoZSB1cGNvbWluZyByZXdyaXRlIFVQREFURXMgdG8gcmV3cml0ZSB0 aGUgcmVzdCBkYXRhLgorCQkJICogQmVzaWRlcywgd2UgbWF5IG5vdCBuZWVkIHRvIHNlbmQgcmV3 cml0ZSBjaGFuZ2VzIGZvciBhbGwgdHlwZQorCQkJICogb2YgcmV3cml0ZSBkZGwsIGZvciBleGFt cGxlLCBpdCBzZWVtcyBmaW5lIHRvIHNraXAgc2VuZGluZworCQkJICogcmV3cml0ZSBjaGFuZ2Vz IGZvciBBTFRFUiBUQUJMRSBTRVQgTE9HR0VEIGFzIHRoZSBkYXRhIGluIHRoZQorCQkJICogdGFi bGUgZG9lc24ndCBhY3R1YWxseSBiZSBjaGFuZ2VkLgorCQkJICovCisJCQlyZWxhdGlvbiA9IFJl bGF0aW9uSWRHZXRSZWxhdGlvbihyZWxpZCk7CisJCQlBc3NlcnQocmVsYXRpb24pOworCisJCQly ZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCByZWxhdGlvbik7CisKKwkJCS8qCisJ CQkgKiBTa2lwIHNlbmRpbmcgdGhpcyBkZGwgaWYgd2UgZG9uJ3QgcHVibGlzaCBkZGwgbWVzc2Fn ZSBvciB0aGUKKwkJCSAqIGRkbCBuZWVkIHRvIGJlIHB1Ymxpc2hlZCB2aWEgaXRzIHJvb3QgcmVs YXRpb24uCisJCQkgKi8KKwkJCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxl IHx8CisJCQkJcmVsZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgIT0gcmVsaWQpCisJCQl7CisJCQkJ UmVsYXRpb25DbG9zZShyZWxhdGlvbik7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlicmVhazsK KworCQljYXNlIERDVF9TaW1wbGVDbWQ6CisJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxh dGlvbihyZWxpZCk7CisKKwkJCWlmIChyZWxhdGlvbiA9PSBOVUxMKQorCQkJCWJyZWFrOworCisJ CQlyZWxlbnRyeSA9IGdldF9yZWxfc3luY19lbnRyeShkYXRhLCByZWxhdGlvbik7CisKKwkJCWlm ICghcmVsZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlKQorCQkJeworCQkJCVJlbGF0aW9u Q2xvc2UocmVsYXRpb24pOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJYnJlYWs7CisKKwkJY2Fz ZSBEQ1RfT2JqZWN0RHJvcDoKKwkJCS8qIGRvIG5vdGhpbmcgKi8KKwkJCWJyZWFrOworCisJCWRl ZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgdHlwZSAlZCIsIGNtZHR5cGUpOwor CQkJYnJlYWs7CisJfQorCisJLyogU2VuZCBCRUdJTiBpZiB3ZSBoYXZlbid0IHlldCAqLworCWlm ICh0eG5kYXRhICYmICF0eG5kYXRhLT5zZW50X2JlZ2luX3R4bikKKwkJcGdvdXRwdXRfc2VuZF9i ZWdpbihjdHgsIHR4bik7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsK Kwlsb2dpY2FscmVwX3dyaXRlX2RkbChjdHgtPm91dCwKKwkJCQkJCQkJbWVzc2FnZV9sc24sCisJ CQkJCQkJCXByZWZpeCwKKwkJCQkJCQkJc3osCisJCQkJCQkJCW1lc3NhZ2UpOworCU91dHB1dFBs dWdpbldyaXRlKGN0eCwgdHJ1ZSk7CisKKwlpZiAocmVsYXRpb24pCisJCVJlbGF0aW9uQ2xvc2Uo cmVsYXRpb24pOworfQorCiAvKgogICogUmV0dXJuIHRydWUgaWYgdGhlIGRhdGEgaXMgYXNzb2Np YXRlZCB3aXRoIGFuIG9yaWdpbiBhbmQgdGhlIHVzZXIgaGFzCiAgKiByZXF1ZXN0ZWQgdGhlIGNo YW5nZXMgdGhhdCBkb24ndCBoYXZlIGFuIG9yaWdpbiwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtMjA1 MCw3ICsyMjI3LDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVs YXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9IGZhbHNlOwogCQllbnRyeS0+ c3RyZWFtZWRfdHhucyA9IE5JTDsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0ID0gZW50 cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0 ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCQllbnRyeS0+cHVi YWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9CisJCQll bnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkJZW50cnktPm5ld19zbG90 ID0gTlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0gTlVMTDsKIAkJbWVtc2V0KGVudHJ5LT5leHBy c3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRlKSk7CkBAIC0yMTA4LDYgKzIyODYsNyBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlv bikKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0 ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAog CQkvKgogCQkgKiBUdXBsZSBzbG90cyBjbGVhbnVwcy4gKFdpbGwgYmUgcmVidWlsdCBsYXRlciBp ZiBuZWVkZWQpLgpAQCAtMjIyMSw2ICsyNDAwLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCQkJZW50cnktPnB1YmFjdGlvbnMu cHVidXBkYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ1cGRhdGU7CiAJCQkJZW50cnktPnB1YmFj dGlvbnMucHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGU7CiAJCQkJZW50cnkt PnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlOwor CQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSB8PSBwdWItPnB1YmFjdGlvbnMucHVi ZGRsX3RhYmxlOwogCiAJCQkJLyoKIAkJCQkgKiBXZSB3YW50IHRvIHB1Ymxpc2ggdGhlIGNoYW5n ZXMgYXMgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29w L2NtZHRhZy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYwppbmRleCA0YmQ3MTNhMGI0Li5j ZTA5YzVmMjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMKQEAgLTI2LDEwICsyNiwxMSBAQCB0eXBlZGVmIHN0cnVj dCBDb21tYW5kVGFnQmVoYXZpb3IKIAljb25zdCBib29sCXRhYmxlX3Jld3JpdGVfb2s7CiAJY29u c3QgYm9vbAlkaXNwbGF5X3Jvd2NvdW50OwkvKiBzaG91bGQgdGhlIG51bWJlciBvZiByb3dzIGFm ZmVjdGVkIGJlCiAJCQkJCQkJCQkgKiBzaG93biBpbiB0aGUgY29tbWFuZCBjb21wbGV0aW9uIHN0 cmluZyAqLworCWNvbnN0IGJvb2wJZGRsX3JlcGxpY2F0aW9uX29rOwogfSBDb21tYW5kVGFnQmVo YXZpb3I7CiAKLSNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwgZXZ0cmdvaywgcndyb2ssIHJv d2NudCkgXAotCXsgbmFtZSwgKHVpbnQ4KSAoc2l6ZW9mKG5hbWUpIC0gMSksIGV2dHJnb2ssIHJ3 cm9rLCByb3djbnQgfSwKKyNkZWZpbmUgUEdfQ01EVEFHKHRhZywgbmFtZSwgZXZ0cmdvaywgcndy b2ssIHJvd2NudCwgZGRscmVwbG9rKSBcCisJeyBuYW1lLCAodWludDgpIChzaXplb2YobmFtZSkg LSAxKSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRscmVwbG9rIH0sCiAKIHN0YXRpYyBjb25z dCBDb21tYW5kVGFnQmVoYXZpb3IgdGFnX2JlaGF2aW9yW0NPTU1BTkRfVEFHX05FWFRUQUddID0g ewogI2luY2x1ZGUgInRjb3AvY21kdGFnbGlzdC5oIgpAQCAtNTcsNiArNTgsMjEgQEAgR2V0Q29t bWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRhZyBjb21tYW5kVGFnLCBTaXplICpsZW4pCiAJcmV0 dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS5uYW1lOwogfQogCitDb21tYW5kVGFnICoKK0dl dENvbW1hbmRUYWdzRm9yRERMUmVwbChpbnQgKm5jb21tYW5kcykKK3sKKwlDb21tYW5kVGFnICpk ZGxyZXBsX2NvbW1hbmRzID0gcGFsbG9jMChDT01NQU5EX1RBR19ORVhUVEFHICogc2l6ZW9mKENv bW1hbmRUYWcpKTsKKwkqbmNvbW1hbmRzID0gMDsKKworCWZvcihpbnQgaSA9IDA7IGkgPCBDT01N QU5EX1RBR19ORVhUVEFHOyBpKyspCisJeworCQlpZiAodGFnX2JlaGF2aW9yW2ldLmRkbF9yZXBs aWNhdGlvbl9vaykKKwkJCWRkbHJlcGxfY29tbWFuZHNbKCpuY29tbWFuZHMpKytdID0gKENvbW1h bmRUYWcpIGk7CisJfQorCisJcmV0dXJuIGRkbHJlcGxfY29tbWFuZHM7Cit9CisKIGJvb2wKIGNv bW1hbmRfdGFnX2Rpc3BsYXlfcm93Y291bnQoQ29tbWFuZFRhZyBjb21tYW5kVGFnKQogewpAQCAt NzUsNiArOTEsMTIgQEAgY29tbWFuZF90YWdfdGFibGVfcmV3cml0ZV9vayhDb21tYW5kVGFnIGNv bW1hbmRUYWcpCiAJcmV0dXJuIHRhZ19iZWhhdmlvcltjb21tYW5kVGFnXS50YWJsZV9yZXdyaXRl X29rOwogfQogCitib29sCitjb21tYW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRh ZyBjb21tYW5kVGFnKQoreworCXJldHVybiB0YWdfYmVoYXZpb3JbY29tbWFuZFRhZ10uZGRsX3Jl cGxpY2F0aW9uX29rOworfQorCiAvKgogICogU2VhcmNoIENvbW1hbmRUYWcgYnkgbmFtZQogICoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKaW5kZXggNDUwMWNjMzM3Yy4uNTc4YTIyOWZmYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMK QEAgLTIyNjQsNiArMjI2NCw4IEBAIHN0cmluZ2lmeV9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlw ZSwgYm9vbCBpc2dyYW50KQogCQkJcmV0dXJuICJQT0xJQ1kiOwogCQljYXNlIE9CSkVDVF9QUk9D RURVUkU6CiAJCQlyZXR1cm4gIlBST0NFRFVSRSI7CisJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9O OgorCQkJcmV0dXJuICJQVUJMSUNBVElPTiI7CiAJCWNhc2UgT0JKRUNUX1JPTEU6CiAJCQlyZXR1 cm4gIlJPTEUiOwogCQljYXNlIE9CSkVDVF9ST1VUSU5FOgpAQCAtMjI3Niw2ICsyMjc4LDggQEAg c3RyaW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlLCBib29sIGlzZ3JhbnQpCiAJCQly ZXR1cm4gIlNFUVVFTkNFIjsKIAkJY2FzZSBPQkpFQ1RfU1RBVElTVElDX0VYVDoKIAkJCXJldHVy biAiU1RBVElTVElDUyI7CisJCWNhc2UgT0JKRUNUX1NVQlNDUklQVElPTjoKKwkJCXJldHVybiAi U1VCU0NSSVBUSU9OIjsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCQlyZXR1cm4gIlRBQkxFIjsK IAkJY2FzZSBPQkpFQ1RfVEFCTEVTUEFDRToKQEAgLTIzMDQsMTAgKzIzMDgsOCBAQCBzdHJpbmdp Znlfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUsIGJvb2wgaXNncmFudCkKIAkJY2FzZSBPQkpF Q1RfREVGQUNMOgogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQljYXNlIE9CSkVDVF9Q QVJBTUVURVJfQUNMOgotCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1Rf UFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6Ci0J CWNhc2UgT0JKRUNUX1NVQlNDUklQVElPTjoKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoK IAkJY2FzZSBPQkpFQ1RfVFJBTlNGT1JNOgogCQkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIG9i amVjdCB0eXBlICVkIiwgb2JqdHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCA0MDE0MGRlOTU4Li45MTk4ZGEyZWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMK QEAgLTU3MjAsNiArNTcyMCw3IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRp b24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJcHViZGVzYy0+cHViYWN0 aW9ucy5wdWJ1cGRhdGUgfD0gcHViZm9ybS0+cHVidXBkYXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rp b25zLnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlv bnMucHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmRlc2MtPnB1YmFj dGlvbnMucHViZGRsX3RhYmxlIHw9IHB1YmZvcm0tPnB1YmRkbF90YWJsZTsKIAogCQkvKgogCQkg KiBDaGVjayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGluIHRoZSBmaWx0ZXIgZXhwcmVzc2lv biBhcmUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZDYyNzgwYTA4OC4uZmU1MGRkZjU5MSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVj dF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9tZXRhZGF0YV9kLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jX2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3RyaWdnZXJfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgi CkBAIC00MDYzLDYgKzQwNjQsNyBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1QdWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJ1cGRhdGU7CiAJaW50CQkJaV9wdWJkZWxl dGU7CiAJaW50CQkJaV9wdWJ0cnVuY2F0ZTsKKwlpbnQJCQlpX3B1YmRkbF90YWJsZTsKIAlpbnQJ CQlpX3B1YnZpYXJvb3Q7CiAJaW50CQkJaSwKIAkJCQludHVwczsKQEAgLTQwNzgsMjMgKzQwODAs MjkgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRpb25z KQogCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCiAJLyogR2V0IHRoZSBwdWJsaWNhdGlvbnMu ICovCi0JaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMwMDAwKQorCWlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJ CQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgorCQkJCQkJCSAicC5w dWJvd25lciwgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVw ZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHViZGRsX3RhYmxlLCBwLnB1YnZp YXJvb3QgIgorCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CisJZWxzZSBpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxMzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJ CQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwg cC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YnZpYXJvb3QgIgor CQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJk ZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBwLnB1YnZpYXJv b3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAJZWxzZSBpZiAoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxMTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAog CQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkg InAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5w dWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290 ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAu cHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBhcyBwLnB1YmRkbF90YWJsZSwgZmFsc2Ug QVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAllbHNl CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVv aWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkg InAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBm YWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1 YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1YmRlbGV0ZSwgZmFsc2Ug QVMgcHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3RhYmxlLCBmYWxzZSBBUyBwdWJ2aWFy b290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCiAJcmVzID0gRXhlY3V0 ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtNDExMCw2 ICs0MTE4LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGlj YXRpb25zKQogCWlfcHVidXBkYXRlID0gUFFmbnVtYmVyKHJlcywgInB1YnVwZGF0ZSIpOwogCWlf cHViZGVsZXRlID0gUFFmbnVtYmVyKHJlcywgInB1YmRlbGV0ZSIpOwogCWlfcHVidHJ1bmNhdGUg PSBQUWZudW1iZXIocmVzLCAicHVidHJ1bmNhdGUiKTsKKwlpX3B1YmRkbF90YWJsZSA9IFBRZm51 bWJlcihyZXMsICJwdWJkZGxfdGFibGUiKTsKIAlpX3B1YnZpYXJvb3QgPSBQUWZudW1iZXIocmVz LCAicHVidmlhcm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihQ dWJsaWNhdGlvbkluZm8pKTsKQEAgLTQxMzMsNiArNDE0Miw4IEBAIGdldFB1YmxpY2F0aW9ucyhB cmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJCShzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfcHViZGVsZXRlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5wdWJ0cnVu Y2F0ZSA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5jYXRlKSwgInQi KSA9PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJkZGxfdGFibGUgPQorCQkJKHN0cmNtcChQUWdldHZh bHVlKHJlcywgaSwgaV9wdWJkZGxfdGFibGUpLCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1 YnZpYXJvb3QgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ2aWFyb290KSwg InQiKSA9PSAwKTsKIApAQCAtNDIxMiw3ICs0MjIzLDEwIEBAIGR1bXBQdWJsaWNhdGlvbihBcmNo aXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCWZpcnN0ID0gZmFs c2U7CiAJfQogCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHF1ZXJ5LCAnXCcnKTsKKwlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIiciKTsKKworCWlmIChwdWJpbmZvLT5wdWJkZGxfdGFibGUp CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBkZGwgPSAndGFibGUnIik7CiAKIAlp ZiAocHViaW5mby0+cHVidmlhcm9vdCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIs IHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSIpOwpAQCAtNzk2NCw2ICs3OTc4LDUw IEBAIGdldFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBu dW1UYWJsZXMpCiAJZGVzdHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogfQogCisvKgorICogZ2V0 UHVibGljYXRpb25FdmVudFRyaWdnZXJzCisgKgkgIGdldCB0aGUgcHVibGljYXRpb24gZXZlbnQg dHJpZ2dlcnMgdGhhdCBzaG91bGQgYmUgc2tpcHBlZAorICovCitzdGF0aWMgdm9pZAorZ2V0UHVi bGljYXRpb25FdmVudFRyaWdnZXJzKEFyY2hpdmUgKmZvdXQsIFNpbXBsZVN0cmluZ0xpc3QgKnNr aXBUcmlnZ2VycykKK3sKKwlQUUV4cEJ1ZmZlciBxdWVyeTsKKwlQR3Jlc3VsdCAgICpyZXM7CisJ aW50CQkJaTsKKwlpbnQJCQludHVwczsKKworCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsK KworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJICJTRUxFQ1Qgb2lkIEZST00g cGdfcHVibGljYXRpb24gIgorCQkJCQkJICJXSEVSRSBwdWJkZGxfdGFibGUiKTsKKworCXJlcyA9 IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKwlu dHVwcyA9IFBRbnR1cGxlcyhyZXMpOworCisJZm9yIChpID0gMDsgaSA8IG50dXBzOyBpKyspCisJ eworCQljaGFyICp0cmlnbmFtZTsKKwkJT2lkIHB1YmlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVz LCAwLCAwKSk7CisKKwkJdHJpZ25hbWUgPSBwc3ByaW50ZihQVUJfRVZFTlRfVFJJR19QUkVGSVgs IFBVQl9UUklHX0VWRU5UMSwgcHViaWQpOworCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKHNr aXBUcmlnZ2VycywgdHJpZ25hbWUpOworCisJCXRyaWduYW1lID0gcHNwcmludGYoUFVCX0VWRU5U X1RSSUdfUFJFRklYLCBQVUJfVFJJR19FVkVOVDIsIHB1YmlkKTsKKwkJc2ltcGxlX3N0cmluZ19s aXN0X2FwcGVuZChza2lwVHJpZ2dlcnMsIHRyaWduYW1lKTsKKworCQl0cmlnbmFtZSA9IHBzcHJp bnRmKFBVQl9FVkVOVF9UUklHX1BSRUZJWCwgUFVCX1RSSUdfRVZFTlQzLCBwdWJpZCk7CisJCXNp bXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQoc2tpcFRyaWdnZXJzLCB0cmlnbmFtZSk7CisKKwkJdHJp Z25hbWUgPSBwc3ByaW50ZihQVUJfRVZFTlRfVFJJR19QUkVGSVgsIFBVQl9UUklHX0VWRU5UNCwg cHViaWQpOworCQlzaW1wbGVfc3RyaW5nX2xpc3RfYXBwZW5kKHNraXBUcmlnZ2VycywgdHJpZ25h bWUpOworCX0KKworCVBRY2xlYXIocmVzKTsKKworCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7 Cit9CisKIC8qCiAgKiBnZXRFdmVudFRyaWdnZXJzCiAgKgkgIGdldCBpbmZvcm1hdGlvbiBhYm91 dCBldmVudCB0cmlnZ2VycwpAQCAtNzk4NCw2ICs4MDQyLDcgQEAgZ2V0RXZlbnRUcmlnZ2VycyhB cmNoaXZlICpmb3V0LCBpbnQgKm51bUV2ZW50VHJpZ2dlcnMpCiAJCQkJaV9ldnRmbmFtZSwKIAkJ CQlpX2V2dGVuYWJsZWQ7CiAJaW50CQkJbnR1cHM7CisJU2ltcGxlU3RyaW5nTGlzdCBza2lwVHJp Z2dlcnMgPSB7TlVMTCwgTlVMTH07CiAKIAkvKiBCZWZvcmUgOS4zLCB0aGVyZSBhcmUgbm8gZXZl bnQgdHJpZ2dlcnMgKi8KIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA8IDkwMzAwKQpAQCAtNzk5 Miw2ICs4MDUxLDggQEAgZ2V0RXZlbnRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV2 ZW50VHJpZ2dlcnMpCiAJCXJldHVybiBOVUxMOwogCX0KIAorCWdldFB1YmxpY2F0aW9uRXZlbnRU cmlnZ2Vycyhmb3V0LCAmc2tpcFRyaWdnZXJzKTsKKwogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZm ZXIoKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtODAzNiw5ICs4MDk3LDE0 IEBAIGdldEV2ZW50VHJpZ2dlcnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1FdmVudFRyaWdnZXJz KQogCQlldnRpbmZvW2ldLmV2dGVuYWJsZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2V2dGVu YWJsZWQpKTsKIAogCQkvKiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KLQkJ c2VsZWN0RHVtcGFibGVPYmplY3QoJihldnRpbmZvW2ldLmRvYmopLCBmb3V0KTsKKwkJaWYgKHNp bXBsZV9zdHJpbmdfbGlzdF9tZW1iZXIoJnNraXBUcmlnZ2VycywgZXZ0aW5mb1tpXS5ldnRuYW1l KSkKKwkJCWV2dGluZm9baV0uZG9iai5kdW1wPSBEVU1QX0NPTVBPTkVOVF9OT05FOworCQllbHNl CisJCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKGV2dGluZm9baV0uZG9iaiksIGZvdXQpOwogCX0K IAorCXNpbXBsZV9zdHJpbmdfbGlzdF9kZXN0cm95KCZza2lwVHJpZ2dlcnMpOworCiAJUFFjbGVh cihyZXMpOwogCiAJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDI4 M2NkMWE2MDIuLmE1OTUyYzUzZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjIwLDYgKzYyMCw3IEBAIHR5 cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJ cHViZGVsZXRlOwogCWJvb2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIAli b29sCQlwdWJ2aWFyb290OwogfSBQdWJsaWNhdGlvbkluZm87CiAKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwKaW5kZXggNDIyMTVmODJmNy4uMzE3YWI5MzNiMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwKQEAgLTI4MDQsNyArMjgwNCw3IEBAIG15ICV0ZXN0cyA9ICgKIAkJY3JlYXRlX29yZGVy ID0+IDUwLAogCQljcmVhdGVfc3FsICAgPT4gJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIyCiAJCQkJ CQkgRk9SIEFMTCBUQUJMRVMKLQkJCQkJCSBXSVRIIChwdWJsaXNoID0gXCdcJyk7JywKKwkJCQkJ CSBXSVRIIChwdWJsaXNoID0gXCdcJywgZGRsID0gXCdcJyk7JywKIAkJcmVnZXhwID0+IHFyL14K IAkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjIgRk9SIEFMTCBUQUJMRVMgV0lUSCAocHVibGlz aCA9ICcnKTtcRQogCQkJL3htLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3Jk ZXNjLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwppbmRleCA2YjhjMTdiYjRjLi5k YWYxNzMwMjUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYworKysg Yi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1 ZGUgImNvbW1hbmRzL2RiY29tbWFuZHNfeGxvZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVl bmNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggOTllMjhmNjA3ZS4uYTQxNTAwZGVlZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTYxODMsNyArNjE4 Myw3IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQUUV4cEJ1ZmZl ckRhdGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNl dC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKwlzdGF0 aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWlm IChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTYyMDAsMTMgKzYyMDAsMTggQEAgbGlz dFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCiAJCQkJCSAgIlNFTEVDVCBwdWJuYW1lIEFTIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19j YXRhbG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIg IHB1YmFsbHRhYmxlcyBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAgcHViaW5zZXJ0IEFTIFwiJXNc IixcbiIKLQkJCQkJICAiICBwdWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHB1YmRl bGV0ZSBBUyBcIiVzXCIiLAorCQkJCQkgICIgIHB1YmFsbHRhYmxlcyBBUyBcIiVzXCIiLAogCQkJ CQkgIGdldHRleHRfbm9vcCgiTmFtZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSwK LQkJCQkJICBnZXR0ZXh0X25vb3AoIkFsbCB0YWJsZXMiKSwKKwkJCQkJICBnZXR0ZXh0X25vb3Ao IkFsbCB0YWJsZXMiKSk7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBlbmRQ UUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiLFxuICBwdWJkZGxfdGFibGUgQVMgXCIlc1wiIiwK KwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJUYWJsZSBERExzIikpOworCWFwcGVuZFBRRXhwQnVmZmVy KCZidWYsCisJCQkJCSAgIixcbiAgcHViaW5zZXJ0IEFTIFwiJXNcIixcbiIKKwkJCQkJICAiICBw dWJ1cGRhdGUgQVMgXCIlc1wiLFxuIgorCQkJCQkgICIgIHB1YmRlbGV0ZSBBUyBcIiVzXCIiLAog CQkJCQkgIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiVXBk YXRlcyIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpKTsKQEAgLTYyMTgsNyArNjIy Myw2IEBAIGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCSAgIixcbiAgcHVidmlhcm9vdCBBUyBcIiVzXCIiLAogCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlZpYSByb290IikpOwotCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwKIAkJCQkJCSAiXG5GUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25cbiIpOwogCkBA IC02MzA4LDYgKzYzMTIsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0 ZXJuKQogCVBHcmVzdWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVidHJ1bmNhdGU7CiAJYm9vbAkJ aGFzX3B1YnZpYXJvb3Q7CisJYm9vbAkJaGFzX3B1YmRkbDsKIAogCVBRRXhwQnVmZmVyRGF0YSB0 aXRsZTsKIAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNjMyNCwxMyArNjMyOSwxOSBAQCBk ZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCiAJaGFzX3B1YnRydW5j YXRlID0gKHBzZXQuc3ZlcnNpb24gPj0gMTEwMDAwKTsKIAloYXNfcHVidmlhcm9vdCA9IChwc2V0 LnN2ZXJzaW9uID49IDEzMDAwMCk7CisJaGFzX3B1YmRkbCA9ICAocHNldC5zdmVyc2lvbiA+PSAx NjAwMDApOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCiAJcHJpbnRmUFFFeHBCdWZmZXIo JmJ1ZiwKIAkJCQkJICAiU0VMRUNUIG9pZCwgcHVibmFtZSxcbiIKIAkJCQkJICAiICBwZ19jYXRh bG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgb3duZXIsXG4iCi0JCQkJCSAgIiAgcHVi YWxsdGFibGVzLCBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CisJCQkJCSAgIiAg cHViYWxsdGFibGVzIik7CisJaWYgKGhhc19wdWJkZGwpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsCisJCQkJCQkJICIsIHB1YmRkbF90YWJsZSIpOworCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsCisJCQkJCQkgIiwgIHB1Ymluc2VydCwgcHVidXBkYXRlLCBwdWJkZWxldGUiKTsKIAlp ZiAoaGFzX3B1YnRydW5jYXRlKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAogCQkJCQkJ CSAiLCBwdWJ0cnVuY2F0ZSIpOwpAQCAtNjM4OCw2ICs2Mzk5LDggQEAgZGVzY3JpYmVQdWJsaWNh dGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCW5jb2xzKys7CiAJCWlmIChoYXNfcHVidmlh cm9vdCkKIAkJCW5jb2xzKys7CisJCWlmIChoYXNfcHViZGRsKQorCQkJbmNvbHMrKzsKIAogCQlp bml0UFFFeHBCdWZmZXIoJnRpdGxlKTsKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJQ dWJsaWNhdGlvbiAlcyIpLCBwdWJuYW1lKTsKQEAgLTYzOTUsNiArNjQwOCw4IEBAIGRlc2NyaWJl UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAKIAkJcHJpbnRUYWJsZUFkZEhlYWRl cigmY29udCwgZ2V0dGV4dF9ub29wKCJPd25lciIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFi bGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiQWxsIHRhYmxlcyIpLCB0cnVlLCBhbGln bik7CisJCWlmIChoYXNfcHViZGRsKQorCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0 dGV4dF9ub29wKCJUYWJsZSBERExzIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhl YWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJJbnNlcnRzIiksIHRydWUsIGFsaWduKTsKIAkJcHJp bnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJVcGRhdGVzIiksIHRydWUsIGFs aWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJEZWxldGVz IiksIHRydWUsIGFsaWduKTsKQEAgLTY0MTIsNiArNjQyNyw4IEBAIGRlc2NyaWJlUHVibGljYXRp b25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFn ZXR2YWx1ZShyZXMsIGksIDcpLCBmYWxzZSwgZmFsc2UpOwogCQlpZiAoaGFzX3B1YnZpYXJvb3Qp CiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxz ZSwgZmFsc2UpOworCQlpZiAoaGFzX3B1YmRkbCkKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgOSksIGZhbHNlLCBmYWxzZSk7CiAKIAkJaWYgKCFwdWJhbGx0 YWJsZXMpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKaW5kZXggNDYzYmNiNjdjNS4uYWJjYmU5NzU5 MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKQEAgLTQ3LDMgKzQ3LDQgQEAgUEdfUk1HUihSTV9DT01N SVRfVFNfSUQsICJDb21taXRUcyIsIGNvbW1pdF90c19yZWRvLCBjb21taXRfdHNfZGVzYywgY29t bWl0X3RzX2kKIFBHX1JNR1IoUk1fUkVQTE9SSUdJTl9JRCwgIlJlcGxpY2F0aW9uT3JpZ2luIiwg cmVwbG9yaWdpbl9yZWRvLCByZXBsb3JpZ2luX2Rlc2MsIHJlcGxvcmlnaW5faWRlbnRpZnksIE5V TEwsIE5VTEwsIE5VTEwsIE5VTEwpCiBQR19STUdSKFJNX0dFTkVSSUNfSUQsICJHZW5lcmljIiwg Z2VuZXJpY19yZWRvLCBnZW5lcmljX2Rlc2MsIGdlbmVyaWNfaWRlbnRpZnksIE5VTEwsIE5VTEws IGdlbmVyaWNfbWFzaywgTlVMTCkKIFBHX1JNR1IoUk1fTE9HSUNBTE1TR19JRCwgIkxvZ2ljYWxN ZXNzYWdlIiwgbG9naWNhbG1zZ19yZWRvLCBsb2dpY2FsbXNnX2Rlc2MsIGxvZ2ljYWxtc2dfaWRl bnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIGxvZ2ljYWxtc2dfZGVjb2RlKQorUEdfUk1HUihSTV9M T0dJQ0FMRERMTVNHX0lELCAiTG9naWNhbERETE1lc3NhZ2UiLCBsb2dpY2FsZGRsbXNnX3JlZG8s IGxvZ2ljYWxkZGxtc2dfZGVzYywgbG9naWNhbGRkbG1zZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwg TlVMTCwgbG9naWNhbGRkbF9kZWNvZGUpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBkZmU5 OWI2NDc1Li4wMjIyMDM5YmQzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTExMTU2LDYg KzExMTU2LDE0IEBACiAgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9tZXNzYWdlJywgcHJv dm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCiAgIHByb3JldHR5cGUgPT4gJ3Bn X2xzbicsIHByb2FyZ3R5cGVzID0+ICdib29sIHRleHQgYnl0ZWEnLAogICBwcm9zcmMgPT4gJ3Bn X2xvZ2ljYWxfZW1pdF9tZXNzYWdlX2J5dGVhJyB9LAoreyBvaWQgPT4gJzM4MTMnLCBkZXNjciA9 PiAnZW1pdCBhIHRleHR1YWwgbG9naWNhbCBkZWNvZGluZyBtZXNzYWdlJywKKyAgcHJvbmFtZSA9 PiAncGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9w YXJhbGxlbCA9PiAndScsCisgIHByb3JldHR5cGUgPT4gJ3BnX2xzbicsIHByb2FyZ3R5cGVzID0+ ICdib29sIHRleHQgdGV4dCcsCisgIHByb3NyYyA9PiAncGdfbG9naWNhbF9lbWl0X2RkbF9tZXNz YWdlX3RleHQnIH0sCit7IG9pZCA9PiAnMzgxNCcsIGRlc2NyID0+ICdlbWl0IGEgYmluYXJ5IGxv Z2ljYWwgZGVjb2RpbmcgbWVzc2FnZScsCisgIHByb25hbWUgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9k ZGxfbWVzc2FnZScsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLAorICBw cm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAndGV4dCByZWdjbGFzcyBpbnQ0 IHRleHQnLAorICBwcm9zcmMgPT4gJ3BnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYScg fSwKIAogIyBldmVudCB0cmlnZ2VycwogeyBvaWQgPT4gJzM1NjYnLCBkZXNjciA9PiAnbGlzdCBv YmplY3RzIGRyb3BwZWQgYnkgdGhlIGN1cnJlbnQgY29tbWFuZCcsCkBAIC0xMjA1OSw1ICsxMjA2 NywxNyBAQAogeyBvaWQgPT4gJzQ2NDMnLCBkZXNjciA9PiAnZXhwYW5kIEpTT04gZm9ybWF0IERE TCB0byBhIHBsYWluIHRleHQgRERMIGNvbW1hbmQnLAogICBwcm9uYW1lID0+ICdkZGxfZGVwYXJz ZV9leHBhbmRfY29tbWFuZCcsIHByb3JldHR5cGUgPT4gJ3RleHQnLAogICBwcm9hcmd0eXBlcyA9 PiAndGV4dCcsIHByb3NyYyA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQnIH0sCit7IG9p ZCA9PiAnNDY0NCcsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIGVu ZCcsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kJywg cHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9z cmMgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfZW5kJyB9LAoreyBvaWQgPT4g JzQ2NDUnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSBzdGFydCcs CisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfZGRsX2NvbW1hbmRfc3RhcnQnLCBw cm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3Ny YyA9PiAncHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydCcgfSwKK3sgb2lkID0+ ICc0NjQ2JywgZGVzY3IgPT4gJ3RyaWdnZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2UgdGFibGUg cmV3cml0ZScsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0 ZScsIHByb3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywg cHJvc3JjID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUnIH0sCit7IG9pZCA9 PiAnNDY0NycsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIHRhYmxl IGluaXQnLAorICBwcm9uYW1lID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3Jp dGUnLCBwcm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycs IHByb3NyYyA9PiAncHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlJyB9LAogCiBd CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNmVjYWEyYTAxZS4uNzRiMjhk NzM1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTgsOCArMTgsMTcg QEAKICNkZWZpbmUgUEdfUFVCTElDQVRJT05fSAogCiAjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2ku aCIKLSNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3B1YmxpY2F0aW9uX2QuaCIKKyNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisKKy8qIFB1 YmxpY2F0aW9uIHRyaWdnZXIgZXZlbnRzICovCisjZGVmaW5lIFBVQl9UUklHX0VWRU5UMSAiZGRs X2NvbW1hbmRfZW5kIgorI2RlZmluZSBQVUJfVFJJR19FVkVOVDIgImRkbF9jb21tYW5kX3N0YXJ0 IgorI2RlZmluZSBQVUJfVFJJR19FVkVOVDMgInRhYmxlX3Jld3JpdGUiCisjZGVmaW5lIFBVQl9U UklHX0VWRU5UNCAidGFibGVfaW5pdF93cml0ZSIKKworLyogUHVibGljYXRpb24gZXZlbnQgdHJp Z2dlciBwcmVmaXggKi8KKyNkZWZpbmUgUFVCX0VWRU5UX1RSSUdfUFJFRklYICJwZ19kZXBhcnNl X3RyaWdfJXNfJXUiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlwZ19wdWJsaWNhdGlvbiBk ZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bwpAQCAtNTQsNiArNjMsOSBAQCBDQVRBTE9H KHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyogdHJ1ZSBp ZiBwYXJ0aXRpb24gY2hhbmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJvb3Qgc2NoZW1hICovCiAJ Ym9vbAkJcHVidmlhcm9vdDsKKworCS8qIHRydWUgaWYgdGFibGUgZGRscyBhcmUgcHVibGlzaGVk ICovCisJYm9vbAkJcHViZGRsX3RhYmxlOwogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbjsKIAog LyogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzIsNiArODQsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJs aWNhdGlvbkFjdGlvbnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRlOwogCWJv b2wJCXB1YnRydW5jYXRlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIH0gUHVibGljYXRpb25BY3Rp b25zOwogCiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkRlc2MKQEAgLTEwMywxMyArMTE2LDYg QEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb24KIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0 aW9uczsKIH0gUHVibGljYXRpb247CiAKLXR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5m bwotewotCVJlbGF0aW9uCXJlbGF0aW9uOwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwotCUxpc3QJ ICAgKmNvbHVtbnM7Ci19IFB1YmxpY2F0aW9uUmVsSW5mbzsKLQogZXh0ZXJuIFB1YmxpY2F0aW9u ICpHZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIFB1YmxpY2F0aW9uICpHZXRQdWJs aWNhdGlvbkJ5TmFtZShjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0 ZXJuIExpc3QgKkdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCk7CkBAIC0xNDUsMTQg KzE1MSw2IEBAIGV4dGVybiBMaXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlz dCAqcmVzdWx0LAogZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9p ZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZl bCk7CiAKLWV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7 CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKLWV4dGVybiBP YmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpLAotCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7Ci1leHRl cm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNj aGVtYWlkLAotCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwotCi1leHRlcm4gQml0bWFw c2V0ICpwdWJfY29sbGlzdF90b19iaXRtYXBzZXQoQml0bWFwc2V0ICpjb2x1bW5zLCBEYXR1bSBw dWJjb2xzLAotCQkJCQkJCQkJCSAgIE1lbW9yeUNvbnRleHQgbWN4dCk7CiAKICNlbmRpZgkJCQkJ CQkvKiBQR19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21k cy5oCmluZGV4IDcwZDVlMzY4MGEuLmEzZmNhOWU2NGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5oCkBAIC0yMiw2ICsyMiwxMyBAQAogLyogU2FtZSBhcyBNQVhOVU1NRVNT QUdFUyBpbiBzaW52YWxhZHQuYyAqLwogI2RlZmluZSBNQVhfUkVMQ0FDSEVfSU5WQUxfTVNHUyA0 MDk2CiAKK3R5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uUmVsSW5mbworeworCVJlbGF0aW9uCXJl bGF0aW9uOworCU5vZGUJICAgKndoZXJlQ2xhdXNlOworCUxpc3QJICAgKmNvbHVtbnM7Cit9IFB1 YmxpY2F0aW9uUmVsSW5mbzsKKwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlUHVibGljYXRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogZXh0 ZXJuIHZvaWQgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KTsKIGV4dGVybiB2b2lkIFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQg cHViaWQpOwpAQCAtMzUsNSArNDIsMTIgQEAgZXh0ZXJuIGJvb2wgcHViX3JmX2NvbnRhaW5zX2lu dmFsaWRfY29sdW1uKE9pZCBwdWJpZCwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAg TGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOwogZXh0ZXJuIGJvb2wgcHViX2NvbGxp c3RfY29udGFpbnNfaW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwK IAkJCQkJCQkJCQkJCUxpc3QgKmFuY2VzdG9ycywgYm9vbCBwdWJ2aWFyb290KTsKK2V4dGVybiBC aXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERh dHVtIHB1YmNvbHMsCisJCQkJCQkJCQkJICAgTWVtb3J5Q29udGV4dCBtY3h0KTsKK2V4dGVybiBP YmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpLAorCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CitleHRl cm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNj aGVtYWlkLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOworZXh0ZXJuIGJvb2wgaXNf cHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBV QkxJQ0FUSU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9k ZGxtZXNzYWdlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzdkZjZlYTExYQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaApAQCAtMCwwICsxLDYw IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGRkbG1lc3NhZ2UuaAorICoJICAgRXhwb3J0cyBm cm9tIHJlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogQ29weXJpZ2h0IChj KSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KyNpZm5kZWYgUEdfTE9HSUNBTF9ERExfTUVTU0FHRV9ICisjZGVmaW5lIFBHX0xPR0lDQUxfRERM X01FU1NBR0VfSAorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlYWRlci5oIgorI2luY2x1ZGUgIm5v ZGVzL25vZGVzLmgiCisKKworLyoKKyAqIFN1cHBvcnQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZGVw YXJzZWQgY29tbWFuZHMuCisgKi8KK3R5cGVkZWYgZW51bSBEZXBhcnNlZENvbW1hbmRUeXBlCit7 CisJRENUX1NpbXBsZUNtZCwKKwlEQ1RfVGFibGVEcm9wU3RhcnQsCisJRENUX1RhYmxlRHJvcEVu ZCwKKwlEQ1RfVGFibGVBbHRlciwKKwlEQ1RfT2JqZWN0Q3JlYXRlLAorCURDVF9PYmplY3REcm9w Cit9IERlcGFyc2VkQ29tbWFuZFR5cGU7CisKKy8qCisgKiBHZW5lcmljIGxvZ2ljYWwgZGVjb2Rp bmcgRERMIG1lc3NhZ2Ugd2FsIHJlY29yZC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgeGxfbG9naWNh bF9kZGxfbWVzc2FnZQoreworCU9pZAkJCWRiSWQ7CQkJLyogZGF0YWJhc2UgT2lkIGVtaXR0ZWQg ZnJvbSAqLworCVNpemUJCXByZWZpeF9zaXplOwkvKiBsZW5ndGggb2YgcHJlZml4IGluY2x1ZGlu ZyBudWxsIHRlcm1pbmF0b3IgKi8KKwlPaWQJCQlyZWxpZDsJCQkvKiBpZCBvZiB0aGUgdGFibGUg Ki8KKwlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CS8qIHR5cGUgb2Ygc3FsIGNvbW1hbmQg Ki8KKwlTaXplCQltZXNzYWdlX3NpemU7CS8qIHNpemUgb2YgdGhlIG1lc3NhZ2UgKi8KKworCS8q CisJICogcGF5bG9hZCwgaW5jbHVkaW5nIG51bGwtdGVybWluYXRlZCBwcmVmaXggb2YgbGVuZ3Ro IHByZWZpeF9zaXplCisJICovCisJY2hhcgkJbWVzc2FnZVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJd OworfSB4bF9sb2dpY2FsX2RkbF9tZXNzYWdlOworCisjZGVmaW5lIFNpemVPZkxvZ2ljYWxERExN ZXNzYWdlCShvZmZzZXRvZih4bF9sb2dpY2FsX2RkbF9tZXNzYWdlLCBtZXNzYWdlKSkKKworZXh0 ZXJuIFhMb2dSZWNQdHIgTG9nTG9naWNhbERETE1lc3NhZ2UoY29uc3QgY2hhciAqcHJlZml4LCBP aWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJCSAgIGNvbnN0 IGNoYXIgKmRkbF9tZXNzYWdlLCBzaXplX3Qgc2l6ZSk7CisKKy8qIFJNR1IgQVBJKi8KKyNkZWZp bmUgWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFCTB4MDAKK3ZvaWQJCWxvZ2ljYWxkZGxtc2dfcmVk byhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7Cit2b2lkCQlsb2dpY2FsZGRsbXNnX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKK2NvbnN0IGNoYXIgKmxvZ2lj YWxkZGxtc2dfaWRlbnRpZnkodWludDggaW5mbyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9k ZWNvZGUuaAppbmRleCAxNGZhOTIxYWI0Li5jOWFjNzA4ZDMyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9k ZWNvZGUuaApAQCAtMjcsNiArMjcsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZWNvZGUoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZv aWQgeGFjdF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVm ZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgc3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1z Z19kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpi dWYpOworZXh0ZXJuIHZvaWQgbG9naWNhbGRkbF9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogCiBleHRlcm4gdm9pZCBMb2dpY2FsRGVj b2RpbmdQcm9jZXNzUmVjb3JkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJ CQkgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAppbmRleCAwZWEyZGY1MDg4Li41ZmIzYmFhZWIxIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaApAQCAtNjYsNiArNjYsNyBAQCB0eXBlZGVmIGVudW0gTG9naWNh bFJlcE1zZ1R5cGUKIAlMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gPSAnUicsCiAJTE9HSUNBTF9S RVBfTVNHX1RZUEUgPSAnWScsCiAJTE9HSUNBTF9SRVBfTVNHX01FU1NBR0UgPSAnTScsCisJTE9H SUNBTF9SRVBfTVNHX0RETCA9ICdMJywKIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9 ICdiJywKIAlMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0df Q09NTUlUX1BSRVBBUkVEID0gJ0snLApAQCAtMjQ2LDYgKzI0Nyw5IEBAIGV4dGVybiBMaXN0ICps b2dpY2FscmVwX3JlYWRfdHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCSAgYm9vbCAq Y2FzY2FkZSwgYm9vbCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIg bHNuLAogCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfZGRsKFN0cmluZ0luZm8gb3V0LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJCQljb25zdCBj aGFyICpwcmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIGNoYXIg KmxvZ2ljYWxyZXBfcmVhZF9kZGwoU3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0ciAqbHNuLCBjb25z dCBjaGFyICoqcHJlZml4LCBTaXplICpzeik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlv biByZWwsIEJpdG1hcHNldCAqY29sdW1ucyk7CiBleHRlcm4gTG9naWNhbFJlcFJlbGF0aW9uICps b2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3V0cHV0X3BsdWdpbi5oCmluZGV4IDJkODlkMjY1ODYuLjQ0YmFmNDA3MjAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKQEAgLTkwLDYgKzkwLDE4IEBAIHR5cGVkZWYg dm9pZCAoKkxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkJCVNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCWNvbnN0 IGNoYXIgKm1lc3NhZ2UpOwogCisvKgorICogQ2FsbGVkIGZvciB0aGUgbG9naWNhbCBkZWNvZGlu ZyBEREwgbWVzc2FnZXMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVERExNZXNz YWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJCSAg IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2Vf bHNuLAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQg cmVsaWQsCisJCQkJCQkJCQkJICAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJ CQkJCSAgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm1lc3Nh Z2UpOworCiAvKgogICogRmlsdGVyIGNoYW5nZXMgYnkgb3JpZ2luLgogICovCkBAIC0yMDEsNiAr MjEzLDE5IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChz dHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAJCQkJCQkJCQkJCSAgU2l6ZSBtZXNz YWdlX3NpemUsCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qCisgKiBD YWxsYmFjayBmb3Igc3RyZWFtaW5nIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2VzIGZyb20g aW4tcHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAqLwordHlwZWRlZiB2b2lkICgqTG9naWNh bERlY29kZVN0cmVhbURETE1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkJ IFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4 LAorCQkJCQkJCQkJCQkJIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkJCSBEZXBhcnNlZENvbW1hbmRU eXBlIGNtZHR5cGUsCisJCQkJCQkJCQkJCQkgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJ CQkgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qCiAgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5n IHRydW5jYXRlcyBmcm9tIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KICAqLwpAQCAtMjIxLDYg KzI0Niw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxE ZWNvZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxvZ2ljYWxEZWNvZGVDb21taXRDQiBjb21t aXRfY2I7CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBtZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNv ZGVERExNZXNzYWdlQ0IgZGRsX2NiOwogCUxvZ2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCIGZp bHRlcl9ieV9vcmlnaW5fY2I7CiAJTG9naWNhbERlY29kZVNodXRkb3duQ0Igc2h1dGRvd25fY2I7 CiAKQEAgLTIzOSw2ICsyNjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFj a3MKIAlMb2dpY2FsRGVjb2RlU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdF9jYjsKIAlMb2dp Y2FsRGVjb2RlU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2NoYW5nZV9jYjsKIAlMb2dpY2FsRGVjb2Rl U3RyZWFtTWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdlX2NiOworCUxvZ2ljYWxEZWNvZGVTdHJlYW1E RExNZXNzYWdlQ0Igc3RyZWFtX2RkbF9jYjsKIAlMb2dpY2FsRGVjb2RlU3RyZWFtVHJ1bmNhdGVD QiBzdHJlYW1fdHJ1bmNhdGVfY2I7CiB9IE91dHB1dFBsdWdpbkNhbGxiYWNrczsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0LmgKaW5kZXggYjRhODAxNTQwMy4uYTJjZjk5YjRlNCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCkBAIC0yNSw2ICsyNSw3IEBAIHR5cGVkZWYgc3RydWN0 IFBHT3V0cHV0RGF0YQogCXVpbnQzMgkJcHJvdG9jb2xfdmVyc2lvbjsKIAlMaXN0CSAgICpwdWJs aWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CisJTGlzdAkgICAqZGVsZXRl ZF9yZWxpZHM7CiAJYm9vbAkJYmluYXJ5OwogCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQltZXNz YWdlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBlMzdmNTEy MGViLi4yNWEwNjFhYzcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9y ZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5o CkBAIC0xMSw2ICsxMSw4IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAj aW5jbHVkZSAibGliL2lsaXN0LmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZXMuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWwuaCIK ICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIK QEAgLTY1LDYgKzY3LDcgQEAgdHlwZWRlZiBlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBlCiAJ UkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOU0VSVCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfVVBE QVRFLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9ERUxFVEUsCisJUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX0RETCwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSwKIAlSRU9SREVSX0JVRkZF Ul9DSEFOR0VfSU5WQUxJREFUSU9OLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9T TkFQU0hPVCwKQEAgLTEzOSw2ICsxNDIsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZl ckNoYW5nZQogCQkJY2hhcgkgICAqbWVzc2FnZTsKIAkJfQkJCW1zZzsKIAorCQkvKiBEREwgKi8K KwkJc3RydWN0CisJCXsKKwkJCWNoYXIJICAgKnByZWZpeDsKKwkJCVNpemUJCW1lc3NhZ2Vfc2l6 ZTsKKwkJCWNoYXIJICAgKm1lc3NhZ2U7CisJCQlPaWQJCQlyZWxpZDsKKwkJCURlcGFyc2VkQ29t bWFuZFR5cGUgY21kdHlwZTsKKwkJfQkJCWRkbDsKKwogCQkvKiBOZXcgc25hcHNob3QsIHNldCB3 aGVuIGFjdGlvbiA9PSAqX0lOVEVSTkFMX1NOQVBTSE9UICovCiAJCVNuYXBzaG90CXNuYXBzaG90 OwogCkBAIC00NzAsNiArNDgzLDE2IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJNZXNz YWdlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgs IFNpemUgc3osCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIERETCBtZXNz YWdlIGNhbGxiYWNrIHNpZ25hdHVyZSAqLwordHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckRE TE1lc3NhZ2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkgICBPaWQgcmVsaWQsCisJCQkJ CQkJCQkJICAgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCSAgIFNpemUg c3osCisJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qIGJlZ2luIHByZXBh cmUgY2FsbGJhY2sgc2lnbmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVn aW5QcmVwYXJlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bik7CkBAIC01MzYsNiArNTU5LDE3IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJC dWZmZXJTdHJlYW1NZXNzYWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgs IFNpemUgc3osCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVh bSBEREwgbWVzc2FnZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3Jk ZXJCdWZmZXJTdHJlYW1ERExNZXNzYWdlQ0IpICgKKwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVy ICpyYiwKKwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCQkg WExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgs CisJCQkJCQkJCQkJCQkgT2lkIHJlbGlkLAorCQkJCQkJCQkJCQkJIERlcGFyc2VkQ29tbWFuZFR5 cGUgY21kdHlwZSwKKwkJCQkJCQkJCQkJCSBTaXplIHN6LAorCQkJCQkJCQkJCQkJIGNvbnN0IGNo YXIgKm1lc3NhZ2UpOworCiAvKiBzdHJlYW0gdHJ1bmNhdGUgY2FsbGJhY2sgc2lnbmF0dXJlICov CiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQikgKAogCQkJCQkJ CQkJCQkgICBSZW9yZGVyQnVmZmVyICpyYiwKQEAgLTU5Miw2ICs2MjYsNyBAQCBzdHJ1Y3QgUmVv cmRlckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJBcHBseVRydW5jYXRlQ0IgYXBwbHlfdHJ1bmNhdGU7 CiAJUmVvcmRlckJ1ZmZlckNvbW1pdENCIGNvbW1pdDsKIAlSZW9yZGVyQnVmZmVyTWVzc2FnZUNC IG1lc3NhZ2U7CisJUmVvcmRlckJ1ZmZlckRETE1lc3NhZ2VDQiBkZGw7CiAKIAkvKgogCSAqIENh bGxiYWNrcyB0byBiZSBjYWxsZWQgd2hlbiBzdHJlYW1pbmcgYSB0cmFuc2FjdGlvbiBhdCBwcmVw YXJlIHRpbWUuCkBAIC02MTEsNiArNjQ2LDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9y ZGVyQnVmZmVyU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdDsKIAlSZW9yZGVyQnVmZmVyU3Ry ZWFtQ2hhbmdlQ0Igc3RyZWFtX2NoYW5nZTsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNC IHN0cmVhbV9tZXNzYWdlOworCVJlb3JkZXJCdWZmZXJTdHJlYW1ERExNZXNzYWdlQ0Igc3RyZWFt X2RkbDsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGU7CiAK IAkvKgpAQCAtNjk2LDYgKzczMiw5IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZU1l c3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJICBT bmFwc2hvdCBzbmFwLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlv bmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBj b25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJRdWV1ZURETE1l c3NhZ2UoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJ CQkJCQkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJ CQkgY29uc3QgY2hhciAqbWVzc2FnZSwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNt ZHR5cGUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdChSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExv Z1JlY1B0ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZSwgUmVwT3Jp Z2luSWQgb3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24pOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC9jbWR0YWcuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKaW5kZXgg MWU3NTE0ZGNmZi4uMDc2YzI3ZTY0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0 YWcuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oCkBAIC0xNiw3ICsxNiw3IEBACiAv KiBidWZmZXIgc2l6ZSByZXF1aXJlZCBmb3IgY29tbWFuZCBjb21wbGV0aW9uIHRhZ3MgKi8KICNk ZWZpbmUgQ09NUExFVElPTl9UQUdfQlVGU0laRQk2NAogCi0jZGVmaW5lIFBHX0NNRFRBRyh0YWcs IG5hbWUsIGV2dHJnb2ssIHJ3cm9rLCByb3djbnQpIFwKKyNkZWZpbmUgUEdfQ01EVEFHKHRhZywg bmFtZSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRscmVwbG9rKSBcCiAJdGFnLAogCiB0eXBl ZGVmIGVudW0gQ29tbWFuZFRhZwpAQCAtNTMsOSArNTMsMTEgQEAgQ29weVF1ZXJ5Q29tcGxldGlv bihRdWVyeUNvbXBsZXRpb24gKmRzdCwgY29uc3QgUXVlcnlDb21wbGV0aW9uICpzcmMpCiBleHRl cm4gdm9pZCBJbml0aWFsaXplUXVlcnlDb21wbGV0aW9uKFF1ZXJ5Q29tcGxldGlvbiAqcWMpOwog ZXh0ZXJuIGNvbnN0IGNoYXIgKkdldENvbW1hbmRUYWdOYW1lKENvbW1hbmRUYWcgY29tbWFuZFRh Zyk7CiBleHRlcm4gY29uc3QgY2hhciAqR2V0Q29tbWFuZFRhZ05hbWVBbmRMZW4oQ29tbWFuZFRh ZyBjb21tYW5kVGFnLCBTaXplICpsZW4pOworZXh0ZXJuIENvbW1hbmRUYWcgKkdldENvbW1hbmRU YWdzRm9yRERMUmVwbChpbnQgKm5jb21tYW5kcyk7CiBleHRlcm4gYm9vbCBjb21tYW5kX3RhZ19k aXNwbGF5X3Jvd2NvdW50KENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gYm9vbCBjb21t YW5kX3RhZ19ldmVudF90cmlnZ2VyX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4g Ym9vbCBjb21tYW5kX3RhZ190YWJsZV9yZXdyaXRlX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7 CitleHRlcm4gYm9vbCBjb21tYW5kX3RhZ19kZGxfcmVwbGljYXRpb25fb2soQ29tbWFuZFRhZyBj b21tYW5kVGFnKTsKIGV4dGVybiBDb21tYW5kVGFnIEdldENvbW1hbmRUYWdFbnVtKGNvbnN0IGNo YXIgKmNvbW1hbmRuYW1lKTsKIGV4dGVybiBTaXplIEJ1aWxkUXVlcnlDb21wbGV0aW9uU3RyaW5n KGNoYXIgKmJ1ZmYsIGNvbnN0IFF1ZXJ5Q29tcGxldGlvbiAqcWMsCiAJCQkJCQkJCQkgICBib29s IG5hbWVvbmx5KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oIGIv c3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggZTczOGFjMWMwOS4uMThiNjllNGJi MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKQEAgLTIzLDE5NiArMjMsMTk2IEBACiAgKiB0ZXh0dWFs IG5hbWUsIHNvIHRoYXQgd2UgY2FuIGJzZWFyY2ggb24gaXQ7IHNlZSBHZXRDb21tYW5kVGFnRW51 bSgpLgogICovCiAKLS8qIHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIGV2ZW50X3RyaWdnZXJf b2ssIHRhYmxlX3Jld3JpdGVfb2ssIHJvd2NvdW50ICovCi1QR19DTURUQUcoQ01EVEFHX1VOS05P V04sICI/Pz8iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9B Q0NFU1NfTUVUSE9ELCAiQUxURVIgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdHUkVHQVRFIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DQVNULCAiQUxURVIgQ0FT VCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09MTEFUSU9O LCAiQUxURVIgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19BTFRFUl9DT05TVFJBSU5ULCAiQUxURVIgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09OVkVSU0lPTiwgIkFMVEVSIENPTlZFUlNJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0RBVEFCQVNFLCAi QUxURVIgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9ERUZBVUxUX1BSSVZJTEVHRVMsICJBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0RPTUFJTiwgIkFMVEVSIERP TUFJTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRVZFTlRf VFJJR0dFUiwgIkFMVEVSIEVWRU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJT04iLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fREFUQV9XUkFQUEVS LCAiQUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fVEFCTEUsICJBTFRFUiBGT1JFSUdOIFRBQkxFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GVU5DVElPTiwgIkFM VEVSIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9JTkRFWCwgIkFMVEVSIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19BTFRFUl9MQU5HVUFHRSwgIkFMVEVSIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQVJHRV9PQkpFQ1QsICJBTFRFUiBMQVJHRSBPQkpF Q1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX01BVEVSSUFM SVpFRF9WSUVXLCAiQUxURVIgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCB0cnVlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1IsICJBTFRFUiBPUEVSQVRPUiIsIHRydWUs IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfT1BFUkFUT1JfQ0xBU1MsICJB TFRFUiBPUEVSQVRPUiBDTEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQUxURVJfT1BFUkFUT1JfRkFNSUxZLCAiQUxURVIgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9QT0xJQ1ksICJBTFRFUiBQT0xJ Q1kiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BST0NFRFVS RSwgIkFMVEVSIFBST0NFRFVSRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQUxURVJfUFVCTElDQVRJT04sICJBTFRFUiBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUk9MRSwgIkFMVEVSIFJPTEUiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST1VUSU5FLCAiQUxURVIgUk9V VElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfUlVMRSwg IkFMVEVSIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X1NDSEVNQSwgIkFMVEVSIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQUxURVJfU0VRVUVOQ0UsICJBTFRFUiBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU0VSVkVSLCAiQUxURVIgU0VSVkVSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TVEFUSVNUSUNTLCAiQUxURVIg U1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf U1VCU0NSSVBUSU9OLCAiQUxURVIgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19BTFRFUl9TWVNURU0sICJBTFRFUiBTWVNURU0iLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UQUJMRSwgIkFMVEVSIFRBQkxFIiwg dHJ1ZSwgdHJ1ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RBQkxFU1BBQ0UsICJB TFRFUiBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkFMVEVSIFRFWFQgU0VBUkNIIENPTkZJ R1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RF WFRfU0VBUkNIX0RJQ1RJT05BUlksICJBTFRFUiBURVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9QQVJT RVIsICJBTFRFUiBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiQUxURVIgVEVYVCBTRUFS Q0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X1RSQU5TRk9STSwgIkFMVEVSIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQUxURVJfVFJJR0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwg dHJ1ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVS IFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfVklFVywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0FOQUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQkVHSU4sICJCRUdJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NBTEwsICJDQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q0hFQ0tQT0lOVCwgIkNIRUNLUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DTE9TRSwgIkNMT1NFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfQ0xPU0VfQ1VSU09SLCAiQ0xPU0UgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09SX0FMTCwgIkNMT1NFIENVUlNPUiBBTEwiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DTFVTVEVSLCAiQ0xVU1RFUiIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NPTU1FTlQsICJDT01NRU5U IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVQsICJDT01NSVQi LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJFUEFSRUQs ICJDT01NSVQgUFJFUEFSRUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DT1BZLCAiQ09QWSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09Q WV9GUk9NLCAiQ09QWSBGUk9NIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX0FDQ0VTU19NRVRIT0QsICJDUkVBVEUgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FHR1JFR0FURSwgIkNSRUFURSBB R0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9D QVNULCAiQ1JFQVRFIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9DT0xMQVRJT04sICJDUkVBVEUgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09OU1RSQUlOVCwgIkNSRUFURSBDT05TVFJBSU5U IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09OVkVSU0lP TiwgIkNSRUFURSBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfREFUQUJBU0UsICJDUkVBVEUgREFUQUJBU0UiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRE9NQUlOLCAiQ1JFQVRFIERPTUFJTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0VWRU5UX1RSSUdHRVIs ICJDUkVBVEUgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0NSRUFURV9FWFRFTlNJT04sICJDUkVBVEUgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJD UkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0NSRUFURV9GT1JFSUdOX1RBQkxFLCAiQ1JFQVRFIEZPUkVJR04gVEFCTEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9GVU5DVElPTiwgIkNS RUFURSBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JF QVRFX0lOREVYLCAiQ1JFQVRFIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfTEFOR1VBR0UsICJDUkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywgIkNSRUFU RSBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX09QRVJBVE9SLCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfQ0xBU1MsICJDUkVBVEUgT1BFUkFU T1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9P UEVSQVRPUl9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NFRFVSRSwgIkNS RUFURSBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NS RUFURV9QVUJMSUNBVElPTiwgIkNSRUFURSBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JPTEUsICJDUkVBVEUgUk9MRSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9ST1VUSU5FLCAiQ1JFQVRFIFJP VVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9SVUxF LCAiQ1JFQVRFIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NS RUFURV9TQ0hFTUEsICJDUkVBVEUgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfU0VRVUVOQ0UsICJDUkVBVEUgU0VRVUVOQ0UiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9TRVJWRVIsICJDUkVBVEUgU0VSVkVS IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU1RBVElTVElD UywgIkNSRUFURSBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfU1VCU0NSSVBUSU9OLCAiQ1JFQVRFIFNVQlNDUklQVElPTiIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFLCAiQ1JFQVRFIFRBQkxF IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVfQVMs ICJDUkVBVEUgVEFCTEUgQVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0NSRUFURV9UQUJMRVNQQUNFLCAiQ1JFQVRFIFRBQkxFU1BBQ0UiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwg IkNSRUFURSBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkNSRUFURSBU RVhUIFNFQVJDSCBESUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFBBUlNF UiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VB UkNIX1RFTVBMQVRFLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJBTlNGT1JNLCAiQ1JFQVRFIFRSQU5T Rk9STSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSSUdH RVIsICJDUkVBVEUgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1RZUEUsICJDUkVBVEUgVFlQRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX1VTRVJfTUFQUElORywgIkNSRUFURSBVU0VSIE1BUFBJTkciLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9WSUVXLCAiQ1JFQVRF IFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEUs ICJERUFMTE9DQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfREVB TExPQ0FURV9BTEwsICJERUFMTE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RFQ0xBUkVfQ1VSU09SLCAiREVDTEFSRSBDVVJTT1IiLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUxFVEUsICJERUxFVEUiLCBmYWxzZSwgZmFs c2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkQsICJESVNDQVJEIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9BTEwsICJESVNDQVJEIEFMTCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfUExBTlMsICJE SVNDQVJEIFBMQU5TIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRElT Q0FSRF9TRVFVRU5DRVMsICJESVNDQVJEIFNFUVVFTkNFUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfVEVNUCwgIkRJU0NBUkQgVEVNUCIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RPLCAiRE8iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0FDQ0VTU19NRVRIT0QsICJEUk9QIEFDQ0VTUyBN RVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQUdHUkVH QVRFLCAiRFJPUCBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0RST1BfQ0FTVCwgIkRST1AgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9DT0xMQVRJT04sICJEUk9QIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05TVFJBSU5ULCAiRFJPUCBDT05TVFJBSU5U IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NPTlZFUlNJT04s ICJEUk9QIENPTlZFUlNJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RST1BfREFUQUJBU0UsICJEUk9QIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfRFJPUF9ET01BSU4sICJEUk9QIERPTUFJTiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9FVkVOVF9UUklHR0VSLCAiRFJPUCBFVkVOVCBU UklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9FWFRF TlNJT04sICJEUk9QIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQ RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9U QUJMRSwgIkRST1AgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9GVU5DVElPTiwgIkRST1AgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfSU5ERVgsICJEUk9QIElOREVYIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0xBTkdVQUdFLCAiRFJPUCBMQU5HVUFH RSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9NQVRFUklBTEla RURfVklFVywgIkRST1AgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAiRFJPUCBP UEVSQVRPUiBDTEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJP UF9PUEVSQVRPUl9GQU1JTFksICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9PV05FRCwgIkRST1AgT1dORUQiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUE9MSUNZLCAiRFJPUCBQT0xJQ1ki LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUFJPQ0VEVVJFLCAi RFJPUCBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RS T1BfUFVCTElDQVRJT04sICJEUk9QIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX1JPTEUsICJEUk9QIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1JPVVRJTkUsICJEUk9QIFJPVVRJTkUiLCB0cnVl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfUlVMRSwgIkRST1AgUlVMRSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TQ0hFTUEsICJEUk9Q IFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVFV RU5DRSwgIkRST1AgU0VRVUVOQ0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0RST1BfU0VSVkVSLCAiRFJPUCBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfU1RBVElTVElDUywgIkRST1AgU1RBVElTVElDUyIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9TVUJTQ1JJUFRJT04sICJEUk9QIFNV QlNDUklQVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9U QUJMRSwgIkRST1AgVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RST1BfVEFCTEVTUEFDRSwgIkRST1AgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfQ09ORklHVVJBVElPTiwgIkRST1Ag VEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRB RyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiRFJPUCBURVhUIFNFQVJDSCBE SUNUSU9OQVJZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RF WFRfU0VBUkNIX1BBUlNFUiwgIkRST1AgVEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX1RFTVBMQVRFLCAiRFJP UCBURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRFJPUF9UUkFOU0ZPUk0sICJEUk9QIFRSQU5TRk9STSIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9UUklHR0VSLCAiRFJPUCBUUklHR0VSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RZUEUsICJEUk9QIFRZUEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVVNFUl9NQVBQSU5HLCAi RFJPUCBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RST1BfVklFVywgIkRST1AgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfRVhFQ1VURSwgIkVYRUNVVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19FWFBMQUlOLCAiRVhQTEFJTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0ZFVENILCAiRkVUQ0giLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUco Q01EVEFHX0dSQU5ULCAiR1JBTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0dSQU5UX1JPTEUsICJHUkFOVCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfSU1QT1JUX0ZPUkVJR05fU0NIRU1BLCAiSU1QT1JUIEZPUkVJR04gU0NIRU1B IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19JTlNFUlQsICJJTlNFUlQi LCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX0xJU1RFTiwgIkxJU1RFTiIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0xPQUQsICJMT0FEIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfTE9DS19UQUJMRSwgIkxPQ0sgVEFC TEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdF IiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19NT1ZFLCAiTU9WRSIsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURUQUdfTk9USUZZLCAiTk9USUZZIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUFJFUEFSRSwgIlBSRVBBUkUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19QUkVQQVJFX1RSQU5TQUNUSU9O LCAiUFJFUEFSRSBUUkFOU0FDVElPTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX1JFQVNTSUdOX09XTkVELCAiUkVBU1NJR04gT1dORUQiLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19SRUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXLCAiUkVGUkVT SCBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfUkVJTkRFWCwgIlJFSU5ERVgiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19SRUxFQVNFLCAiUkVMRUFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX1JFU0VULCAiUkVTRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19SRVZPS0UsICJSRVZPS0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX1JFVk9LRV9ST0xFLCAiUkVWT0tFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19ST0xMQkFDSywgIlJPTExCQUNLIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfUk9MTEJBQ0tfUFJFUEFSRUQsICJST0xMQkFDSyBQUkVQQVJFRCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NBVkVQT0lOVCwgIlNBVkVQ T0lOVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFQ1VSSVRZX0xB QkVMLCAiU0VDVVJJVFkgTEFCRUwiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX1NFTEVDVCwgIlNFTEVDVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURU QUdfU0VMRUNUX0ZPUl9LRVlfU0hBUkUsICJTRUxFQ1QgRk9SIEtFWSBTSEFSRSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZX1VQREFURSwg IlNFTEVDVCBGT1IgTk8gS0VZIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX1NFTEVDVF9GT1JfU0hBUkUsICJTRUxFQ1QgRk9SIFNIQVJFIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfU0VMRUNUX0ZPUl9VUERBVEUsICJTRUxFQ1Qg Rk9SIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVD VF9JTlRPLCAiU0VMRUNUIElOVE8iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX1NFVCwgIlNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NF VF9DT05TVFJBSU5UUywgIlNFVCBDT05TVFJBSU5UUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX1NIT1csICJTSE9XIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfU1RBUlRfVFJBTlNBQ1RJT04sICJTVEFSVCBUUkFOU0FDVElPTiIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1RSVU5DQVRFX1RBQkxFLCAiVFJVTkNB VEUgVEFCTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19VTkxJU1RF TiwgIlVOTElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfVVBE QVRFLCAiVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19WQUNV VU0sICJWQUNVVU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorLyogc3ltYm9sIG5hbWUsIHRleHR1 YWwgbmFtZSwgZXZlbnRfdHJpZ2dlcl9vaywgdGFibGVfcmV3cml0ZV9vaywgcm93Y291bnQsIGRk bHJlcGxvayAqLworUEdfQ01EVEFHKENNRFRBR19VTktOT1dOLCAiPz8/IiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0FDQ0VTU19NRVRIT0QsICJB TFRFUiBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfQUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DQVNULCAiQUxURVIgQ0FTVCIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09MTEFU SU9OLCAiQUxURVIgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9DT05TVFJBSU5ULCAiQUxURVIgQ09OU1RSQUlOVCIsIHRydWUsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTlZFUlNJT04sICJB TFRFUiBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9EQVRBQkFTRSwgIkFMVEVSIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0RFRkFVTFRfUFJJVklMRUdFUywgIkFM VEVSIERFRkFVTFQgUFJJVklMRUdFUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfRE9NQUlOLCAiQUxURVIgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9FVkVOVF9UUklHR0VSLCAiQUxURVIg RVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAi QUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fVEFCTEUsICJBTFRFUiBGT1JFSUdOIFRBQkxF IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GVU5D VElPTiwgIkFMVEVSIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9JTkRFWCwgIkFMVEVSIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQU5HVUFHRSwgIkFMVEVSIExBTkdVQUdF IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQVJH RV9PQkpFQ1QsICJBTFRFUiBMQVJHRSBPQkpFQ1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9NQVRFUklBTElaRURfVklFVywgIkFMVEVSIE1BVEVS SUFMSVpFRCBWSUVXIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0FMVEVSX09QRVJBVE9SLCAiQUxURVIgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0NMQVNTLCAiQUxURVIgT1BFUkFU T1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FM VEVSX09QRVJBVE9SX0ZBTUlMWSwgIkFMVEVSIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfUE9MSUNZLCAiQUxURVIgUE9M SUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9Q Uk9DRURVUkUsICJBTFRFUiBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0FMVEVSX1BVQkxJQ0FUSU9OLCAiQUxURVIgUFVCTElDQVRJT04iLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPTEUsICJB TFRFUiBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0FMVEVSX1JPVVRJTkUsICJBTFRFUiBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9SVUxFLCAiQUxURVIgUlVMRSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfU0NIRU1BLCAiQUxURVIgU0NI RU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9T RVFVRU5DRSwgIkFMVEVSIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9TRVJWRVIsICJBTFRFUiBTRVJWRVIiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1NUQVRJU1RJQ1MsICJBTFRFUiBT VEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19B TFRFUl9TVUJTQ1JJUFRJT04sICJBTFRFUiBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TWVNURU0sICJBTFRFUiBTWVNURU0i LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEFC TEUsICJBTFRFUiBUQUJMRSIsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENN RFRBR19BTFRFUl9UQUJMRVNQQUNFLCAiQUxURVIgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9DT05GSUdV UkFUSU9OLCAiQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfRElDVElPTkFS WSwgIkFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX1BBUlNFUiwgIkFMVEVSIFRF WFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJBTFRFUiBURVhUIFNFQVJDSCBURU1Q TEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJf VFJBTlNGT1JNLCAiQUxURVIgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJJR0dFUiwgIkFMVEVSIFRSSUdHRVIiLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RZUEUsICJBTFRFUiBU WVBFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1VT RVJfTUFQUElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVklFVywgIkFMVEVSIFZJRVciLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FOQUxZWkUsICJBTkFMWVpFIiwgZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0JFR0lOLCAiQkVHSU4i LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0FMTCwgIkNB TEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0hFQ0tQ T0lOVCwgIkNIRUNLUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfQ0xPU0UsICJDTE9TRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19DTE9TRV9DVVJTT1IsICJDTE9TRSBDVVJTT1IiLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xPU0VfQ1VSU09SX0FMTCwgIkNMT1NF IENVUlNPUiBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfQ0xVU1RFUiwgIkNMVVNURVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQ09NTUVOVCwgIkNPTU1FTlQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0NPTU1JVCwgIkNPTU1JVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJFUEFSRUQsICJDT01NSVQgUFJFUEFS RUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09QWSwg IkNPUFkiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT1BZ X0ZST00sICJDT1BZIEZST00iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX0FDQ0VTU19NRVRIT0QsICJDUkVBVEUgQUNDRVNTIE1FVEhPRCIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FHR1JFR0FU RSwgIkNSRUFURSBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0NSRUFURV9DQVNULCAiQ1JFQVRFIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT0xMQVRJT04sICJDUkVBVEUgQ09MTEFU SU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf Q09OU1RSQUlOVCwgIkNSRUFURSBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlZFUlNJT04sICJDUkVBVEUgQ09OVkVSU0lP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0RB VEFCQVNFLCAiQ1JFQVRFIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0NSRUFURV9ET01BSU4sICJDUkVBVEUgRE9NQUlOIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVZFTlRfVFJJR0dFUiwg IkNSRUFURSBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9FWFRFTlNJT04sICJDUkVBVEUgRVhURU5TSU9OIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9EQVRB X1dSQVBQRVIsICJDUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9GT1JFSUdOX1RBQkxFLCAiQ1JFQVRF IEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0NSRUFURV9GVU5DVElPTiwgIkNSRUFURSBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0lOREVYLCAiQ1JFQVRFIElOREVYIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfTEFOR1VB R0UsICJDUkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywgIkNSRUFURSBNQVRFUklBTElaRUQg VklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X09QRVJBVE9SLCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfQ0xBU1MsICJDUkVBVEUgT1BFUkFUT1Ig Q0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9PUEVSQVRPUl9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBP TElDWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1BST0NFRFVSRSwgIkNSRUFURSBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9QVUJMSUNBVElPTiwgIkNSRUFURSBQVUJMSUNBVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JP TEUsICJDUkVBVEUgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfUk9VVElORSwgIkNSRUFURSBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1JVTEUsICJDUkVBVEUgUlVMRSIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NDSEVN QSwgIkNSRUFURSBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9TRVFVRU5DRSwgIkNSRUFURSBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NFUlZFUiwgIkNSRUFURSBTRVJW RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9T VEFUSVNUSUNTLCAiQ1JFQVRFIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TVUJTQ1JJUFRJT04sICJDUkVBVEUgU1VCU0NSSVBU SU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1RBQkxFLCAiQ1JFQVRFIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfVEFCTEVfQVMsICJDUkVBVEUgVEFCTEUgQVMiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVTUEFDRSwgIkNS RUFURSBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiQ1JFQVRFIFRFWFQgU0VB UkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiQ1JFQVRFIFRFWFQgU0VBUkNI IERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0NSRUFURV9URVhUX1NFQVJDSF9QQVJTRVIsICJDUkVBVEUgVEVYVCBTRUFSQ0ggUEFSU0VSIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEVYVF9T RUFSQ0hfVEVNUExBVEUsICJDUkVBVEUgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9UUkFOU0ZPUk0sICJDUkVB VEUgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfVFJJR0dFUiwgIkNSRUFURSBUUklHR0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFlQRSwgIkNSRUFURSBUWVBFIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVVNFUl9NQVBQSU5H LCAiQ1JFQVRFIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX1ZJRVcsICJDUkVBVEUgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURSwgIkRFQUxMT0NBVEUiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FURV9BTEws ICJERUFMTE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19ERUNMQVJFX0NVUlNPUiwgIkRFQ0xBUkUgQ1VSU09SIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFTEVURSwgIkRFTEVURSIsIGZhbHNlLCBm YWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkQsICJESVNDQVJEIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RJU0NBUkRfQUxM LCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfRElTQ0FSRF9QTEFOUywgIkRJU0NBUkQgUExBTlMiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9TRVFVRU5DRVMsICJESVNDQVJEIFNF UVVFTkNFUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19E SVNDQVJEX1RFTVAsICJESVNDQVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19EUk9QX0FDQ0VTU19NRVRIT0QsICJEUk9QIEFDQ0VTUyBNRVRIT0Qi LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQUdHUkVH QVRFLCAiRFJPUCBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0RST1BfQ0FTVCwgIkRST1AgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9DT0xMQVRJT04sICJEUk9QIENPTExBVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05TVFJBSU5U LCAiRFJPUCBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9DT05WRVJTSU9OLCAiRFJPUCBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0RBVEFCQVNFLCAiRFJPUCBEQVRB QkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9Q X0RPTUFJTiwgIkRST1AgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19EUk9QX0VWRU5UX1RSSUdHRVIsICJEUk9QIEVWRU5UIFRSSUdHRVIiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9FWFRFTlNJT04s ICJEUk9QIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkRST1AgRk9SRUlHTiBEQVRBIFdSQVBQ RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRk9S RUlHTl9UQUJMRSwgIkRST1AgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9GVU5DVElPTiwgIkRST1AgRlVOQ1RJT04iLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfSU5ERVgsICJEUk9Q IElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9Q X0xBTkdVQUdFLCAiRFJPUCBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9NQVRFUklBTElaRURfVklFVywgIkRST1AgTUFURVJJQUxJWkVE IFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1Bf T1BFUkFUT1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAiRFJPUCBPUEVSQVRPUiBDTEFTUyIs IHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVSQVRP Ul9GQU1JTFksICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9PV05FRCwgIkRST1AgT1dORUQiLCB0cnVlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1BPTElDWSwgIkRST1AgUE9M SUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1BS T0NFRFVSRSwgIkRST1AgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19EUk9QX1BVQkxJQ0FUSU9OLCAiRFJPUCBQVUJMSUNBVElPTiIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9ST0xFLCAiRFJPUCBS T0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1Bf Uk9VVElORSwgIkRST1AgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfRFJPUF9SVUxFLCAiRFJPUCBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NDSEVNQSwgIkRST1AgU0NIRU1BIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUVVFTkNFLCAiRFJP UCBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdf RFJPUF9TRVJWRVIsICJEUk9QIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9TVEFUSVNUSUNTLCAiRFJPUCBTVEFUSVNUSUNTIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NVQlNDUklQVElPTiwg IkRST1AgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9UQUJMRSwgIkRST1AgVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEFCTEVTUEFDRSwgIkRST1AgVEFCTEVTUEFDRSIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRf U0VBUkNIX0NPTkZJR1VSQVRJT04sICJEUk9QIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFS Q0hfRElDVElPTkFSWSwgIkRST1AgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9QQVJTRVIs ICJEUk9QIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9URU1QTEFURSwgIkRST1AgVEVYVCBTRUFS Q0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0RST1BfVFJBTlNGT1JNLCAiRFJPUCBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVFJJR0dFUiwgIkRST1AgVFJJR0dFUiIsIHRydWUs IGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9UWVBFLCAiRFJPUCBU WVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1VT RVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZJRVcsICJEUk9QIFZJRVciLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0VYRUNVVEUsICJFWEVDVVRFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0VYUExBSU4sICJFWFBMQUlO IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0ZFVENILCAi RkVUQ0giLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19HUkFO VCwgIkdSQU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19H UkFOVF9ST0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19JTVBPUlRfRk9SRUlHTl9TQ0hFTUEsICJJTVBPUlQgRk9SRUlHTiBTQ0hF TUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0lOU0VSVCwg IklOU0VSVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0xJ U1RFTiwgIkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19MT0FELCAiTE9BRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19MT0NLX1RBQkxFLCAiTE9DSyBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQorUEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdFIiwgZmFsc2UsIGZhbHNlLCB0cnVl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTU9WRSwgIk1PVkUiLCBmYWxzZSwgZmFsc2UsIHRy dWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19OT1RJRlksICJOT1RJRlkiLCBmYWxzZSwgZmFs c2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUFJFUEFSRSwgIlBSRVBBUkUiLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUFJFUEFSRV9UUkFO U0FDVElPTiwgIlBSRVBBUkUgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVBU1NJR05fT1dORUQsICJSRUFTU0lHTiBPV05FRCIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19SRUZSRVNIX01BVEVS SUFMSVpFRF9WSUVXLCAiUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBm YWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVJTkRFWCwgIlJFSU5ERVgiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVMRUFTRSwgIlJFTEVBU0Ui LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVTRVQsICJS RVNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19SRVZP S0UsICJSRVZPS0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X1JFVk9LRV9ST0xFLCAiUkVWT0tFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK K1BHX0NNRFRBRyhDTURUQUdfUk9MTEJBQ0ssICJST0xMQkFDSyIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ST0xMQkFDS19QUkVQQVJFRCwgIlJPTExCQUNL IFBSRVBBUkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X1NBVkVQT0lOVCwgIlNBVkVQT0lOVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdf Q01EVEFHKENNRFRBR19TRUNVUklUWV9MQUJFTCwgIlNFQ1VSSVRZIExBQkVMIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1QsICJTRUxFQ1QiLCBmYWxz ZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX0tFWV9T SEFSRSwgIlNFTEVDVCBGT1IgS0VZIFNIQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZX1VQREFURSwgIlNFTEVDVCBGT1Ig Tk8gS0VZIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19TRUxFQ1RfRk9SX1NIQVJFLCAiU0VMRUNUIEZPUiBTSEFSRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX1VQREFURSwgIlNFTEVD VCBGT1IgVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1NFTEVDVF9JTlRPLCAiU0VMRUNUIElOVE8iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19TRVQsICJTRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VUX0NPTlNUUkFJTlRTLCAiU0VUIENPTlNUUkFJTlRTIiwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NIT1csICJTSE9X IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NUQVJUX1RS QU5TQUNUSU9OLCAiU1RBUlQgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKK1BHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUsICJUUlVOQ0FURSBUQUJMRSIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19VTkxJU1RFTiwgIlVO TElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1VQ REFURSwgIlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX1ZBQ1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApp bmRleCBjMGRkZGRiMmYwLi43NGRiMzQ0NzRlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9yZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMTYsMTAgKzE2LDEyIEBA CiAKICNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfaW5kZXguaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCisjaW5j bHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRl ZnMuaCIKICNpbmNsdWRlICJyZXdyaXRlL3ByczJsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9i bG9jay5oIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggYzAwZTI4MzYxYy4uMWM2 ZjMzMDk1YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBAIC02MjIzLDkgKzYyMjMs OSBAQCBMaXN0IG9mIHNjaGVtYXMKICgwIHJvd3MpCiAKIFxkUnAgIm5vLnN1Y2gucHVibGljYXRp b24iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwot IE5hbWUgfCBPd25lciB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUg fCBPd25lciB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KICgwIHJvd3MpCiAKIFxkUnMgIm5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA0MjdmODdlYTA3Li43 ZDg2OTc3YjI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0 aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApA QCAtMzAsMjAgKzMwLDIwIEBAIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlv bnMKIExJTkUgMTogLi4udWJfeHh4IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0g J3RydWUnLCBwdWJsaXNoX3ZpLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogXGRScAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5h bWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cGli X2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVs dCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAg ICAgIE5hbWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogKDIgcm93cykKIAogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwg ZGVsZXRlJyk7CiBcZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgdGVzdHBpYl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCBmICAgICAgICAgfCBmCiAoMiByb3dzKQogCiAtLS0gYWRkaW5nIHRhYmxlcwpAQCAtODcsMTAg Kzg3LDEwIEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBzaG91bGQgYmUgYWJsZSB0 byBhZGQgc2NoZW1hIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsg dGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTk5 LDIwICs5OSwyMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8g ZHJvcCBzY2hlbWEgZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJw KyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCiAKIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNl dCBzY2hlbWEgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9ydGFibGUgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0 cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdCIKIApAQCAtMTIzLDEwICsxMjMsMTAgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0OwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEgRk9SIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QsIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFJFU0VU IGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9z Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0 LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xMzUsMTAgKzEzNSwxMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdGFibGUg b2YgdGhlIHNhbWUgc2NoZW1hIHRvIHRoZSBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7 CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2No ZW1hczoKQEAgLTE0NywxMCArMTQ3LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91 bGQgYmUgYWJsZSB0byBkcm9wIHRoZSB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3JzY2hlbWEgRFJPUCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHVi X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCkBAIC0xNjEsMTAgKzE2MSwxMCBAQCBFUlJPUjog IHJlbGF0aW9uICJ0ZXN0cHViX25vcGsiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgog LS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHRhYmxlIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3Rw dWJfbm9wazsKIFxkUnArIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAKQEAgLTE4 NiwxMCArMTg2LDEwIEBAIFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMi CiAKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICAgIHwgZgogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKQEAgLTIwMSwx OSArMjAxLDE5IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1 Yl90YmwzOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3Rw dWJfdGJsMzsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViMwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMworICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIK ICAgICAicHVibGljLnRlc3RwdWJfdGJsM2EiCiAKIFxkUnArIHRlc3RwdWI0Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogCkBAIC0y MzQsMTAgKzIzNCwxMCBAQCBVUERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIC0tIG9u bHkgcGFyZW50IGlzIGxpc3RlZCBhcyBiZWluZyBpbiBwdWJsaWNhdGlvbiwgbm90IHRoZSBwYXJ0 aXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIEFERCBUQUJMRSB0ZXN0 cHViX3BhcnRlZDsKIFxkUnArIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAg LTI1MiwxMCArMjUyLDEwIEBAIEFMVEVSIFRBQkxFIHRlc3RwdWJfcGFydGVkIERFVEFDSCBQQVJU SVRJT04gdGVzdHB1Yl9wYXJ0ZWQxOwogVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7 CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBTRVQgKHB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290ID0gdHJ1ZSk7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFy dGVkIgogCkBAIC0yODQsMTAgKzI4NCwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdF UlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZf dGJsMSwgdGVzdHB1Yl9yZl90YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8 PiAndGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMzAwLDEwICszMDAsMTAgQEAgVGFibGVz OgogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90Ymwz IFdIRVJFIChlID4gMTAwMCBBTkQgZSA8IDIwMDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg fCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAg ICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6OnRleHQpIEFO RCAoZCA8IDUpKQpAQCAtMzE5LDEwICszMTksMTAgQEAgUHVibGljYXRpb25zOgogCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMjsKIFxkUnArIHRl c3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVz dHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAx MDAwKSBBTkQgKGUgPCAyMDAwKSkKQEAgLTMzMCwxMCArMzMwLDEwIEBAIFRhYmxlczoKIC0tIHJl bW92ZSB0ZXN0cHViX3JmX3RibDEgYW5kIGFkZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4gKGFub3Ro ZXIgV0hFUkUgZXhwcmVzc2lvbikKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJM RSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDApOwogXGRScCsgdGVz dHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0 cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDMwMCkgQU5EIChlIDwgNTAwKSkKIApAQCAtMzY2LDEw ICszNjYsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCBPTkxZ IHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQn KTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgx Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgx CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1 Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoZSA8IDk5OSkK QEAgLTM3OSwxMCArMzc5LDEwIEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3RwdWJfcmZf dGJsMSwgdGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8IDk5OSkg V0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBc ZFJwKyB0ZXN0cHViX3N5bnRheDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9zeW50YXgyCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJ0ZXN0cHViX3JmX3NjaGVt YTEudGVzdHB1Yl9yZl90Ymw1IiBXSEVSRSAoaCA8IDk5OSkKQEAgLTQ5NywxMCArNDk3LDEwIEBA IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHVi X3JmX3NjaGVtYTI7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEVTIElOIFND SEVNQSB0ZXN0cHViX3JmX3NjaGVtYTIsIFRBQkxFIHRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHVi X3JmX3RibDYgV0hFUkUgKGkgPCA5OSk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRS cCsgdGVzdHB1YjYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWI2Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjYKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUg RERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInRlc3Rw dWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYiIFdIRVJFIChpIDwgOTkpCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgpAQCAtNzE0LDEwICs3MTQsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB0cnVuY2F0ZScpOwogUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5z IEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEpOwkJLS0gb2sKIFxkUnArIHRlc3RwdWJfdGFibGVf aW5zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90 YWJsZV9pbnMKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf dGFibGVfaW5zCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxl IERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90Ymw1IiAoYSkKIApAQCAtODkxLDEwICs4OTEsMTAgQEAgQ1JFQVRFIFRBQkxF IHRlc3RwdWJfdGJsX2JvdGhfZmlsdGVycyAoYSBpbnQsIGIgaW50LCBjIGludCwgUFJJTUFSWSBL RVkgKGEsYykpOwogQUxURVIgVEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIFJFUExJQ0Eg SURFTlRJVFkgVVNJTkcgSU5ERVggdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzX3BrZXk7CiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2JvdGhfZmlsdGVycyBBREQgVEFCTEUgdGVzdHB1Yl90Ymxf Ym90aF9maWx0ZXJzIChhLGMpIFdIRVJFIChjICE9IDEpOwogXGRScCsgdGVzdHB1Yl9ib3RoX2Zp bHRlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Ym90aF9maWx0ZXJzCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9ib3RoX2ZpbHRlcnMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMiIChhLCBjKSBXSEVSRSAoYyA8PiAxKQog CkBAIC0xMDk5LDEwICsxMDk5LDEwIEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfdGJsMSIg aXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGJsCiBDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YmwgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMTsKIEVSUk9S OiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGJsIiBhbHJlYWR5IGV4aXN0cwogXGRScCsgdGVz dHB1Yl9mb3J0YmwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg VGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTEx NDAsMTAgKzExNDAsMTAgQEAgUHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcnRibCIKIAog XGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90 YmwxIgpAQCAtMTIyMSwxMCArMTIyMSwxMCBAQCBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJl Z3Jlc3Npb24gRlJPTSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0 cHViX3BhcnRlZDsKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwxOwogXGRScCsgdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf ZGVmYXVsdAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf ZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gZmFpbCAt IG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24KQEAgLTEyMzQsMjAgKzEyMzQsMjAgQEAgRVJS T1I6ICBtdXN0IGJlIG93bmVyIG9mIHB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAogUkVTRVQg Uk9MRTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBSRU5BTUUgVE8gdGVzdHB1 Yl9mb287CiBcZFJwIHRlc3RwdWJfZm9vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9vIHwgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBi YWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv byBSRU5BTUUgVE8gdGVzdHB1Yl9kZWZhdWx0OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IE9XTkVSIFRPIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBcZFJwIHRlc3RwdWJf ZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBwdWJsaWNhdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyMiB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAg ICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHVi X2RlZmF1bHQgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSBy b3cpCiAKIC0tIGFkZGluZyBzY2hlbWFzIGFuZCB0YWJsZXMKQEAgLTEyNjMsMTkgKzEyNjMsMTkg QEAgQ1JFQVRFIFRBQkxFICJDVVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1BIihpZCBpbnQp OwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWIxX2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJw KyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiBDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1YjJfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHVi X3Rlc3QyLCBwdWJfdGVzdDM7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rl c3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xMjg5LDQ0ICsxMjg5LDQ0IEBAIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNl9mb3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRf U0NIRU1BIiwgQ1VSCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFC TEUgIkNVUlJFTlRfU0NIRU1BIi4iQ1VSUkVOVF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJsaWMiCiAKIFxkUnAr IHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWI0X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKIAogXGRScCsgdGVzdHB1 YjVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWI1X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnAr IHRlc3RwdWI2X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWI2X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgog CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BLkNVUlJFTlRfU0NIRU1BIgogCkBAIC0xMzYw LDEwICsxMzYwLDEwIEBAIEVSUk9SOiAgc2NoZW1hICJ0ZXN0cHViX3ZpZXciIGRvZXMgbm90IGV4 aXN0CiAtLSBkcm9wcGluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4g cHVibGljYXRpb24KIERST1AgU0NIRU1BIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi Ml9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzNzEsMjAgKzEzNzEs MjAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbmFtaW5nIHRoZSBzY2hlbWEgc2hvdWxk IHJlZmxlY3QgdGhlIGNoYW5nZSBpbiBwdWJsaWNhdGlvbgogQUxURVIgU0NIRU1BIHB1Yl90ZXN0 MSBSRU5BTUUgdG8gcHViX3Rlc3QxX3JlbmFtZWQ7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9y c2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERE THMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoK ICAgICAicHViX3Rlc3QxX3JlbmFtZWQiCiAgICAgInB1Yl90ZXN0MiIKIAogQUxURVIgU0NIRU1B IHB1Yl90ZXN0MV9yZW5hbWVkIFJFTkFNRSB0byBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMl9m b3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20g c2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xMzkyLDEwICsx MzkyLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBhZGQg c2NoZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90 ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQwNCwxMCArMTQwNCwxMCBAQCBUYWJsZXMgZnJv bSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJM RVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4 aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFibGUgRERM cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0MTYsMTAgKzE0MTYsMTAgQEAg VGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBBREQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBFUlJPUjogIHNjaGVtYSAicHViX3Rl c3QxIiBpcyBhbHJlYWR5IG1lbWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1YjFfZm9yc2NoZW1h IgogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rl c3QyIgpAQCAtMTQyNywxMCArMTQyNywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0 ZXIgcHVibGljYXRpb24gZHJvcCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2Zv cnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTQzOCwxMCArMTQzOCwxMCBAQCBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERS T1AgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDI7CiBFUlJPUjogIHRhYmxlcyBmcm9tIHNjaGVt YSAicHViX3Rlc3QyIiBhcmUgbm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiBcZFJwKyB0ZXN0 cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNDQ5LDI5ICsxNDQ5LDI5IEBA IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hl bWEgRFJPUCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNj aGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIC0tIGRyb3AgYWxsIHNjaGVtYXMKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gYWx0ZXIgcHVibGljYXRpb24gc2V0IG11bHRpcGxl IHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2Zv cnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBE RExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ4MCwxMCArMTQ4MCwxMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNj aGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgVGFibGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0OTIsMTAg KzE0OTIsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbW92aW5nIHRoZSBkdXBsaWNh dGUgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIx X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJs ZSBERExzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtMTU3NCwxOCArMTU3NCwxOCBAQCBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9y c2NoZW1hOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIz X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi M19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgVGFi bGUgRERMcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdDE7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0x NTk1LDIwICsxNTk1LDIwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYV9m b3J0YWJsZSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIFRBCiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0Mi50Ymwx LCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBUYWJsZSBERExzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFi bGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IFRhYmxlIERETHMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDZlNTc5MWE0NmMuLjVkYzVjMjk5ZjggMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC01NjIsNiArNTYyLDcgQEAgRGVmRWxlbUFjdGlvbgogRGVm YXVsdEFDTEluZm8KIERlZmluZVN0bXQKIERlbGV0ZVN0bXQKK0RlcGFyc2VkQ29tbWFuZFR5cGUK IERlcGVuZGVuY3lHZW5lcmF0b3IKIERlcGVuZGVuY3lHZW5lcmF0b3JEYXRhCiBEZXBlbmRlbmN5 VHlwZQpAQCAtMTQ1Myw2ICsxNDU0LDggQEAgTG9naWNhbERlY29kZUJlZ2luUHJlcGFyZUNCCiBM b2dpY2FsRGVjb2RlQ2hhbmdlQ0IKIExvZ2ljYWxEZWNvZGVDb21taXRDQgogTG9naWNhbERlY29k ZUNvbW1pdFByZXBhcmVkQ0IKK0xvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IKK0xvZ2ljYWxEZWNv ZGVTdHJlYW1ERExNZXNzYWdlQ0IKIExvZ2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCCiBMb2dp Y2FsRGVjb2RlRmlsdGVyUHJlcGFyZUNCCiBMb2dpY2FsRGVjb2RlTWVzc2FnZUNCCkBAIC0yMzA5 LDYgKzIzMTIsOCBAQCBSZW9yZGVyQnVmZmVyQ2hhbmdlCiBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlw ZQogUmVvcmRlckJ1ZmZlckNvbW1pdENCCiBSZW9yZGVyQnVmZmVyQ29tbWl0UHJlcGFyZWRDQgor UmVvcmRlckJ1ZmZlckRETE1lc3NhZ2VDQgorUmVvcmRlckJ1ZmZlclN0cmVhbURETE1lc3NhZ2VD QgogUmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2UKIFJlb3JkZXJCdWZmZXJJdGVyVFhORW50cnkKIFJl b3JkZXJCdWZmZXJJdGVyVFhOU3RhdGUKLS0gCjIuMzAuMC53aW5kb3dzLjIKCg== --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0003-Deparser-for-INDEX-DDL-commands-2023_03_30.patch" Content-Description: 0003-Deparser-for-INDEX-DDL-commands-2023_03_30.patch Content-Disposition: attachment; filename="0003-Deparser-for-INDEX-DDL-commands-2023_03_30.patch"; size=14846; creation-date="Thu, 30 Mar 2023 06:36:10 GMT"; modification-date="Thu, 30 Mar 2023 06:37:08 GMT" Content-Transfer-Encoding: base64 RnJvbSA1MDA5OTVmNmVkOTdiNmI2MGNhZTcwZDVkZDYyNWM3NzBjMjBkOTNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDI5IE1hciAyMDIzIDIxOjA0OjMyICswODAwClN1YmplY3Q6IFtQQVRDSCAz LzVdIERlcGFyc2VyIGZvciBJTkRFWCBEREwgY29tbWFuZHMKCi0tLQogZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbCB8ICAxMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs X2RlcGFyc2UuYyAgICB8IDM3NSArKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBj aGFuZ2VkLCAzODQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA5YjU2NjNlMWY1Li5kOTE2NjEwYjQ2IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0OTMsNiArMTQ5MywxMiBAQCB0ZXN0 X3N1Yj0jIFNFTEVDVCAqIEZST00gdDEgT1JERVIgQlkgaWQ7CiAgICAgICAgIDwvaXRlbWl6ZWRs aXN0PgogICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgIGluZGV4OiB0aGlzIG9wdGlvbiBlbmFibGVzIHJlcGxpY2F0aW9u IG9mIEluZGV4IERETCBjb21tYW5kcywKKyAgICAgICAgd2hpY2ggaW5jbHVkZSBDUkVBVEUvQUxU RVIvRFJPUCBJTkRFWC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgogICA8L2l0ZW1p emVkbGlzdD4KIAogICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1vcHRpb24tZXhhbXBsZXMi PgpAQCAtMTU5Myw3ICsxNTk5LDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIgU0VUIChkZGwg PSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAgICA8ZW50cnkg YWxpZ249ImxlZnQiPjxsaXRlcmFsPkFMVEVSIElOREVYPC9saXRlcmFsPjwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9saXRlcmFsPjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5YPC9saXRlcmFsPjwvZW50cnk+ CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgICA8cm93PgpAQCAtMTg3Myw3ICsxODc5LDcgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWIg U0VUIChkZGwgPSAndGFibGUnKTsKICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgogICAgICAg ICA8ZW50cnkgYWxpZ249ImxlZnQiPjxsaXRlcmFsPkNSRUFURSBJTkRFWDwvbGl0ZXJhbD48L2Vu dHJ5PgotICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJh bD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAg PC9yb3c+CiAgICAgICAgPHJvdz4KQEAgLTIxMjgsNyArMjEzNCw3IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIG15cHViIFNFVCAoZGRsID0gJ3RhYmxlJyk7CiAgICAgICAgPC9yb3c+CiAgICAgICAgPHJv dz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIElOREVYPC9saXRl cmFsPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD4tPC9s aXRlcmFsPjwvZW50cnk+CisgICAgICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj48bGl0ZXJhbD5Y PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+PC9lbnRyeT4K ICAgICAgICA8L3Jvdz4KICAgICAgICA8cm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGRsX2RlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMK aW5kZXggOTA5ODIyMGE5Yy4uNTdiZWZjNzg1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGRsX2RlcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfZGVwYXJz ZS5jCkBAIC0xMDE0LDYgKzEwMTQsMjQ0IEBAIG9idGFpbkNvbnN0cmFpbnRzKExpc3QgKmVsZW1l bnRzLCBPaWQgcmVsYXRpb25JZCwgT2lkIGRvbWFpbklkKQogCXJldHVybiBlbGVtZW50czsKIH0K IAorLyoKKyAqIFJldHVybiBhbiBpbmRleCBkZWZpbml0aW9uLCBzcGxpdCBpbnRvIHNldmVyYWwg cGllY2VzLgorICoKKyAqIEEgbGFyZ2UgYW1vdW50IG9mIGNvZGUgaXMgZHVwbGljYXRlZCBmcm9t ICBwZ19nZXRfaW5kZXhkZWZfd29ya2VyLCBidXQKKyAqIGNvbnRyb2wgZmxvdyBpcyBkaWZmZXJl bnQgZW5vdWdoIHRoYXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIGtlZXBpbmcgdGhlbQorICogdG9n ZXRoZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwZ19nZXRfaW5kZXhkZWZfZGV0YWlsZWQoT2lkIGlu ZGV4cmVsaWQsCisJCQkJCQkgY2hhciAqKmluZGV4X2FtLAorCQkJCQkJIGNoYXIgKipkZWZpbml0 aW9uLAorCQkJCQkJIGNoYXIgKipyZWxvcHRpb25zLAorCQkJCQkJIGNoYXIgKip0YWJsZXNwYWNl LAorCQkJCQkJIGNoYXIgKip3aGVyZUNsYXVzZSkKK3sKKwlIZWFwVHVwbGUJaHRfaWR4OworCUhl YXBUdXBsZQlodF9pZHhyZWw7CisJSGVhcFR1cGxlCWh0X2FtOworCUZvcm1fcGdfaW5kZXggaWR4 cmVjOworCUZvcm1fcGdfY2xhc3MgaWR4cmVscmVjOworCUZvcm1fcGdfYW0JYW1yZWM7CisJSW5k ZXhBbVJvdXRpbmUgKmFtcm91dGluZTsKKwlMaXN0CSAgICppbmRleHByczsKKwlMaXN0Q2VsbCAg ICppbmRleHByX2l0ZW07CisJTGlzdAkgICAqY29udGV4dDsKKwlPaWQJCQlpbmRyZWxpZDsKKwlp bnQJCQlrZXlubzsKKwlEYXR1bQkJaW5kY29sbERhdHVtOworCURhdHVtCQlpbmRjbGFzc0RhdHVt OworCURhdHVtCQlpbmRvcHRpb25EYXR1bTsKKwlib29sCQlpc251bGw7CisJb2lkdmVjdG9yICAq aW5kY29sbGF0aW9uOworCW9pZHZlY3RvciAgKmluZGNsYXNzOworCWludDJ2ZWN0b3IgKmluZG9w dGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBkZWZpbml0aW9uQnVmOworCisJKnRhYmxlc3BhY2UgPSBO VUxMOworCSp3aGVyZUNsYXVzZSA9IE5VTEw7CisKKwkvKiBGZXRjaCB0aGUgcGdfaW5kZXggdHVw bGUgYnkgdGhlIE9pZCBvZiB0aGUgaW5kZXggKi8KKwlodF9pZHggPSBTZWFyY2hTeXNDYWNoZTEo SU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleHJlbGlkKSk7CisJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKGh0X2lkeCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBpbmRleCB3aXRoIE9JRCAldSIsIGluZGV4cmVsaWQpOworCWlkeHJlYyA9IChGb3JtX3BnX2lu ZGV4KSBHRVRTVFJVQ1QoaHRfaWR4KTsKKworCWluZHJlbGlkID0gaWR4cmVjLT5pbmRyZWxpZDsK KwlBc3NlcnQoaW5kZXhyZWxpZCA9PSBpZHhyZWMtPmluZGV4cmVsaWQpOworCisJLyogTXVzdCBn ZXQgaW5kY29sbGF0aW9uLCBpbmRjbGFzcywgYW5kIGluZG9wdGlvbiB0aGUgaGFyZCB3YXkgKi8K KwlpbmRjb2xsRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaHRfaWR4LAorCQkJ CQkJCQkgICBBbnVtX3BnX2luZGV4X2luZGNvbGxhdGlvbiwgJmlzbnVsbCk7CisJQXNzZXJ0KCFp c251bGwpOworCWluZGNvbGxhdGlvbiA9IChvaWR2ZWN0b3IgKikgRGF0dW1HZXRQb2ludGVyKGlu ZGNvbGxEYXR1bSk7CisKKwlpbmRjbGFzc0RhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKElOREVYUkVM SUQsIGh0X2lkeCwKKwkJCQkJCQkJCUFudW1fcGdfaW5kZXhfaW5kY2xhc3MsICZpc251bGwpOwor CUFzc2VydCghaXNudWxsKTsKKwlpbmRjbGFzcyA9IChvaWR2ZWN0b3IgKikgRGF0dW1HZXRQb2lu dGVyKGluZGNsYXNzRGF0dW0pOworCisJaW5kb3B0aW9uRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIo SU5ERVhSRUxJRCwgaHRfaWR4LAorCQkJCQkJCQkJIEFudW1fcGdfaW5kZXhfaW5kb3B0aW9uLCAm aXNudWxsKTsKKwlBc3NlcnQoIWlzbnVsbCk7CisJaW5kb3B0aW9uID0gKGludDJ2ZWN0b3IgKikg RGF0dW1HZXRQb2ludGVyKGluZG9wdGlvbkRhdHVtKTsKKworCS8qIEZldGNoIHRoZSBwZ19jbGFz cyB0dXBsZSBvZiB0aGUgaW5kZXggcmVsYXRpb24gKi8KKwlodF9pZHhyZWwgPSBTZWFyY2hTeXND YWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKGluZGV4cmVsaWQpKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoaHRfaWR4cmVsKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhyZWxpZCk7CisJaWR4cmVscmVjID0g KEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChodF9pZHhyZWwpOworCisJLyogRmV0Y2ggdGhlIHBn X2FtIHR1cGxlIG9mIHRoZSBpbmRleCcgYWNjZXNzIG1ldGhvZCAqLworCWh0X2FtID0gU2VhcmNo U3lzQ2FjaGUxKEFNT0lELCBPYmplY3RJZEdldERhdHVtKGlkeHJlbHJlYy0+cmVsYW0pKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoaHRfYW0pKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgYWNjZXNzIG1ldGhvZCB3aXRoIE9JRCAldSIsCisJCQkgaWR4cmVscmVjLT5y ZWxhbSk7CisJYW1yZWMgPSAoRm9ybV9wZ19hbSkgR0VUU1RSVUNUKGh0X2FtKTsKKworCS8qCisJ ICogR2V0IHRoZSBpbmRleCBleHByZXNzaW9ucywgaWYgYW55LiAgKE5PVEU6IHdlIGRvIG5vdCB1 c2UgdGhlIHJlbGNhY2hlCisJICogdmVyc2lvbnMgb2YgdGhlIGV4cHJlc3Npb25zIGFuZCBwcmVk aWNhdGUsIGJlY2F1c2Ugd2Ugd2FudCB0byBkaXNwbGF5CisJICogbm9uLWNvbnN0LWZvbGRlZCBl eHByZXNzaW9ucy4pCisJICovCisJaWYgKCFoZWFwX2F0dGlzbnVsbChodF9pZHgsIEFudW1fcGdf aW5kZXhfaW5kZXhwcnMsIE5VTEwpKQorCXsKKwkJRGF0dW0JCWV4cHJzRGF0dW07CisJCWNoYXIJ ICAgKmV4cHJzU3RyaW5nOworCisJCWV4cHJzRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhS RUxJRCwgaHRfaWR4LAorCQkJCQkJCQkJIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsICZpc251bGwp OworCQlBc3NlcnQoIWlzbnVsbCk7CisJCWV4cHJzU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmlu ZyhleHByc0RhdHVtKTsKKwkJaW5kZXhwcnMgPSAoTGlzdCAqKSBzdHJpbmdUb05vZGUoZXhwcnNT dHJpbmcpOworCQlwZnJlZShleHByc1N0cmluZyk7CisJfQorCWVsc2UKKwkJaW5kZXhwcnMgPSBO SUw7CisKKwlpbmRleHByX2l0ZW0gPSBsaXN0X2hlYWQoaW5kZXhwcnMpOworCisJY29udGV4dCA9 IGRlcGFyc2VfY29udGV4dF9mb3IoZ2V0X3JlbF9uYW1lKGluZHJlbGlkKSwgaW5kcmVsaWQpOwor CisJaW5pdFN0cmluZ0luZm8oJmRlZmluaXRpb25CdWYpOworCisJLyogT3V0cHV0IGluZGV4IEFN ICovCisJKmluZGV4X2FtID0gcHN0cmR1cChxdW90ZV9pZGVudGlmaWVyKE5hbWVTdHIoYW1yZWMt PmFtbmFtZSkpKTsKKworCS8qIEZldGNoIHRoZSBpbmRleCBBTSdzIEFQSSBzdHJ1Y3QgKi8KKwlh bXJvdXRpbmUgPSBHZXRJbmRleEFtUm91dGluZShhbXJlYy0+YW1oYW5kbGVyKTsKKworCS8qCisJ ICogT3V0cHV0IGluZGV4IGRlZmluaXRpb24uICBOb3RlIHRoZSBvdXRlciBwYXJlbnMgbXVzdCBi ZSBzdXBwbGllZCBieQorCSAqIGNhbGxlci4KKwkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZkZWZpbml0aW9uQnVmLCAiKCIpOworCWZvciAoa2V5bm8gPSAwOyBrZXlubyA8IGlkeHJlYy0+ aW5kbmF0dHM7IGtleW5vKyspCisJeworCQlBdHRyTnVtYmVyCWF0dG51bSA9IGlkeHJlYy0+aW5k a2V5LnZhbHVlc1trZXlub107CisJCWludDE2CQlvcHQgPSBpbmRvcHRpb24tPnZhbHVlc1trZXlu b107CisJCU9pZAkJCWtleWNvbHR5cGU7CisJCU9pZAkJCWtleWNvbGNvbGxhdGlvbjsKKworCQkv KiBQcmludCBJTkNMVURFIHRvIGRpdmlkZSBrZXkgYW5kIG5vbi1rZXkgYXR0cnMuICovCisJCWlm IChrZXlubyA9PSBpZHhyZWMtPmluZG5rZXlhdHRzKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZkZWZpbml0aW9uQnVmLCAiKSBJTkNMVURFICgiKTsKKwkJfQorCQllbHNlCisJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0aW9uQnVmLCBrZXlubyA9PSAwID8gIiIgOiAi LCAiKTsKKworCQlpZiAoYXR0bnVtICE9IDApCisJCXsKKwkJCS8qIFNpbXBsZSBpbmRleCBjb2x1 bW4gKi8KKwkJCWNoYXIJICAgKmF0dG5hbWU7CisJCQlpbnQzMgkJa2V5Y29sdHlwbW9kOworCisJ CQlhdHRuYW1lID0gZ2V0X2F0dG5hbWUoaW5kcmVsaWQsIGF0dG51bSwgZmFsc2UpOworCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgcXVvdGVfaWRlbnRpZmllcihhdHRu YW1lKSk7CisJCQlnZXRfYXR0dHlwZXR5cG1vZGNvbGwoaW5kcmVsaWQsIGF0dG51bSwKKwkJCQkJ CQkJICAma2V5Y29sdHlwZSwgJmtleWNvbHR5cG1vZCwKKwkJCQkJCQkJICAma2V5Y29sY29sbGF0 aW9uKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEV4cHJlc3Npb25hbCBpbmRleCAqLworCQkJ Tm9kZQkgICAqaW5kZXhrZXk7CisJCQljaGFyCSAgICpzdHI7CisKKwkJCWlmIChpbmRleHByX2l0 ZW0gPT0gTlVMTCkKKwkJCQllbG9nKEVSUk9SLCAidG9vIGZldyBlbnRyaWVzIGluIGluZGV4cHJz IGxpc3QiKTsKKwkJCWluZGV4a2V5ID0gKE5vZGUgKikgbGZpcnN0KGluZGV4cHJfaXRlbSk7CisJ CQlpbmRleHByX2l0ZW0gPSBsbmV4dChpbmRleHBycywgaW5kZXhwcl9pdGVtKTsKKworCQkJLyog RGVwYXJzZSAqLworCQkJc3RyID0gZGVwYXJzZV9leHByZXNzaW9uKGluZGV4a2V5LCBjb250ZXh0 LCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBOZWVkIHBhcmVucyBpZiBpdCdzIG5vdCBhIGJhcmUg ZnVuY3Rpb24gY2FsbCAqLworCQkJaWYgKGluZGV4a2V5ICYmIElzQShpbmRleGtleSwgRnVuY0V4 cHIpICYmCisJCQkJKChGdW5jRXhwciAqKSBpbmRleGtleSktPmZ1bmNmb3JtYXQgPT0gQ09FUkNF X0VYUExJQ0lUX0NBTEwpCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1 Ziwgc3RyKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZkZWZpbml0aW9uQnVmLCAi KCVzKSIsIHN0cik7CisKKwkJCWtleWNvbHR5cGUgPSBleHByVHlwZShpbmRleGtleSk7CisJCQlr ZXljb2xjb2xsYXRpb24gPSBleHByQ29sbGF0aW9uKGluZGV4a2V5KTsKKwkJfQorCisJCS8qIFBy aW50IGFkZGl0aW9uYWwgZGVjb3JhdGlvbiBmb3IgKHNlbGVjdGVkKSBrZXkgY29sdW1ucywgZXZl biBpZiBkZWZhdWx0ICovCisJCWlmIChrZXlubyA8IGlkeHJlYy0+aW5kbmtleWF0dHMpCisJCXsK KwkJCU9pZCBpbmRjb2xsID0gaW5kY29sbGF0aW9uLT52YWx1ZXNba2V5bm9dOworCQkJaWYgKE9p ZElzVmFsaWQoaW5kY29sbCkpCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmZGVmaW5pdGlvbkJ1Ziwg IiBDT0xMQVRFICVzIiwKKwkJCQkJCQkJZ2VuZXJhdGVfY29sbGF0aW9uX25hbWUoKGluZGNvbGwp KSk7CisKKwkJCS8qIEFkZCB0aGUgb3BlcmF0b3IgY2xhc3MgbmFtZSwgZXZlbiBpZiBkZWZhdWx0 ICovCisJCQlnZXRfb3BjbGFzc19uYW1lKGluZGNsYXNzLT52YWx1ZXNba2V5bm9dLCBJbnZhbGlk T2lkLCAmZGVmaW5pdGlvbkJ1Zik7CisKKwkJCS8qIEFkZCBvcHRpb25zIGlmIHJlbGV2YW50ICov CisJCQlpZiAoYW1yb3V0aW5lLT5hbWNhbm9yZGVyKQorCQkJeworCQkJCS8qIElmIGl0IHN1cHBv cnRzIHNvcnQgb3JkZXJpbmcsIHJlcG9ydCBERVNDIGFuZCBOVUxMUyBvcHRzICovCisJCQkJaWYg KG9wdCAmIElORE9QVElPTl9ERVNDKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmZGVmaW5pdGlvbkJ1ZiwgIiBERVNDIik7CisJCQkJCS8qIE5VTExTIEZJUlNUIGlzIHRoZSBk ZWZhdWx0IGluIHRoaXMgY2FzZSAqLworCQkJCQlpZiAoIShvcHQgJiBJTkRPUFRJT05fTlVMTFNf RklSU1QpKQorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgIiBO VUxMUyBMQVNUIik7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWlmIChvcHQgJiBJTkRP UFRJT05fTlVMTFNfRklSU1QpCisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZkZWZpbml0 aW9uQnVmLCAiIE5VTExTIEZJUlNUIik7CisJCQkJfQorCQkJfQorCisJCQkvKiBYWFggZXhjbHVk ZU9wcyB0aGluZ3kgd2FzIGhlcmU7IGRvIHdlIG5lZWQgYW55dGhpbmc/ICovCisJCX0KKwl9CisJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZGVmaW5pdGlvbkJ1ZiwgIikiKTsKKwkqZGVmaW5pdGlv biA9IGRlZmluaXRpb25CdWYuZGF0YTsKKworCS8qIE91dHB1dCByZWxvcHRpb25zICovCisJKnJl bG9wdGlvbnMgPSBmbGF0dGVuX3JlbG9wdGlvbnMoaW5kZXhyZWxpZCk7CisKKwkvKiBPdXRwdXQg dGFibGVzcGFjZSAqLworCXsKKwkJT2lkCQkJdGJsc3BjOworCisJCXRibHNwYyA9IGdldF9yZWxf dGFibGVzcGFjZShpbmRleHJlbGlkKTsKKwkJaWYgKE9pZElzVmFsaWQodGJsc3BjKSkKKwkJCSp0 YWJsZXNwYWNlID0gcHN0cmR1cChxdW90ZV9pZGVudGlmaWVyKGdldF90YWJsZXNwYWNlX25hbWUo dGJsc3BjKSkpOworCX0KKworCS8qIFJlcG9ydCBpbmRleCBwcmVkaWNhdGUsIGlmIGFueSAqLwor CWlmICghaGVhcF9hdHRpc251bGwoaHRfaWR4LCBBbnVtX3BnX2luZGV4X2luZHByZWQsIE5VTEwp KQorCXsKKwkJTm9kZQkgICAqbm9kZTsKKwkJRGF0dW0JCXByZWREYXR1bTsKKwkJY2hhcgkgICAq cHJlZFN0cmluZzsKKworCQkvKiBDb252ZXJ0IHRleHQgc3RyaW5nIHRvIG5vZGUgdHJlZSAqLwor CQlwcmVkRGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoSU5ERVhSRUxJRCwgaHRfaWR4LAorCQkJCQkJ CQkJQW51bV9wZ19pbmRleF9pbmRwcmVkLCAmaXNudWxsKTsKKwkJQXNzZXJ0KCFpc251bGwpOwor CQlwcmVkU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhwcmVkRGF0dW0pOworCQlub2RlID0g KE5vZGUgKikgc3RyaW5nVG9Ob2RlKHByZWRTdHJpbmcpOworCQlwZnJlZShwcmVkU3RyaW5nKTsK KworCQkvKiBEZXBhcnNlICovCisJCSp3aGVyZUNsYXVzZSA9IGRlcGFyc2VfZXhwcmVzc2lvbihu b2RlLCBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOworCX0KKworCS8qIENsZWFuIHVwICovCisJUmVs ZWFzZVN5c0NhY2hlKGh0X2lkeCk7CisJUmVsZWFzZVN5c0NhY2hlKGh0X2lkeHJlbCk7CisJUmVs ZWFzZVN5c0NhY2hlKGh0X2FtKTsKK30KKwogLyoKICAqIE9idGFpbiB0aGUgZGVwYXJzZWQgZGVm YXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuIGNvbHVtbiBvZiB0aGUgZ2l2ZW4gdGFibGUuCiAgKgpA QCAtMTkyNyw2ICsyMTY1LDEwMiBAQCBkZXBhcnNlX1RhYmxlRWxlbWVudHMoUmVsYXRpb24gcmVs YXRpb24sIExpc3QgKnRhYmxlRWxlbWVudHMsIExpc3QgKmRwY29udGV4dCwKIAlyZXR1cm4gZWxl bWVudHM7CiB9CiAKKy8qCisgKiBEZXBhcnNlIGFuIEluZGV4U3RtdC4KKyAqCisgKiBHaXZlbiBh biBpbmRleCBPSUQgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuIGFu IE9ialRyZWUKKyAqIHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBJ ZiB0aGUgaW5kZXggY29ycmVzcG9uZHMgdG8gYSBjb25zdHJhaW50LCBOVUxMIGlzIHJldHVybmVk LgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBDUkVBVEUgJXt1bmlxdWV9cyBJTkRFWCAle2Nv bmN1cnJlbnRseX1zICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JIE9OCisgKiAle29ubHl9cyAl e3RhYmxlfUQgVVNJTkcgJXtpbmRleF9hbX1zICV7ZGVmaW5pdGlvbn1zICV7bnVsbHNfbm90X2Rp c3RpbmN0fXMKKyAqICV7d2l0aH1zICV7dGFibGVzcGFjZX1zICV7d2hlcmVfY2xhdXNlfXMKKyAq Lworc3RhdGljIE9ialRyZWUgKgorZGVwYXJzZV9JbmRleFN0bXQoT2lkIG9iamVjdElkLCBOb2Rl ICpwYXJzZXRyZWUpCit7CisJSW5kZXhTdG10ICAqbm9kZSA9IChJbmRleFN0bXQgKikgcGFyc2V0 cmVlOworCU9ialRyZWUgICAgKnJldDsKKwlPYmpUcmVlICAgICp0bXBfb2JqOworCVJlbGF0aW9u CWlkeHJlbDsKKwlSZWxhdGlvbgloZWFwcmVsOworCWNoYXIJICAgKmluZGV4X2FtOworCWNoYXIJ ICAgKmRlZmluaXRpb247CisJY2hhcgkgICAqcmVsb3B0aW9uczsKKwljaGFyCSAgICp0YWJsZXNw YWNlOworCWNoYXIJICAgKndoZXJlQ2xhdXNlOworCisJaWYgKG5vZGUtPnByaW1hcnkgfHwgbm9k ZS0+aXNjb25zdHJhaW50KQorCXsKKwkJLyoKKwkJICogSW5kZXhlcyBmb3IgUFJJTUFSWSBLRVkg YW5kIG90aGVyIGNvbnN0cmFpbnRzIGFyZSBvdXRwdXQKKwkJICogc2VwYXJhdGVseTsgcmV0dXJu IGVtcHR5IGhlcmUuCisJCSAqLworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZHhyZWwgPSByZWxh dGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCWhlYXByZWwgPSByZWxhdGlv bl9vcGVuKGlkeHJlbC0+cmRfaW5kZXgtPmluZHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ cGdfZ2V0X2luZGV4ZGVmX2RldGFpbGVkKG9iamVjdElkLAorCQkJCQkJCSAmaW5kZXhfYW0sICZk ZWZpbml0aW9uLCAmcmVsb3B0aW9ucywKKwkJCQkJCQkgJnRhYmxlc3BhY2UsICZ3aGVyZUNsYXVz ZSk7CisKKwlyZXQgPSBuZXdfb2JqdHJlZV9WQSgiQ1JFQVRFICV7dW5pcXVlfXMgSU5ERVggJXtj b25jdXJyZW50bHl9cyAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSBPTiAle29ubHl9cyAle3Rh YmxlfUQgVVNJTkcgJXtpbmRleF9hbX1zICV7ZGVmaW5pdGlvbn1zIiwgOCwKKwkJCQkJCSAidW5p cXVlIiwgT2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT51bmlxdWUgPyAiVU5JUVVFIiA6ICIi LAorCQkJCQkJICJjb25jdXJyZW50bHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPmNv bmN1cnJlbnQgPyAiQ09OQ1VSUkVOVExZIiA6ICIiLAorCQkJCQkJICJpZl9ub3RfZXhpc3RzIiwg T2JqVHlwZVN0cmluZywKKwkJCQkJCSBub2RlLT5pZl9ub3RfZXhpc3RzID8gIklGIE5PVCBFWElT VFMiIDogIiIsCisJCQkJCQkgIm9ubHkiLCBPYmpUeXBlU3RyaW5nLAorCQkJCQkJIG5vZGUtPnJl bGF0aW9uLT5pbmggPyAiIiA6ICJPTkxZIiwKKwkJCQkJCSAibmFtZSIsIE9ialR5cGVTdHJpbmcs CisJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaWR4cmVsKSwKKwkJCQkJCSAidGFibGUi LCBPYmpUeXBlT2JqZWN0LAorCQkJCQkJIG5ld19vYmp0cmVlX2Zvcl9xdWFsbmFtZShoZWFwcmVs LT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoaGVhcHJlbCkpLAorCQkJCQkJICJpbmRleF9hbSIsIE9ialR5cGVTdHJpbmcsIGluZGV4 X2FtLAorCQkJCQkJICJkZWZpbml0aW9uIiwgT2JqVHlwZVN0cmluZywgZGVmaW5pdGlvbik7CisK KwkvKiBudWxsc19ub3RfZGlzdGluY3QgKi8KKwlpZiAobm9kZS0+bnVsbHNfbm90X2Rpc3RpbmN0 KQorCQlhcHBlbmRfZm9ybWF0X3N0cmluZyhyZXQsICJOVUxMUyBOT1QgRElTVElOQ1QiKTsKKwll bHNlCisJCWFwcGVuZF9mb3JtYXRfc3RyaW5nKHJldCwgIk5VTExTIERJU1RJTkNUIik7CisKKwkv KiByZWxvcHRpb25zICovCisJdG1wX29iaiA9IG5ld19vYmp0cmVlKCJXSVRIIik7CisJaWYgKHJl bG9wdGlvbnMpCisJCWFwcGVuZF9zdHJpbmdfb2JqZWN0KHRtcF9vYmosICIoJXtvcHRzfXMpIiwg Im9wdHMiLCByZWxvcHRpb25zKTsKKwllbHNlCisJCWFwcGVuZF9ub3RfcHJlc2VudCh0bXBfb2Jq KTsKKwlhcHBlbmRfb2JqZWN0X29iamVjdChyZXQsICIle3dpdGh9cyIsIHRtcF9vYmopOworCisJ LyogdGFibGVzcGFjZSAqLworCXRtcF9vYmogPSBuZXdfb2JqdHJlZSgiVEFCTEVTUEFDRSIpOwor CWlmICh0YWJsZXNwYWNlKQorCQlhcHBlbmRfc3RyaW5nX29iamVjdCh0bXBfb2JqLCAiJXt0YWJs ZXNwYWNlfXMiLCAidGFibGVzcGFjZSIsIHRhYmxlc3BhY2UpOworCWVsc2UKKwkJYXBwZW5kX25v dF9wcmVzZW50KHRtcF9vYmopOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJldCwgIiV7dGFibGVz cGFjZX1zIiwgdG1wX29iaik7CisKKwkvKiBXSEVSRSBjbGF1c2UgKi8KKwl0bXBfb2JqID0gbmV3 X29ianRyZWUoIldIRVJFIik7CisJaWYgKHdoZXJlQ2xhdXNlKQorCQlhcHBlbmRfc3RyaW5nX29i amVjdCh0bXBfb2JqLCAiJXt3aGVyZX1zIiwgIndoZXJlIiwgd2hlcmVDbGF1c2UpOworCWVsc2UK KwkJYXBwZW5kX25vdF9wcmVzZW50KHRtcF9vYmopOworCWFwcGVuZF9vYmplY3Rfb2JqZWN0KHJl dCwgIiV7d2hlcmVfY2xhdXNlfXMiLCB0bXBfb2JqKTsKKworCXRhYmxlX2Nsb3NlKGlkeHJlbCwg QWNjZXNzU2hhcmVMb2NrKTsKKwl0YWJsZV9jbG9zZShoZWFwcmVsLCBBY2Nlc3NTaGFyZUxvY2sp OworCisJcmV0dXJuIHJldDsKK30KKwogLyoKICAqIERlcGFyc2UgYSBDcmVhdGVTdG10IChDUkVB VEUgVEFCTEUpLgogICoKQEAgLTMxNDIsNiArMzQ3Niw3IEBAIGRlcGFyc2VfUmVuYW1lU3RtdChP YmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKIAkgKi8KIAlzd2l0Y2ggKG5v ZGUtPnJlbmFtZVR5cGUpCiAJeworCQljYXNlIE9CSkVDVF9JTkRFWDoKIAkJY2FzZSBPQkpFQ1Rf VEFCTEU6CiAJCQlyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNj ZXNzU2hhcmVMb2NrKTsKIAkJCXNjaGVtYUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsYXRp b24pOwpAQCAtMzIyNCw2ICszNTU5LDQwIEBAIGRlcGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRy ZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkKIAlyZXR1cm4gcmV0OwogfQogCisvKgorICog RGVwYXJzZSBhIEFsdGVyT2JqZWN0RGVwZW5kc1N0bXQgKEFMVEVSIC4uLiBERVBFTkRTIE9OIC4u LikuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIElOREVYICV7aWRlbnRpdHl9RCAl e25vfXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkKKyAqLworc3RhdGljIE9ialRy ZWUgKgorZGVwYXJzZV9BbHRlckRlcGVuZFN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRy ZWUpCit7CisJQWx0ZXJPYmplY3REZXBlbmRzU3RtdCAqbm9kZSA9IChBbHRlck9iamVjdERlcGVu ZHNTdG10ICopIHBhcnNldHJlZTsKKwlPYmpUcmVlICAgICpyZXQgPSBOVUxMOworCisJaWYgKG5v ZGUtPm9iamVjdFR5cGUgPT0gT0JKRUNUX0lOREVYKQorCXsKKwkJT2JqVHJlZSAgICAqcXVhbGlm aWVkOworCQlSZWxhdGlvbglyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2JqZWN0SWQsIEFjY2Vz c1NoYXJlTG9jayk7CisKKwkJcXVhbGlmaWVkID0gbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lKHJl bGF0aW9uLT5yZF9yZWwtPnJlbG5hbWVzcGFjZSwKKwkJCQkJCQkJCQkJIG5vZGUtPnJlbGF0aW9u LT5yZWxuYW1lKTsKKwkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwkJcmV0ID0gbmV3X29ianRyZWVfVkEoIkFMVEVSIElOREVYICV7aWRlbnRpdHl9RCAle25v fXMgREVQRU5EUyBPTiBFWFRFTlNJT04gJXtuZXduYW1lfUkiLCAzLAorCQkJCQkJCSAiaWRlbnRp dHkiLCBPYmpUeXBlT2JqZWN0LCBxdWFsaWZpZWQsCisJCQkJCQkJICJubyIsIE9ialR5cGVTdHJp bmcsCisJCQkJCQkJIG5vZGUtPnJlbW92ZSA/ICJOTyIgOiAiIiwKKwkJCQkJCQkgIm5ld25hbWUi LCBPYmpUeXBlU3RyaW5nLCBzdHJWYWwobm9kZS0+ZXh0bmFtZSkpOworCX0KKwllbHNlCisJCWVs b2coTE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVkIiwK KwkJCSAoaW50KSBub2RlVGFnKHBhcnNldHJlZSkpOworCisJcmV0dXJuIHJldDsKK30KKwogLyoK ICAqIEhhbmRsZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgogICoKQEAgLTMyNDYsNiAr MzYxNSw5IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQog CS8qIFRoaXMgc3dpdGNoIG5lZWRzIHRvIGhhbmRsZSBldmVyeXRoaW5nIHRoYXQgUHJvY2Vzc1V0 aWxpdHlTbG93IGRvZXMgKi8KIAlzd2l0Y2ggKG5vZGVUYWcocGFyc2V0cmVlKSkKIAl7CisJCWNh c2UgVF9BbHRlck9iamVjdERlcGVuZHNTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJEZXBl bmRTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCiAJCWNhc2UgVF9BbHRlck9iamVjdFNjaGVt YVN0bXQ6CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQoY21kLT5kLnNp bXBsZS5hZGRyZXNzLAogCQkJCQkJCQkJCQkJIHBhcnNldHJlZSwKQEAgLTMyNTcsNiArMzYyOSw5 IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQljYXNl IFRfQ3JlYXRlU3RtdDoKIAkJCXJldHVybiBkZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBh cnNldHJlZSk7CiAKKwkJY2FzZSBUX0luZGV4U3RtdDoKKwkJCXJldHVybiBkZXBhcnNlX0luZGV4 U3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwogCQljYXNlIFRfUmVuYW1lU3RtdDoKIAkJCXJl dHVybiBkZXBhcnNlX1JlbmFtZVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUp OwogCi0tIAoyLjMwLjAud2luZG93cy4yCgo= --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="0004-Apply-the-DDL-change-as-that-same-user-th-2023_03_30.patch" Content-Description: 0004-Apply-the-DDL-change-as-that-same-user-th-2023_03_30.patch Content-Disposition: attachment; filename="0004-Apply-the-DDL-change-as-that-same-user-th-2023_03_30.patch"; size=55389; creation-date="Thu, 30 Mar 2023 06:36:10 GMT"; modification-date="Thu, 30 Mar 2023 06:37:09 GMT" Content-Transfer-Encoding: base64 RnJvbSA2MmM2OGY0YWFjYTQyZWE4ZWM4M2NmMDg5NWM1MzY5OWJmMDcxNTU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDI5IE1hciAyMDIzIDIxOjIwOjAwICswODAwClN1YmplY3Q6IFtQQVRDSCA0 LzVdIEFwcGx5IHRoZSBEREwgY2hhbmdlIGFzIHRoYXQgc2FtZSB1c2VyIHRoYXQgZXhlY3V0ZWQg dGhlCiBEREwgb24gcHVibGlzaGVyLgoKMS4gQ2hhbmdlIGV2ZW50IHRyaWdnZXIgZnVuY3Rpb25z IHRvIGNvbGxlY3QgdGhlIGN1cnJlbnQgcm9sZSBpbgpDb2xsZWN0ZWRDb21tYW5kLgoKMi4gQ2hh bmdlIERlcGFyc2VyIGZ1bmN0aW9uIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kIHRvIGVuY29kZSBv d25lciByb2xlIGluIHRoZQp0b3AtbGV2ZWwgZWxlbWVudCBzdWNoIGFzIHtteW93bmVyOnJvbGVf bmFtZSwgZm10Oi4uLiwgaWRlbnRpdHk6Li4ufSBvZiB0aGUKZGVwYXJzZWQganNvbmIgb3V0cHV0 IGZvciBjb21tYW5kcyB0aGF0IGNyZWF0ZSBkYXRhYmFzZSBvYmplY3RzLiBBbHNvIGNoYW5nZQpm dW5jdGlvbiBkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyB0byByZXRyaWV2ZSB0aGUgbXlvd25l ciBlbGVtZW50IGZyb20gYQpqc29uYiBzdHJpbmcuCgozLiBJbnRyb2R1Y2UgYSBuZXcgc3Vic2Ny aXB0aW9uIG9wdGlvbiBtYXRjaF9kZGxfb3duZXI6IHdoZW4gdHVybmVkIG9uLCB0aGUKYXBwbHkg d29ya2VyIHdpbGwgYXBwbHkgRERMIG1lc3NhZ2VzIGluIHRoZSByb2xlIHJldHJpZXZlZCBmcm9t IHRoZSAibXlvd25lciIKZmllbGQgb2YgdGhlIGRlcGFyc2VkIGpzb25iIHN0cmluZy4gVGhlIGRl ZmF1bHQgdmFsdWUgb2YgbWF0Y2hfZGRsX293bmVyIGlzIG9uLgotLS0KIHNyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbF9kZXBhcnNlLmMgICAgICAgICAgIHwgIDYyICsrKysrKy0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9kZGxfanNvbi5jICAgICAgICAgICAgICB8ICAyNSArKystCiBzcmMvYmFja2VuZC9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmMgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICB8ICAyNyArKystCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYyB8ICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgfCAgMjIgKystCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAxNiArKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNl LmggICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxp dHkuaCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0ICAgfCAxNDQgKysrKysrKysrLS0tLS0tLS0tLQogMTQgZmlsZXMgY2hhbmdlZCwg MjI4IGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5jCmluZGV4IGQzMjJiOTQ4MmMuLmQ0ZjQ4MmFiM2IgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24o T2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJz dHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsK IAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPm1h dGNoZGRsb3duZXIgPSBzdWJmb3JtLT5zdWJtYXRjaGRkbG93bmVyOwogCiAJLyogR2V0IGNvbm5p bmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElPTk9JRCwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxfZGVwYXJzZS5jCmluZGV4IDU3YmVmYzc4NTUuLjdjNDE5OGJmNDYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9kZXBhcnNlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvZGRsX2RlcGFyc2UuYwpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRp YyBPYmpFbGVtICpuZXdfb2JqZWN0KE9ialR5cGUgdHlwZSwgY2hhciAqbmFtZSk7CiBzdGF0aWMg T2JqVHJlZSAqbmV3X29ianRyZWVfZm9yX3F1YWxuYW1lX2lkKE9pZCBjbGFzc0lkLCBPaWQgb2Jq ZWN0SWQpOwogc3RhdGljIE9iakVsZW0gKm5ld19vYmplY3Rfb2JqZWN0KE9ialRyZWUgKnZhbHVl KTsKIHN0YXRpYyBPYmpUcmVlICpuZXdfb2JqdHJlZV9WQShjaGFyICpmbXQsIGludCBudW1vYmpz LC4uLik7Ci1zdGF0aWMgSnNvbmJWYWx1ZSAqb2JqdHJlZV90b19qc29uYl9yZWMoT2JqVHJlZSAq dHJlZSwgSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSk7CitzdGF0aWMgSnNvbmJWYWx1ZSAqb2JqdHJl ZV90b19qc29uYl9yZWMoT2JqVHJlZSAqdHJlZSwgSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hh ciAqb3duZXIpOwogc3RhdGljIGNoYXIgKlJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxhdGlv biByZWwsIEF0dHJOdW1iZXIgYXR0bm8sCiAJCQkJCQkJCQkgIExpc3QgKmRwY29udGV4dCwgTGlz dCAqKmV4cHJzKTsKIApAQCAtODA4LDE0ICs4MDgsMzkgQEAgb2JqdHJlZV9mbXRfdG9fanNvbmJf ZWxlbWVudChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBPYmpUcmVlICp0cmVlKQogfQogCiAvKgot ICogQ3JlYXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlLgorICogUHJv Y2VzcyB0aGUgcm9sZSBzdHJpbmcgaW50byB0aGUgb3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitz dGF0aWMgdm9pZAorcm9sZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUs IGNoYXIgKm93bmVyKQoreworCUpzb25iVmFsdWUJa2V5OworCUpzb25iVmFsdWUJdmFsOworCisJ aWYgKG93bmVyID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggdGhlIGtleSBmaXJzdCAq LworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZhbCA9ICJteW93bmVy IjsKKwlrZXkudmFsLnN0cmluZy5sZW4gPSBzdHJsZW4oa2V5LnZhbC5zdHJpbmcudmFsKTsKKwlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkpOworCisJLyogVGhlbiBwcm9jZXNz IHRoZSByb2xlIHN0cmluZyAqLworCXZhbC50eXBlID0gamJ2U3RyaW5nOworCXZhbC52YWwuc3Ry aW5nLmxlbiA9IHN0cmxlbihvd25lcik7CisJdmFsLnZhbC5zdHJpbmcudmFsID0gb3duZXI7CisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworfQorCisvKgorICogQ3Jl YXRlIGEgSlNPTkIgcmVwcmVzZW50YXRpb24gZnJvbSBhbiBPYmpUcmVlIGFuZCBpdHMgb3duZXIg KGlmIGdpdmVuKS4KICAqLwogc3RhdGljIEpzb25iICoKLW9ianRyZWVfdG9fanNvbmIoT2JqVHJl ZSAqdHJlZSkKK29ianRyZWVfdG9fanNvbmIoT2JqVHJlZSAqdHJlZSwgY2hhciAqb3duZXIpCiB7 CiAJSnNvbmJWYWx1ZSAqdmFsdWU7CiAKLQl2YWx1ZSA9IG9ianRyZWVfdG9fanNvbmJfcmVjKHRy ZWUsIE5VTEwpOworCXZhbHVlID0gb2JqdHJlZV90b19qc29uYl9yZWModHJlZSwgTlVMTCwgb3du ZXIpOwogCXJldHVybiBKc29uYlZhbHVlVG9Kc29uYih2YWx1ZSk7CiB9CiAKQEAgLTg2Nyw3ICs4 OTIsNyBAQCBvYmp0cmVlX3RvX2pzb25iX2VsZW1lbnQoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwg T2JqRWxlbSAqb2JqZWN0LAogCiAJCWNhc2UgT2JqVHlwZU9iamVjdDoKIAkJCS8qIFJlY3Vyc2l2 ZWx5IGFkZCB0aGUgb2JqZWN0IGludG8gdGhlIGV4aXN0aW5nIHBhcnNlIHN0YXRlICovCi0JCQlv Ymp0cmVlX3RvX2pzb25iX3JlYyhvYmplY3QtPnZhbHVlLm9iamVjdCwgc3RhdGUpOworCQkJb2Jq dHJlZV90b19qc29uYl9yZWMob2JqZWN0LT52YWx1ZS5vYmplY3QsIHN0YXRlLCBOVUxMKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgT2JqVHlwZUFycmF5OgpAQCAtODk1LDEyICs5MjAsMTMgQEAgb2Jq dHJlZV90b19qc29uYl9lbGVtZW50KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9iakVsZW0gKm9i amVjdCwKICAqIFJlY3Vyc2l2ZSBoZWxwZXIgZm9yIG9ianRyZWVfdG9fanNvbmIuCiAgKi8KIHN0 YXRpYyBKc29uYlZhbHVlICoKLW9ianRyZWVfdG9fanNvbmJfcmVjKE9ialRyZWUgKnRyZWUsIEpz b25iUGFyc2VTdGF0ZSAqc3RhdGUpCitvYmp0cmVlX3RvX2pzb25iX3JlYyhPYmpUcmVlICp0cmVl LCBKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpvd25lcikKIHsKIAlzbGlzdF9pdGVyCWl0 ZXI7CiAKIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwog CisJcm9sZV90b19qc29uYl9lbGVtZW50KHN0YXRlLCBvd25lcik7CiAJb2JqdHJlZV9mbXRfdG9f anNvbmJfZWxlbWVudChzdGF0ZSwgdHJlZSk7CiAKIAlzbGlzdF9mb3JlYWNoKGl0ZXIsICZ0cmVl LT5wYXJhbXMpCkBAIC0zMzc1LDcgKzM0MDEsNyBAQCBkZXBhcnNlX2Ryb3BfY29tbWFuZChjb25z dCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0dHlwZSwKIAkJCQkJCQkicHJl c2VudCIsIE9ialR5cGVCb29sLCBiZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpOwogCWFwcGVuZF9v YmplY3Rfb2JqZWN0KHN0bXQsICIle2Nhc2NhZGV9cyIsIHRtcF9vYmopOwogCi0JanNvbmIgPSBv Ymp0cmVlX3RvX2pzb25iKHN0bXQpOworCWpzb25iID0gb2JqdHJlZV90b19qc29uYihzdG10LCBO VUxMIC8qIE93bmVyL3JvbGUgY2FuIGJlIHNraXBwZWQgZm9yIGRyb3AgY29tbWFuZCAqLyk7CiAJ Y29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNPTkJfRVNUSU1B VEVEX0xFTik7CiAKIAlyZXR1cm4gY29tbWFuZDsKQEAgLTM1OTksNyArMzYyNSw3IEBAIGRlcGFy c2VfQWx0ZXJEZXBlbmRTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogICogVGhp cyBmdW5jdGlvbiBzaG91bGQgY292ZXIgYWxsIGNhc2VzIGhhbmRsZWQgaW4gUHJvY2Vzc1V0aWxp dHlTbG93LgogICovCiBzdGF0aWMgT2JqVHJlZSAqCi1kZXBhcnNlX3NpbXBsZV9jb21tYW5kKENv bGxlY3RlZENvbW1hbmQgKmNtZCkKK2RlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29t bWFuZCAqY21kLCBib29sICppbmNsdWRlX293bmVyKQogewogCU9pZAkJCW9iamVjdElkOwogCU5v ZGUJICAgKnBhcnNldHJlZTsKQEAgLTM2MTYsMTQgKzM2NDIsMTcgQEAgZGVwYXJzZV9zaW1wbGVf Y29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJc3dpdGNoIChub2RlVGFnKHBhcnNldHJl ZSkpCiAJewogCQljYXNlIFRfQWx0ZXJPYmplY3REZXBlbmRzU3RtdDoKKwkJCSppbmNsdWRlX293 bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRlckRlcGVuZFN0bXQob2JqZWN0SWQs IHBhcnNldHJlZSk7CiAKIAkJY2FzZSBUX0FsdGVyT2JqZWN0U2NoZW1hU3RtdDoKKwkJCSppbmNs dWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0 bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLAogCQkJCQkJCQkJCQkJIHBhcnNldHJlZSwKIAkJCQkJ CQkJCQkJCSBjbWQtPmQuc2ltcGxlLnNlY29uZGFyeU9iamVjdCk7CiAKIAkJY2FzZSBUX0FsdGVy T3duZXJTdG10OgorCQkJKmluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNl X0FsdGVyT3duZXJTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywgcGFyc2V0cmVlKTsKIAogCQlj YXNlIFRfQ3JlYXRlU3RtdDoKQEAgLTM2MzMsNiArMzY2Miw3IEBAIGRlcGFyc2Vfc2ltcGxlX2Nv bW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJcmV0dXJuIGRlcGFyc2VfSW5kZXhTdG10 KG9iamVjdElkLCBwYXJzZXRyZWUpOwogCiAJCWNhc2UgVF9SZW5hbWVTdG10OgorCQkJKmluY2x1 ZGVfb3duZXIgPSBmYWxzZTsKIAkJCXJldHVybiBkZXBhcnNlX1JlbmFtZVN0bXQoY21kLT5kLnNp bXBsZS5hZGRyZXNzLCBwYXJzZXRyZWUpOwogCiAJCWRlZmF1bHQ6CkBAIC0zNjQ1LDkgKzM2NzUs MTUgQEAgZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAKIC8q CiAgKiBXb3JraG9yc2UgdG8gZGVwYXJzZSBhIENvbGxlY3RlZENvbW1hbmQuCisgKgorICogaW5j bHVkZV9vd25lciBpbmRpY2F0ZXMgaWYgdGhlIG93bmVyL3JvbGUgb2YgdGhlIGNvbW1hbmQgc2hv dWxkIGJlCisgKiBpbmNsdWRlZCBpbiB0aGUgZGVwYXJzZWQgSnNvbiBvdXRwdXQuIEl0IGlzIHNl dCB0byBmYWxzZSBmb3IgYW55IGNvbW1hbmRzCisgKiB0aGF0IGRvbid0IENSRUFURSBkYXRhYmFz ZSBvYmplY3RzIChBTFRFUiBjb21tYW5kcyBmb3IgZXhhbXBsZSksIHRoaXMgaXMKKyAqIHRvIGF2 b2lkIGVuY29kaW5nIGFuZCBzZW5kaW5nIHRoZSBvd25lciB0byBkb3duc3RyZWFtIGZvciByZXBs YXkgYXMgaXQgaXMKKyAqIHVubmVjZXNzYXJ5IGZvciBzdWNoIGNvbW1hbmRzLgogICovCiBjaGFy ICoKLWRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2 ZXJib3NlX21vZGUpCitkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpj bWQsIGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJib3NlX21vZGUpCiB7CiAJT3ZlcnJpZGVT ZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CkBAIC0zNjg4 LDEwICszNzI0LDExIEBAIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQg KmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpCiAJc3dpdGNoIChjbWQtPnR5cGUpCiAJewogCQljYXNl IFNDVF9TaW1wbGU6Ci0JCQl0cmVlID0gZGVwYXJzZV9zaW1wbGVfY29tbWFuZChjbWQpOworCQkJ dHJlZSA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kLCAmaW5jbHVkZV9vd25lcik7CiAJCQli cmVhazsKIAkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKIAkJCXRyZWUgPSBkZXBhcnNlX0FsdGVyUmVs YXRpb24oY21kKTsKKwkJCWluY2x1ZGVfb3duZXIgPSBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNl IFNDVF9DcmVhdGVUYWJsZUFzOgogCQkJdHJlZSA9IGRlcGFyc2VfQ3JlYXRlVGFibGVBc1N0bXQo Y21kKTsKQEAgLTM3MDYsNyArMzc0Myw4IEBAIGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxl Y3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21vZGUpCiAJewogCQlKc29uYgkgICAqanNv bmI7CiAKLQkJanNvbmIgPSBvYmp0cmVlX3RvX2pzb25iKHRyZWUpOworCQlqc29uYiA9IGluY2x1 ZGVfb3duZXIgPyBvYmp0cmVlX3RvX2pzb25iKHRyZWUsIGNtZC0+cm9sZSkgOgorCQkJCQkJCQlv Ymp0cmVlX3RvX2pzb25iKHRyZWUsIE5VTEwpOwogCQljb21tYW5kID0gSnNvbmJUb0NTdHJpbmco JnN0ciwgJmpzb25iLT5yb290LCBKU09OQl9FU1RJTUFURURfTEVOKTsKIAl9CiAKQEAgLTM3MzIs NyArMzc3MCw3IEBAIGRkbF9kZXBhcnNlX3RvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKIAlDb2xs ZWN0ZWRDb21tYW5kICpjbWQgPSAoQ29sbGVjdGVkQ29tbWFuZCAqKSBQR19HRVRBUkdfUE9JTlRF UigwKTsKIAljaGFyCSAgICpjb21tYW5kOwogCi0JY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9j b21tYW5kKGNtZCwgdHJ1ZSk7CisJY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNt ZCwgZmFsc2UsIHRydWUpOwogCiAJaWYgKGNvbW1hbmQpCiAJCVBHX1JFVFVSTl9URVhUX1AoY3N0 cmluZ190b190ZXh0KGNvbW1hbmQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2RkbF9qc29uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxfanNvbi5jCmluZGV4IDNhNTdk MjY5N2MuLjc2Y2VmYjk0ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbF9q c29uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsX2pzb24uYwpAQCAtNzE4LDcgKzcx OCw3IEBAIGV4cGFuZF9qc29uYl9hcnJheShTdHJpbmdJbmZvIGJ1ZiwgY2hhciAqcGFyYW0sCiAg KiBXb3JraG9yc2UgZm9yIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLgogICovCiBjaGFyICoK LWRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25fc3RyKQorZGVwYXJzZV9kZGxf anNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIsIGNoYXIqKiBvd25lcikKIHsKIAlEYXR1bQkJ ZDsKIAlKc29uYgkgICAqanNvbmI7CkBAIC03MjksNiArNzI5LDI3IEBAIGRlcGFyc2VfZGRsX2pz b25fdG9fc3RyaW5nKGNoYXIgKmpzb25fc3RyKQogCWQgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpz b25iX2luLCBQb2ludGVyR2V0RGF0dW0oanNvbl9zdHIpKTsKIAlqc29uYiA9IChKc29uYiAqKSBE YXR1bUdldFBvaW50ZXIoZCk7CiAKKwlpZiAob3duZXIgIT0gTlVMTCkKKwl7CisJCWNvbnN0IGNo YXIgKmtleSA9ICJteW93bmVyIjsKKwkJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwkJdmFsdWUgPSBn ZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKCZqc29uYi0+cm9vdCwga2V5LCBzdHJsZW4oa2V5 KSwgTlVMTCk7CisJCWlmICh2YWx1ZSkKKwkJeworCQkJY2hhciAqc3RyOworCisJCQkvKiB2YWx1 ZS0+dmFsLnN0cmluZy52YWwgbWF5IG5vdCBiZSBOVUxMIHRlcm1pbmF0ZWQgKi8KKwkJCXN0ciA9 IHBhbGxvYyh2YWx1ZS0+dmFsLnN0cmluZy5sZW4gKyAxKTsKKwkJCW1lbWNweShzdHIsIHZhbHVl LT52YWwuc3RyaW5nLnZhbCwgdmFsdWUtPnZhbC5zdHJpbmcubGVuKTsKKwkJCXN0clt2YWx1ZS0+ dmFsLnN0cmluZy5sZW5dID0gJ1wwJzsKKwkJCSpvd25lciA9IHN0cjsKKwkJfQorCQllbHNlCisJ CQkvKiBteW93bmVyIGlzIG5vdCBnaXZlbiBpbiB0aGlzIGpzb25iLCBlLmcuIGZvciBEcm9wIENv bW1hbmRzICovCisJCQkqb3duZXIgPSBOVUxMOworCX0KKwogCWV4cGFuZF9mbXRfcmVjdXJzaXZl KGJ1ZiwgJmpzb25iLT5yb290KTsKIAogCXJldHVybiBidWYtPmRhdGE7CkBAIC03NjUsNyArNzg2 LDcgQEAgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQoUEdfRlVOQ1RJT05fQVJHUykKIAogCWpz b25fc3RyID0gdGV4dF90b19jc3RyaW5nKGpzb24pOwogCi0JUEdfUkVUVVJOX1RFWFRfUChjc3Ry aW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoanNvbl9zdHIpKSk7CisJUEdf UkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmco anNvbl9zdHIsIE5VTEwpKSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2Vy LmMKaW5kZXggNzFkMmM0M2FmYy4uMzhjMTFmMDAwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtODgxLDYgKzg4MSw3IEBAIEV2ZW50VHJpZ2dlclRhYmxlSW5pdFdyaXRl U3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+dHlwZSA9IChzdG10LT5vYmp0eXBl ID09IE9CSkVDVF9UQUJMRSkgPyBTQ1RfQ3JlYXRlVGFibGVBcyA6IFNDVF9TaW1wbGU7CiAJY29t bWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRpbmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUg PSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2VySWQoKSwgZmFsc2UpOwogCWNvbW1hbmQtPmQuY3Rh cy5hZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CiAJY29tbWFuZC0+ZC5jdGFzLnJlYWxf Y3JlYXRlID0gTlVMTDsKIAljb21tYW5kLT5wYXJzZXRyZWUgPSBjb3B5T2JqZWN0KHBhcnNldHJl ZSk7CkBAIC0xNjI2LDYgKzE2MjcsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFu ZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAKIAljb21tYW5kLT50eXBlID0gU0NUX1NpbXBsZTsK IAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CisJY29tbWFuZC0+ cm9sZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7CiAKIAljb21tYW5k LT5kLnNpbXBsZS5hZGRyZXNzID0gYWRkcmVzczsKIAljb21tYW5kLT5kLnNpbXBsZS5zZWNvbmRh cnlPYmplY3QgPSBzZWNvbmRhcnlPYmplY3Q7CkBAIC0xNjYyLDYgKzE2NjQsNyBAQCBFdmVudFRy aWdnZXJBbHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+dHlwZSA9 IFNDVF9BbHRlclRhYmxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVu c2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCksIGZh bHNlKTsKIAogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOwogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCA9IEludmFsaWRPaWQ7CkBAIC0x OTI5LDYgKzE5MzIsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3JhbnQoSW50ZXJuYWxHcmFudCAq aXN0bXQpCiAJY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOwogCWNv bW1hbmQtPnR5cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRp bmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2Vy SWQoKSwgZmFsc2UpOwogCWNvbW1hbmQtPmQuZ3JhbnQuaXN0bXQgPSBpY29weTsKIAljb21tYW5k LT5wYXJzZXRyZWUgPSBOVUxMOwogCkBAIC0xOTYwLDYgKzE5NjQsNyBAQCBFdmVudFRyaWdnZXJD b2xsZWN0QWx0ZXJPcEZhbShBbHRlck9wRmFtaWx5U3RtdCAqc3RtdCwgT2lkIG9wZmFtb2lkLAog CWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21tYW5kLT50 eXBlID0gU0NUX0FsdGVyT3BGYW1pbHk7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRp bmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2Vy SWQoKSwgZmFsc2UpOwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFuZC0+ZC5vcGZhbS5hZGRyZXNz LAogCQkJCQkgT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklkLCBvcGZhbW9pZCk7CiAJY29tbWFuZC0+ ZC5vcGZhbS5vcGVyYXRvcnMgPSBvcGVyYXRvcnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKaW5kZXggOTNhMjM4NDEyYS4uYTVjNWY2ZTJmYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjYsNiArNjYsNyBAQAogI2RlZmluZSBTVUJP UFRfRElTQUJMRV9PTl9FUlIJCTB4MDAwMDA0MDAKICNkZWZpbmUgU1VCT1BUX0xTTgkJCQkJMHgw MDAwMDgwMAogI2RlZmluZSBTVUJPUFRfT1JJR0lOCQkJCTB4MDAwMDEwMDAKKyNkZWZpbmUgU1VC T1BUX01BVENIX0RETF9PV05FUgkJMHgwMDAwMjAwMAogCiAvKiBjaGVjayBpZiB0aGUgJ3ZhbCcg aGFzICdiaXRzJyBzZXQgKi8KICNkZWZpbmUgSXNTZXQodmFsLCBiaXRzKSAgKCgodmFsKSAmIChi aXRzKSkgPT0gKGJpdHMpKQpAQCAtODksNiArOTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRz CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdp bjsKKwlib29sCQltYXRjaGRkbG93bmVyOwogCVhMb2dSZWNQdHIJbHNuOwogfSBTdWJPcHRzOwog CkBAIC0xNDYsNiArMTQ4LDggQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCW9wdHMtPmRpc2FibGVvbmVyciA9IGZh bHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX09SSUdJTikpCiAJCW9wdHMt Pm9yaWdpbiA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKKwlpZiAoSXNTZXQoc3Vw cG9ydGVkX29wdHMsIFNVQk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQlvcHRzLT5tYXRjaGRkbG93 bmVyID0gdHJ1ZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29w dGlvbnMpCkBAIC0zMjQsNiArMzI4LDE1IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJb3B0cy0+c3BlY2lmaWVk X29wdHMgfD0gU1VCT1BUX0xTTjsKIAkJCW9wdHMtPmxzbiA9IGxzbjsKIAkJfQorCQllbHNlIGlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01BVENIX0RETF9PV05FUikgJiYKKwkJCQkg c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAibWF0Y2hfZGRsX293bmVyIikgPT0gMCkKKwkJeworCQkJ aWYgKElzU2V0KG9wdHMtPnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfTUFUQ0hfRERMX09XTkVSKSkK KwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0cy0+ c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX01BVENIX0RETF9PV05FUjsKKwkJCW9wdHMtPm1hdGNo ZGRsb3duZXIgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlCiAJCQllcmVwb3J0 KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC01NjAsNyAr NTczLDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vi c2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfU0xPVF9OQU1FIHwgU1VCT1BUX0NP UFlfREFUQSB8CiAJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VTX0NPTU1JVCB8IFNVQk9QVF9CSU5B UlkgfAogCQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUIHwK LQkJCQkJICBTVUJPUFRfRElTQUJMRV9PTl9FUlIgfCBTVUJPUFRfT1JJR0lOKTsKKwkJCQkJICBT VUJPUFRfRElTQUJMRV9PTl9FUlIgfCBTVUJPUFRfT1JJR0lOIHwKKwkJCQkJICBTVUJPUFRfTUFU Q0hfRERMX09XTkVSKTsKIAlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhwc3RhdGUsIHN0bXQt Pm9wdGlvbnMsIHN1cHBvcnRlZF9vcHRzLCAmb3B0cyk7CiAKIAkvKgpAQCAtNjQ5LDYgKzY2Myw3 IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlw dGlvblN0bXQgKnN0bXQsCiAJCXB1YmxpY2F0aW9uTGlzdFRvQXJyYXkocHVibGljYXRpb25zKTsK IAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3JpZ2luIC0gMV0gPQogCQlDU3RyaW5n R2V0VGV4dERhdHVtKG9wdHMub3JpZ2luKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VibWF0Y2hkZGxvd25lciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMubWF0Y2hkZGxvd25lcik7 CiAKIAl0dXAgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMs IG51bGxzKTsKIApAQCAtMTA1NCw3ICsxMDY5LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJc3VwcG9ydGVk X29wdHMgPSAoU1VCT1BUX1NMT1RfTkFNRSB8CiAJCQkJCQkJCSAgU1VCT1BUX1NZTkNIUk9OT1VT X0NPTU1JVCB8IFNVQk9QVF9CSU5BUlkgfAogCQkJCQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBT VUJPUFRfRElTQUJMRV9PTl9FUlIgfAotCQkJCQkJCQkgIFNVQk9QVF9PUklHSU4pOworCQkJCQkJ CQkgIFNVQk9QVF9PUklHSU4gfCBTVUJPUFRfTUFUQ0hfRERMX09XTkVSKTsKIAogCQkJCXBhcnNl X3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywKIAkJCQkJCQkJCQkg ICBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwpAQCAtMTExOCw2ICsxMTMzLDE0IEBAIEFsdGVyU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvcmlnaW4gLSAxXSA9IHRy dWU7CiAJCQkJfQogCisJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9N QVRDSF9ERExfT1dORVIpKQorCQkJCXsKKwkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1Ym1hdGNoZGRsb3duZXIgLSAxXQorCQkJCQkJPSBCb29sR2V0RGF0dW0ob3B0cy5tYXRjaGRk bG93bmVyKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0Y2hkZGxv d25lciAtIDFdCisJCQkJCQk9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1 ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGRsdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZGx0cmlnZ2VyLmMKaW5kZXggNzAwMThhMzA1Yy4uMTYyNWRjMTA5MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMKQEAgLTEyMiw3ICsxMjIsNyBAQCBw dWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX3Jld3JpdGUoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAo cmVscGVyc2lzdCAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQogCXsKIAkJLyogRGVwYXJzZSB0aGUg RERMIGNvbW1hbmQgYW5kIFdBTCBsb2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlIHNhbWUu ICovCi0JCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCBmYWxzZSk7 CisJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCB0cnVlLCBmYWxz ZSk7CiAKIAkJaWYgKGpzb25fc3RyaW5nICE9IE5VTEwpCiAJCQlMb2dMb2dpY2FsRERMTWVzc2Fn ZSgiZGVwYXJzZSIsIGNtZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkLCBEQ1RfVGFibGVBbHRlciwK QEAgLTIwMCw3ICsyMDAsNyBAQCBwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX2VuZChQ R19GVU5DVElPTl9BUkdTKQogCQkJICogRGVwYXJzZSB0aGUgRERMIGNvbW1hbmQgYW5kIFdBTCBs b2cgaXQgdG8gYWxsb3cgZGVjb2Rpbmcgb2YgdGhlCiAJCQkgKiBzYW1lLgogCQkJICovCi0JCQlq c29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgZmFsc2UpOworCQkJanNv bl9zdHJpbmcgPSBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChjbWQsIHRydWUsIGZhbHNlKTsKIAog CQkJaWYgKGpzb25fc3RyaW5nICE9IE5VTEwpCiAJCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRl cGFyc2UiLCByZWxpZCwgdHlwZSwganNvbl9zdHJpbmcsCkBAIC0zNTAsNyArMzUwLDcgQEAgcHVi bGljYXRpb25fZGVwYXJzZV90YWJsZV9pbml0X3dyaXRlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXJl dHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7CiAKIAkvKiBEZXBhcnNlIHRoZSBEREwgY29tbWFu ZCBhbmQgV0FMIGxvZyBpdCB0byBhbGxvdyBkZWNvZGluZyBvZiB0aGUgc2FtZS4gKi8KLQlqc29u X3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKGNtZCwgZmFsc2UpOworCWpzb25fc3Ry aW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kLCB0cnVlLCBmYWxzZSk7CiAKIAlpZiAo anNvbl9zdHJpbmcgIT0gTlVMTCkKIAkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBj bWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQsIERDVF9TaW1wbGVDbWQsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA5ZTA1M2EzZDgzLi42NzEwODkzNDk5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTMzNDksMjEg KzMzNDksMzMgQEAgYXBwbHlfaGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCiAJY29uc3QgY2hhciAq cHJlZml4ID0gTlVMTDsKIAljaGFyCSAgICptZXNzYWdlID0gTlVMTDsKIAljaGFyCSAgICpkZGxf Y29tbWFuZDsKKwljaGFyCSAgICpvd25lcjsKIAlTaXplCQlzejsKIAlMaXN0CSAgICpwYXJzZXRy ZWVfbGlzdDsKIAlMaXN0Q2VsbCAgICpwYXJzZXRyZWVfaXRlbTsKIAlEZXN0UmVjZWl2ZXIgKnJl Y2VpdmVyOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAljb25zdCBjaGFyICpzYXZlX2Rl YnVnX3F1ZXJ5X3N0cmluZyA9IGRlYnVnX3F1ZXJ5X3N0cmluZzsKKwlpbnQJCQlzYXZlX25lc3Rs ZXZlbCA9IDA7CiAKIAltZXNzYWdlID0gbG9naWNhbHJlcF9yZWFkX2RkbChzLCAmbHNuLCAmcHJl Zml4LCAmc3opOwogCiAJLyogTWFrZSBzdXJlIHdlIGFyZSBpbiBhIHRyYW5zYWN0aW9uIGNvbW1h bmQgKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQlkZGxfY29tbWFuZCA9IGRlcGFy c2VfZGRsX2pzb25fdG9fc3RyaW5nKG1lc3NhZ2UpOworCWRkbF9jb21tYW5kID0gZGVwYXJzZV9k ZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSwgJm93bmVyKTsKIAlkZWJ1Z19xdWVyeV9zdHJpbmcg PSBkZGxfY29tbWFuZDsKIAorCWlmIChNeVN1YnNjcmlwdGlvbi0+bWF0Y2hkZGxvd25lciAmJiBv d25lcikKKwl7CisJCS8qCisJCSAqIFNldCB0aGUgY3VycmVudCByb2xlIHRvIHRoZSBvd25lciB0 aGF0IGV4ZWN1dGVkIHRoZSBjb21tYW5kIG9uIHRoZQorCQkgKiBwdWJsaWNhdGlvbiBzZXJ2ZXIu CisJCSAqLworCQlzYXZlX25lc3RsZXZlbCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCQlTZXRDb25m aWdPcHRpb24oInJvbGUiLCBvd25lciwgUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVSUklERSk7CisJ fQorCiAJLyogRGVzdE5vbmUgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gKi8KIAlyZWNlaXZlciA9 IENyZWF0ZURlc3RSZWNlaXZlcihEZXN0Tm9uZSk7CiAJcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJz ZV9xdWVyeShkZGxfY29tbWFuZCk7CkBAIC0zNDYxLDYgKzM0NzMsMTQgQEAgYXBwbHlfaGFuZGxl X2RkbChTdHJpbmdJbmZvIHMpCiAJCU1lbW9yeUNvbnRleHREZWxldGUocGVyX3BhcnNldHJlZV9j b250ZXh0KTsKIAl9CiAKKwkvKgorCSAqIFJlc3RvcmUgdGhlIEdVQyB2YXJpYWJsZXMgd2Ugc2V0 IGFib3ZlLgorCSAqLworCWlmIChzYXZlX25lc3RsZXZlbCA+IDApCisJeworCQlBdEVPWGFjdF9H VUModHJ1ZSwgc2F2ZV9uZXN0bGV2ZWwpOworCX0KKwogCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNh dmVfZGVidWdfcXVlcnlfc3RyaW5nOwogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiB9CmRpZmYg LS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCBmZTUwZGRmNTkxLi40YjNiYjM1NzUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2MjIs NiArNDYyMiw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpbnQJCQlpX3N1 YnN5bmNjb21taXQ7CiAJaW50CQkJaV9zdWJwdWJsaWNhdGlvbnM7CiAJaW50CQkJaV9zdWJiaW5h cnk7CisJaW50CQkJaV9zdWJtYXRjaGRkbG93bmVyOwogCWludAkJCWksCiAJCQkJbnR1cHM7CiAK QEAgLTQ2NzQsOSArNDY3NSwxNCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJ CQkJCQkgIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwg IiBzLnN1Ym9yaWdpblxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJ CSAiIHMuc3Vib3JpZ2luLFxuIgorCQkJCQkJCSAiIHMuc3VibWF0Y2hkZGxvd25lclxuIik7CiAJ ZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAnJXMnIEFTIHN1Ym9yaWdpblxuIiwg TE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJ CQkgICIgJyVzJyBBUyBzdWJvcmlnaW4sXG4iCisJCQkJCQkgICIgZmFsc2UgQVMgc3VibWF0Y2hk ZGxvd25lclxuIiwKKwkJCQkJCSAgTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJICJGUk9NIHBnX3N1YnNjcmlwdGlvbiBzXG4iCkBA IC00NzA0LDYgKzQ3MTAsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaV9z dWJ0d29waGFzZXN0YXRlID0gUFFmbnVtYmVyKHJlcywgInN1YnR3b3BoYXNlc3RhdGUiKTsKIAlp X3N1YmRpc2FibGVvbmVyciA9IFBRZm51bWJlcihyZXMsICJzdWJkaXNhYmxlb25lcnIiKTsKIAlp X3N1Ym9yaWdpbiA9IFBRZm51bWJlcihyZXMsICJzdWJvcmlnaW4iKTsKKwlpX3N1Ym1hdGNoZGRs b3duZXIgPSBQUWZudW1iZXIocmVzLCAic3VibWF0Y2hkZGxvd25lciIpOwogCiAJc3ViaW5mbyA9 IHBnX21hbGxvYyhudHVwcyAqIHNpemVvZihTdWJzY3JpcHRpb25JbmZvKSk7CiAKQEAgLTQ3MzQs NiArNDc0MSw4IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJc3ViaW5mb1tp XS5zdWJkaXNhYmxlb25lcnIgPQogCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1 YmRpc2FibGVvbmVycikpOwogCQlzdWJpbmZvW2ldLnN1Ym9yaWdpbiA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaSwgaV9zdWJvcmlnaW4pKTsKKwkJc3ViaW5mb1tpXS5zdWJtYXRjaGRkbG93 bmVyID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXRjaGRkbG93bmVy KSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNlbGVj dER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91dCk7CkBAIC00ODEyLDYgKzQ4 MjEsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlv bkluZm8gKnN1YmluZm8pCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ViaW5mby0+c3Vib3JpZ2luLCBM T0dJQ0FMUkVQX09SSUdJTl9BTlkpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAi LCBvcmlnaW4gPSAlcyIsIHN1YmluZm8tPnN1Ym9yaWdpbik7CiAKKwlpZiAoc3RyY21wKHN1Ymlu Zm8tPnN1Ym1hdGNoZGRsb3duZXIsICJmIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksICIsIG1hdGNoX2RkbF9vd25lciA9IGZhbHNlIik7CisKIAlpZiAoc3RyY21wKHN1Ymlu Zm8tPnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwgIiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzeW5jY29t bWl0KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IGE1OTUyYzUzZmYuLmFlOTBiMmNkODQgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaApAQCAtNjY0LDYgKzY2NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25JbmZv CiAJY2hhcgkgICAqc3Vib3JpZ2luOwogCWNoYXIJICAgKnN1YnN5bmNjb21taXQ7CiAJY2hhcgkg ICAqc3VicHVibGljYXRpb25zOworCWNoYXIJICAgKnN1Ym1hdGNoZGRsb3duZXI7CiB9IFN1YnNj cmlwdGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBi L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGE0MTUwMGRlZWQuLjcwMGE4NThhYzggMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jCkBAIC02NTEwLDcgKzY1MTAsNyBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3Qg Y2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1 ZXJ5T3B0IG15b3B0ID0gcHNldC5wb3B0OwogCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9j b2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCi0JZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKKwlmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWlm IChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTY1NjcsOCArNjU2NywxMCBAQCBkZXNj cmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCiAJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs Ci0JCQkJCQkJICAiLCBzdWJvcmlnaW4gQVMgXCIlc1wiXG4iLAotCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJPcmlnaW4iKSk7CisJCQkJCQkJICAiLCBzdWJvcmlnaW4gQVMgXCIlc1wiXG4iCisJCQkJ CQkJICAiLCBzdWJtYXRjaGRkbG93bmVyIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRf bm9vcCgiT3JpZ2luIiksCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIk1hdGNoIERETCBvd25lciIp KTsKIAogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLCAgc3Vic3luY2NvbW1p dCBBUyBcIiVzXCJcbiIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IGIw ZjJhMTcwNWQuLjE3YWY3Yzc3NTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aApAQCAtODgsNiArODgsOSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlw dGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRp c2FibGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtlciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJ CQkJCQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUgZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1Ym1h dGNoZGRsb3duZXI7CS8qIFRydWUgaWYgcmVwbGljYXRlZCBvYmplY3RzIGJ5IERETCByZXBsaWNh dGlvbgorCQkJCQkJCQkJICogc2hvdWxkIG1hdGNoIHRoZSBvcmlnaW5hbCBvd25lciBvbiB0aGUg cHVibGlzaGVyICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0 aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJs aXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzcs NiArMTQwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJTGlzdAkgICAqcHVibGlj YXRpb25zOwkvKiBMaXN0IG9mIHB1YmxpY2F0aW9uIG5hbWVzIHRvIHN1YnNjcmliZSB0byAqLwog CWNoYXIJICAgKm9yaWdpbjsJCQkvKiBPbmx5IHB1Ymxpc2ggZGF0YSBvcmlnaW5hdGluZyBmcm9t IHRoZQogCQkJCQkJCQkgKiBzcGVjaWZpZWQgb3JpZ2luICovCisJYm9vbAkJbWF0Y2hkZGxvd25l cjsgIC8qIEluZGljYXRlcyBpZiByZXBsaWNhdGVkIG9iamVjdHMgYnkgRERMIHJlcGxpY2F0aW9u CisJCQkJCQkJCSAqIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgb3duZXIgb24gdGhlIHB1Ymxp c2hlciAqLwogfSBTdWJzY3JpcHRpb247CiAKIC8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMuICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RkbF9k ZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbF9kZXBhcnNlLmgKaW5kZXggMWEyNzAyYzVh Yy4uMmI3NzU0YmZhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxfZGVwYXJzZS5o CisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsX2RlcGFyc2UuaApAQCAtMTQsOCArMTQsOCBAQAog CiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKIAotZXh0ZXJuIGNoYXIgKmRlcGFy c2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCwgYm9vbCB2ZXJib3NlX21v ZGUpOwotZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25i KTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5k ICpjbWQsIGJvb2wgaW5jbHVkZV9vd25lciwgYm9vbCB2ZXJib3NlX21vZGUpOworZXh0ZXJuIGNo YXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpzb25iLCBjaGFyKiogb3duZXIp OwogZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF9jb21tYW5kKGNvbnN0IGNoYXIgKm9iamlkZW50 aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAogCQkJCQkJCQkgIERyb3BCZWhhdmlvciBiZWhh dmlvcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5Lmgg Yi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IGE0YTEyMzc3YjguLjg3 YTc2MWJiM2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgK KysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtNDgsNiArNDgsNyBA QCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJQ29sbGVjdGVkQ29tbWFuZFR5cGUg dHlwZTsKIAogCWJvb2wJCWluX2V4dGVuc2lvbjsKKwljaGFyCSAgICpyb2xlOwogCU5vZGUJICAg KnBhcnNldHJlZTsKIAogCXVuaW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQKaW5kZXggM2Y5OWIxNDM5NC4uYWY4OTRmNzViOSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE0LDE4ICsxMTQsMTggQEAgQ1JFQVRF IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCcgUFUKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1 dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJz Y3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKyByZWdyZXNzX3Rl c3RzdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjQgU0VUIChvcmlnaW4gPSBhbnkpOwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IE1hdGNo IERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDMsMTAgKzE0 MywxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zv b2Jhcic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5n ICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBN YXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgx IHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJ T04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNjMsMTAg KzE2MywxMCBAQCBFUlJPUjogIHVucmVjb2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAi Y3JlYXRlX3Nsb3QiCiAtLSBvawogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT S0lQIChsc24gPSAnMC8xMjM0NScpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0 aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRl c3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0g b2sgLSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE3NSwxMCArMTc1LDEwIEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVSUk9SOiAgaW52YWxpZCBX QUwgbG9jYXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24g ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAt MjEwLDEwICsyMTAsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28g U0VUIChzeW5jaHJvbm91c19jb21taXQgPSBmb29iYXIpOwogRVJST1I6ICBpbnZhbGlkIHZhbHVl IGZvciBwYXJhbWV0ZXIgInN5bmNocm9ub3VzX2NvbW1pdCI6ICJmb29iYXIiCiBISU5UOiAgQXZh aWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2Zm LgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAg ICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0 c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiAtLSBy ZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMjQ3LDE5ICsyNDcsMTkgQEAg Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0 ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRo ZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0 Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBm YWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1l ID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YjsKQEAgLTI3MSwyNyArMjcxLDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElO VDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0 aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwor ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOwogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IE1hdGNoIERE TCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFs c2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBl eGlzdHMKQEAgLTMwNiwxMCArMzA2LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyCiBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwg dGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRS cysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVz dHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGlj YXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGFuIG9uY2UKQEAg LTMyNCwxMCArMzI0LDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIzIiBpcyBub3Qg aW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAtLSBvayAtIGRlbGV0ZSBwdWJsaWNh dGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElP TiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBNYXRj aCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzYzLDEwICszNjMs MTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2Fz IGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGlj YXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5h YmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJz KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBv cnRlZC4KQEAgLTM3NSwxMCArMzc1LDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1YnNjcmlw dGlvbiBwYXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVyIHN0cmVhbWluZyB3 aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTM4OCwxMCAr Mzg4LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04g J2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9u IHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBw ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CkBAIC00MDQsMTggKzQwNCwxOCBAQCBDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBj b25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFs bHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwg YW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBNYXRjaCBEREwgb3duZXIgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsK IFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOwotLSAKMi4zMC4wLndpbmRvd3MuMgoK --_006_OS0PR01MB571636F0F1307AB1A868B06A948E9OS0PR01MB5716jpnp_--