From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=fail (p=quarantine dis=none) header.from=tamu.edu Received: from mx0a-00178102.pphosted.com (mx0a-00178102.pphosted.com [148.163.135.245]) by passt.top (Postfix) with ESMTPS id 41CF85A026E for ; Mon, 26 Oct 2026 18:25:02 +0100 (CET) Received: from pps.filterd (m0169866.ppops.net [127.0.0.1]) by mx0a-00178102.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 69QHKkrm3242978; Mon, 26 Oct 2026 12:25:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tamu.edu; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=ppae6d7b; bh=oE2RW4CCQdsUW4Rq9hMSZbRdV pEY6G+zxvknMe7n6RM=; b=M+RzF5qGbFO2iO95vP6GXukG2bgAP6UZnHAXEe9Dk idUzxFdlMhGWrcbOlCeYFMHwZ8uJ9/J7khshkON5ZzESe2zEYXUNTj+z2B6iYFlM BJAEGQ0nmXgVihEJcZ4gjxn5ovRl1UAlaxKdbUVSOGH+KWHNlLXY4Dx//kn9IWrz 69wrAOhxSkIK0kAJJwVSJgEyqAQLQRYhzQVEXrd+RZ9R9gOsXMVRVixiJMN3RHWf T12zf/DgfCiS1wCg5Y+eZ+Psqng2q+9ow55pnHQmHnlB04LzFlz6lOYcVk2utdeL wzL/tao86wmApaQ2PUWWYFqWiGEeUAgrhiUMXxpJchv+w== Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazon11011000.outbound.protection.outlook.com [52.101.52.0]) by mx0a-00178102.pphosted.com (PPS) with ESMTPS id 4hja67rsdq-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Oct 2026 12:25:00 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vp83Zo23yq3+afOCKxr+ReHFx9SrdeOp7PONQH5OngLaHXmLmhBLPmM9gUTaFe3ElqRXSXKAXwq9CplbCQ4T3ksq1ADI8ry3MLLnPdsciUrrTm0YFS60KHPtkeZGmfsBa4utigTmgfWgFW3g0oWcf0Rox9igN9nzHEpjDkoiJ89xmImJag9PpcbSY3PUsOLbP/8dFuBhrcAn3YDFvhFBziizrsVT1/12CaP8JpNluhKSs37RpGHbdnBDC+etT10XufAvZbxcEgB6Xl8T+efVVAOuvbV0wqi8sJ0lTtKmzvA+/vpWpKUeI/mU05rrb7titNiVMyj7gqisGryStmlsow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=oE2RW4CCQdsUW4Rq9hMSZbRdVpEY6G+zxvknMe7n6RM=; b=w/Rr4EGowHVeLKbog8zQhPymGebhaDp5WEB1M/YVzbwvLo5o3QG0KoUYg48v7/BRKm3JJGTBZMWBWt8LI75CC+de9ptzz3yVOC9RKhIIlROgOWvBxQ1jn1gNzSdbNRethW8nmx6Yje/1ZpR1AXKMHc53TTJUcjRb9/IAeoZv9s7RsO4CFJIlgpYLY1WgDnR5UjLUDj6vg+q7rHj5OsqfVvNB9zsoIvsMfAQkk8x+DzlNfVjbMyBlGz+435OH2PmDC3XIkVz+dpSr4kZvI/+v3N9ySFhAnfPzR0V1SWyd8wvMiK/jik3FYkzsAwGWuM6dPCbRQCax1+OKGnCoxWxnCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=tamu.edu; dmarc=pass action=none header.from=tamu.edu; dkim=pass header.d=tamu.edu; arc=none Received: from DM3PR11MB8713.namprd11.prod.outlook.com (2603:10b6:0:45::15) by LVUPR11MB9834.namprd11.prod.outlook.com (2603:10b6:408:39d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Mon, 26 Oct 2026 17:24:58 +0000 Received: from DM3PR11MB8713.namprd11.prod.outlook.com ([fe80::e63e:f56e:ed80:ee28]) by DM3PR11MB8713.namprd11.prod.outlook.com ([fe80::e63e:f56e:ed80:ee28%4]) with mapi id 15.21.0546.021; Mon, 26 Oct 2026 17:24:57 +0000 From: "Lawrence, Richard E" To: Stefano Brivio Subject: Re: [PATCH v2] pasta: Add --pass-fds option to skip closing file descriptors Thread-Topic: [PATCH v2] pasta: Add --pass-fds option to skip closing file descriptors Thread-Index: AQHdYkf2lyQSMi30bU61fFPDN5cQ5LcOLKAAgAHYLLOAAA9nSA== Date: Mon, 26 Oct 2026 17:24:57 +0000 Message-ID: References: <20261022170823.868916-1-rlawrence@tamu.edu> <20261025130139.039cda1b@elisabeth> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=tamu.edu; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM3PR11MB8713:EE_|LVUPR11MB9834:EE_ x-ms-office365-filtering-correlation-id: be158e77-d068-4032-1024-08df33860e9a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|23010399003|366016|1800799024|786006|13003099007|261026135527099003|261026140227099003|261026130827099003|38070700021|11063799006|4143699003|56012099006|261026121527099003|261021130227099003|261022113327099003|261021123027099003|261019150727099003|261022075727099003|261019143827099003|261022115727099003|261021121427099003|261021135927099003|261021133027099003|261009223027099003|261019141927099003|261019132127099003|261022105027099003|10067099003|22082099003|18002099003|8096899003|6133799003|3023799007; x-microsoft-antispam-message-info: m21WVuOrUHMOThVLnc9P/8i9b5OZf9bZnTTf8N1VFNPX9FNwrID7eIthgsJHzOsM47YbBhEMB1f21NCQMIh5aakmJRuFwgjRFTQxhNk0OXM2jvrVs9Wzf9NNhLy3jrQEXihfdr+j6vXPyFGe/uLdf370TYc0MZhJmHt1uB5H3vbL5/SUrIaxiqV3jYoVXKReoOWmleSQCl9BjYR3vWaAKXzZyr/NgeivUK8AKaKrsRDQF7BFp6U/IqcqYyCaz+o46Gntfk8w0X7iP4IDKyhl7VgMgeQ4QQvB0siF+7IJHd4bsy/x2ZPOA0VpLxahP0hC4kr7J/jQX8VKGbJUfecM5AqsiBEed0TeLw9+qBrYnXP4JAvLkdqqR2JFmzni4Ev18qjwuxmCDA9leTy5Fm4pHU62zbs1HNmvxUzhx5MS9S2hQ0MCh3tPLTwTT90hnjcybuVrqcDDgIMXXrDL9Yr7FmUNX5plt4+/Y9Sq1it+6HxywXG45i8o8GO6HfwO8TuSCCS7oz+ihfb0Zz+IhhNd0aGtQZ8FoPAUGu8X4kdCVfyFUyQ31T+zjKgqJj08i32PrqirXyQCg/cZr+S482DsAP06QDxapQLbk3ELjlK1QMjfW3IE98MKaYmeKK3TShbpLvaiL3yJ/69PGvx72qWD8gv0fa9UitC2yfhrIzwxwKI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM3PR11MB8713.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(23010399003)(366016)(1800799024)(786006)(13003099007)(261026135527099003)(261026140227099003)(261026130827099003)(38070700021)(11063799006)(4143699003)(56012099006)(261026121527099003)(261021130227099003)(261022113327099003)(261021123027099003)(261019150727099003)(261022075727099003)(261019143827099003)(261022115727099003)(261021121427099003)(261021135927099003)(261021133027099003)(261009223027099003)(261019141927099003)(261019132127099003)(261022105027099003)(10067099003)(22082099003)(18002099003)(8096899003)(6133799003)(3023799007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?U0ZwamtlOCtVUitWY0tURHRnSEFxWnlZWmY3YUlnd0Z6SXFSRHV1MFV3ZnBi?= =?utf-8?B?Z0J4dmtKVHNaOXh2RERJK1ZqZkRZbkU2ZFlscXZNaVFUWmIxSXRLMitCbFZJ?= =?utf-8?B?ZEY1aW9laUJQZWsvYmszUWkvZS9LdTJadmxRd0dyTmtWM0RRWjZlMlpRVWdq?= =?utf-8?B?SHVmREdCRWNyY0N5SHBESWlLa1lpYTJIZG1LS3Z5QXpES3B1bEVDTGI0UWN2?= =?utf-8?B?bHcyeXk2MEpCVm1BL1hnY3lZREFuOG5lOCtZRzBlMGFVNlpEVk9kVWJHSmts?= =?utf-8?B?MGxFckM1eHM0Sy9ubnYyRFNFNndCMWppUnpFRTdUZ2IyTkREMEZXTUNPQ1Rw?= =?utf-8?B?UDVpVTJTa2dKSXFvUGxOcXFyaUhiNEN6VnJ5d0JJN1A1MWloMzZkbDNmTW1X?= =?utf-8?B?R1d2S3VJN005bjlMaHY1RUphRCtISE1VNDhSRGgxeHVtSHhhUHdwMkZhbXNR?= =?utf-8?B?TWIxTGxlMUF3SCtiak8yN20wNVlxUG9sOHNKczdVRE1FbU1Sc29hTXR5Nnow?= =?utf-8?B?VloxSm5aNFU3dkNDcGtKVThsWjRWKzR0Z1NmVEJrS0xNU0dudEVjYldrSWl6?= =?utf-8?B?TUVoMEw5N3JEKzNRdEFIKy8xQVJtbjVZT0ZnZk1zMU1ic1Zrcnh2UnFUSFcw?= =?utf-8?B?MHRrU1ArZGM3ZGdDOXVuenUxRmRlYVYzVHNWeWQ3OGQ5dHFOVFNNTlBBamRY?= =?utf-8?B?SzZSSHlZMU1SdGdOdlU2WVU0bm9aTUwxb3g2UzdxSktsTkZ2UEpmMkNjL3Vo?= =?utf-8?B?ZjZ2VFhzeVAwbThCTjhqUzBwc2toR2ZBMVpXTlJSY1pNMjBwOHdybVh5azdv?= =?utf-8?B?SWRiaFV3dzZ1bGtzOHoyK1QxbUhqcUxQS0FLM3k0V3QxenZHc0FDZmN1N1Nh?= =?utf-8?B?dkNaNHFFQ3huSnVQWmNPaDRSRWpqcnE1Um90akZaTCszRW9WS285N21qOXRU?= =?utf-8?B?SlhCOFZXMmY2OVRJMVY2aEhScUNicm0vMnYxSXFzQkRMdm9YV2VVaFA4RDhN?= =?utf-8?B?VXlpelNtM3NmWjUybjNYQ3ZmZC9HbCtLcUNwcjVROE9lMGVxU0xOSmFhM0pr?= =?utf-8?B?dkxwZEpiMDFjN2FQNEtzZ1hucFg1cTBpOUlXaXZOMXlVRDhUTU1CRkZ4WmxY?= =?utf-8?B?U1doYlRFTFdHZFZuek9RYkhZMW1Sb2Z6TlFIaVVjWnlxeDZKcjFWcENkLzF2?= =?utf-8?B?QzZZc3IyVGtZYnZ4NnF6RWJDdlNveWJ0dnFyRGVpc0I3cU40RVhacUV4Wnpt?= =?utf-8?B?Zkx3WjR3NWVXY1lLTk9EdFcrVGpLTDlHYm1heXpybzRGTE82bVQzY29nWWgy?= =?utf-8?B?bnhOKy92TmRyMFBsNE00a3FieTdVenN3MllDN29POFc3MmQ2a1d3NHh0bk1M?= =?utf-8?B?V3lrWnVRbDRkT2tiL2pSeS9OR2hLRGNVQkFEZ1FyaVpLRkUzQUJqbE90dHBy?= =?utf-8?B?OURPalNOd0VyZi9uMlhVS1R5QVIwRDEzVlBEeHhGdkhCeGlIbWNnekVNeHhz?= =?utf-8?B?WWtxUW5SK1daQTI3QUdvSnEra29YOS9FYzlZMnQrZk5Fakg1S2czSkd0aHJF?= =?utf-8?B?VXVBOTlQc2hCTmdvazdteDZORXBKMUxOSXE0Yml2MnI2cjFmdEpiYytYM3dx?= =?utf-8?B?WFl3eTEzdis2VEJGTk43UlZZQ21CMlZjY2k4Z1hvQUJFWGdoa1M4M3hwL1dn?= =?utf-8?B?N0toczUrU2VnU2JwVjV2S3ZVSGRvRlB1L0ZkN2ttenlMU1JsWS9zVlVpSm9i?= =?utf-8?B?YTlQTmV4WGlaeEJDREpFK3g2WVBvZlpjcEYrRHRhM0RSUmZOV3FnUThMcEVq?= =?utf-8?B?V3RGaEZLbXRFQUQzUklSTXVTTXlNUUQzbWVyZmRwN3R6YVNaUExuMzBHVi8w?= =?utf-8?B?YmtQdGIybVJvNzlTWitQbWhYSUMweUZtV1YrZGN0b1UxSWFtTDNZaGthZ1ox?= =?utf-8?B?K3NkT3JFNDFxU0t5NXdMY0JPM3BqQXUzWnVFVEhORmFQRzZPSmNDdlFaRnZ3?= =?utf-8?B?WktLa0lXUTJWREwzM1JOdVBoRHFKNjMwV0YrNldKYjE3a21OSzFZQWN6ZTF6?= =?utf-8?B?a0VCRm4vcldMR1ZGbi9BWGhGSWdvQmFVQStQN0xjTGhhUHVjeTZhZU5sc0JU?= =?utf-8?B?MGRneGh2ZVZMeFA4K2xiWkQ4WVlOaUtacFRWeXQ1aXY4VGdTdlE3R0hWdmRl?= =?utf-8?B?T2cvdnhzWEtXMHBpWWlmUHlrejFKR2ViQk5lQ2hPRFZTRXFFSTkwSk1MVlRQ?= =?utf-8?B?d0drMmkwTmFiMVE4ckYrdGxtYTUyVHNlczdNZnFDMExOSlNuVFBLZ3c1TmMv?= =?utf-8?Q?KuzdixIYvAeSNzfhNT?= Content-Type: multipart/alternative; boundary="_000_DM3PR11MB8713818FD3E6BB47F6EA35CCDA612DM3PR11MB8713namp_" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: q2NmA+Vwch8eYTsjqRM+JfyAZIcfCRpnDxpXG2m8GkWdB87u1ttDTHRhSObpFmyhuiqZN9CJaOEg0hbRFFRFaRspl4j5Pou5n/HBdAQ1AOuXYszwQjZ/FvZhOza+eeNPaGKCBz8t2Pp/Lp9cDhG1Y9r7cyXlSOK9fQer05ScAeiBd+NDdGVz6Ib7oHzKN2ak/VU8wf87MuYjkmccux1oZLyVlR1vRvEOA0U4ZKP52jWsvmuiqk0A+ipXpTWGmNTLESFDy7l5SHq3E6OMiVO2PSB0mpumm23ckMd0bWKoTaAyFcYEA2m+E0AhRLw9/xYwhj0xxecTxpVjiiPtfYAUdQ== X-OriginatorOrg: tamu.edu X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM3PR11MB8713.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: be158e77-d068-4032-1024-08df33860e9a X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Oct 2026 17:24:57.3043 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 68f381e3-46da-47b9-ba57-6f322b8f0da1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KUSFPx5IdeAAjMw1cotUwTcIyiogZgqgFkZSbxwoCmyGN4YruImz5d4JE+898BE0o+5qUW3pu4WoRHPSEpwVKw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LVUPR11MB9834 X-Proofpoint-Spam-Info: AW1haW4tMjYxMDI2MDA2OSBTYWx0ZWRfXySPIoBAljWwc ywWb29YFWWFthGfExNWW6brobvvxxhzOsvwufe+PMHa/05MiuUhGESWhJQtvY6OGfRav0CgI3ih CFXvCAPgy3CxHAr0u33iFvvwGcFAlMY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYxMDI2MDA2OSBTYWx0ZWRfX7u4wJoDEdQw2 /SyWtXOUeKCGO1sbNwIeXxWmnt7/t81T7e5iOsGB/L3IrlcCbv/auo00gnmRrXFsFWgNnHpjHCT 6Tzc3yYXjav4exThjzn7K1+ZVHA9rzY7HUivzMtdEh0pdLeHGSSZFhz3/4uQcOI5stFYdSr9VVw 0q39OEkwAzkULsIFN6Sx7CZQkB/o/nATPCd9oCAAc2LwcqdLJxVU73jHOAfPb2bnnePDKPPXTJ/ /TCQG4/npu4xFEPkktGeeKGRxk0cGAThLpaemB/ealvbtUhCxveAU+XVSUSCQdBI7cuS5lGmawm G+wGu6Z6kjeA85BiPCYBtC+l57TN+sFQQKM+nUkgSVlwIirQkIhXqCFjZAI0itkAA8+EBsX5zeY w+f/BhXPiuo4m2fIJChSbI/lXc7vjTVizcvvOw7fP9vK0XkB4acVkgIdXfWbCkmUZXTuexfsg5u CWzMgDifNqpIsHrPylw== X-Proofpoint-ORIG-GUID: n129RMRWlEMHon_LJNZkI-9kqfQ86ZZX X-Proofpoint-GUID: n129RMRWlEMHon_LJNZkI-9kqfQ86ZZX X-Authority-Analysis: v=2.4 cv=OIeyTiaB c=1 sm=1 tr=0 ts=6adf8cec cx=c_pps a=CTIJcRslT32CQvadRVAfuw==:117 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=660iZSQnnn4A:10 a=x7bEGLp0ZPQA:10 a=fWIk7vUBimkA:10 a=VkNPw1HP01LnGYTKEx00:22 a=HuL5yKgYSaDc2Nh3iM7q:22 a=PpoWY9mOLvn6BEvM-Ecr:22 a=pNgXkJcRAAAA:8 a=20KFwNOVAAAA:8 a=ojKtx9HdaDcv4CILc9IA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=B910RkmbNBtAme4EkkMA:9 a=2q4O/K3rjNU7EHYdBHB6dYyilSc=:19 a=jC2nz-dVhyIA_rrX:21 a=frz4AuCg-hUA:10 a=_W_S_7VecoQA:10 a=tKe0A8swS_RTMQ4Dt1Wu:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.138,FMLib:17.12.100.49 definitions=2026-10-26_03,2026-10-21_02,2025-10-01_01 X-MailFrom: rlawrence@tamu.edu X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation Message-ID-Hash: YSGCGJXRQD7D4UXN67NAZCHSBAUKADE7 X-Message-ID-Hash: YSGCGJXRQD7D4UXN67NAZCHSBAUKADE7 X-Mailman-Approved-At: Mon, 26 Oct 2026 18:29:48 +0100 CC: "passt-dev@passt.top" X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --_000_DM3PR11MB8713818FD3E6BB47F6EA35CCDA612DM3PR11MB8713namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SG93ZHkgU3RlZmFubywNCg0KSSBzdWJtaXR0ZWQgYSBwYXRjaCB2MyBmb3IgdGhpcyBzZXJpZXMg d2hpY2ggYWRkcmVzc2VkIG1vc3QgKG5vdCBhbGwpIG9mIHlvdXIgb2JqZWN0aW9ucy4NCg0KSXQg dHVybnMgb3V0IHRoZSBtaW5pbXVtIGluZGV4IGZvciBhIGxvbmcgb3B0aW9uIGlzIDIsIG5vdCAx LiBjb25mKCkgYWxyZWFkeSBjb3JyZWN0bHkgZG9lcyBpdCB0aGF0IHdheS4NCg0KSSB0aGluayBJ IG1pc3VuZGVyc3Rvb2QgeW91ciBxdWVzdGlvbiBhYm91dCB1bmNvbmRpdGlvbmFsbHkgcmVsb2Nh dGluZyB0aGUgZmRfdGFwLiBQbGVhc2UgY2xhcmlmeTogYXJlIHlvdSBzdWdnZXN0aW5nIHRoYXQg d2Ugc2hvdWxkIHNraXAgcmVsb2NhdGluZyBmZF90YXAgd2hlbiB3ZSBhbHNvIHNraXAgY2xvc2lu ZyBsZWFrZWQgZmlsZSBkZXNjcmlwdG9ycz8gVGhhdCBkZXNpZ24gd291bGQgbm90IGNhdXNlIGFu eSBvZiB0aGUgYnVncyBJIGltYWdpbmVkLiBGb3IgZXhhbXBsZSwgaXQgd291bGQgbmV2ZXIgYWZm ZWN0IHBhc3N0IG1vZGUgYmVjYXVzZSBza2lwcGluZyBpcyBmb3JiaWRkZW4gaW4gcGFzc3QgbW9k ZSBhbnl3YXlzLiBJZiB0aGUgdXNlciBkb2VzIHRhcCB8IHBhc3RhIC0tZmQgMCAtLXBhc3MtZmRz IGNtZCB0aGVuIHRoZSBmZF90YXAgc3RheXMgb24gc3RkaW4sIHNvIHRoZSBzcGF3bmVkIGNvbW1h bmQgZ2V0cyBpdCBvbiBzdGRpbjsgdGhhdCBpcyB0ZWNobmljYWxseSBhIGZlYXR1cmUgKCItLXBh c3MtZmRzIHByZXNlcnZlcyBmaWxlIGRlc2NyaXB0b3JzIiksIGJ1dCBJIHN0aWxsIHRoaW5rIGl0 J3MgdmVyeSB3ZWlyZCBiZWhhdmlvci4gSWYgeW91IGRvIGluc2lzdCB0aGF0IHRoaXMgd2VpcmQg YmVoYXZpb3IgaXMgaW4gZmFjdCB0aGUgY29ycmVjdCBiZWhhdmlvciwgdGhlbiB3ZSBjYW4gZGVt b3RlIHRoZSBmY250bCBjYWxsIGJhY2sgdG8gcGxhaW4gZHVwMiB3aXRoIGEgY29tbWVudCB0aGF0 IGV4cGxhaW5zIGl0IGlzIHNhZmUgdG8gY2xvc2UgYW5kIHJldXNlIGZkIDMgc2luY2UgdGhlIHVz ZXIgZGlkIG5vdCByZXF1ZXN0IHRvIHBhc3MtZmRzLiBUaGlzIGNvbW1lbnQgaXMgbmVjZXNzYXJ5 IHRvIHByZXZlbnQgYSBmdXR1cmUgYnVnIGlmIHNvbWVvbmUgcmVmYWN0b3JzIHRoZSBjb2RlIGNh cmVsZXNzbHkgKGR1cDIgY2xvc2VzIGZkIDMgd2hlbiB1c2VyIHdhbnRzIHRvIHBhc3MgZmQgMyku IFBsZWFzZSBsZXQgbWUga25vdyBpZiB0aGF0IGNoYW5nZSBpcyBzdGlsbCB3aGF0IHlvdSB3YW50 Lg0KDQpSaWNoYXJkDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KRnJvbTogTGF3 cmVuY2UsIFJpY2hhcmQgRSA8cmxhd3JlbmNlQHRhbXUuZWR1Pg0KU2VudDogTW9uZGF5LCBPY3Rv YmVyIDI2LCAyMDI2IDExOjE5IEFNDQpUbzogU3RlZmFubyBCcml2aW8gPHNicml2aW9AcmVkaGF0 LmNvbT4NCkNjOiBwYXNzdC1kZXZAcGFzc3QudG9wIDxwYXNzdC1kZXZAcGFzc3QudG9wPg0KU3Vi amVjdDogUmU6IFtQQVRDSCB2Ml0gcGFzdGE6IEFkZCAtLXBhc3MtZmRzIG9wdGlvbiB0byBza2lw IGNsb3NpbmcgZmlsZSBkZXNjcmlwdG9ycw0KDQpIb3dkeSBTdGVmYW5vLA0KDQpUaGFuayB5b3Ug Zm9yIGV4cGxhaW5pbmcgYWJvdXQgdGhlIHdoaXRlc3BhY2UgYW5kIHRoZSBnZXRvcHQgbG9uZyBp bmRleC4NCg0KUGFzc2luZyBjdHggZGlyZWN0bHkgdG8gY29uZl9mZHMgc2VlbXMgZmluZS4gSSBj aG9zZSB0byByZXR1cm4gYSBzdHJ1Y3QgYmVjYXVzZSBJIHdhbnRlZCB0byBhdm9pZCBzZXR0aW5n IGMtPmZkX3RhcCBpbml0aWFsbHkgdG8gdGhlIHVzZXItcGFzc2VkIHZhbHVlLCBiZWNhdXNlIGRv aW5nIHNvIG9iZnVzY2F0ZXMgdGhlIGZhY3QgdGhhdCB0aGUgdXNlci1wYXNzZWQgdmFsdWUgbWF5 IG5vdCBhY3R1YWxseSBiZSB1c2VkLiBJbiByZXRyb3NwZWN0LCB0aGUgY29uZnVzaW9uIHdvdWxk IGFsc28gYmUgcHJldmVudGVkIGJ5IGEgY29tbWVudCwgc28gSSB3aWxsIGp1c3QgZG8gdGhhdCBp bnN0ZWFkLg0KDQpJIHdhbnRlZCB0byB1bmNvbmRpdGlvbmFsbHkgcmVsb2NhdGUgdGhlIGZkX3Rh cCBiZWNhdXNlIEkgaW1hZ2luZWQgdGhlIGZvbGxvd2luZyBidWc6IGltYWdpbmUgaWYgc29tZW9u ZSBpcyB1c2luZyBwYXN0YSwgcGFzc2VzIHRoZSB0YXAgb24gc3RkaW4sIGRvZXMgTk9UIHJlcXVl c3QgdG8gcGFzcyBmZHMgKHRhcCB8IHBhc3RhIC1mZCAwKSwgYW5kIHdlIGNob29zZSBub3QgdG8g cmVsb2NhdGUgdGhlIHRhcC4gU2luY2Ugc3RkaW4gaXMgbmV2ZXIgY2xvc2VkLCB0aGUgdGFwIHdv dWxkIGJlIHBhc3NlZCB0byB0aGUgc3Bhd25lZCBjb21tYW5kIG9uIHN0ZGluLCB3aGljaCB3b3Vs ZCBtb3N0IGxpa2VseSBjYXVzaW5nIHRoZSBzcGF3bmVkIGNvbW1hbmQgdG8gaGF2ZSB1bmV4cGVj dGVkIGJlaGF2aW9yLiBBZGRpdGlvbmFsbHksIHRoaXMgY2hvaWNlIGlzIGVzcGVjaWFsbHkgd2Vp cmQgY29uc2lkZXJpbmcgdGhhdCB0aGUgaHlwb3RoZXRpY2FsIHVzZXIgZGlkIG5vdCBldmVuIHJl cXVlc3QgdGhlIHRhcCB0byBiZSBwYXNzZWQgdG8gdGhlIHNwYXduZWQgY29tbWFuZCBhdCBhbGwu IEkgd291bGQgYWxzbyBsaWtlIHRvIHBvaW50IG91dCB0aGF0IHRoZSBjb2RlIGFscmVhZHkgdW5j b25kaXRpb25hbGx5IHJlbG9jYXRlcyB0aGUgdGFwOiBJIGFzc3VtZSB0aGF0IHNvbWVvbmUgbXVz dCBoYXZlIGZvcmVzZWVuIHNvbWUgb3RoZXIgYnVnIChwZXJoYXBzIHJlbGF0ZWQgdG8gc3RkaW4g aW4gcGFzc3QgbW9kZT8pIGFuZCBJIGRvbid0IHdhbnQgdG8gY2F1c2UgYSByZWdyZXNzaW9uIGlu IGFub3RoZXIgd29ya2Zsb3cgdGhhdCBJIGRvbid0IGtub3cgYW55dGhpbmcgYWJvdXQuDQoNClJp Y2hhcmQNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IFN0ZWZhbm8g QnJpdmlvIDxzYnJpdmlvQHJlZGhhdC5jb20+DQpTZW50OiBTdW5kYXksIE9jdG9iZXIgMjUsIDIw MjYgNzowMSBBTQ0KVG86IExhd3JlbmNlLCBSaWNoYXJkIEUgPHJsYXdyZW5jZUB0YW11LmVkdT4N CkNjOiBwYXNzdC1kZXZAcGFzc3QudG9wIDxwYXNzdC1kZXZAcGFzc3QudG9wPg0KU3ViamVjdDog UmU6IFtQQVRDSCB2Ml0gcGFzdGE6IEFkZCAtLXBhc3MtZmRzIG9wdGlvbiB0byBza2lwIGNsb3Np bmcgZmlsZSBkZXNjcmlwdG9ycw0KDQpSaWNoYXJkLCB0aGFua3MgZm9yIHRoZSBuZXcgdmVyc2lv biBhbmQgZm9yIHlvdXIgcGF0aWVuY2UhIFRoZSBsb2dpYyBsb29rcyBnb29kIHRvIG1lLCBidXQg SSB0aGluayB3ZSBjYW4gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gYSBiaXQgc2ltcGxlci4gQSBm ZXcgY29tbWVudHMgaW5saW5lOiBPbiBUaHUsIDIyIE9jdCAyMDI2IDEyOuKAijA4OuKAijIzIC0w NTAwIFJpY2hhcmQgTGF3cmVuY2UgPHJsYXdyZW5jZUDigIp0YW11LuKAimVkdT4NClpqUWNtUVJZ RnBmcHRCYW5uZXJTdGFydA0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVy DQpUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBvcmdhbml6YXRpb24uDQoNClpq UWNtUVJZRnBmcHRCYW5uZXJFbmQNCg0KUmljaGFyZCwgdGhhbmtzIGZvciB0aGUgbmV3IHZlcnNp b24gYW5kIGZvciB5b3VyIHBhdGllbmNlIQ0KDQpUaGUgbG9naWMgbG9va3MgZ29vZCB0byBtZSwg YnV0IEkgdGhpbmsgd2UgY2FuIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uDQphIGJpdCBzaW1wbGVy LiAgQSBmZXcgY29tbWVudHMgaW5saW5lOg0KDQpPbiBUaHUsIDIyIE9jdCAyMDI2IDEyOjA4OjIz IC0wNTAwDQpSaWNoYXJkIExhd3JlbmNlIDxybGF3cmVuY2VAdGFtdS5lZHU+IHdyb3RlOg0KDQo+ IFdoZW4gcGFzdGEgc3Bhd25zIGEgY29tbWFuZCAoYHBhc3RhIFtvcHRpb25zXSAtLSBbY29tbWFu ZF1gKSwgYWxsIG9wZW4gZmlsZQ0KPiBkZXNjcmlwdG9ycyBpbmhlcml0ZWQgZnJvbSB0aGUgcGFy ZW50IHByb2Nlc3MgZXhjZXB0IHN0YW5kYXJkIHN0cmVhbXMgKDAtMikNCj4gYW5kIHRoZSB0YXAg ZGVzY3JpcHRvciAoYC0tZmRgKSBhcmUgbm9ybWFsbHkgY2xvc2VkIGJ5IGBpc29sYXRlX2Zkcygp YC4NCj4NCj4gSG93ZXZlciwgd2hlbiBwYXN0YSBpcyB1c2VkIGZvciB0ZXN0aW5nLCBkZXZlbG9w bWVudCwgb3IgbGF1bmNoaW5nIHRvb2xzIGxpa2UNCj4gQnViYmxld3JhcCAoYGJ3cmFwYCksIHRo ZSBzcGF3bmVkIGNvbW1hbmQgbWF5IHJlcXVpcmUgZmlsZSBkZXNjcmlwdG9ycw0KPiBwYXNzZWQg ZGlyZWN0bHkgZnJvbSB0aGUgcGFyZW50IHByb2Nlc3MuIEluIHRoaXMgY2FzZSwgY2xvc2luZyBp bmhlcml0ZWQgZmlsZQ0KPiBkZXNjcmlwdG9ycyBicmVha3MgZXhwZWN0ZWQgYmVoYXZpb3IuDQo+ DQo+IEFkZCBhIGJvb2xlYW4gYC0tcGFzcy1mZHNgIGZsYWcgZm9yIHBhc3RhIG1vZGUgdGhhdCBz a2lwcyB0aGUgYGNsb3NlX3JhbmdlKClgDQo+IGNsZWFudXAgc3RlcCBpbiBgaXNvbGF0ZV9mZHMo KWAsIGxlYXZpbmcgYWxsIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBpbnRhY3QNCj4gZm9yIHRoZSBj aGlsZCBjb21tYW5kLg0KPg0KPiBTdW1tYXJ5IG9mIGNoYW5nZXM6DQo+DQo+IC0gSW50cm9kdWNl IGBzdHJ1Y3QgZmRfb3B0c2AgYW5kIHVwZGF0ZSBgY29uZl90YXBfZmQoKWAgdG8gYGNvbmZfZmRz KClgLA0KPiAgIGFsbG93aW5nIGVhcmx5IHBhcnNpbmcgb2YgYm90aCBgLUZgL2AtLWZkYCBhbmQg YC0tcGFzcy1mZHNgIGJlZm9yZSBtYWluDQo+ICAgb3B0aW9uIHByb2Nlc3NpbmcuDQo+IC0gVXBk YXRlIGBpc29sYXRlX2ZkcygpYCB0byBjaGVjayBgb3B0cy5wYXNzX2Zkc2A6IGlmIHNldCwgc2tp cCBjYWxsaW5nDQo+ICAgYGNsb3NlX3JhbmdlKClgIHdoaWxlIHN0aWxsIHJlbG9jYXRpbmcgdGhl IHRhcCBmZCBvdXQgb2Ygc3RhbmRhcmQgc3RyZWFtDQo+ICAgcmFuZ2UgKDAtMikgaWYgbmVlZGVk Lg0KPiAtIEVuZm9yY2UgdmFsaWRhdGlvbiBpbiBgY29uZigpYCBlbnN1cmluZyBgLS1wYXNzLWZk c2AgaXMgcmVzdHJpY3RlZCB0byBwYXN0YQ0KPiAgIG1vZGUgd2hlbiBzcGF3bmluZyBhIGNvbW1h bmQgKGluY29tcGF0aWJsZSB3aXRoIGF0dGFjaGluZyB0byBhbg0KPiAgIGV4aXN0aW5nIG5ldG5z KS4NCj4gLSBVcGRhdGUgbWFuIHBhZ2UgYW5kIHVzYWdlIGhlbHAgb3V0cHV0Lg0KPg0KPiBMaW5r OiBodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9idWdzLnBhc3N0LnRvcC9zaG93 X2J1Zy5jZ2k/aWQ9MjA0X187ISFLd05WbnFSdiFHT1BvZHN0SnExMGRfWExQdHBRS3Vqa2JJRlZC UFlJbXRwOUpfV3lPbENJbTVLNXdPa2lWTDQ1MjNSLVlFOEpRX0ZPOXZRX1ZsSzMwcFlCTiQNCj4g U2lnbmVkLW9mZi1ieTogUmljaGFyZCBMYXdyZW5jZSA8cmxhd3JlbmNlQHRhbXUuZWR1Pg0KPiAt LS0NCj4gIGNvbmYuYyAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0NCj4gIGNvbmYuaCAgICAgIHwgIDcgKysrKy0NCj4gIGlzb2xhdGlvbi5jIHwgNzQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g IGlzb2xhdGlvbi5oIHwgIDIgKy0NCj4gIHBhc3N0LjEgICAgIHwgIDUgKysrKw0KPiAgcGFzc3Qu YyAgICAgfCAgMiArLQ0KPiAgcGFzc3QuaCAgICAgfCAgMiArKw0KPiAgNyBmaWxlcyBjaGFuZ2Vk LCA5OSBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBhL2Nv bmYuYyBiL2NvbmYuYw0KPiBpbmRleCAxNDlhNGM3Li40NDc5NDY3IDEwMDY0NA0KPiAtLS0gYS9j b25mLmMNCj4gKysrIGIvY29uZi5jDQo+IEBAIC03NTAsNyArNzUwLDkgQEAgcGFzdGFfb3B0czoN Cj4gICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBEb24ndCBjb3B5IGFsbCBh ZGRyZXNzZXMgdG8gbmFtZXNwYWNlXG4iDQo+ICAgICAgICAgICAgICAgIiAgLS1ucy1tYWMtYWRk ciBBRERSICAgU2V0IE1BQyBhZGRyZXNzIG9uIHRhcCBpbnRlcmZhY2VcbiINCj4gICAgICAgICAg ICAgICAiICAtLW5vLXNwbGljZSAgICAgICAgICBEaXNhYmxlIGluYm91bmQgc29ja2V0IHNwbGlj aW5nXG4iDQo+IC0gICAgICAgICAgICAgIiAgLS1zcGxpY2Utb25seSAgICAgICAgT25seSBlbmFi bGUgbG9vcGJhY2sgZm9yd2FyZGluZ1xuIik7DQo+ICsgICAgICAgICAgICAgIiAgLS1zcGxpY2Ut b25seSAgICAgICAgT25seSBlbmFibGUgbG9vcGJhY2sgZm9yd2FyZGluZ1xuIg0KPiArICAgICAg ICAgICAgICIgIC0tcGFzcy1mZHMgICAgICAgICAgIFByZXNlcnZlIG9wZW4gZmlsZSBkZXNjcmlw dG9ycyBhbmRcbiINCj4gKyAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBwYXNz IHRoZW0gdG8gdGhlIHNwYXduZWQgY29tbWFuZFxuIik7DQoNClRoZSB1c2FnZSBtZXNzYWdlIGlz IGFscmVhZHkgdmVyeSBsb25nLCBhbmQgaXQncyBub3QgbWVhbnQgYXMgYQ0KY29tcHJlaGVuc2l2 ZSBkb2N1bWVudGF0aW9uLCBqdXN0IGEgcXVpY2sgcmVmZXJlbmNlLCBzbyBJIGd1ZXNzIHdlDQpj b3VsZCBzaW1wbHkgc2F5ICJQcmVzZXJ2ZSBvcGVuIGZpbGUgZGVzY3JpcHRvcnMiIGhlcmUsIGFu ZCBzYXZlIG9uZQ0KbGluZSBvZiBvdXRwdXQuDQoNCj4NCj4gICAgICAgcGFzc3RfZXhpdChzdGF0 dXMpOw0KPiAgfQ0KPiBAQCAtMTEzNiwzNiArMTEzOCw0MyBAQCBzdGF0aWMgdm9pZCBjb25mX3Nv Y2tfbGlzdGVuKGNvbnN0IHN0cnVjdCBjdHggKmMpDQo+ICAgICAgICAgICAgICAgZGllX3BlcnJv cigiQ291bGRuJ3QgYWRkIGNvbmZpZ3VyYXRpb24gc29ja2V0IHRvIGVwb2xsIik7DQo+ICB9DQo+ DQo+ICsNCj4gKw0KPiArDQoNClVucmVsYXRlZCBibGFuayBsaW5lcy4NCg0KPiAgLyoqDQo+IC0g KiBjb25mX3RhcF9mZCgpIC0gUmVhZCB0YXAgZmQgYXMgc3VwcGxpZWQgYnkgLUYgY29tbWFuZCBs aW5lIG9wdGlvbg0KPiArICogY29uZl9mZHMoKSAtIFJlYWQgZmRzIGFzIHN1cHBsaWVkIGJ5IC1G Ly0tZmQgYW5kIC0tcGFzcy1mZHMgb3B0aW9ucw0KPiAgICogQGFyZ2M6ICAgIEFyZ3VtZW50IGNv dW50DQo+ICAgKiBAYXJndjogICAgQ29tbWFuZCBsaW5lIG9wdGlvbnMNCj4gLSAqDQo+IC0gKiBS ZXR1cm46IGZkIG51bWJlciBmcm9tIC0tZmQgb3B0aW9uLCBvciAtMSBpZiBub3Qgc3VwcGxpZWQN Cj4gKw0KPiArICogUmV0dXJuOiBmZF9vcHRzIHsgZmRfdGFwLCBwYXNzX2ZkcyB9DQoNClJldHVy bmluZyBhIHN0cnVjdCB3b3JrcywgYW5kIGl0IG1pZ2h0IGV2ZW4gbG9vayBlbGVnYW50LCBidXQg aXQncyBub3QNCnNvbWV0aGluZyB3ZSBkbyBmcmVxdWVudGx5IGluIHRoaXMgY29kZWJhc2UsIG9y IG5vdCBhdCBhbGwsIHdpdGggdGhlDQpnZW5lcmFsIHJlYXNvbmluZyBiZWluZyB0aGF0IHN0cnVj dHMgZXZlbnR1YWxseSBncm93IGFuZCwgaW4NCm5vbi10cml2aWFsIGNhc2VzLCB3ZSByaXNrIGhh dmluZyBjb3BpZXMgb24gcmV0dXJuIHRoYXQgbWlnaHQgZ3JvdyB3ZWxsDQpiZXlvbmQgd2hhdCB3 YXMgaW50ZW5kZWQuICBPbiB0b3Agb2YgdGhhdCwgaWYgeW91IHdhbnQgdG8gc2lnbmFsIGZhaWx1 cmUNCmF0IHNvbWUgcG9pbnQsIHlvdSB3b3VsZCBuZWVkIGEgc21hbGwgcmV3b3JrLg0KDQpJdCdz IGFic29sdXRlbHkgZmluZSB0byBkbyB0aGlzIGhlcmUsIGJ1dCBJIHdvdWxkIHN0aWxsIGhhdmUg YQ0Kc2xpZ2h0IHByZWZlcmVuY2UgZm9yIGNvbnNpc3RlbmN5IChtYWtlIGl0IGEgdm9pZCBpZiBp dCBuZXZlciBmYWlscywNCmFuZCBwYXNzIHRoZSB0d28gYXJndW1lbnRzIGFzIHBvaW50ZXJzKS4g IEhvd2V2ZXIsIEkgZG9uJ3QgdGhpbmsgd2UNCm5lZWQgdGhpcyBhdCBhbGwuDQoNCllvdSBhcmUg YWxyZWFkeSBwYXNzaW5nIGEgc3RydWN0IGN0eCB0byB0aGUgY2FsbGVyIG5vdywgaXNvbGF0ZV9m ZHMoKS4NCkl0IGNvbnRhaW5zIChhbG1vc3QpIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uLiAgVGhp cyBmdW5jdGlvbiByZWFkcw0KY29uZmlndXJhdGlvbi4gIEl0IGNvdWxkIHZlcnkgbmF0dXJhbGx5 IHN0b3JlIGl0IHRoZXJlIGFuZCB5b3UncmUgZG9uZQ0Kd2l0aCBpdDoganVzdCBzZXQgYy0+ZmRf dGFwIGFuZCBjLT5wYXN0YV9wYXNzX2ZkcyBoZXJlICh3aXRoIGEgbWlub3INCmNhdmVhdCBhcm91 bmQgYy0+ZmRfdGFwLCBzZWUgYmVsb3cpLg0KDQo+ICAgKi8NCj4gLWludCBjb25mX3RhcF9mZChp bnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICtzdHJ1Y3QgZmRfb3B0cyBjb25mX2ZkcyhpbnQgYXJn YywgY2hhciAqKmFyZ3YpDQo+ICB7DQo+IC0gICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gb3B0ZmRb XSA9IHsgeyAiZmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0YnIH0sDQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAwIH0sIH07DQo+IC0gICAgIGNvbnN0IGNo YXIgKmZkYXJnID0gTlVMTCwgKnA7DQo+IC0gICAgIHVuc2lnbmVkIGxvbmcgdmFsOw0KPiArICAg ICBjb25zdCBzdHJ1Y3Qgb3B0aW9uIG9wdFtdID0gew0KPiArICAgICAgICAgICAgIHsgImZkIiwg ICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0YnIH0sDQoNCllvdSdyZSBsZWF2aW5nIGEg Yml0IG9mIHNwYWNlIGhlcmUgYmVjYXVzZSBpdCdzIGRvbmUgaW4gY29uZigpLCBzbyB0aGF0DQph cmd1bWVudHMgY2FuIGJlIGFsaWduIGFuZCB0aGlzIGJlY29tZXMgYSBtb3JlIHJlYWRhYmxlIGZv cm0gb2YgdGFibGUsDQpidXQ6DQoNCj4gKyAgICAgICAgICAgICB7ICJwYXNzLWZkcyIsIG5vX2Fy Z3VtZW50LCBOVUxMLCAzNCB9LA0KDQouLi50aGVuIGl0J3Mgbm90IGFjdHVhbGx5IGFsaWduZWQg aGVyZS4gQW5kIDM0IGp1c3QgaGFwcGVucyB0byBiZSB0aGUNCm1hdGNoaW5nIGluZGV4IGluIGdl dG9wdF9sb25nKCkgaW4gY29uZigpLCBidXQgaXQncyBraW5kIG9mIGNvbmZ1c2luZw0KdG8gaGF2 ZSBpdCBoZXJlOiBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sIGl0J3MgdGhlIGZp cnN0DQpvcHRpb24gaW5kZXggd2l0aG91dCBzaG9ydC1oYW5kLCBzbyBpdCBzaG91bGQgYmUgMS4N Cg0KVGhhdCBpcywgSSB0aGluayB0aGlzIHNob3VsZCBiZToNCg0KICAgICAgICAgICAgICAgIHsg ImZkIiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgICAgICBOVUxMLCAgICdGJyB9LA0KICAg ICAgICAgICAgICAgIHsgInBhc3MtZmRzIiwgICBub19hcmd1bWVudCwgICAgICAgICAgICBOVUxM LCAgIDEgfSwNCg0KPiArICAgICAgICAgICAgIHsgMCB9LA0KPiArICAgICB9Ow0KPiArICAgICBz dHJ1Y3QgZmRfb3B0cyBvcHRzID0geyAuZmRfdGFwID0gLTEsIC5wYXNzX2ZkcyA9IGZhbHNlIH07 DQo+ICAgICAgIGludCBuYW1lOw0KPg0KPiAgICAgICBvcHRpbmQgPSAwOw0KPiAgICAgICBkbyB7 DQo+IC0gICAgICAgICAgICAgbmFtZSA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICItOkY6Iiwg b3B0ZmQsIE5VTEwpOw0KPiAtICAgICAgICAgICAgIGlmIChuYW1lID09ICdGJykNCj4gLSAgICAg ICAgICAgICAgICAgICAgIGZkYXJnID0gb3B0YXJnOw0KPiAtICAgICB9IHdoaWxlIChuYW1lICE9 IC0xKTsNCj4gLQ0KPiAtICAgICBpZiAoIWZkYXJnKQ0KPiAtICAgICAgICAgICAgIHJldHVybiAt MTsNCj4gKyAgICAgICAgICAgICBuYW1lID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgIi06Rjoi LCBvcHQsIE5VTEwpOw0KPiArICAgICAgICAgICAgIGlmIChuYW1lID09ICdGJykgew0KPiArICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IG9wdGFyZzsNCj4gKyAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsOw0KPg0KPiAtICAgICBwID0gZmRhcmc7DQo+IC0g ICAgIGlmICghcGFyc2VfdW5zaWduZWQoJnAsIDAsICZ2YWwpIHx8ICFwYXJzZV9lb2kocCkgfHwg dmFsID4gSU5UX01BWCkNCj4gLSAgICAgICAgICAgICBkaWUoIkludmFsaWQgLS1mZDogJXMiLCBm ZGFyZyk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlX3Vuc2lnbmVkKCZwLCAw LCAmdmFsKSB8fCAhcGFyc2VfZW9pKHApIHx8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg dmFsID4gSU5UX01BWCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGllKCJJbnZh bGlkIC0tZmQ6ICVzIiwgb3B0YXJnKTsNCj4NCj4gLSAgICAgcmV0dXJuIHZhbDsNCj4gKyAgICAg ICAgICAgICAgICAgICAgIG9wdHMuZmRfdGFwID0gKGludCl2YWw7DQo+ICsgICAgICAgICAgICAg fSBlbHNlIGlmIChuYW1lID09IDM0KSB7DQoNCihkb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoaXMg dG8gJzEnIGlmIHlvdSBnbyBmb3IgdGhlIHZlcnNpb24gSQ0Kc3VnZ2VzdGVkIGFib3ZlKQ0KDQo+ ICsgICAgICAgICAgICAgICAgICAgICBvcHRzLnBhc3NfZmRzID0gdHJ1ZTsNCj4gKyAgICAgICAg ICAgICB9DQo+ICsgICAgIH0gd2hpbGUgKG5hbWUgIT0gLTEpOw0KDQpOaXQ6IGV4dHJhIG5ld2xp bmUgaGVyZSBmb3IgY29uc2lzdGVuY3kgKHNlcGFyYXRlIHJldHVybiBzdGF0ZW1lbnQgZnJvbQ0K ZnVuY3Rpb24gbG9naWMpLg0KDQo+ICsgICAgIHJldHVybiBvcHRzOw0KPiAgfQ0KPg0KPiAgLyoq DQo+IEBAIC0xMzE3LDYgKzEzMjYsNyBAQCB2b2lkIGNvbmYoc3RydWN0IGN0eCAqYywgaW50IGFy Z2MsIGNoYXIgKiphcmd2KQ0KPiAgICAgICAgICAgICAgIHsiY29uZi1wYXRoIiwgICByZXF1aXJl ZF9hcmd1bWVudCwgICAgICBOVUxMLCAgICAgICAgICAgJ2MnIH0sDQo+ICAgICAgICAgICAgICAg eyJjaHJvb3QtZmFsbGJhY2siLCBub19hcmd1bWVudCwgICAgICAgIE5VTEwsICAgICAgICAgICAz MiB9LA0KPiAgICAgICAgICAgICAgIHsibm8tcGlkbnMiLCAgICBub19hcmd1bWVudCwgICAgICAg ICAgICBOVUxMLCAgICAgICAgICAgMzMgfSwNCj4gKyAgICAgICAgICAgICB7InBhc3MtZmRzIiwg ICAgcmVxdWlyZWRfYXJndW1lbnQsICAgICAgTlVMTCwgICAgICAgICAgIDM0IH0sDQo+ICAgICAg ICAgICAgICAgeyAwIH0sDQo+ICAgICAgIH07DQo+ICAgICAgIGNvbnN0IGNoYXIgKm9wdHN0cmlu ZyA9ICIrZHFmZWw6aHM6YzpGOkk6cDpQOm06YTpuOk06ZzppOm86RDpTOkg6NDYxdDp1OlQ6VToi Ow0KPiBAQCAtMTU2Nyw2ICsxNTc3LDExIEBAIHZvaWQgY29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQo+DQo+ICAgICAgICAgICAgICAgICAgICAgICBjLT5ub19waWRu cyA9IHRydWU7DQo+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAg ICBjYXNlIDM0Og0KPiArICAgICAgICAgICAgICAgICAgICAgLyogLS1wYXNzLWZkcyB3YXMgcGFy c2VkIGVhcmx5IGFuZCBjLT5wYXN0YV9wYXNzX2ZkcyBzZXQgaW4gbWFpbigpICovDQoNCkl0J3Mg bm90IGFjdHVhbGx5IHNldCBpbiBtYWluKCkuICBCdXQgdGhlIHJlbGV2YW50IGZhY3QgaGVyZSBp cyBzaW1wbHkNCnRoYXQgLS1wYXNzLWZkcyB3YXMgcGFyc2VkIGVhcmx5LCBzbyB0aGF0IHdvdWxk IGJlIGVub3VnaC4gIElmIGl0J3Mgbm90DQplbm91Z2ggZm9yIHNvbWUgcmVhc29uLCB5b3Ugc2hv dWxkIHdyYXAgdGhpcyBjb21tZW50IHRvIDgwIGNvbHVtbnMuDQoNCj4gKyAgICAgICAgICAgICAg ICAgICAgIGlmIChjLT5tb2RlICE9IE1PREVfUEFTVEEpDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRpZSgiLS1wYXNzLWZkcyBpcyBmb3IgcGFzdGEgbW9kZSBvbmx5Iik7DQo+ICsg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gICAgICAgICAgICAgICBjYXNlICdkJzoNCj4g ICAgICAgICAgICAgICAgICAgICAgIGMtPmRlYnVnID0gMTsNCj4gICAgICAgICAgICAgICAgICAg ICAgIGMtPnF1aWV0ID0gMDsNCj4gQEAgLTE5MjksNiArMTk0NCw5IEBAIHZvaWQgY29uZihzdHJ1 Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ICAgICAgIGVsc2UgaWYgKG9wdGlu ZCAhPSBhcmdjKQ0KPiAgICAgICAgICAgICAgIGRpZSgiRXh0cmEgbm9uLW9wdGlvbiBhcmd1bWVu dDogJXMiLCBhcmd2W29wdGluZF0pOw0KPg0KPiArICAgICBpZiAoYy0+cGFzdGFfcGFzc19mZHMg JiYgKm5ldG5zKQ0KPiArICAgICAgICAgICAgIGRpZSgiLS1wYXNzLWZkcyBjYW4gb25seSBiZSB1 c2VkIHdoZW4gc3Bhd25pbmcgYSBjb21tYW5kIik7DQo+ICsNCj4gICAgICAgaWYgKGMtPm5vX3Bp ZG5zICYmICpuZXRucykNCj4gICAgICAgICAgICAgICBkaWUoIi0tbm8tcGlkbnMgaXMgaW5jb21w YXRpYmxlIHdpdGggUElEIG9yIC0tbmV0bnMiKTsNCj4NCj4gZGlmZiAtLWdpdCBhL2NvbmYuaCBi L2NvbmYuaA0KPiBpbmRleCAxOWJmOWJjLi5lMTE2NjFmIDEwMDY0NA0KPiAtLS0gYS9jb25mLmgN Cj4gKysrIGIvY29uZi5oDQo+IEBAIC02LDggKzYsMTMgQEANCj4gICNpZm5kZWYgQ09ORl9IDQo+ ICAjZGVmaW5lIENPTkZfSA0KPg0KPiArc3RydWN0IGZkX29wdHMgew0KPiArICAgICBpbnQgZmRf dGFwOw0KPiArICAgICBib29sIHBhc3NfZmRzOw0KPiArfTsNCj4gKw0KDQpUaGlzIGNvdWxkIGdv IGF3YXksIGlmIHdlIHBhc3Mgc3RydWN0IGN0eCB0byBjb25mX2ZkcygpLg0KDQo+ICBlbnVtIHBh c3N0X21vZGVzIGNvbmZfbW9kZShpbnQgYXJnYywgY2hhciAqYXJndltdKTsNCj4gLWludCBjb25m X3RhcF9mZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KPiArc3RydWN0IGZkX29wdHMgY29uZl9m ZHMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsNCj4gIHZvaWQgY29uZihzdHJ1Y3QgY3R4ICpjLCBp bnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KPiAgdm9pZCBjb25mX2xpc3Rlbl9oYW5kbGVyKHN0cnVj dCBjdHggKmMsIHVpbnQzMl90IGV2ZW50cyk7DQo+ICB2b2lkIGNvbmZfaGFuZGxlcihzdHJ1Y3Qg Y3R4ICpjLCB1aW50MzJfdCBldmVudHMpOw0KPiBkaWZmIC0tZ2l0IGEvaXNvbGF0aW9uLmMgYi9p c29sYXRpb24uYw0KPiBpbmRleCBhMDA0NzVmLi40MTA1ZGMzIDEwMDY0NA0KPiAtLS0gYS9pc29s YXRpb24uYw0KPiArKysgYi9pc29sYXRpb24uYw0KPiBAQCAtMjUwLDQ2ICsyNTAsNjQgQEAgdm9p ZCBpc29sYXRlX2luaXRpYWwodm9pZCkNCj4gIH0NCj4NCj4gIC8qDQo+IC0gKiBpc29sYXRlX2Zk cygpIC0gQ2xvc2UgbGVha2VkIGZpbGVzLCBidXQgbm90IC0tZmQsIHN0ZGluLCBzdGRvdXQsIHN0 ZGVycg0KPiArICogaXNvbGF0ZV9mZHMoKSAtIENsb3NlIGxlYWtlZCBmaWxlcyBpZiBhcHBsaWNh YmxlDQo+ICsgKiBAYzogICAgICAgICAgICAgICBFeGVjdXRpb24gY29udGV4dA0KPiAgICogQGFy Z2M6ICAgIEFyZ3VtZW50IGNvdW50DQo+IC0gKiBAYXJndjogICAgQ29tbWFuZCBsaW5lIG9wdGlv bnMsIGFzIHdlIG5lZWQgdG8gc2tpcCBhbnkgZmlsZSBnaXZlbiB2aWEgLS1mZA0KPiArICogQGFy Z3Y6ICAgIENvbW1hbmQgbGluZSBvcHRpb25zDQo+ICAgKg0KPiAgICogU2hvdWxkOg0KPiAtICog IC0gY2xvc2UgYWxsIG9wZW4gZmlsZXMgZXhjZXB0IGZvciBzdGFuZGFyZCBzdHJlYW1zIGFuZCB0 aGUgb25lIGZyb20gLS1mZA0KPiArICogIC0gY2xvc2UgYWxsIG9wZW4gZmlsZXMgZXhjZXB0IGZv ciBzdGFuZGFyZCBzdHJlYW1zIGFuZCB0aGUgb25lIGZyb20gLS1mZCwNCj4gKyAgICAgIHVubGVz cyAtLXBhc3MtZmRzIGlzIHVzZWQsIGluIHdoaWNoIGNhc2UgYWxsIGZkcyBhcmUgcHJlc2VydmVk DQo+ICAgKiAgLSBtb3ZlIHRoZSAtLWZkIGRlc2NyaXB0b3Igb3V0IG9mIHRoZSByYW5nZSAwLTIN Cj4gLSAqDQo+IC0gKiBSZXR1cm46IG5ldyBmZCBudW1iZXIgZm9yIGRlc2NyaXB0b3IgZnJvbSAt LWZkLCBvciAtMSBpZiBub3Qgc3BlY2lmaWVkDQo+ICsgKiAgLSB1cGRhdGUgdGhlIGV4ZWN1dGlv biBjb250ZXh0DQo+ICAgKi8NCj4gLWludCBpc29sYXRlX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFy Z3YpDQo+ICt2b2lkIGlzb2xhdGVfZmRzKHN0cnVjdCBjdHggKmMsIGludCBhcmdjLCBjaGFyICoq YXJndikNCj4gIHsNCj4gLSAgICAgaW50IGZkLCBjbG9zZV9mcm9tID0gU1RERVJSX0ZJTEVOTyAr IDE7DQo+ICsgICAgIHN0cnVjdCBmZF9vcHRzIG9wdHMgPSBjb25mX2ZkcyhhcmdjLCBhcmd2KTsN Cj4gKyAgICAgaWYgKG9wdHMuZmRfdGFwID49IDAgJiYgb3B0cy5mZF90YXAgPCAzKSB7DQo+ICsg ICAgICAgICAgICAgLyogTW92ZSB0aGUgdGFwIGZkIHRvIGEgc2FmZXIgbG9jYXRpb24gKi8NCg0K RG8gd2UgcmVhbGx5IG5lZWQgdG8gZG8gdGhpcyB1bmNvbmRpdGlvbmFsbHksIGV2ZW4gaWYgd2Un cmUgbm90IGNsb3NpbmcNCmZpbGUgZGVzY3JpcHRvcnM/ICBJIGRvbid0IHNlZSBhIHJlYXNvbi4N Cg0KVGhhdCBpcywgSSBndWVzcyB3ZSBjb3VsZCBtYWtlIHRoaXMgbXVjaCBzaW1wbGVyLCBsZXQg Y29uZl9mZHMoKSBzZXQNCmMtPnBhc3RhX3Bhc3NfZmRzLCBhbmQgcmV0dXJuIGVhcmx5IGhlcmUg aWYgaXQncyBzZXQuICBObyBsb2dpYyBjaGFuZ2VzDQpuZWVkZWQgaW4gdGhpcyBmdW5jdGlvbiwg anVzdCBzb21ldGhpbmcgdG8gYWRhcHQsIGluIGNhc2UgeW91IGdvIHRoZQ0Kd2F5IEkgc3VnZ2Vz dGVkIHdpdGggY29uZl9mZHMoKSBzZXR0aW5nIGMtPmZkX3RhcDoNCg0KPiArICAgICAgICAgICAg IGludCBuZXdfZmQgPSBmY250bChvcHRzLmZkX3RhcCwgRl9EVVBGRCwgU1RERVJSX0ZJTEVOTyAr IDEpOw0KPg0KPiAtICAgICBmZCA9IGNvbmZfdGFwX2ZkKGFyZ2MsIGFyZ3YpOw0KPiArICAgICAg ICAgICAgIGlmIChuZXdfZmQgPCAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgZGllX3BlcnJv cigiQ291bGQgbm90IHJlbG9jYXRlIC0tZmQgZGVzY3JpcHRvciIpOw0KPg0KPiAtICAgICBpZiAo ZmQgPj0gMCkgew0KPiAtICAgICAgICAgICAgIC8qIE1vdmUgdGhlIHBhc3NlZCBmZCB0byBhIG1v cmUgY29udmVuaWVudCBsb2NhdGlvbiAqLw0KPiAtICAgICAgICAgICAgIGlmIChmZCAhPSBjbG9z ZV9mcm9tICAgICAgICAgICAgICAgICAgICAmJg0KDQouLi50aGlzIHdvdWxkIG5lZWQgdG8gdXNl IGMtPmZkX3RhcCwgYW5kLi4uDQoNCj4gLSAgICAgICAgICAgICAgICAgKGR1cDIoZmQsIGNsb3Nl X2Zyb20pICE9IGNsb3NlX2Zyb20gfHwNCj4gLSAgICAgICAgICAgICAgICAgIGNsb3NlKGZkKSkp DQo+IC0gICAgICAgICAgICAgICAgICAgICBkaWVfcGVycm9yKCJDb3VsZCBub3QgbW92ZSAtLWZk IGRlc2NyaXB0b3IiKTsNCj4gLSAgICAgICAgICAgICBmZCA9IGNsb3NlX2Zyb20rKzsNCj4gKyAg ICAgICAgICAgICBjbG9zZShvcHRzLmZkX3RhcCk7DQo+ICsgICAgICAgICAgICAgb3B0cy5mZF90 YXAgPSBuZXdfZmQ7DQo+ICAgICAgIH0NCj4gKyAgICAgYy0+ZmRfdGFwID0gb3B0cy5mZF90YXA7 DQoNCi4uLnRoaXMgd291bGQgZ28gYXdheSBhcyB3ZWxsLg0KDQo+ICsgICAgIGMtPnBhc3RhX3Bh c3NfZmRzID0gb3B0cy5wYXNzX2ZkczsNCj4gKw0KPiArICAgICAvKiBDbG9zZSBsZWFrZWQgZmls ZSBkZXNjcmlwdG9ycyB1bmxlc3MgLS1wYXNzLWZkcyBpcyB1c2VkICovDQo+ICsgICAgIGlmICgh b3B0cy5wYXNzX2Zkcykgew0KPiArICAgICAgICAgICAgIGludCByYyA9IDA7DQo+ICsgICAgICAg ICAgICAgLyogS2VlcCBzdGFuZGFyZCBzdHJlYW1zIGFuZCB0aGUgdGFwIGZkIChpZiBnaXZlbikg Ki8NCj4gKyAgICAgICAgICAgICBpbnQga2VlcCA9IG9wdHMuZmRfdGFwID49IFNUREVSUl9GSUxF Tk8gPyBvcHRzLmZkX3RhcCA6IFNUREVSUl9GSUxFTk87DQo+ICsNCj4gKyAgICAgICAgICAgICBp ZiAoa2VlcCA+IFNUREVSUl9GSUxFTk8gKyAxKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAv KiBUYXAgZmQgd2FzIHJlbG9jYXRlZCB0byBhYm92ZSBzb21lIG90aGVyIGxlYWtlZCBmZChzKSov DQo+ICsgICAgICAgICAgICAgICAgICAgICAvKiBDbG9zZSBmZHMgYmV0d2VlbiBzdGRlcnIgYW5k IHRoZSB0YXAgZmQgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZV9yYW5nZShT VERFUlJfRklMRU5PICsgMSwga2VlcCAtIDEsIENMT1NFX1JBTkdFX1VOU0hBUkUpKQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IC0xOw0KPiArICAgICAgICAgICAgIH0NCj4N Cj4gLSAgICAgaWYgKGNsb3NlX3JhbmdlKGNsb3NlX2Zyb20sIH4wVSwgQ0xPU0VfUkFOR0VfVU5T SEFSRSkpIHsNCj4gLSAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09 IEVJTlZBTCkgew0KPiAtICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBwcm9iYWJseSBtZWFu cyBjbG9zZV9yYW5nZSgpIG9yIHRoZQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICogQ0xPU0Vf UkFOR0VfVU5TSEFSRSBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlDQo+IC0gICAgICAgICAg ICAgICAgICAgICAgKiBrZXJuZWwuICBOb3QgbXVjaCB3ZSBjYW4gZG8gaGVyZSBleGNlcHQgY2Fy cnkgb24gYW5kDQo+IC0gICAgICAgICAgICAgICAgICAgICAgKiBob3BlIGZvciB0aGUgYmVzdC4N Cj4gLSAgICAgICAgICAgICAgICAgICAgICAqLw0KPiAtICAgICAgICAgICAgICAgICAgICAgd2Fy bigNCj4gLSJDYW4ndCB1c2UgY2xvc2VfcmFuZ2UoKSB0byBlbnN1cmUgbm8gZmlsZXMgbGVha2Vk IGJ5IHBhcmVudCIpOw0KPiAtICAgICAgICAgICAgIH0gZWxzZSB7DQo+IC0gICAgICAgICAgICAg ICAgICAgICBkaWVfcGVycm9yKCJGYWlsZWQgdG8gY2xvc2UgZmlsZXMgbGVha2VkIGJ5IHBhcmVu dCIpOw0KPiArICAgICAgICAgICAgIC8qIENsb3NlIGFsbCBvdGhlciBmZHMgKi8NCj4gKyAgICAg ICAgICAgICBpZiAoY2xvc2VfcmFuZ2Uoa2VlcCArIDEsIH4wVSwgQ0xPU0VfUkFOR0VfVU5TSEFS RSkpDQo+ICsgICAgICAgICAgICAgICAgICAgICByYyA9IC0xOw0KPiArDQo+ICsgICAgICAgICAg ICAgaWYgKHJjKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lT IHx8IGVycm5vID09IEVJTlZBTCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBUaGlzIHByb2JhYmx5IG1lYW5zIGNsb3NlX3JhbmdlKCkgb3IgdGhlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogQ0xPU0VfUkFOR0VfVU5TSEFSRSBmbGFnIGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoga2VybmVsLiAg Tm90IG11Y2ggd2UgY2FuIGRvIGhlcmUgZXhjZXB0IGNhcnJ5IG9uIGFuZA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqIGhvcGUgZm9yIHRoZSBiZXN0Lg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJu KA0KPiArICAgICAiQ2FuJ3QgdXNlIGNsb3NlX3JhbmdlKCkgdG8gZW5zdXJlIG5vIGZpbGVzIGxl YWtlZCBieSBwYXJlbnQiKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZV9wZXJyb3IoIkZhaWxlZCB0byBjbG9zZSBm aWxlcyBsZWFrZWQgYnkgcGFyZW50Iik7DQo+ICsgICAgICAgICAgICAgICAgICAgICB9DQo+ICAg ICAgICAgICAgICAgfQ0KPiAgICAgICB9DQo+IC0NCj4gLSAgICAgcmV0dXJuIGZkOw0KPiAgfQ0K Pg0KPiAgLyoqDQo+IGRpZmYgLS1naXQgYS9pc29sYXRpb24uaCBiL2lzb2xhdGlvbi5oDQo+IGlu ZGV4IGVjNDcwMzguLmZlOGQ3ZDUgMTAwNjQ0DQo+IC0tLSBhL2lzb2xhdGlvbi5oDQo+ICsrKyBi L2lzb2xhdGlvbi5oDQo+IEBAIC0xMSw3ICsxMSw3IEBADQo+ICAjaW5jbHVkZSA8dW5pc3RkLmg+ DQo+DQo+ICB2b2lkIGlzb2xhdGVfaW5pdGlhbCh2b2lkKTsNCj4gLWludCBpc29sYXRlX2Zkcyhp bnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KPiArdm9pZCBpc29sYXRlX2ZkcyhzdHJ1Y3QgY3R4ICpj LCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KPiAgdm9pZCBpc29sYXRlX3VzZXIoY29uc3Qgc3Ry dWN0IGN0eCAqYywgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIGJvb2wgdXNlX3VzZXJucywNCj4gICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJucyk7DQo+ICBpbnQgaXNvbGF0ZV9wcmVmb3Jr KGNvbnN0IHN0cnVjdCBjdHggKmMpOw0KPiBkaWZmIC0tZ2l0IGEvcGFzc3QuMSBiL3Bhc3N0LjEN Cj4gaW5kZXggMGI3ODBmZS4uNTZlMjQxZiAxMDA2NDQNCj4gLS0tIGEvcGFzc3QuMQ0KPiArKysg Yi9wYXNzdC4xDQo+IEBAIC03NjYsNiArNzY2LDExIEBAIG9mIGxvY2FsIHRyYWZmaWMgaW4gcGFz dGFcZlIgaW4gdGhlIFxmQk5PVEVTXGZSIGZvciBtb3JlIGRldGFpbHMuDQo+ICBEbyBub3QgY3Jl YXRlIGEgdGFwIGRldmljZSBpbiB0aGUgbmFtZXNwYWNlLiBJbiB0aGlzIG1vZGUsIFxmSXBhc3Rh XGZSIG9ubHkNCj4gIGZvcndhcmRzIGxvb3BiYWNrIHRyYWZmaWMgYmV0d2VlbiBuYW1lc3BhY2Vz Lg0KPg0KPiArLlRQDQo+ICsuQlIgXC1cLXBhc3NcLWZkcw0KPiArUHJlc2VydmUgYWxsIG9wZW4g ZmlsZSBkZXNjcmlwdG9ycyBhbmQgcGFzcyB0aGVtIHRvIHRoZSBzcGF3bmVkIGNvbW1hbmQuDQo+ ICtUaGlzIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIHdoZW4gXGZCcGFzdGFcZlIgc3Bhd25zIGEg Y29tbWFuZC4NCj4gKw0KPiAgLlNIIEVYQU1QTEVTDQo+DQo+ICAuU1MgXGZCcGFzdGENCj4gZGlm ZiAtLWdpdCBhL3Bhc3N0LmMgYi9wYXNzdC5jDQo+IGluZGV4IDUwNTQ1NTEuLmZhN2FmYzUgMTAw NjQ0DQo+IC0tLSBhL3Bhc3N0LmMNCj4gKysrIGIvcGFzc3QuYw0KPiBAQCAtMzQ1LDcgKzM0NSw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gICAgICAgYXJjaF9hdngyX2V4 ZWMoYXJndik7DQo+DQo+ICAgICAgIGlzb2xhdGVfaW5pdGlhbCgpOw0KPiAtICAgICBjLT5mZF90 YXAgPSBpc29sYXRlX2ZkcyhhcmdjLCBhcmd2KTsNCj4gKyAgICAgaXNvbGF0ZV9mZHMoYywgYXJn YywgYXJndik7DQo+DQo+ICAgICAgIGlmICgoZGV2bnVsbF9mZCA9IG9wZW4oIi9kZXYvbnVsbCIs IE9fUkRXUiB8IE9fQ0xPRVhFQykpIDwgMCkNCj4gICAgICAgICAgICAgICBkaWVfcGVycm9yKCJG YWlsZWQgdG8gb3BlbiAvZGV2L251bGwiKTsNCj4gZGlmZiAtLWdpdCBhL3Bhc3N0LmggYi9wYXNz dC5oDQo+IGluZGV4IGFmZDhlOWYuLmIwNjVkNDEgMTAwNjQ0DQo+IC0tLSBhL3Bhc3N0LmgNCj4g KysrIGIvcGFzc3QuaA0KPiBAQCAtMTk2LDYgKzE5Niw3IEBAIHN0cnVjdCBpcDZfY3R4IHsNCj4g ICAqIEBwYXN0YV9pZmk6ICAgICAgICAgICAgICAgSW5kZXggb2YgbmFtZXNwYWNlIGludGVyZmFj ZSBmb3IgcGFzdGENCj4gICAqIEBwYXN0YV9jb25mX25zOiAgIENvbmZpZ3VyZSBuYW1lc3BhY2Ug YWZ0ZXIgY3JlYXRpbmcgaXQNCj4gICAqIEBub19waWRuczogICAgICAgICAgICAgICAgRG9uJ3Qg Y3JlYXRlIGEgbmV3IFBJRCBuYW1lc3BhY2UgZm9yIHNwYXduZWQgY29tbWFuZA0KPiArICogQHBh c3RhX3Bhc3NfZmRzOiAgRG8gbm90IGNsb3NlIGxlYWtlZCBmaWxlIGRlc2NyaXB0b3JzDQoNCkRv ZXMgaXQgcmVhbGx5IG5lZWQgdG8gaGF2ZSAncGFzdGEnIGluIHRoZSBuYW1lPyAgU3VyZSwgaXQn cw0KcGFzdGEtb25seSwgYnV0IHRoaXMgaXMgYWxyZWFkeSBkb2N1bWVudGVkIGluIG1hbiBwYWdl LCB1c2FnZSwgYW5kDQpjb25mKCksIHNvIHdlIGNvdWxkIHByb2JhYmx5IHNhdmUgc29tZSB0eXBp bmcgYnkgY2FsbGluZyBpdCAncGFzc19mZHMnLg0KDQo+ICAgKiBAZndkOiAgICAgICAgICAgICBG b3J3YXJkaW5nIHRhYmxlcw0KPiAgICogQGZ3ZF9wZW5kaW5nOiAgICAgUGVuZGluZyBmb3J3YXJk IHRhYmxlcw0KPiAgICogQG5vX3RjcDogICAgICAgICAgRGlzYWJsZSBUQ1Agb3BlcmF0aW9uDQo+ IEBAIC0yODAsNiArMjgxLDcgQEAgc3RydWN0IGN0eCB7DQo+ICAgICAgIHVuc2lnbmVkIGludCBw YXN0YV9pZmk7DQo+ICAgICAgIGludCBwYXN0YV9jb25mX25zOw0KPiAgICAgICBib29sIG5vX3Bp ZG5zOw0KPiArICAgICBib29sIHBhc3RhX3Bhc3NfZmRzOw0KPg0KPiAgICAgICBzdHJ1Y3QgZndk X3RhYmxlICpmd2RbUElGX05VTV9UWVBFU107DQo+ICAgICAgIHN0cnVjdCBmd2RfdGFibGUgKmZ3 ZF9wZW5kaW5nW1BJRl9OVU1fVFlQRVNdOw0KDQotLQ0KU3RlZmFubw0KDQoNCg== --_000_DM3PR11MB8713818FD3E6BB47F6EA35CCDA612DM3PR11MB8713namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpIb3dkeSBTdGVmYW5vLCZuYnNwOzwvZGl2Pg0K PGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFw dG9zX0VtYmVkZGVkRm9udCwgQXB0b3NfTVNGb250U2VydmljZSwgQ2FsaWJyaSwgSGVsdmV0aWNh LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxi cj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWls eTogQXB0b3MsIEFwdG9zX0VtYmVkZGVkRm9udCwgQXB0b3NfTVNGb250U2VydmljZSwgQ2FsaWJy aSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiByZ2IoMCwg MCwgMCk7Ij4NCkkgc3VibWl0dGVkIGEgcGF0Y2ggdjMgZm9yIHRoaXMgc2VyaWVzIHdoaWNoIGFk ZHJlc3NlZCBtb3N0IChub3QgYWxsKSBvZiB5b3VyIG9iamVjdGlvbnMuJm5ic3A7PC9kaXY+DQo8 ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXB0 b3NfRW1iZWRkZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBDYWxpYnJpLCBIZWx2ZXRpY2Es IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPg0KPGJy Pg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5 OiBBcHRvcywgQXB0b3NfRW1iZWRkZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBDYWxpYnJp LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHJnYigwLCAw LCAwKTsiPg0KSXQgdHVybnMgb3V0IHRoZSBtaW5pbXVtIGluZGV4IGZvciBhIGxvbmcgb3B0aW9u IGlzIDIsIG5vdCAxLiA8Y29kZT5jb25mKCk8L2NvZGU+Jm5ic3A7YWxyZWFkeSBjb3JyZWN0bHkg ZG9lcyBpdCB0aGF0IHdheS4mbmJzcDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZv bnQsIEFwdG9zX01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpJIHRoaW5rIEkgbWlzdW5k ZXJzdG9vZCB5b3VyIHF1ZXN0aW9uIGFib3V0IHVuY29uZGl0aW9uYWxseSByZWxvY2F0aW5nIHRo ZSBmZF90YXAuIFBsZWFzZSBjbGFyaWZ5OiBhcmUgeW91IHN1Z2dlc3RpbmcgdGhhdCB3ZSBzaG91 bGQgc2tpcCByZWxvY2F0aW5nIGZkX3RhcCB3aGVuIHdlIGFsc28gc2tpcCBjbG9zaW5nIGxlYWtl ZCBmaWxlIGRlc2NyaXB0b3JzPyBUaGF0IGRlc2lnbiB3b3VsZCBub3QgY2F1c2UgYW55IG9mIHRo ZSBidWdzIEkgaW1hZ2luZWQuDQogRm9yIGV4YW1wbGUsIGl0IHdvdWxkIG5ldmVyIGFmZmVjdCA8 Y29kZSBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9z X01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPg0KcGFzc3Q8 L2NvZGU+Jm5ic3A7bW9kZSBiZWNhdXNlIHNraXBwaW5nIGlzIGZvcmJpZGRlbiBpbiBwYXNzdCBt b2RlIGFueXdheXMuIElmIHRoZSB1c2VyIGRvZXMNCjxjb2RlPnRhcCB8IHBhc3RhIC0tZmQgMCAt LXBhc3MtZmRzIGNtZDwvY29kZT4mbmJzcDt0aGVuIHRoZSBmZF90YXAgc3RheXMgb24gc3RkaW4s IHNvIHRoZSBzcGF3bmVkIGNvbW1hbmQgZ2V0cyBpdCBvbiBzdGRpbjsgdGhhdCBpcyB0ZWNobmlj YWxseSBhIGZlYXR1cmUgKCZxdW90Oy0tcGFzcy1mZHMgcHJlc2VydmVzIGZpbGUgZGVzY3JpcHRv cnMmcXVvdDspLCBidXQgSSBzdGlsbCB0aGluayBpdCdzIHZlcnkgd2VpcmQgYmVoYXZpb3IuIElm IHlvdSBkbyBpbnNpc3QgdGhhdA0KIHRoaXMgd2VpcmQgYmVoYXZpb3IgaXMgaW4gZmFjdCB0aGUg Y29ycmVjdCBiZWhhdmlvciwgdGhlbiB3ZSBjYW4gZGVtb3RlIHRoZSA8Y29kZT4NCmZjbnRsPC9j b2RlPiZuYnNwO2NhbGwgYmFjayB0byBwbGFpbiA8Y29kZT5kdXAyPC9jb2RlPiZuYnNwO3dpdGgg YSBjb21tZW50IHRoYXQgZXhwbGFpbnMgaXQgaXMgc2FmZSB0byBjbG9zZSBhbmQgcmV1c2UgZmQg MyBzaW5jZSB0aGUgdXNlciBkaWQgbm90IHJlcXVlc3QgdG8gcGFzcy1mZHMuIFRoaXMgY29tbWVu dCBpcyBuZWNlc3NhcnkgdG8gcHJldmVudCBhIGZ1dHVyZSBidWcgaWYgc29tZW9uZSByZWZhY3Rv cnMgdGhlIGNvZGUgY2FyZWxlc3NseSAoZHVwMiBjbG9zZXMNCiBmZCAzIHdoZW4gdXNlciB3YW50 cyB0byBwYXNzIGZkIDMpLiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhhdCBjaGFuZ2UgaXMgc3Rp bGwgd2hhdCB5b3Ugd2FudC4mbmJzcDs8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx MnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVs ZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZv bnQsIEFwdG9zX01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsg Zm9udC1zaXplOiAxMnB0OyBjb2xvcjogcmdiKDAsIDAsIDApOyI+DQpSaWNoYXJkPC9kaXY+DQo8 ZGl2IGlkPSJhcHBlbmRvbnNlbmQiPjwvZGl2Pg0KPGhyIHN0eWxlPSJkaXNwbGF5OmlubGluZS1i bG9jazt3aWR0aDo5OCUiIHRhYmluZGV4PSItMSI+DQo8ZGl2IGlkPSJkaXZScGx5RndkTXNnIiBk aXI9Imx0ciI+PGZvbnQgZmFjZT0iQ2FsaWJyaSwgc2Fucy1zZXJpZiIgc3R5bGU9ImZvbnQtc2l6 ZToxMXB0IiBjb2xvcj0iIzAwMDAwMCI+PGI+RnJvbTo8L2I+IExhd3JlbmNlLCBSaWNoYXJkIEUg Jmx0O3JsYXdyZW5jZUB0YW11LmVkdSZndDs8YnI+DQo8Yj5TZW50OjwvYj4gTW9uZGF5LCBPY3Rv YmVyIDI2LCAyMDI2IDExOjE5IEFNPGJyPg0KPGI+VG86PC9iPiBTdGVmYW5vIEJyaXZpbyAmbHQ7 c2JyaXZpb0ByZWRoYXQuY29tJmd0Ozxicj4NCjxiPkNjOjwvYj4gcGFzc3QtZGV2QHBhc3N0LnRv cCAmbHQ7cGFzc3QtZGV2QHBhc3N0LnRvcCZndDs8YnI+DQo8Yj5TdWJqZWN0OjwvYj4gUmU6IFtQ QVRDSCB2Ml0gcGFzdGE6IEFkZCAtLXBhc3MtZmRzIG9wdGlvbiB0byBza2lwIGNsb3NpbmcgZmls ZSBkZXNjcmlwdG9yczwvZm9udD4NCjxkaXY+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCjxzdHlsZSB0 eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQo8IS0tDQpwDQoJe21hcmdpbi10 b3A6MDsNCgltYXJnaW4tYm90dG9tOjB9DQotLT4NCjwvc3R5bGU+DQo8ZGl2IGRpcj0ibHRyIj4N CjxkaXYgY2xhc3M9InhfZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTpBcHRvcyxB cHRvc19FbWJlZGRlZEZvbnQsQXB0b3NfTVNGb250U2VydmljZSxDYWxpYnJpLEhlbHZldGljYSxz YW5zLXNlcmlmOyBmb250LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQpIb3dkeSBTdGVm YW5vLCZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9lbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZv bnQtZmFtaWx5OkFwdG9zLEFwdG9zX0VtYmVkZGVkRm9udCxBcHRvc19NU0ZvbnRTZXJ2aWNlLENh bGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB0OyBjb2xvcjpyZ2IoMCww LDApIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9lbGVtZW50VG9Qcm9vZiIgc3R5bGU9 ImZvbnQtZmFtaWx5OkFwdG9zLEFwdG9zX0VtYmVkZGVkRm9udCxBcHRvc19NU0ZvbnRTZXJ2aWNl LENhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB0OyBjb2xvcjpyZ2Io MCwwLDApIj4NClRoYW5rIHlvdSBmb3IgZXhwbGFpbmluZyBhYm91dCB0aGUgd2hpdGVzcGFjZSBh bmQgdGhlIGdldG9wdCBsb25nIGluZGV4LiZuYnNwOzwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9lbGVt ZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OkFwdG9zLEFwdG9zX0VtYmVkZGVkRm9udCxB cHRvc19NU0ZvbnRTZXJ2aWNlLENhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQtc2l6 ZToxMnB0OyBjb2xvcjpyZ2IoMCwwLDApIj4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0ieF9l bGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OkFwdG9zLEFwdG9zX0VtYmVkZGVkRm9u dCxBcHRvc19NU0ZvbnRTZXJ2aWNlLENhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWY7IGZvbnQt c2l6ZToxMnB0OyBjb2xvcjpyZ2IoMCwwLDApIj4NClBhc3NpbmcgPGNvZGU+Y3R4PC9jb2RlPiZu YnNwO2RpcmVjdGx5IHRvIGNvbmZfZmRzIHNlZW1zIGZpbmUuIEkgY2hvc2UgdG8gcmV0dXJuIGEg c3RydWN0IGJlY2F1c2UgSSB3YW50ZWQgdG8gYXZvaWQgc2V0dGluZw0KPGNvZGU+Yy0mZ3Q7ZmRf dGFwPC9jb2RlPiZuYnNwO2luaXRpYWxseSB0byB0aGUgdXNlci1wYXNzZWQgdmFsdWUsIGJlY2F1 c2UgZG9pbmcgc28gb2JmdXNjYXRlcyB0aGUgZmFjdCB0aGF0IHRoZSB1c2VyLXBhc3NlZCB2YWx1 ZSBtYXkgbm90IGFjdHVhbGx5IGJlIHVzZWQuIEluIHJldHJvc3BlY3QsIHRoZSBjb25mdXNpb24g d291bGQgYWxzbyBiZSBwcmV2ZW50ZWQgYnkgYSBjb21tZW50LCBzbyBJIHdpbGwganVzdCBkbyB0 aGF0IGluc3RlYWQuJm5ic3A7PC9kaXY+DQo8ZGl2IGNsYXNzPSJ4X2VsZW1lbnRUb1Byb29mIiBz dHlsZT0iZm9udC1mYW1pbHk6QXB0b3MsQXB0b3NfRW1iZWRkZWRGb250LEFwdG9zX01TRm9udFNl cnZpY2UsQ2FsaWJyaSxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHQ7IGNvbG9y OnJnYigwLDAsMCkiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGNsYXNzPSJ4X2VsZW1lbnRUb1Byb29m IiBzdHlsZT0iZm9udC1mYW1pbHk6QXB0b3MsQXB0b3NfRW1iZWRkZWRGb250LEFwdG9zX01TRm9u dFNlcnZpY2UsQ2FsaWJyaSxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsgZm9udC1zaXplOjEycHQ7IGNv bG9yOnJnYigwLDAsMCkiPg0KSSB3YW50ZWQgdG8gdW5jb25kaXRpb25hbGx5IHJlbG9jYXRlIHRo ZSA8Y29kZT5mZF90YXA8L2NvZGU+IGJlY2F1c2UgSSBpbWFnaW5lZCB0aGUgZm9sbG93aW5nIGJ1 ZzogaW1hZ2luZSBpZiBzb21lb25lIGlzIHVzaW5nIHBhc3RhLCBwYXNzZXMgdGhlIHRhcCBvbiBz dGRpbiwgZG9lcyBOT1QgcmVxdWVzdCB0byBwYXNzIGZkcyAoPGNvZGU+dGFwIHwgcGFzdGEgLWZk IDA8L2NvZGU+PGNvZGUgc3R5bGU9ImZvbnQtZmFtaWx5OkFwdG9zLEFwdG9zX0VtYmVkZGVkRm9u dCxBcHRvc19NU0ZvbnRTZXJ2aWNlLENhbGlicmksSGVsdmV0aWNhLHNhbnMtc2VyaWYiPiksDQog YW5kIHdlIGNob29zZSBub3QgdG8gcmVsb2NhdGUgdGhlIHRhcC48L2NvZGU+Jm5ic3A7U2luY2Ug c3RkaW4gaXMgbmV2ZXIgY2xvc2VkLCB0aGUgdGFwIHdvdWxkIGJlIHBhc3NlZCB0byB0aGUgc3Bh d25lZCBjb21tYW5kIG9uIHN0ZGluLCB3aGljaCB3b3VsZCBtb3N0IGxpa2VseSBjYXVzaW5nIHRo ZSBzcGF3bmVkIGNvbW1hbmQgdG8gaGF2ZSB1bmV4cGVjdGVkIGJlaGF2aW9yLiBBZGRpdGlvbmFs bHksIHRoaXMgY2hvaWNlIGlzIGVzcGVjaWFsbHkgd2VpcmQNCiBjb25zaWRlcmluZyB0aGF0IHRo ZSBoeXBvdGhldGljYWwgdXNlciBkaWQgbm90IGV2ZW4gcmVxdWVzdCB0aGUgdGFwIHRvIGJlIHBh c3NlZCB0byB0aGUgc3Bhd25lZCBjb21tYW5kIGF0IGFsbC4gSSB3b3VsZCBhbHNvIGxpa2UgdG8g cG9pbnQgb3V0IHRoYXQgdGhlIGNvZGUNCjxpPmFscmVhZHk8L2k+Jm5ic3A7dW5jb25kaXRpb25h bGx5IHJlbG9jYXRlcyB0aGUgdGFwOiBJIGFzc3VtZSB0aGF0IHNvbWVvbmUgbXVzdCBoYXZlIGZv cmVzZWVuIHNvbWUgb3RoZXIgYnVnIChwZXJoYXBzIHJlbGF0ZWQgdG8gc3RkaW4gaW4gcGFzc3Qg bW9kZT8pIGFuZCBJIGRvbid0IHdhbnQgdG8gY2F1c2UgYSByZWdyZXNzaW9uIGluIGFub3RoZXIg d29ya2Zsb3cgdGhhdCBJIGRvbid0IGtub3cgYW55dGhpbmcgYWJvdXQuJm5ic3A7Jm5ic3A7PC9k aXY+DQo8ZGl2IGNsYXNzPSJ4X2VsZW1lbnRUb1Byb29mIiBzdHlsZT0ibWFyZ2luLXRvcDowcHg7 IG1hcmdpbi1ib3R0b206MHB4OyBmb250LWZhbWlseTpBcHRvcyxBcHRvc19FbWJlZGRlZEZvbnQs QXB0b3NfTVNGb250U2VydmljZSxDYWxpYnJpLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250LXNp emU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9Inhf ZWxlbWVudFRvUHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTpBcHRvcyxBcHRvc19FbWJlZGRlZEZv bnQsQXB0b3NfTVNGb250U2VydmljZSxDYWxpYnJpLEhlbHZldGljYSxzYW5zLXNlcmlmOyBmb250 LXNpemU6MTJwdDsgY29sb3I6cmdiKDAsMCwwKSI+DQpSaWNoYXJkPC9kaXY+DQo8ZGl2IGNsYXNz PSJ4X2VsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6QXB0b3MsQXB0b3NfRW1iZWRk ZWRGb250LEFwdG9zX01TRm9udFNlcnZpY2UsQ2FsaWJyaSxIZWx2ZXRpY2Esc2Fucy1zZXJpZjsg Zm9udC1zaXplOjEycHQ7IGNvbG9yOnJnYigwLDAsMCkiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IGlk PSJ4X2FwcGVuZG9uc2VuZCI+PC9kaXY+DQo8aHIgdGFiaW5kZXg9Ii0xIiBzdHlsZT0iZGlzcGxh eTppbmxpbmUtYmxvY2s7IHdpZHRoOjk4JSI+DQo8ZGl2IGlkPSJ4X2RpdlJwbHlGd2RNc2ciIGRp cj0ibHRyIj48Zm9udCBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBjb2xvcj0iIzAwMDAwMCIg c3R5bGU9ImZvbnQtc2l6ZToxMXB0Ij48Yj5Gcm9tOjwvYj4gU3RlZmFubyBCcml2aW8gJmx0O3Ni cml2aW9AcmVkaGF0LmNvbSZndDs8YnI+DQo8Yj5TZW50OjwvYj4gU3VuZGF5LCBPY3RvYmVyIDI1 LCAyMDI2IDc6MDEgQU08YnI+DQo8Yj5Ubzo8L2I+IExhd3JlbmNlLCBSaWNoYXJkIEUgJmx0O3Js YXdyZW5jZUB0YW11LmVkdSZndDs8YnI+DQo8Yj5DYzo8L2I+IHBhc3N0LWRldkBwYXNzdC50b3Ag Jmx0O3Bhc3N0LWRldkBwYXNzdC50b3AmZ3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbUEFU Q0ggdjJdIHBhc3RhOiBBZGQgLS1wYXNzLWZkcyBvcHRpb24gdG8gc2tpcCBjbG9zaW5nIGZpbGUg ZGVzY3JpcHRvcnM8L2ZvbnQ+DQo8ZGl2PiZuYnNwOzwvZGl2Pg0KPC9kaXY+DQo8ZGl2Pg0KPGRp diBzdHlsZT0iZGlzcGxheTpub25lIWltcG9ydGFudDsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5 OmhpZGRlbjsgZm9udC1zaXplOjFweDsgY29sb3I6I2ZmZmZmZjsgbGluZS1oZWlnaHQ6MXB4OyBt YXgtaGVpZ2h0OjBweDsgb3BhY2l0eTowOyBvdmVyZmxvdzpoaWRkZW4iPg0KUmljaGFyZCwgdGhh bmtzIGZvciB0aGUgbmV3IHZlcnNpb24gYW5kIGZvciB5b3VyIHBhdGllbmNlISBUaGUgbG9naWMg bG9va3MgZ29vZCB0byBtZSwgYnV0IEkgdGhpbmsgd2UgY2FuIG1ha2UgdGhlIGltcGxlbWVudGF0 aW9uIGEgYml0IHNpbXBsZXIuIEEgZmV3IGNvbW1lbnRzIGlubGluZTogT24gVGh1LCAyMiBPY3Qg MjAyNiAxMjrigIowODrigIoyMyAtMDUwMCBSaWNoYXJkIExhd3JlbmNlICZsdDtybGF3cmVuY2VA 4oCKdGFtdS7igIplZHUmZ3Q7PC9kaXY+DQo8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUhaW1wb3J0 YW50OyBkaXNwbGF5Om5vbmU7IHZpc2liaWxpdHk6aGlkZGVuOyBmb250LXNpemU6MXB4OyBjb2xv cjojZmZmZmZmOyBsaW5lLWhlaWdodDoxcHg7IG1heC1oZWlnaHQ6MHB4OyBvcGFjaXR5OjA7IG92 ZXJmbG93OmhpZGRlbiI+DQpaalFjbVFSWUZwZnB0QmFubmVyU3RhcnQ8L2Rpdj4NCjxkaXYgZGly PSJsdHIiIGxhbmc9ImVuIiBpZD0ieF94X3BmcHRCYW5uZXI3bjUycWh5IiBzdHlsZT0iZGlzcGxh eTpibG9jayFpbXBvcnRhbnQ7IHRleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7IG1hcmdpbjowIDAg MTBweCAwIWltcG9ydGFudDsgcGFkZGluZzo3cHggMTZweCA4cHggMTZweCFpbXBvcnRhbnQ7IGJv cmRlci1yYWRpdXM6NHB4IWltcG9ydGFudDsgbWluLXdpZHRoOjIwMHB4IWltcG9ydGFudDsgYmFj a2dyb3VuZC1jb2xvcjojZDBkOGRjIWltcG9ydGFudDsgYmFja2dyb3VuZC1jb2xvcjojZDBkOGRj OyBib3JkZXItdG9wOjRweCBzb2xpZCAjOTBhNGFlIWltcG9ydGFudDsgYm9yZGVyLXRvcDo0cHgg c29saWQgIzkwYTRhZSI+DQo8ZGl2IGlkPSJ4X3hfcGZwdEJhbm5lcjduNTJxaHkiIHN0eWxlPSJm bG9hdDpsZWZ0IWltcG9ydGFudDsgZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IG1hcmdpbjoxcHgg MCAxcHggMCFpbXBvcnRhbnQ7IG1heC13aWR0aDo2MDBweCFpbXBvcnRhbnQiPg0KPGRpdiBpZD0i eF94X3BmcHRCYW5uZXI3bjUycWh5IiBzdHlsZT0iZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7IHZp c2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6I2QwZDhkYyFpbXBv cnRhbnQ7IGNvbG9yOiMwMDAwMDAhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwOyBmb250LWZhbWls eTonQXJpYWwnLHNhbnMtc2VyaWYhaW1wb3J0YW50OyBmb250LWZhbWlseTonQXJpYWwnLHNhbnMt c2VyaWY7IGZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50OyBmb250LXdlaWdodDpib2xkOyBmb250 LXNpemU6MTRweCFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OjEuMjkhaW1wb3J0YW50OyBsaW5lLWhl aWdodDoxLjI5Ij4NClRoaXMgTWVzc2FnZSBJcyBGcm9tIGFuIEV4dGVybmFsIFNlbmRlciA8L2Rp dj4NCjxkaXYgaWQ9InhfeF9wZnB0QmFubmVyN241MnFoeSIgc3R5bGU9ImRpc3BsYXk6YmxvY2sh aW1wb3J0YW50OyB2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9y OiNkMGQ4ZGMhaW1wb3J0YW50OyBjb2xvcjojMDAwMDAwIWltcG9ydGFudDsgY29sb3I6IzAwMDAw MDsgZm9udC13ZWlnaHQ6bm9ybWFsOyBmb250LWZhbWlseTonQXJpYWwnLHNhbnMtc2VyaWYhaW1w b3J0YW50OyBmb250LWZhbWlseTonQXJpYWwnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMnB4IWlt cG9ydGFudDsgbGluZS1oZWlnaHQ6MS41IWltcG9ydGFudDsgbGluZS1oZWlnaHQ6MS41OyBtYXJn aW4tdG9wOjJweCFpbXBvcnRhbnQiPg0KVGhpcyBtZXNzYWdlIGNhbWUgZnJvbSBvdXRzaWRlIHlv dXIgb3JnYW5pemF0aW9uLiA8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iY2xlYXI6Ym90aCFp bXBvcnRhbnQ7IGRpc3BsYXk6YmxvY2shaW1wb3J0YW50OyB2aXNpYmlsaXR5OmhpZGRlbiFpbXBv cnRhbnQ7IGxpbmUtaGVpZ2h0OjAhaW1wb3J0YW50OyBmb250LXNpemU6MC4wMXB4IWltcG9ydGFu dDsgaGVpZ2h0OjBweCI+DQombmJzcDs8L2Rpdj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZGlzcGxh eTpub25lIWltcG9ydGFudDsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgZm9udC1z aXplOjFweDsgY29sb3I6I2ZmZmZmZjsgbGluZS1oZWlnaHQ6MXB4OyBtYXgtaGVpZ2h0OjBweDsg b3BhY2l0eTowOyBvdmVyZmxvdzpoaWRkZW4iPg0KWmpRY21RUllGcGZwdEJhbm5lckVuZDwvZGl2 Pg0KPHN0eWxlPg0KPCEtLQ0KI3hfeF9wZnB0QmFubmVyN241MnFoeQ0KCXtkaXNwbGF5OmJsb2Nr IWltcG9ydGFudDsNCgl2aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50Ow0KCW9wYWNpdHk6MSFp bXBvcnRhbnQ7DQoJYmFja2dyb3VuZC1jb2xvcjojZDBkOGRjIWltcG9ydGFudDsNCgltYXgtd2lk dGg6bm9uZSFpbXBvcnRhbnQ7DQoJbWF4LWhlaWdodDpub25lIWltcG9ydGFudH0NCmh0bWw6cm9v dCwgaHRtbDpyb290ID4gZGl2DQoJe2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50Ow0KCXZpc2liaWxp dHk6dmlzaWJsZSFpbXBvcnRhbnQ7DQoJb3BhY2l0eToxIWltcG9ydGFudH0NCi0tPg0KPC9zdHls ZT4NCjxwcmUgc3R5bGU9ImZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxMDAlOyB3 aGl0ZS1zcGFjZTpwcmUtd3JhcDsgd29yZC13cmFwOmJyZWFrLXdvcmQiPlJpY2hhcmQsIHRoYW5r cyBmb3IgdGhlIG5ldyB2ZXJzaW9uIGFuZCBmb3IgeW91ciBwYXRpZW5jZSENCg0KVGhlIGxvZ2lj IGxvb2tzIGdvb2QgdG8gbWUsIGJ1dCBJIHRoaW5rIHdlIGNhbiBtYWtlIHRoZSBpbXBsZW1lbnRh dGlvbg0KYSBiaXQgc2ltcGxlci4gIEEgZmV3IGNvbW1lbnRzIGlubGluZToNCg0KT24gVGh1LCAy MiBPY3QgMjAyNiAxMjowODoyMyAtMDUwMA0KUmljaGFyZCBMYXdyZW5jZSAmbHQ7cmxhd3JlbmNl QHRhbXUuZWR1Jmd0OyB3cm90ZToNCg0KJmd0OyBXaGVuIHBhc3RhIHNwYXducyBhIGNvbW1hbmQg KGBwYXN0YSBbb3B0aW9uc10gLS0gW2NvbW1hbmRdYCksIGFsbCBvcGVuIGZpbGUNCiZndDsgZGVz Y3JpcHRvcnMgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBwcm9jZXNzIGV4Y2VwdCBzdGFuZGFy ZCBzdHJlYW1zICgwLTIpDQomZ3Q7IGFuZCB0aGUgdGFwIGRlc2NyaXB0b3IgKGAtLWZkYCkgYXJl IG5vcm1hbGx5IGNsb3NlZCBieSBgaXNvbGF0ZV9mZHMoKWAuDQomZ3Q7IA0KJmd0OyBIb3dldmVy LCB3aGVuIHBhc3RhIGlzIHVzZWQgZm9yIHRlc3RpbmcsIGRldmVsb3BtZW50LCBvciBsYXVuY2hp bmcgdG9vbHMgbGlrZQ0KJmd0OyBCdWJibGV3cmFwIChgYndyYXBgKSwgdGhlIHNwYXduZWQgY29t bWFuZCBtYXkgcmVxdWlyZSBmaWxlIGRlc2NyaXB0b3JzDQomZ3Q7IHBhc3NlZCBkaXJlY3RseSBm cm9tIHRoZSBwYXJlbnQgcHJvY2Vzcy4gSW4gdGhpcyBjYXNlLCBjbG9zaW5nIGluaGVyaXRlZCBm aWxlDQomZ3Q7IGRlc2NyaXB0b3JzIGJyZWFrcyBleHBlY3RlZCBiZWhhdmlvci4NCiZndDsgDQom Z3Q7IEFkZCBhIGJvb2xlYW4gYC0tcGFzcy1mZHNgIGZsYWcgZm9yIHBhc3RhIG1vZGUgdGhhdCBz a2lwcyB0aGUgYGNsb3NlX3JhbmdlKClgDQomZ3Q7IGNsZWFudXAgc3RlcCBpbiBgaXNvbGF0ZV9m ZHMoKWAsIGxlYXZpbmcgYWxsIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBpbnRhY3QNCiZndDsgZm9y IHRoZSBjaGlsZCBjb21tYW5kLg0KJmd0OyANCiZndDsgU3VtbWFyeSBvZiBjaGFuZ2VzOg0KJmd0 OyANCiZndDsgLSBJbnRyb2R1Y2UgYHN0cnVjdCBmZF9vcHRzYCBhbmQgdXBkYXRlIGBjb25mX3Rh cF9mZCgpYCB0byBgY29uZl9mZHMoKWAsDQomZ3Q7ICAgYWxsb3dpbmcgZWFybHkgcGFyc2luZyBv ZiBib3RoIGAtRmAvYC0tZmRgIGFuZCBgLS1wYXNzLWZkc2AgYmVmb3JlIG1haW4NCiZndDsgICBv cHRpb24gcHJvY2Vzc2luZy4NCiZndDsgLSBVcGRhdGUgYGlzb2xhdGVfZmRzKClgIHRvIGNoZWNr IGBvcHRzLnBhc3NfZmRzYDogaWYgc2V0LCBza2lwIGNhbGxpbmcNCiZndDsgICBgY2xvc2VfcmFu Z2UoKWAgd2hpbGUgc3RpbGwgcmVsb2NhdGluZyB0aGUgdGFwIGZkIG91dCBvZiBzdGFuZGFyZCBz dHJlYW0NCiZndDsgICByYW5nZSAoMC0yKSBpZiBuZWVkZWQuDQomZ3Q7IC0gRW5mb3JjZSB2YWxp ZGF0aW9uIGluIGBjb25mKClgIGVuc3VyaW5nIGAtLXBhc3MtZmRzYCBpcyByZXN0cmljdGVkIHRv IHBhc3RhDQomZ3Q7ICAgbW9kZSB3aGVuIHNwYXduaW5nIGEgY29tbWFuZCAoaW5jb21wYXRpYmxl IHdpdGggYXR0YWNoaW5nIHRvIGFuDQomZ3Q7ICAgZXhpc3RpbmcgbmV0bnMpLg0KJmd0OyAtIFVw ZGF0ZSBtYW4gcGFnZSBhbmQgdXNhZ2UgaGVscCBvdXRwdXQuDQomZ3Q7IA0KJmd0OyBMaW5rOiA8 YSBocmVmPSJodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9idWdzLnBhc3N0LnRv cC9zaG93X2J1Zy5jZ2k/aWQ9MjA0X187ISFLd05WbnFSdiFHT1BvZHN0SnExMGRfWExQdHBRS3Vq a2JJRlZCUFlJbXRwOUpfV3lPbENJbTVLNXdPa2lWTDQ1MjNSLVlFOEpRX0ZPOXZRX1ZsSzMwcFlC TiQiPmh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRwczovL2J1Z3MucGFzc3QudG9wL3No b3dfYnVnLmNnaT9pZD0yMDRfXzshIUt3TlZucVJ2IUdPUG9kc3RKcTEwZF9YTFB0cFFLdWprYklG VkJQWUltdHA5Sl9XeU9sQ0ltNUs1d09raVZMNDUyM1ItWUU4SlFfRk85dlFfVmxLMzBwWUJOJDwv YT4NCiZndDsgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBMYXdyZW5jZSAmbHQ7cmxhd3JlbmNlQHRh bXUuZWR1Jmd0Ow0KJmd0OyAtLS0NCiZndDsgIGNvbmYuYyAgICAgIHwgNTggKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0NCiZndDsgIGNvbmYuaCAgICAgIHwgIDcgKysr Ky0NCiZndDsgIGlzb2xhdGlvbi5jIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiZndDsgIGlzb2xhdGlvbi5oIHwgIDIgKy0NCiZndDsg IHBhc3N0LjEgICAgIHwgIDUgKysrKw0KJmd0OyAgcGFzc3QuYyAgICAgfCAgMiArLQ0KJmd0OyAg cGFzc3QuaCAgICAgfCAgMiArKw0KJmd0OyAgNyBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25z KCspLCA1MSBkZWxldGlvbnMoLSkNCiZndDsgDQomZ3Q7IGRpZmYgLS1naXQgYS9jb25mLmMgYi9j b25mLmMNCiZndDsgaW5kZXggMTQ5YTRjNy4uNDQ3OTQ2NyAxMDA2NDQNCiZndDsgLS0tIGEvY29u Zi5jDQomZ3Q7ICsrKyBiL2NvbmYuYw0KJmd0OyBAQCAtNzUwLDcgKzc1MCw5IEBAIHBhc3RhX29w dHM6DQomZ3Q7ICAJCSZxdW90OwkJCURvbid0IGNvcHkgYWxsIGFkZHJlc3NlcyB0byBuYW1lc3Bh Y2VcbiZxdW90Ow0KJmd0OyAgCQkmcXVvdDsgIC0tbnMtbWFjLWFkZHIgQUREUglTZXQgTUFDIGFk ZHJlc3Mgb24gdGFwIGludGVyZmFjZVxuJnF1b3Q7DQomZ3Q7ICAJCSZxdW90OyAgLS1uby1zcGxp Y2UJCURpc2FibGUgaW5ib3VuZCBzb2NrZXQgc3BsaWNpbmdcbiZxdW90Ow0KJmd0OyAtCQkmcXVv dDsgIC0tc3BsaWNlLW9ubHkJT25seSBlbmFibGUgbG9vcGJhY2sgZm9yd2FyZGluZ1xuJnF1b3Q7 KTsNCiZndDsgKwkJJnF1b3Q7ICAtLXNwbGljZS1vbmx5CU9ubHkgZW5hYmxlIGxvb3BiYWNrIGZv cndhcmRpbmdcbiZxdW90Ow0KJmd0OyArCQkmcXVvdDsgIC0tcGFzcy1mZHMJCVByZXNlcnZlIG9w ZW4gZmlsZSBkZXNjcmlwdG9ycyBhbmRcbiZxdW90Ow0KJmd0OyArCQkmcXVvdDsJCQlwYXNzIHRo ZW0gdG8gdGhlIHNwYXduZWQgY29tbWFuZFxuJnF1b3Q7KTsNCg0KVGhlIHVzYWdlIG1lc3NhZ2Ug aXMgYWxyZWFkeSB2ZXJ5IGxvbmcsIGFuZCBpdCdzIG5vdCBtZWFudCBhcyBhDQpjb21wcmVoZW5z aXZlIGRvY3VtZW50YXRpb24sIGp1c3QgYSBxdWljayByZWZlcmVuY2UsIHNvIEkgZ3Vlc3Mgd2UN CmNvdWxkIHNpbXBseSBzYXkgJnF1b3Q7UHJlc2VydmUgb3BlbiBmaWxlIGRlc2NyaXB0b3JzJnF1 b3Q7IGhlcmUsIGFuZCBzYXZlIG9uZQ0KbGluZSBvZiBvdXRwdXQuDQoNCiZndDsgIA0KJmd0OyAg CXBhc3N0X2V4aXQoc3RhdHVzKTsNCiZndDsgIH0NCiZndDsgQEAgLTExMzYsMzYgKzExMzgsNDMg QEAgc3RhdGljIHZvaWQgY29uZl9zb2NrX2xpc3Rlbihjb25zdCBzdHJ1Y3QgY3R4ICpjKQ0KJmd0 OyAgCQlkaWVfcGVycm9yKCZxdW90O0NvdWxkbid0IGFkZCBjb25maWd1cmF0aW9uIHNvY2tldCB0 byBlcG9sbCZxdW90Oyk7DQomZ3Q7ICB9DQomZ3Q7ICANCiZndDsgKw0KJmd0OyArDQomZ3Q7ICsN Cg0KVW5yZWxhdGVkIGJsYW5rIGxpbmVzLg0KDQomZ3Q7ICAvKioNCiZndDsgLSAqIGNvbmZfdGFw X2ZkKCkgLSBSZWFkIHRhcCBmZCBhcyBzdXBwbGllZCBieSAtRiBjb21tYW5kIGxpbmUgb3B0aW9u DQomZ3Q7ICsgKiBjb25mX2ZkcygpIC0gUmVhZCBmZHMgYXMgc3VwcGxpZWQgYnkgLUYvLS1mZCBh bmQgLS1wYXNzLWZkcyBvcHRpb25zDQomZ3Q7ICAgKiBAYXJnYzoJQXJndW1lbnQgY291bnQNCiZn dDsgICAqIEBhcmd2OglDb21tYW5kIGxpbmUgb3B0aW9ucw0KJmd0OyAtICoNCiZndDsgLSAqIFJl dHVybjogZmQgbnVtYmVyIGZyb20gLS1mZCBvcHRpb24sIG9yIC0xIGlmIG5vdCBzdXBwbGllZA0K Jmd0OyArIA0KJmd0OyArICogUmV0dXJuOiBmZF9vcHRzIHsgZmRfdGFwLCBwYXNzX2ZkcyB9DQoN ClJldHVybmluZyBhIHN0cnVjdCB3b3JrcywgYW5kIGl0IG1pZ2h0IGV2ZW4gbG9vayBlbGVnYW50 LCBidXQgaXQncyBub3QNCnNvbWV0aGluZyB3ZSBkbyBmcmVxdWVudGx5IGluIHRoaXMgY29kZWJh c2UsIG9yIG5vdCBhdCBhbGwsIHdpdGggdGhlDQpnZW5lcmFsIHJlYXNvbmluZyBiZWluZyB0aGF0 IHN0cnVjdHMgZXZlbnR1YWxseSBncm93IGFuZCwgaW4NCm5vbi10cml2aWFsIGNhc2VzLCB3ZSBy aXNrIGhhdmluZyBjb3BpZXMgb24gcmV0dXJuIHRoYXQgbWlnaHQgZ3JvdyB3ZWxsDQpiZXlvbmQg d2hhdCB3YXMgaW50ZW5kZWQuICBPbiB0b3Agb2YgdGhhdCwgaWYgeW91IHdhbnQgdG8gc2lnbmFs IGZhaWx1cmUNCmF0IHNvbWUgcG9pbnQsIHlvdSB3b3VsZCBuZWVkIGEgc21hbGwgcmV3b3JrLg0K DQpJdCdzIGFic29sdXRlbHkgZmluZSB0byBkbyB0aGlzIGhlcmUsIGJ1dCBJIHdvdWxkIHN0aWxs IGhhdmUgYQ0Kc2xpZ2h0IHByZWZlcmVuY2UgZm9yIGNvbnNpc3RlbmN5IChtYWtlIGl0IGEgdm9p ZCBpZiBpdCBuZXZlciBmYWlscywNCmFuZCBwYXNzIHRoZSB0d28gYXJndW1lbnRzIGFzIHBvaW50 ZXJzKS4gIEhvd2V2ZXIsIEkgZG9uJ3QgdGhpbmsgd2UNCm5lZWQgdGhpcyBhdCBhbGwuDQoNCllv dSBhcmUgYWxyZWFkeSBwYXNzaW5nIGEgc3RydWN0IGN0eCB0byB0aGUgY2FsbGVyIG5vdywgaXNv bGF0ZV9mZHMoKS4NCkl0IGNvbnRhaW5zIChhbG1vc3QpIHRoZSB3aG9sZSBjb25maWd1cmF0aW9u LiAgVGhpcyBmdW5jdGlvbiByZWFkcw0KY29uZmlndXJhdGlvbi4gIEl0IGNvdWxkIHZlcnkgbmF0 dXJhbGx5IHN0b3JlIGl0IHRoZXJlIGFuZCB5b3UncmUgZG9uZQ0Kd2l0aCBpdDoganVzdCBzZXQg Yy0mZ3Q7ZmRfdGFwIGFuZCBjLSZndDtwYXN0YV9wYXNzX2ZkcyBoZXJlICh3aXRoIGEgbWlub3IN CmNhdmVhdCBhcm91bmQgYy0mZ3Q7ZmRfdGFwLCBzZWUgYmVsb3cpLg0KDQomZ3Q7ICAgKi8NCiZn dDsgLWludCBjb25mX3RhcF9mZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQomZ3Q7ICtzdHJ1Y3Qg ZmRfb3B0cyBjb25mX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQomZ3Q7ICB7DQomZ3Q7IC0J Y29uc3Qgc3RydWN0IG9wdGlvbiBvcHRmZFtdID0gewl7ICZxdW90O2ZkJnF1b3Q7LCByZXF1aXJl ZF9hcmd1bWVudCwgTlVMTCwgJ0YnIH0sDQomZ3Q7IC0JCQkJCXsgMCB9LCB9Ow0KJmd0OyAtCWNv bnN0IGNoYXIgKmZkYXJnID0gTlVMTCwgKnA7DQomZ3Q7IC0JdW5zaWduZWQgbG9uZyB2YWw7DQom Z3Q7ICsJY29uc3Qgc3RydWN0IG9wdGlvbiBvcHRbXSA9IHsNCiZndDsgKwkJeyAmcXVvdDtmZCZx dW90OywgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0YnIH0sDQoNCllvdSdyZSBsZWF2 aW5nIGEgYml0IG9mIHNwYWNlIGhlcmUgYmVjYXVzZSBpdCdzIGRvbmUgaW4gY29uZigpLCBzbyB0 aGF0DQphcmd1bWVudHMgY2FuIGJlIGFsaWduIGFuZCB0aGlzIGJlY29tZXMgYSBtb3JlIHJlYWRh YmxlIGZvcm0gb2YgdGFibGUsDQpidXQ6DQoNCiZndDsgKwkJeyAmcXVvdDtwYXNzLWZkcyZxdW90 Oywgbm9fYXJndW1lbnQsIE5VTEwsIDM0IH0sDQoNCi4uLnRoZW4gaXQncyBub3QgYWN0dWFsbHkg YWxpZ25lZCBoZXJlLiBBbmQgMzQganVzdCBoYXBwZW5zIHRvIGJlIHRoZQ0KbWF0Y2hpbmcgaW5k ZXggaW4gZ2V0b3B0X2xvbmcoKSBpbiBjb25mKCksIGJ1dCBpdCdzIGtpbmQgb2YgY29uZnVzaW5n DQp0byBoYXZlIGl0IGhlcmU6IGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBmdW5jdGlvbiwgaXQn cyB0aGUgZmlyc3QNCm9wdGlvbiBpbmRleCB3aXRob3V0IHNob3J0LWhhbmQsIHNvIGl0IHNob3Vs ZCBiZSAxLg0KDQpUaGF0IGlzLCBJIHRoaW5rIHRoaXMgc2hvdWxkIGJlOg0KDQoJCXsgJnF1b3Q7 ZmQmcXVvdDssCQlyZXF1aXJlZF9hcmd1bWVudCwJTlVMTCwJJ0YnIH0sDQoJCXsgJnF1b3Q7cGFz cy1mZHMmcXVvdDssCW5vX2FyZ3VtZW50LAkJTlVMTCwJMSB9LA0KDQomZ3Q7ICsJCXsgMCB9LA0K Jmd0OyArCX07DQomZ3Q7ICsJc3RydWN0IGZkX29wdHMgb3B0cyA9IHsgLmZkX3RhcCA9IC0xLCAu cGFzc19mZHMgPSBmYWxzZSB9Ow0KJmd0OyAgCWludCBuYW1lOw0KJmd0OyAgDQomZ3Q7ICAJb3B0 aW5kID0gMDsNCiZndDsgIAlkbyB7DQomZ3Q7IC0JCW5hbWUgPSBnZXRvcHRfbG9uZyhhcmdjLCBh cmd2LCAmcXVvdDstOkY6JnF1b3Q7LCBvcHRmZCwgTlVMTCk7DQomZ3Q7IC0JCWlmIChuYW1lID09 ICdGJykNCiZndDsgLQkJCWZkYXJnID0gb3B0YXJnOw0KJmd0OyAtCX0gd2hpbGUgKG5hbWUgIT0g LTEpOw0KJmd0OyAtDQomZ3Q7IC0JaWYgKCFmZGFyZykNCiZndDsgLQkJcmV0dXJuIC0xOw0KJmd0 OyArCQluYW1lID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgJnF1b3Q7LTpGOiZxdW90Oywgb3B0 LCBOVUxMKTsNCiZndDsgKwkJaWYgKG5hbWUgPT0gJ0YnKSB7DQomZ3Q7ICsJCQljb25zdCBjaGFy ICpwID0gb3B0YXJnOw0KJmd0OyArCQkJdW5zaWduZWQgbG9uZyB2YWw7DQomZ3Q7ICANCiZndDsg LQlwID0gZmRhcmc7DQomZ3Q7IC0JaWYgKCFwYXJzZV91bnNpZ25lZCgmYW1wO3AsIDAsICZhbXA7 dmFsKSB8fCAhcGFyc2VfZW9pKHApIHx8IHZhbCAmZ3Q7IElOVF9NQVgpDQomZ3Q7IC0JCWRpZSgm cXVvdDtJbnZhbGlkIC0tZmQ6ICVzJnF1b3Q7LCBmZGFyZyk7DQomZ3Q7ICsJCQlpZiAoIXBhcnNl X3Vuc2lnbmVkKCZhbXA7cCwgMCwgJmFtcDt2YWwpIHx8ICFwYXJzZV9lb2kocCkgfHwNCiZndDsg KwkJCSAgICB2YWwgJmd0OyBJTlRfTUFYKQ0KJmd0OyArCQkJCWRpZSgmcXVvdDtJbnZhbGlkIC0t ZmQ6ICVzJnF1b3Q7LCBvcHRhcmcpOw0KJmd0OyAgDQomZ3Q7IC0JcmV0dXJuIHZhbDsNCiZndDsg KwkJCW9wdHMuZmRfdGFwID0gKGludCl2YWw7DQomZ3Q7ICsJCX0gZWxzZSBpZiAobmFtZSA9PSAz NCkgew0KDQooZG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGlzIHRvICcxJyBpZiB5b3UgZ28gZm9y IHRoZSB2ZXJzaW9uIEkNCnN1Z2dlc3RlZCBhYm92ZSkNCg0KJmd0OyArCQkJb3B0cy5wYXNzX2Zk cyA9IHRydWU7DQomZ3Q7ICsJCX0NCiZndDsgKwl9IHdoaWxlIChuYW1lICE9IC0xKTsNCg0KTml0 OiBleHRyYSBuZXdsaW5lIGhlcmUgZm9yIGNvbnNpc3RlbmN5IChzZXBhcmF0ZSByZXR1cm4gc3Rh dGVtZW50IGZyb20NCmZ1bmN0aW9uIGxvZ2ljKS4NCg0KJmd0OyArCXJldHVybiBvcHRzOw0KJmd0 OyAgfQ0KJmd0OyAgDQomZ3Q7ICAvKioNCiZndDsgQEAgLTEzMTcsNiArMTMyNiw3IEBAIHZvaWQg Y29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQomZ3Q7ICAJCXsmcXVv dDtjb25mLXBhdGgmcXVvdDssCXJlcXVpcmVkX2FyZ3VtZW50LAlOVUxMLAkJJ2MnIH0sDQomZ3Q7 ICAJCXsmcXVvdDtjaHJvb3QtZmFsbGJhY2smcXVvdDssIG5vX2FyZ3VtZW50LAlOVUxMLCAJCTMy IH0sDQomZ3Q7ICAJCXsmcXVvdDtuby1waWRucyZxdW90OywJbm9fYXJndW1lbnQsCQlOVUxMLAkJ MzMgfSwNCiZndDsgKwkJeyZxdW90O3Bhc3MtZmRzJnF1b3Q7LAlyZXF1aXJlZF9hcmd1bWVudCwJ TlVMTCwJCTM0IH0sDQomZ3Q7ICAJCXsgMCB9LA0KJmd0OyAgCX07DQomZ3Q7ICAJY29uc3QgY2hh ciAqb3B0c3RyaW5nID0gJnF1b3Q7K2RxZmVsOmhzOmM6RjpJOnA6UDptOmE6bjpNOmc6aTpvOkQ6 UzpIOjQ2MXQ6dTpUOlU6JnF1b3Q7Ow0KJmd0OyBAQCAtMTU2Nyw2ICsxNTc3LDExIEBAIHZvaWQg Y29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQomZ3Q7ICANCiZndDsg IAkJCWMtJmd0O25vX3BpZG5zID0gdHJ1ZTsNCiZndDsgIAkJCWJyZWFrOw0KJmd0OyArCQljYXNl IDM0Og0KJmd0OyArCQkJLyogLS1wYXNzLWZkcyB3YXMgcGFyc2VkIGVhcmx5IGFuZCBjLSZndDtw YXN0YV9wYXNzX2ZkcyBzZXQgaW4gbWFpbigpICovDQoNCkl0J3Mgbm90IGFjdHVhbGx5IHNldCBp biBtYWluKCkuICBCdXQgdGhlIHJlbGV2YW50IGZhY3QgaGVyZSBpcyBzaW1wbHkNCnRoYXQgLS1w YXNzLWZkcyB3YXMgcGFyc2VkIGVhcmx5LCBzbyB0aGF0IHdvdWxkIGJlIGVub3VnaC4gIElmIGl0 J3Mgbm90DQplbm91Z2ggZm9yIHNvbWUgcmVhc29uLCB5b3Ugc2hvdWxkIHdyYXAgdGhpcyBjb21t ZW50IHRvIDgwIGNvbHVtbnMuDQoNCiZndDsgKwkJCWlmIChjLSZndDttb2RlICE9IE1PREVfUEFT VEEpDQomZ3Q7ICsJCQkJZGllKCZxdW90Oy0tcGFzcy1mZHMgaXMgZm9yIHBhc3RhIG1vZGUgb25s eSZxdW90Oyk7DQomZ3Q7ICsJCQlicmVhazsNCiZndDsgIAkJY2FzZSAnZCc6DQomZ3Q7ICAJCQlj LSZndDtkZWJ1ZyA9IDE7DQomZ3Q7ICAJCQljLSZndDtxdWlldCA9IDA7DQomZ3Q7IEBAIC0xOTI5 LDYgKzE5NDQsOSBAQCB2b2lkIGNvbmYoc3RydWN0IGN0eCAqYywgaW50IGFyZ2MsIGNoYXIgKiph cmd2KQ0KJmd0OyAgCWVsc2UgaWYgKG9wdGluZCAhPSBhcmdjKQ0KJmd0OyAgCQlkaWUoJnF1b3Q7 RXh0cmEgbm9uLW9wdGlvbiBhcmd1bWVudDogJXMmcXVvdDssIGFyZ3Zbb3B0aW5kXSk7DQomZ3Q7 ICANCiZndDsgKwlpZiAoYy0mZ3Q7cGFzdGFfcGFzc19mZHMgJmFtcDsmYW1wOyAqbmV0bnMpDQom Z3Q7ICsJCWRpZSgmcXVvdDstLXBhc3MtZmRzIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBzcGF3bmlu ZyBhIGNvbW1hbmQmcXVvdDspOw0KJmd0OyArDQomZ3Q7ICAJaWYgKGMtJmd0O25vX3BpZG5zICZh bXA7JmFtcDsgKm5ldG5zKQ0KJmd0OyAgCQlkaWUoJnF1b3Q7LS1uby1waWRucyBpcyBpbmNvbXBh dGlibGUgd2l0aCBQSUQgb3IgLS1uZXRucyZxdW90Oyk7DQomZ3Q7ICANCiZndDsgZGlmZiAtLWdp dCBhL2NvbmYuaCBiL2NvbmYuaA0KJmd0OyBpbmRleCAxOWJmOWJjLi5lMTE2NjFmIDEwMDY0NA0K Jmd0OyAtLS0gYS9jb25mLmgNCiZndDsgKysrIGIvY29uZi5oDQomZ3Q7IEBAIC02LDggKzYsMTMg QEANCiZndDsgICNpZm5kZWYgQ09ORl9IDQomZ3Q7ICAjZGVmaW5lIENPTkZfSA0KJmd0OyAgDQom Z3Q7ICtzdHJ1Y3QgZmRfb3B0cyB7DQomZ3Q7ICsJaW50IGZkX3RhcDsNCiZndDsgKwlib29sIHBh c3NfZmRzOw0KJmd0OyArfTsNCiZndDsgKw0KDQpUaGlzIGNvdWxkIGdvIGF3YXksIGlmIHdlIHBh c3Mgc3RydWN0IGN0eCB0byBjb25mX2ZkcygpLg0KDQomZ3Q7ICBlbnVtIHBhc3N0X21vZGVzIGNv bmZfbW9kZShpbnQgYXJnYywgY2hhciAqYXJndltdKTsNCiZndDsgLWludCBjb25mX3RhcF9mZChp bnQgYXJnYywgY2hhciAqKmFyZ3YpOw0KJmd0OyArc3RydWN0IGZkX29wdHMgY29uZl9mZHMoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KTsNCiZndDsgIHZvaWQgY29uZihzdHJ1Y3QgY3R4ICpjLCBpbnQg YXJnYywgY2hhciAqKmFyZ3YpOw0KJmd0OyAgdm9pZCBjb25mX2xpc3Rlbl9oYW5kbGVyKHN0cnVj dCBjdHggKmMsIHVpbnQzMl90IGV2ZW50cyk7DQomZ3Q7ICB2b2lkIGNvbmZfaGFuZGxlcihzdHJ1 Y3QgY3R4ICpjLCB1aW50MzJfdCBldmVudHMpOw0KJmd0OyBkaWZmIC0tZ2l0IGEvaXNvbGF0aW9u LmMgYi9pc29sYXRpb24uYw0KJmd0OyBpbmRleCBhMDA0NzVmLi40MTA1ZGMzIDEwMDY0NA0KJmd0 OyAtLS0gYS9pc29sYXRpb24uYw0KJmd0OyArKysgYi9pc29sYXRpb24uYw0KJmd0OyBAQCAtMjUw LDQ2ICsyNTAsNjQgQEAgdm9pZCBpc29sYXRlX2luaXRpYWwodm9pZCkNCiZndDsgIH0NCiZndDsg IA0KJmd0OyAgLyoNCiZndDsgLSAqIGlzb2xhdGVfZmRzKCkgLSBDbG9zZSBsZWFrZWQgZmlsZXMs IGJ1dCBub3QgLS1mZCwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyDQomZ3Q7ICsgKiBpc29sYXRlX2Zk cygpIC0gQ2xvc2UgbGVha2VkIGZpbGVzIGlmIGFwcGxpY2FibGUNCiZndDsgKyAqIEBjOgkJRXhl Y3V0aW9uIGNvbnRleHQNCiZndDsgICAqIEBhcmdjOglBcmd1bWVudCBjb3VudA0KJmd0OyAtICog QGFyZ3Y6CUNvbW1hbmQgbGluZSBvcHRpb25zLCBhcyB3ZSBuZWVkIHRvIHNraXAgYW55IGZpbGUg Z2l2ZW4gdmlhIC0tZmQNCiZndDsgKyAqIEBhcmd2OglDb21tYW5kIGxpbmUgb3B0aW9ucw0KJmd0 OyAgICoNCiZndDsgICAqIFNob3VsZDoNCiZndDsgLSAqICAtIGNsb3NlIGFsbCBvcGVuIGZpbGVz IGV4Y2VwdCBmb3Igc3RhbmRhcmQgc3RyZWFtcyBhbmQgdGhlIG9uZSBmcm9tIC0tZmQNCiZndDsg KyAqICAtIGNsb3NlIGFsbCBvcGVuIGZpbGVzIGV4Y2VwdCBmb3Igc3RhbmRhcmQgc3RyZWFtcyBh bmQgdGhlIG9uZSBmcm9tIC0tZmQsDQomZ3Q7ICsgICAgICB1bmxlc3MgLS1wYXNzLWZkcyBpcyB1 c2VkLCBpbiB3aGljaCBjYXNlIGFsbCBmZHMgYXJlIHByZXNlcnZlZA0KJmd0OyAgICogIC0gbW92 ZSB0aGUgLS1mZCBkZXNjcmlwdG9yIG91dCBvZiB0aGUgcmFuZ2UgMC0yDQomZ3Q7IC0gKg0KJmd0 OyAtICogUmV0dXJuOiBuZXcgZmQgbnVtYmVyIGZvciBkZXNjcmlwdG9yIGZyb20gLS1mZCwgb3Ig LTEgaWYgbm90IHNwZWNpZmllZA0KJmd0OyArICogIC0gdXBkYXRlIHRoZSBleGVjdXRpb24gY29u dGV4dA0KJmd0OyAgICovDQomZ3Q7IC1pbnQgaXNvbGF0ZV9mZHMoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQ0KJmd0OyArdm9pZCBpc29sYXRlX2ZkcyhzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hh ciAqKmFyZ3YpDQomZ3Q7ICB7DQomZ3Q7IC0JaW50IGZkLCBjbG9zZV9mcm9tID0gU1RERVJSX0ZJ TEVOTyArIDE7DQomZ3Q7ICsJc3RydWN0IGZkX29wdHMgb3B0cyA9IGNvbmZfZmRzKGFyZ2MsIGFy Z3YpOw0KJmd0OyArCWlmIChvcHRzLmZkX3RhcCAmZ3Q7PSAwICZhbXA7JmFtcDsgb3B0cy5mZF90 YXAgJmx0OyAzKSB7DQomZ3Q7ICsJCS8qIE1vdmUgdGhlIHRhcCBmZCB0byBhIHNhZmVyIGxvY2F0 aW9uICovDQoNCkRvIHdlIHJlYWxseSBuZWVkIHRvIGRvIHRoaXMgdW5jb25kaXRpb25hbGx5LCBl dmVuIGlmIHdlJ3JlIG5vdCBjbG9zaW5nDQpmaWxlIGRlc2NyaXB0b3JzPyAgSSBkb24ndCBzZWUg YSByZWFzb24uDQoNClRoYXQgaXMsIEkgZ3Vlc3Mgd2UgY291bGQgbWFrZSB0aGlzIG11Y2ggc2lt cGxlciwgbGV0IGNvbmZfZmRzKCkgc2V0DQpjLSZndDtwYXN0YV9wYXNzX2ZkcywgYW5kIHJldHVy biBlYXJseSBoZXJlIGlmIGl0J3Mgc2V0LiAgTm8gbG9naWMgY2hhbmdlcw0KbmVlZGVkIGluIHRo aXMgZnVuY3Rpb24sIGp1c3Qgc29tZXRoaW5nIHRvIGFkYXB0LCBpbiBjYXNlIHlvdSBnbyB0aGUN CndheSBJIHN1Z2dlc3RlZCB3aXRoIGNvbmZfZmRzKCkgc2V0dGluZyBjLSZndDtmZF90YXA6DQoN CiZndDsgKwkJaW50IG5ld19mZCA9IGZjbnRsKG9wdHMuZmRfdGFwLCBGX0RVUEZELCBTVERFUlJf RklMRU5PICsgMSk7DQomZ3Q7ICANCiZndDsgLQlmZCA9IGNvbmZfdGFwX2ZkKGFyZ2MsIGFyZ3Yp Ow0KJmd0OyArCQlpZiAobmV3X2ZkICZsdDsgMCkNCiZndDsgKwkJCWRpZV9wZXJyb3IoJnF1b3Q7 Q291bGQgbm90IHJlbG9jYXRlIC0tZmQgZGVzY3JpcHRvciZxdW90Oyk7DQomZ3Q7ICANCiZndDsg LQlpZiAoZmQgJmd0Oz0gMCkgew0KJmd0OyAtCQkvKiBNb3ZlIHRoZSBwYXNzZWQgZmQgdG8gYSBt b3JlIGNvbnZlbmllbnQgbG9jYXRpb24gKi8NCiZndDsgLQkJaWYgKGZkICE9IGNsb3NlX2Zyb20J CQkmYW1wOyZhbXA7DQoNCi4uLnRoaXMgd291bGQgbmVlZCB0byB1c2UgYy0mZ3Q7ZmRfdGFwLCBh bmQuLi4NCg0KJmd0OyAtCQkgICAgKGR1cDIoZmQsIGNsb3NlX2Zyb20pICE9IGNsb3NlX2Zyb20J fHwNCiZndDsgLQkJICAgICBjbG9zZShmZCkpKQ0KJmd0OyAtCQkJZGllX3BlcnJvcigmcXVvdDtD b3VsZCBub3QgbW92ZSAtLWZkIGRlc2NyaXB0b3ImcXVvdDspOw0KJmd0OyAtCQlmZCA9IGNsb3Nl X2Zyb20rKzsNCiZndDsgKwkJY2xvc2Uob3B0cy5mZF90YXApOw0KJmd0OyArCQlvcHRzLmZkX3Rh cCA9IG5ld19mZDsNCiZndDsgIAl9DQomZ3Q7ICsJYy0mZ3Q7ZmRfdGFwID0gb3B0cy5mZF90YXA7 DQoNCi4uLnRoaXMgd291bGQgZ28gYXdheSBhcyB3ZWxsLg0KDQomZ3Q7ICsJYy0mZ3Q7cGFzdGFf cGFzc19mZHMgPSBvcHRzLnBhc3NfZmRzOw0KJmd0OyArDQomZ3Q7ICsJLyogQ2xvc2UgbGVha2Vk IGZpbGUgZGVzY3JpcHRvcnMgdW5sZXNzIC0tcGFzcy1mZHMgaXMgdXNlZCAqLw0KJmd0OyArCWlm ICghb3B0cy5wYXNzX2Zkcykgew0KJmd0OyArCQlpbnQgcmMgPSAwOw0KJmd0OyArCQkvKiBLZWVw IHN0YW5kYXJkIHN0cmVhbXMgYW5kIHRoZSB0YXAgZmQgKGlmIGdpdmVuKSAqLw0KJmd0OyArCQlp bnQga2VlcCA9IG9wdHMuZmRfdGFwICZndDs9IFNUREVSUl9GSUxFTk8gPyBvcHRzLmZkX3RhcCA6 IFNUREVSUl9GSUxFTk87DQomZ3Q7ICsNCiZndDsgKwkJaWYgKGtlZXAgJmd0OyBTVERFUlJfRklM RU5PICsgMSkgew0KJmd0OyArCQkJLyogVGFwIGZkIHdhcyByZWxvY2F0ZWQgdG8gYWJvdmUgc29t ZSBvdGhlciBsZWFrZWQgZmQocykqLw0KJmd0OyArCQkJLyogQ2xvc2UgZmRzIGJldHdlZW4gc3Rk ZXJyIGFuZCB0aGUgdGFwIGZkICovDQomZ3Q7ICsJCQlpZiAoY2xvc2VfcmFuZ2UoU1RERVJSX0ZJ TEVOTyArIDEsIGtlZXAgLSAxLCBDTE9TRV9SQU5HRV9VTlNIQVJFKSkNCiZndDsgKwkJCQlyYyA9 IC0xOw0KJmd0OyArCQl9DQomZ3Q7ICANCiZndDsgLQlpZiAoY2xvc2VfcmFuZ2UoY2xvc2VfZnJv bSwgfjBVLCBDTE9TRV9SQU5HRV9VTlNIQVJFKSkgew0KJmd0OyAtCQlpZiAoZXJybm8gPT0gRU5P U1lTIHx8IGVycm5vID09IEVJTlZBTCkgew0KJmd0OyAtCQkJLyogVGhpcyBwcm9iYWJseSBtZWFu cyBjbG9zZV9yYW5nZSgpIG9yIHRoZQ0KJmd0OyAtCQkJICogQ0xPU0VfUkFOR0VfVU5TSEFSRSBm bGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlDQomZ3Q7IC0JCQkgKiBrZXJuZWwuICBOb3QgbXVj aCB3ZSBjYW4gZG8gaGVyZSBleGNlcHQgY2Fycnkgb24gYW5kDQomZ3Q7IC0JCQkgKiBob3BlIGZv ciB0aGUgYmVzdC4NCiZndDsgLQkJCSAqLw0KJmd0OyAtCQkJd2FybigNCiZndDsgLSZxdW90O0Nh bid0IHVzZSBjbG9zZV9yYW5nZSgpIHRvIGVuc3VyZSBubyBmaWxlcyBsZWFrZWQgYnkgcGFyZW50 JnF1b3Q7KTsNCiZndDsgLQkJfSBlbHNlIHsNCiZndDsgLQkJCWRpZV9wZXJyb3IoJnF1b3Q7RmFp bGVkIHRvIGNsb3NlIGZpbGVzIGxlYWtlZCBieSBwYXJlbnQmcXVvdDspOw0KJmd0OyArCQkvKiBD bG9zZSBhbGwgb3RoZXIgZmRzICovDQomZ3Q7ICsJCWlmIChjbG9zZV9yYW5nZShrZWVwICsgMSwg fjBVLCBDTE9TRV9SQU5HRV9VTlNIQVJFKSkNCiZndDsgKwkJCXJjID0gLTE7DQomZ3Q7ICsNCiZn dDsgKwkJaWYgKHJjKSB7DQomZ3Q7ICsJCQlpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09 IEVJTlZBTCkgew0KJmd0OyArCQkJCS8qIFRoaXMgcHJvYmFibHkgbWVhbnMgY2xvc2VfcmFuZ2Uo KSBvciB0aGUNCiZndDsgKwkJCQkqIENMT1NFX1JBTkdFX1VOU0hBUkUgZmxhZyBpcyBub3Qgc3Vw cG9ydGVkIGJ5IHRoZQ0KJmd0OyArCQkJCSoga2VybmVsLiAgTm90IG11Y2ggd2UgY2FuIGRvIGhl cmUgZXhjZXB0IGNhcnJ5IG9uIGFuZA0KJmd0OyArCQkJCSogaG9wZSBmb3IgdGhlIGJlc3QuDQom Z3Q7ICsJCQkJKi8NCiZndDsgKwkJCQl3YXJuKA0KJmd0OyArCSZxdW90O0Nhbid0IHVzZSBjbG9z ZV9yYW5nZSgpIHRvIGVuc3VyZSBubyBmaWxlcyBsZWFrZWQgYnkgcGFyZW50JnF1b3Q7KTsNCiZn dDsgKwkJCX0gZWxzZSB7DQomZ3Q7ICsJCQkJZGllX3BlcnJvcigmcXVvdDtGYWlsZWQgdG8gY2xv c2UgZmlsZXMgbGVha2VkIGJ5IHBhcmVudCZxdW90Oyk7DQomZ3Q7ICsJCQl9DQomZ3Q7ICAJCX0N CiZndDsgIAl9DQomZ3Q7IC0NCiZndDsgLQlyZXR1cm4gZmQ7DQomZ3Q7ICB9DQomZ3Q7ICANCiZn dDsgIC8qKg0KJmd0OyBkaWZmIC0tZ2l0IGEvaXNvbGF0aW9uLmggYi9pc29sYXRpb24uaA0KJmd0 OyBpbmRleCBlYzQ3MDM4Li5mZThkN2Q1IDEwMDY0NA0KJmd0OyAtLS0gYS9pc29sYXRpb24uaA0K Jmd0OyArKysgYi9pc29sYXRpb24uaA0KJmd0OyBAQCAtMTEsNyArMTEsNyBAQA0KJmd0OyAgI2lu Y2x1ZGUgJmx0O3VuaXN0ZC5oJmd0Ow0KJmd0OyAgDQomZ3Q7ICB2b2lkIGlzb2xhdGVfaW5pdGlh bCh2b2lkKTsNCiZndDsgLWludCBpc29sYXRlX2ZkcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOw0K Jmd0OyArdm9pZCBpc29sYXRlX2ZkcyhzdHJ1Y3QgY3R4ICpjLCBpbnQgYXJnYywgY2hhciAqKmFy Z3YpOw0KJmd0OyAgdm9pZCBpc29sYXRlX3VzZXIoY29uc3Qgc3RydWN0IGN0eCAqYywgdWlkX3Qg dWlkLCBnaWRfdCBnaWQsIGJvb2wgdXNlX3VzZXJucywNCiZndDsgIAkJICBjb25zdCBjaGFyICp1 c2VybnMpOw0KJmd0OyAgaW50IGlzb2xhdGVfcHJlZm9yayhjb25zdCBzdHJ1Y3QgY3R4ICpjKTsN CiZndDsgZGlmZiAtLWdpdCBhL3Bhc3N0LjEgYi9wYXNzdC4xDQomZ3Q7IGluZGV4IDBiNzgwZmUu LjU2ZTI0MWYgMTAwNjQ0DQomZ3Q7IC0tLSBhL3Bhc3N0LjENCiZndDsgKysrIGIvcGFzc3QuMQ0K Jmd0OyBAQCAtNzY2LDYgKzc2NiwxMSBAQCBvZiBsb2NhbCB0cmFmZmljIGluIHBhc3RhXGZSIGlu IHRoZSBcZkJOT1RFU1xmUiBmb3IgbW9yZSBkZXRhaWxzLg0KJmd0OyAgRG8gbm90IGNyZWF0ZSBh IHRhcCBkZXZpY2UgaW4gdGhlIG5hbWVzcGFjZS4gSW4gdGhpcyBtb2RlLCBcZklwYXN0YVxmUiBv bmx5DQomZ3Q7ICBmb3J3YXJkcyBsb29wYmFjayB0cmFmZmljIGJldHdlZW4gbmFtZXNwYWNlcy4N CiZndDsgIA0KJmd0OyArLlRQDQomZ3Q7ICsuQlIgXC1cLXBhc3NcLWZkcw0KJmd0OyArUHJlc2Vy dmUgYWxsIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbmQgcGFzcyB0aGVtIHRvIHRoZSBzcGF3bmVk IGNvbW1hbmQuDQomZ3Q7ICtUaGlzIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIHdoZW4gXGZCcGFz dGFcZlIgc3Bhd25zIGEgY29tbWFuZC4NCiZndDsgKw0KJmd0OyAgLlNIIEVYQU1QTEVTDQomZ3Q7 ICANCiZndDsgIC5TUyBcZkJwYXN0YQ0KJmd0OyBkaWZmIC0tZ2l0IGEvcGFzc3QuYyBiL3Bhc3N0 LmMNCiZndDsgaW5kZXggNTA1NDU1MS4uZmE3YWZjNSAxMDA2NDQNCiZndDsgLS0tIGEvcGFzc3Qu Yw0KJmd0OyArKysgYi9wYXNzdC5jDQomZ3Q7IEBAIC0zNDUsNyArMzQ1LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KJmd0OyAgCWFyY2hfYXZ4Ml9leGVjKGFyZ3YpOw0KJmd0 OyAgDQomZ3Q7ICAJaXNvbGF0ZV9pbml0aWFsKCk7DQomZ3Q7IC0JYy0mZ3Q7ZmRfdGFwID0gaXNv bGF0ZV9mZHMoYXJnYywgYXJndik7DQomZ3Q7ICsJaXNvbGF0ZV9mZHMoYywgYXJnYywgYXJndik7 DQomZ3Q7ICANCiZndDsgIAlpZiAoKGRldm51bGxfZmQgPSBvcGVuKCZxdW90Oy9kZXYvbnVsbCZx dW90OywgT19SRFdSIHwgT19DTE9FWEVDKSkgJmx0OyAwKQ0KJmd0OyAgCQlkaWVfcGVycm9yKCZx dW90O0ZhaWxlZCB0byBvcGVuIC9kZXYvbnVsbCZxdW90Oyk7DQomZ3Q7IGRpZmYgLS1naXQgYS9w YXNzdC5oIGIvcGFzc3QuaA0KJmd0OyBpbmRleCBhZmQ4ZTlmLi5iMDY1ZDQxIDEwMDY0NA0KJmd0 OyAtLS0gYS9wYXNzdC5oDQomZ3Q7ICsrKyBiL3Bhc3N0LmgNCiZndDsgQEAgLTE5Niw2ICsxOTYs NyBAQCBzdHJ1Y3QgaXA2X2N0eCB7DQomZ3Q7ICAgKiBAcGFzdGFfaWZpOgkJSW5kZXggb2YgbmFt ZXNwYWNlIGludGVyZmFjZSBmb3IgcGFzdGENCiZndDsgICAqIEBwYXN0YV9jb25mX25zOglDb25m aWd1cmUgbmFtZXNwYWNlIGFmdGVyIGNyZWF0aW5nIGl0DQomZ3Q7ICAgKiBAbm9fcGlkbnM6CQlE b24ndCBjcmVhdGUgYSBuZXcgUElEIG5hbWVzcGFjZSBmb3Igc3Bhd25lZCBjb21tYW5kDQomZ3Q7 ICsgKiBAcGFzdGFfcGFzc19mZHM6CURvIG5vdCBjbG9zZSBsZWFrZWQgZmlsZSBkZXNjcmlwdG9y cw0KDQpEb2VzIGl0IHJlYWxseSBuZWVkIHRvIGhhdmUgJ3Bhc3RhJyBpbiB0aGUgbmFtZT8gIFN1 cmUsIGl0J3MNCnBhc3RhLW9ubHksIGJ1dCB0aGlzIGlzIGFscmVhZHkgZG9jdW1lbnRlZCBpbiBt YW4gcGFnZSwgdXNhZ2UsIGFuZA0KY29uZigpLCBzbyB3ZSBjb3VsZCBwcm9iYWJseSBzYXZlIHNv bWUgdHlwaW5nIGJ5IGNhbGxpbmcgaXQgJ3Bhc3NfZmRzJy4NCg0KJmd0OyAgICogQGZ3ZDoJCUZv cndhcmRpbmcgdGFibGVzDQomZ3Q7ICAgKiBAZndkX3BlbmRpbmc6CVBlbmRpbmcgZm9yd2FyZCB0 YWJsZXMNCiZndDsgICAqIEBub190Y3A6CQlEaXNhYmxlIFRDUCBvcGVyYXRpb24NCiZndDsgQEAg LTI4MCw2ICsyODEsNyBAQCBzdHJ1Y3QgY3R4IHsNCiZndDsgIAl1bnNpZ25lZCBpbnQgcGFzdGFf aWZpOw0KJmd0OyAgCWludCBwYXN0YV9jb25mX25zOw0KJmd0OyAgCWJvb2wgbm9fcGlkbnM7DQom Z3Q7ICsJYm9vbCBwYXN0YV9wYXNzX2ZkczsNCiZndDsgIA0KJmd0OyAgCXN0cnVjdCBmd2RfdGFi bGUgKmZ3ZFtQSUZfTlVNX1RZUEVTXTsNCiZndDsgIAlzdHJ1Y3QgZndkX3RhYmxlICpmd2RfcGVu ZGluZ1tQSUZfTlVNX1RZUEVTXTsNCg0KLS0gDQpTdGVmYW5vDQoNCjwvcHJlPg0KPC9kaXY+DQo8 L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_DM3PR11MB8713818FD3E6BB47F6EA35CCDA612DM3PR11MB8713namp_--