From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2073.outbound.protection.outlook.com [40.107.237.73]) by sourceware.org (Postfix) with ESMTPS id 9C3693854573 for ; Mon, 21 Nov 2022 11:40:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9C3693854573 Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HmRI8XyXuZ6U7q0j4nrzR50grJ11vHnul+/Bg+chiAiK9bCWaeY/QxUq1+4Y69FanMsFlsGca4fHjBZgFai2bisjA8toCiJU/lScIRmj8NYO88nysc4xOtiLO5MnA9ePZHsBGMuQdFQNsQ/qTh3kekoRaepOPhNjZtU0l4yNukiBQtVZmq1r1O3b4yRpxfeeBvAtvwEH1XwoA4wCZRL3ZYjOKwT/PWBYmz39wmU3csE3qwzoWq5vAicJw1jwt4ARFqp2Hhz+igSxG/ew2Jl+b/44QRoxlj7PJP/ucgafzWJBsIserBG7EsJwvZ6Kx14iEL8Le7iDbd7nDuPc7y8D8g== 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=nkS62ahNyeOeUGqFARpMhW93/B2KJOSMxY0xcMbGKlk=; b=Ekx8IiUi5I0ouLFzpwLDT/wBiB18892lpyg2qdGVUUZlKVQTsHJou7Ne5i+TpYucN87R6puz3daYrS4teSZ8CETv92fudcNoMKVD9/cpVH/sprA6xvpC7OLlAMdLjxWC0PIu0WuyjqHDx0UQytbq6up6xkLDso/r5fLaGmQzxAh10aKRwGOED4gr1fNdCcKhGLJx7s3LMjjazga/zburPLEgiJ6MUQYLPLY7Zv6yMZNklbgC4J+xhbTb6cf8SpXaqMlRFbLYhdgfGoa2bm2nzg0zBpBPKbLRusQWxR1QDMyNpmho8yRCmG9ziWWAaNiJ6SAhbI1vrKxZs9oIHG9b8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nkS62ahNyeOeUGqFARpMhW93/B2KJOSMxY0xcMbGKlk=; b=TggAQv6k8/apOLys8hDGDWdTbZBgCmd0qLD+hyBj9v9JGLNLDoOWBt4oJDpU62ZSycxvxSQF8T8Pe/jAF0bxrkV4qYhhmWODZ3BWeUKH0aEvdfmFurV2InSgGnacY4koPATrxYo1kZTpKMOgQ3jrOTSsBTxlBFPgJE3e4kW4xi8= Received: from DM6PR12MB4795.namprd12.prod.outlook.com (2603:10b6:5:164::11) by SN7PR12MB6790.namprd12.prod.outlook.com (2603:10b6:806:269::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.15; Mon, 21 Nov 2022 11:40:40 +0000 Received: from DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::fce7:e82c:41f9:4ce3]) by DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::fce7:e82c:41f9:4ce3%7]) with mapi id 15.20.5834.009; Mon, 21 Nov 2022 11:40:40 +0000 From: "Joshi, Tejas Sanjay" To: Alexander Monakov , "gcc-patches@gcc.gnu.org" CC: "honza.hubicka@gmail.com" , "Kumar, Venkataramanan" Subject: RE: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Topic: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Index: Adj4PDK6isiklu5QQkmQOxLj7oCI6QAHez6AACHWebAAA9yQAAEnNgNQ Date: Mon, 21 Nov 2022 11:40:40 +0000 Message-ID: References: <8e489785-b181-fbcf-e029-cd75796a6f28@ispras.ru> In-Reply-To: <8e489785-b181-fbcf-e029-cd75796a6f28@ispras.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2022-11-21T11:30:33Z; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=f4f0afe7-a1fb-4770-8164-78028e6d17a4; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=1 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_enabled: true msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_setdate: 2022-11-21T11:40:34Z msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_method: Privileged msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_name: Public-AIP 2.0 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_actionid: f3fc8e1b-0501-4028-821d-db1f994608a7 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_contentbits: 0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4795:EE_|SN7PR12MB6790:EE_ x-ms-office365-filtering-correlation-id: 2fa0bc05-1125-4c14-28a4-08dacbb53778 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lRZ7mE/ehiWTCLC5lOEadM0e9L+JMMk9MG67oWJJ1FRndx4Tuj1Vddc4aaVlmxXdUuPrldxcS7Cauv2CNYzWLHWI8uyVfLfHP0Ue2hKkxeZ6PMBxByKLcVXCb9N9Du4cPpWBtcRRcaBlrmjrNRaqLcwffxq1d87k3djqqNbCqtkK4w24/af1+aCEKlLIvYMxquyfck/F69U+JkORTArseZR7is4bIJsWpmZ/aXYXjKunebssRfEsX8g8jyj52Dbm8T8GIi/+g2iyNC8sYoJNSze+VC3SR74nbwv8vnRI/tycDNK10g+jIrmemT+BJlgAviqy0SkIWvi2/kcjQs+n1BCQM49/mRVidTgvsQY+dMbB8ek6NGeoedP6J2eOturDkyN1+7dnWH6hIX7XiJoUbQswsZjLewWy49A3fA/S3y/oUTppo4wYVaqVU7T8/gjWyCx15GAfB18SDaYboZD/39KPO8jpTa2vpw2+5idvTAUgIomq6QzvLvSr0riNU3nuIJx40LGbCOBu/1TUlnr0Ftk0I5UYkxRbHxdFRbNCL3uUtzCOe5Rj1h6YQlFpsFoCyttKf51riBmpAaxtvbCra7mxe+0ZUhYSQqrzu+qD29gUFvq1wKdYx0wuVBSvkenY77986r4cDK9vgeqb9NWpzspyk9A2XNUxM1s1yBY6ySxBmUUx4A+1oHUtWyLwZAHETVJtcoI2TFr3wrmpsaTNB6D5r+EJ9EcQUo0+HRaH96F3kDxf9+yewdVuV9mpAymc x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4795.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(136003)(346002)(376002)(451199015)(86362001)(55016003)(33656002)(64756008)(76116006)(66946007)(66556008)(66476007)(41300700001)(52536014)(186003)(4326008)(8676002)(30864003)(5660300002)(8936002)(478600001)(9686003)(26005)(316002)(71200400001)(6506007)(54906003)(110136005)(38100700002)(122000001)(7696005)(38070700005)(66446008)(99936003)(83380400001)(2906002)(2004002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?1F0ZWOL31Jy/v8Hg7pTlVG7TIxuRfKQ4AyEwMHqnLyx9Y9+w6Urg/juG11iP?= =?us-ascii?Q?73c4Ex+wcCu2pwCjpcSRbbjU1WDN4hVlfvEoug2ZP6t8cBBf0/RcTTb67ZKk?= =?us-ascii?Q?DbjB0GZByVLJjmx54T488gr/f8edFf7E5HbWJFuLvTo3pao7j3A/11dvPR9m?= =?us-ascii?Q?LkiAGokZ0TKnXu0iTAuXAdtGVRudw+APiuCGKkhcfJVt1/TBvMDKDpYMYBGT?= =?us-ascii?Q?GQu5xCMTymtcpCfA2qsKMuE99R4epOskxOkGAMIt3f1cYDtVT5CCPlJ3QyFc?= =?us-ascii?Q?ROXe+5ac6O3kuVh5Kh38ZMCIArDY8lX2xfUfBmYPfCaKGDUjyRNhM7keQJQL?= =?us-ascii?Q?1wsvHrATC58Ar2xTTzZ7m7rLiCcnZdtCL+JL6tT8riETU9yceEk2kZetLese?= =?us-ascii?Q?tHgPg2k1NNb8mJ0bBapJ4OT4jz5cOvBsXlpJDC9G0E9G1LRi+PlX5WxEJH4+?= =?us-ascii?Q?37A8L1G3pDdACAr/fUbPDrx1nKNzS13j4Xj+JlqrKjPDLH2KwZlLoKf3/JmF?= =?us-ascii?Q?qM6YrjIsv6+x2HNG/u1vysM5VlrLv57Ocm8Egv+Gn1+LnP0pYRfgK0vLaqAO?= =?us-ascii?Q?nD+vuE7j1Tx3+mPzgy2D9jRMLxoh/oANGkpIC3u9cnOQAvEi1XurCnKpk6um?= =?us-ascii?Q?gYVZ980eLQp82bKlIA+6Updbx6rMxAW9OQM0A1+CtxtSO58bUUbEx4QWRXw8?= =?us-ascii?Q?xfkCm8eeLImc5UBssvip+GTaBBFEzo4ZQaC26Q8+ycf7Eo4+Jvh4OTtnYYqj?= =?us-ascii?Q?8kgSrlLw6+D/Fi9Vi7wYy+vpt+u/vxjN9/ylf7AgtqC+1GQfGohkRd/lknB8?= =?us-ascii?Q?bb6tYiOPEgegooZ7DLMs/WdVUnOHotMoPsxQBeQU05L4Poyp0607qxyi/yTo?= =?us-ascii?Q?sVHvhFHnJh/Y/b2I5PY8WYcsqyfByEyE5WLsVLF6T9ItIt/JyxQktb+eOX3l?= =?us-ascii?Q?sdgaB+kQBd/2W2+NZ9UJgtnXse3k/mt6xVYgwYyOENzHCdi/3x3dCI1Scelm?= =?us-ascii?Q?CGEctNtiQVnvAcy2Rp8mUPEHeI+ySazShdJezkGtVQJguQAQzBxiP3CtzDIV?= =?us-ascii?Q?TuRSYtZ2WtFbn6yYQrjW9xWiz/ljrbKbNpaXMDhgNBgJXO5SUTJU42Uo4oRB?= =?us-ascii?Q?b/xZ7+cF//PEa5vnN6HRZi25IP/uqKun01ky7LOxMgCGsOFQ81laLg0bqmix?= =?us-ascii?Q?Jk7HcrPN6JsPUfu7aKSBTWxOLqaB2nhYudWbBRO4OfWLK2DeJIXWTj6gayYO?= =?us-ascii?Q?9H2tpGs5VCXPdjH7DUZMeh0PM9/9x5+o3+9sl7tvv5BwKdZTywJUUu+GDbqU?= =?us-ascii?Q?sF6F1/CPNTJJ7HOwFZkSEhGUGN3tGJ4lUBQ/hZ6Oy1Lwr+vBJ1YdC1wuqE2+?= =?us-ascii?Q?BTzo0ftO441yAmrnvYiqXiwmYbIuM97cBraMtooYDZm5FnPtOGGM6oE+ex4b?= =?us-ascii?Q?ZSWd5ivlFoLkNSzJNzMWwpATHeh538LgLDXOIawVyAJmCzE9X5g4OCnUvcGk?= =?us-ascii?Q?OF5shoGlOIJ/1j/BYlAgXwYGfjldj0eGSnruiWDxnyMrg6kAVXb/Vnh46IWj?= =?us-ascii?Q?J/RF9ahXKVFMWqUpFLoI0pn2zcHKCKJSBrAHnrSG?= Content-Type: multipart/mixed; boundary="_002_DM6PR12MB47955528574932E8B55DD545E30A9DM6PR12MB4795namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4795.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2fa0bc05-1125-4c14-28a4-08dacbb53778 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Nov 2022 11:40:40.6330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HBf6R2qBjrAW23fljLoXkN4SdIcHwpYaqhhPp6eEtHgN+MFgGDUhBHkfcOcFr/UHd6WEPEouJ2kPWMXBQpWtyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6790 X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SCC_5_SHORT_WORD_LINES,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_DM6PR12MB47955528574932E8B55DD545E30A9DM6PR12MB4795namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [Public] Hi, > I think instead of (znver4-fpu)*2 there should be >=20 > znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2 >=20 > assuming the instruction occupies the same pipe on both cycles (your vari= ant > models as if it can move from one pipe to another). > Also I think it's better to use znver4-direct rather than znver4-double f= or > AVX512 instructions, because they are decoded as one uop, not two (it won= 't > make a practical difference due to a "Fix me", but it's a simple improvem= ent). I have addressed all your comments in the patch attached here. I have also = used znver4-direct for avx512 insns. * This patch increased the insn-automata.cc size from 201502 to 214902. * Compile time and binary size on my machine remains same. * Make check and bootstrap build have no issues. * Spec cpu2017 also don't have any issues with this patch. Is this ok for trunk? Thanks and Regards, Tejas gcc/ChangeLog: * gcc/common/config/i386/i386-common.cc (processor_alias_table): Use CPU_ZNVER4 for znver4. * config/i386/i386.md: Add znver4.md. * config/i386/znver4.md: New. --- gcc/common/config/i386/i386-common.cc | 2 +- gcc/config/i386/i386.md | 1 + gcc/config/i386/znver4.md | 1027 +++++++++++++++++++++++++ 3 files changed, 1029 insertions(+), 1 deletion(-) create mode 100644 gcc/config/i386/znver4.md diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386= /i386-common.cc index f66bdd5a2af..4b01c3540e5 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -2113,7 +2113,7 @@ const pta processor_alias_table[] =3D {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3, PTA_ZNVER3, M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2}, - {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER3, + {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4, PTA_ZNVER4, M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F}, {"btver1", PROCESSOR_BTVER1, CPU_GENERIC, diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 8081df76741..c18dfe2af9e 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1312,6 +1312,7 @@ (include "bdver3.md") (include "btver2.md") (include "znver.md") +(include "znver4.md") (include "geode.md") (include "atom.md") (include "slm.md") diff --git a/gcc/config/i386/znver4.md b/gcc/config/i386/znver4.md new file mode 100644 index 00000000000..74b66caa38b --- /dev/null +++ b/gcc/config/i386/znver4.md @@ -0,0 +1,1027 @@ +;; Copyright (C) 2012-2022 Free Software Foundation, Inc. +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . +;; + + +(define_attr "znver4_decode" "direct,vector,double" + (const_string "direct")) + +;; AMD znver4 Scheduling +;; Modeling automatons for zen decoders, integer execution pipes, +;; AGU pipes, branch, floating point execution and fp store units. +(define_automaton "znver4, znver4_ieu, znver4_idiv, znver4_fdiv, znver4_ag= u, znver4_bru, znver4_fpu, znver4_fp_store") + +;; Decoders unit has 4 decoders and all of them can decode fast path +;; and vector type instructions. +(define_cpu_unit "znver4-decode0" "znver4") +(define_cpu_unit "znver4-decode1" "znver4") +(define_cpu_unit "znver4-decode2" "znver4") +(define_cpu_unit "znver4-decode3" "znver4") + +;; Currently blocking all decoders for vector path instructions as +;; they are dispatched separetely as microcode sequence. +(define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-= decode2+znver4-decode3") + +;; Direct instructions can be issued to any of the four decoders. +(define_reservation "znver4-direct" "znver4-decode0|znver4-decode1|znver4-= decode2|znver4-decode3") + +;; Fix me: Need to revisit this later to simulate fast path double behavio= r. +(define_reservation "znver4-double" "znver4-direct") + + +;; Integer unit 4 ALU pipes. +(define_cpu_unit "znver4-ieu0" "znver4_ieu") +(define_cpu_unit "znver4-ieu1" "znver4_ieu") +(define_cpu_unit "znver4-ieu2" "znver4_ieu") +(define_cpu_unit "znver4-ieu3" "znver4_ieu") +(define_reservation "znver4-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znve= r4-ieu3") + +;; 3 AGU pipes in znver4 +(define_cpu_unit "znver4-agu0" "znver4_agu") +(define_cpu_unit "znver4-agu1" "znver4_agu") +(define_cpu_unit "znver4-agu2" "znver4_agu") +(define_reservation "znver4-agu-reserve" "znver4-agu0|znver4-agu1|znver4-a= gu2") + +;; Load is 4 cycles. We do not model reservation of load unit. +(define_reservation "znver4-load" "znver4-agu-reserve") +(define_reservation "znver4-store" "znver4-agu-reserve") + +;; vectorpath (microcoded) instructions are single issue instructions. +;; So, they occupy all the integer units. +(define_reservation "znver4-ivector" "znver4-ieu0+znver4-ieu1 + +znver4-ieu2+znver4-ieu3 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; Floating point unit 4 FP pipes. +(define_cpu_unit "znver4-fpu0" "znver4_fpu") +(define_cpu_unit "znver4-fpu1" "znver4_fpu") +(define_cpu_unit "znver4-fpu2" "znver4_fpu") +(define_cpu_unit "znver4-fpu3" "znver4_fpu") + +(define_reservation "znver4-fpu" "znver4-fpu0|znver4-fpu1|znver4-fpu2|znve= r4-fpu3") + +(define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1 + +znver4-fpu2+znver4-fpu3 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; DIV units +(define_cpu_unit "znver4-idiv" "znver4_idiv") +(define_cpu_unit "znver4-fdiv" "znver4_fdiv") + +;; znver4 has a separate branch unit. +(define_cpu_unit "znver4-bru" "znver4_bru") + +;; Separate fp store and fp-to-int store. Although there are 2 store pipes= , the +;; throughput is limited to only one per cycle. +(define_cpu_unit "znver4-fp-store" "znver4_fp_store") + +;; Call Instruction +(define_insn_reservation "znver4_call" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "call,callv")) + "znver4-double,znver4-ieu0|znver4-bru,znver4-store") + +;; Push Instruction +(define_insn_reservation "znver4_push" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-store") + +(define_insn_reservation "znver4_push_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Pop instruction +(define_insn_reservation "znver4_pop" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load") + +(define_insn_reservation "znver4_pop_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Leave +(define_insn_reservation "znver4_leave" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "leave")) + "znver4-double,znver4-ieu,znver4-store") + +;; Integer Instructions or General instructions +;; Multiplications +(define_insn_reservation "znver4_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "QI,HI,SI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ieu1") + +(define_insn_reservation "znver4_imul_DI" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-ieu1") + +(define_insn_reservation "znver4_imul_mem" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "QI,HI,SI") + (eq_attr "memory" "!none")))) + "znver4-direct,znver4-load,znver4-ieu1") + +(define_insn_reservation "znver4_imul_DI_mem" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "!none")))) + "znver4-direct,znver4-load,znver4-ieu1") + +;; Divisions +(define_insn_reservation "znver4_idiv_DI" 18 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_DI_mem" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI_mem" 16 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI_mem" 14 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI_mem" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "!none")))) + "znver4-double,znver4-load,znver4-idiv*4") + +;; STR and ISHIFT are microcoded. +(define_insn_reservation "znver4_str" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "str") + (eq_attr "memory" "both,store"))) + "znver4-vector,znver4-ivector") + +(define_insn_reservation "znver4_ishift" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ishift") + (eq_attr "memory" "both,store"))) + "znver4-vector,znver4-ivector") + +;; MOV - integer movs +(define_insn_reservation "znver4_imovx_double" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "none")))) + "znver4-double,znver4-ieu") + +(define_insn_reservation "znver4_imov_direct" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_imov_double_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "store")))) + "znver4-double,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_direct_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_load_double_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imovx") + (eq_attr "memory" "store")))) + "znver4-double,znver4-load,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_imov_load_direct_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-load,znver4-ieu,znver4-store") + +;; INTEGER/GENERAL Instructions +(define_insn_reservation "znver4_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_insn_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu") + +(define_insn_reservation "znver4_insn2" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_insn2_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_rotate" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_rotate_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_insn_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_insn2_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu0|znver4-ieu3,znver4-store") + +(define_insn_reservation "znver4_rotate_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-ieu1|znver4-ieu2,znver4-store") + +;; Other vector type +(define_insn_reservation "znver4_ieu_vector" 5 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "other,multi")) + "znver4-vector,znver4-ivector") + +;; alu1 instructions +(define_insn_reservation "znver4_alu1_vector" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "none,unknown")))) + "znver4-vector,znver4-ivector") + +(define_insn_reservation "znver4_alu1_direct" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "none,unknown")))) + "znver4-direct,znver4-ieu") + +;; Branches +(define_insn_reservation "znver4_branch" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu0|znver4-bru") + +(define_insn_reservation "znver4_branch_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-ivector") + +;; LEA instruction with simple addressing +(define_insn_reservation "znver4_lea" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "lea")) + "znver4-direct,znver4-ieu") + +;; Floating Point +;; FP movs +(define_insn_reservation "znver4_fp_cmov" 6 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fcmov")) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_fp_mov_direct" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fmov")) + "znver4-direct,znver4-fpu1") + +(define_insn_reservation "znver4_fp_mov_direct_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1") + +(define_insn_reservation "znver4_fp_mov_direct_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1,znver4-fp-store") + +(define_insn_reservation "znver4_fp_mov_double" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver4-fp-store") + +(define_insn_reservation "znver4_fp_mov_double_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fpu1,znver4-fp-store") + +;; FSQRT +(define_insn_reservation "znver4_fsqrt" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (and (eq_attr "mode" "XF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*20") + +;; FPSPC instructions +(define_insn_reservation "znver4_fp_spc" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (eq_attr "memory" "none"))) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_fp_insn_vector" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (eq_attr "type" "mmxcvt,sselog1,ssemov"))) + "znver4-vector,znver4-fvector") + +;; FABS, FCHS +(define_insn_reservation "znver4_fp_fsgn" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fsgn")) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +;; FCMP +(define_insn_reservation "znver4_fp_fcmp" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1") + +(define_insn_reservation "znver4_fp_fcmp_double" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (and (eq_attr "znver1_decode" "double") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver4-fpu2") + +;; FADD, FSUB, FMUL +(define_insn_reservation "znver4_fp_op_mul" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0") + +(define_insn_reservation "znver4_fp_op_mul_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0") + +;; FDIV +(define_insn_reservation "znver4_fp_div" 15 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fdiv*15") + +(define_insn_reservation "znver4_fp_div_load" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fdiv*15") + +(define_insn_reservation "znver4_fp_idiv_load" 26 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (and (eq_attr "fp_int_src" "true") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fdiv*19") + +;; MMX, SSE, SSEn.n instructions +(define_insn_reservation "znver4_fp_mmx " 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "mmx")) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_add_cmp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_mmx_add_cmp_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_mmx_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_insn_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_mov" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" ",mmxmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mov_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_mmx_mul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3") + +;; AVX instructions +(define_insn_reservation "znver4_sse_log" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_log_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_log1" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_log1_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "none"))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load"))) + "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_test" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_test_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_imul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_mov" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_mov_fp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add1" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-vector,znver4-fvector") + +(define_insn_reservation "znver4_sse_add1_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-vector,znver4-load,znver4-fvector") + +(define_insn_reservation "znver4_sse_iadd" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_iadd_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_mul_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_div_pd" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*7") + +(define_insn_reservation "znver4_sse_div_ps" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_div_pd_load" 20 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*7") + +(define_insn_reservation "znver4_sse_div_ps_load" 17 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_cmp_avx" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF,QI,HI,SI,DI,TI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF,QI,HI,SI,DI,TI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx2" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V8SF,V4DF,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx2_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V8SF,V4DF,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_cvt_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_shuf" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_shuf_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_ishuf" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_ishuf_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +;; AVX512 instructions +(define_insn_reservation "znver4_sse_log_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_log_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_log1_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_log1_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store= ") + +(define_insn_reservation "znver4_sse_mul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_mul_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_imul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_imul_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_mov_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_mov_evex_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_mov_evex_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_add_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_iadd_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_iadd_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_div_pd_evex" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*7") + +(define_insn_reservation "znver4_sse_div_ps_evex" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_div_pd_evex_load" 20 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*7") + +(define_insn_reservation "znver4_sse_div_ps_evex_load" 17 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_cmp_avx512" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx512_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp,ssecomi") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cvt_evex" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_cvt_evex_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_shuf_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_shuf_evex_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_ishuf_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_ishuf_evex_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_muladd" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemuladd") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_muladd_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +;; AVX512 mask instructions + +(define_insn_reservation "znver4_sse_mskmov" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mskmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_msklog" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "msklog") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") --=20 2.25.1 --_002_DM6PR12MB47955528574932E8B55DD545E30A9DM6PR12MB4795namp_ Content-Type: application/octet-stream; name="0001-Add-AMD-znver4-instruction-reservations.patch" Content-Description: 0001-Add-AMD-znver4-instruction-reservations.patch Content-Disposition: attachment; filename="0001-Add-AMD-znver4-instruction-reservations.patch"; size=40130; creation-date="Mon, 21 Nov 2022 11:37:00 GMT"; modification-date="Mon, 21 Nov 2022 11:40:38 GMT" Content-Transfer-Encoding: base64 RnJvbSBkOTVhNWNmY2Y5MGRjYzUwYzNlMjg2OTI2YWNmYzQ3ODkyNWM2NTYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUZWphcyBKb3NoaSA8VGVqYXNTYW5qYXkuSm9zaGlAYW1kLmNv bT4KRGF0ZTogV2VkLCA5IE5vdiAyMDIyIDAwOjEwOjU5ICswNTMwClN1YmplY3Q6IFtQQVRDSF0g QWRkIEFNRCB6bnZlcjQgaW5zdHJ1Y3Rpb24gcmVzZXJ2YXRpb25zCgpUaGlzIGFkZHMgem52ZXI0 IGF1dG9tYXRhIHVuaXRzIGFuZCByZXNlcnZhdGlvbnMgc2VwYXJhdGVseSBmcm9tIG90aGVyCnpu dmVyIGF1dG9tYXRhLCBhdm9pZGluZyB0aGUgaW5zbi1hdXRvbWF0YS5jYyBzaXplIGJsb3ctdXAu CgpnY2MvQ2hhbmdlTG9nOgoKCSogZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5j YyAocHJvY2Vzc29yX2FsaWFzX3RhYmxlKToKCVVzZSBDUFVfWk5WRVI0IGZvciB6bnZlcjQuCgkq IGNvbmZpZy9pMzg2L2kzODYubWQ6IEFkZCB6bnZlcjQubWQuCgkqIGNvbmZpZy9pMzg2L3pudmVy NC5tZDogTmV3LgoKLS0tCiBnY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNjIHwg ICAgMiArLQogZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQgICAgICAgICAgICAgICB8ICAgIDEgKwog Z2NjL2NvbmZpZy9pMzg2L3pudmVyNC5tZCAgICAgICAgICAgICB8IDEwMjcgKysrKysrKysrKysr KysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDI5IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvY29uZmlnL2kzODYvem52ZXI0Lm1kCgpk aWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYyBiL2djYy9j b21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MKaW5kZXggZjY2YmRkNWEyYWYuLjRiMDFj MzU0MGU1IDEwMDY0NAotLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNj CisrKyBiL2djYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MKQEAgLTIxMTMsNyAr MjExMyw3IEBAIGNvbnN0IHB0YSBwcm9jZXNzb3JfYWxpYXNfdGFibGVbXSA9CiAgIHsiem52ZXIz IiwgUFJPQ0VTU09SX1pOVkVSMywgQ1BVX1pOVkVSMywKICAgICBQVEFfWk5WRVIzLAogICAgIE1f Q1BVX1NVQlRZUEUgKEFNREZBTTE5SF9aTlZFUjMpLCBQX1BST0NfQVZYMn0sCi0gIHsiem52ZXI0 IiwgUFJPQ0VTU09SX1pOVkVSNCwgQ1BVX1pOVkVSMywKKyAgeyJ6bnZlcjQiLCBQUk9DRVNTT1Jf Wk5WRVI0LCBDUFVfWk5WRVI0LAogICAgIFBUQV9aTlZFUjQsCiAgICAgTV9DUFVfU1VCVFlQRSAo QU1ERkFNMTlIX1pOVkVSNCksIFBfUFJPQ19BVlg1MTJGfSwKICAgeyJidHZlcjEiLCBQUk9DRVNT T1JfQlRWRVIxLCBDUFVfR0VORVJJQywKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2 Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQKaW5kZXggODA4MWRmNzY3NDEuLmMxOGRmZTJh ZjllIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5tZApAQCAtMTMxMiw2ICsxMzEyLDcgQEAKIChpbmNsdWRlICJiZHZlcjMubWQi KQogKGluY2x1ZGUgImJ0dmVyMi5tZCIpCiAoaW5jbHVkZSAiem52ZXIubWQiKQorKGluY2x1ZGUg InpudmVyNC5tZCIpCiAoaW5jbHVkZSAiZ2VvZGUubWQiKQogKGluY2x1ZGUgImF0b20ubWQiKQog KGluY2x1ZGUgInNsbS5tZCIpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvem52ZXI0Lm1k IGIvZ2NjL2NvbmZpZy9pMzg2L3pudmVyNC5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNzRiNjZjYWEzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2kz ODYvem52ZXI0Lm1kCkBAIC0wLDAgKzEsMTAyNyBAQAorOzsgQ29weXJpZ2h0IChDKSAyMDEyLTIw MjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OworOzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0NDLgorOzsKKzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cis7OyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorOzsgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorOzsg YW55IGxhdGVyIHZlcnNpb24uCis7OworOzsgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7Cis7OyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzs7IDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKzs7CisKKworKGRlZmluZV9hdHRyICJ6bnZl cjRfZGVjb2RlIiAiZGlyZWN0LHZlY3Rvcixkb3VibGUiCisgIChjb25zdF9zdHJpbmcgImRpcmVj dCIpKQorCis7OyBBTUQgem52ZXI0IFNjaGVkdWxpbmcKKzs7IE1vZGVsaW5nIGF1dG9tYXRvbnMg Zm9yIHplbiBkZWNvZGVycywgaW50ZWdlciBleGVjdXRpb24gcGlwZXMsCis7OyBBR1UgcGlwZXMs IGJyYW5jaCwgZmxvYXRpbmcgcG9pbnQgZXhlY3V0aW9uIGFuZCBmcCBzdG9yZSB1bml0cy4KKyhk ZWZpbmVfYXV0b21hdG9uICJ6bnZlcjQsIHpudmVyNF9pZXUsIHpudmVyNF9pZGl2LCB6bnZlcjRf ZmRpdiwgem52ZXI0X2FndSwgem52ZXI0X2JydSwgem52ZXI0X2ZwdSwgem52ZXI0X2ZwX3N0b3Jl IikKKworOzsgRGVjb2RlcnMgdW5pdCBoYXMgNCBkZWNvZGVycyBhbmQgYWxsIG9mIHRoZW0gY2Fu IGRlY29kZSBmYXN0IHBhdGgKKzs7IGFuZCB2ZWN0b3IgdHlwZSBpbnN0cnVjdGlvbnMuCisoZGVm aW5lX2NwdV91bml0ICJ6bnZlcjQtZGVjb2RlMCIgInpudmVyNCIpCisoZGVmaW5lX2NwdV91bml0 ICJ6bnZlcjQtZGVjb2RlMSIgInpudmVyNCIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZGVj b2RlMiIgInpudmVyNCIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZGVjb2RlMyIgInpudmVy NCIpCisKKzs7IEN1cnJlbnRseSBibG9ja2luZyBhbGwgZGVjb2RlcnMgZm9yIHZlY3RvciBwYXRo IGluc3RydWN0aW9ucyBhcworOzsgdGhleSBhcmUgZGlzcGF0Y2hlZCBzZXBhcmV0ZWx5IGFzIG1p Y3JvY29kZSBzZXF1ZW5jZS4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC12ZWN0b3IiICJ6 bnZlcjQtZGVjb2RlMCt6bnZlcjQtZGVjb2RlMSt6bnZlcjQtZGVjb2RlMit6bnZlcjQtZGVjb2Rl MyIpCisKKzs7IERpcmVjdCBpbnN0cnVjdGlvbnMgY2FuIGJlIGlzc3VlZCB0byBhbnkgb2YgdGhl IGZvdXIgZGVjb2RlcnMuCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZlcjQtZGlyZWN0IiAiem52 ZXI0LWRlY29kZTB8em52ZXI0LWRlY29kZTF8em52ZXI0LWRlY29kZTJ8em52ZXI0LWRlY29kZTMi KQorCis7OyBGaXggbWU6IE5lZWQgdG8gcmV2aXNpdCB0aGlzIGxhdGVyIHRvIHNpbXVsYXRlIGZh c3QgcGF0aCBkb3VibGUgYmVoYXZpb3IuCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZlcjQtZG91 YmxlIiAiem52ZXI0LWRpcmVjdCIpCisKKworOzsgSW50ZWdlciB1bml0IDQgQUxVIHBpcGVzLgor KGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWlldTAiICJ6bnZlcjRfaWV1IikKKyhkZWZpbmVfY3B1 X3VuaXQgInpudmVyNC1pZXUxIiAiem52ZXI0X2lldSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZl cjQtaWV1MiIgInpudmVyNF9pZXUiKQorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWlldTMiICJ6 bnZlcjRfaWV1IikKKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1pZXUiICJ6bnZlcjQtaWV1 MHx6bnZlcjQtaWV1MXx6bnZlcjQtaWV1Mnx6bnZlcjQtaWV1MyIpCisKKzs7IDMgQUdVIHBpcGVz IGluIHpudmVyNAorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWFndTAiICJ6bnZlcjRfYWd1IikK KyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1hZ3UxIiAiem52ZXI0X2FndSIpCisoZGVmaW5lX2Nw dV91bml0ICJ6bnZlcjQtYWd1MiIgInpudmVyNF9hZ3UiKQorKGRlZmluZV9yZXNlcnZhdGlvbiAi em52ZXI0LWFndS1yZXNlcnZlIiAiem52ZXI0LWFndTB8em52ZXI0LWFndTF8em52ZXI0LWFndTIi KQorCis7OyBMb2FkIGlzIDQgY3ljbGVzLiBXZSBkbyBub3QgbW9kZWwgcmVzZXJ2YXRpb24gb2Yg bG9hZCB1bml0LgorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LWxvYWQiICJ6bnZlcjQtYWd1 LXJlc2VydmUiKQorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LXN0b3JlIiAiem52ZXI0LWFn dS1yZXNlcnZlIikKKworOzsgdmVjdG9ycGF0aCAobWljcm9jb2RlZCkgaW5zdHJ1Y3Rpb25zIGFy ZSBzaW5nbGUgaXNzdWUgaW5zdHJ1Y3Rpb25zLgorOzsgU28sIHRoZXkgb2NjdXB5IGFsbCB0aGUg aW50ZWdlciB1bml0cy4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1pdmVjdG9yIiAiem52 ZXI0LWlldTArem52ZXI0LWlldTEKKwkJCQkgICAgICArem52ZXI0LWlldTIrem52ZXI0LWlldTMK KwkJCQkgICAgICArem52ZXI0LWFndTArem52ZXI0LWFndTErem52ZXI0LWFndTIiKQorCis7OyBG bG9hdGluZyBwb2ludCB1bml0IDQgRlAgcGlwZXMuCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQt ZnB1MCIgInpudmVyNF9mcHUiKQorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWZwdTEiICJ6bnZl cjRfZnB1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1mcHUyIiAiem52ZXI0X2ZwdSIpCiso ZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZnB1MyIgInpudmVyNF9mcHUiKQorCisoZGVmaW5lX3Jl c2VydmF0aW9uICJ6bnZlcjQtZnB1IiAiem52ZXI0LWZwdTB8em52ZXI0LWZwdTF8em52ZXI0LWZw dTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZlcjQtZnZlY3RvciIg InpudmVyNC1mcHUwK3pudmVyNC1mcHUxCisJCQkJICAgICAgK3pudmVyNC1mcHUyK3pudmVyNC1m cHUzCisJCQkJICAgICAgK3pudmVyNC1hZ3UwK3pudmVyNC1hZ3UxK3pudmVyNC1hZ3UyIikKKwor OzsgRElWIHVuaXRzCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtaWRpdiIgInpudmVyNF9pZGl2 IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1mZGl2IiAiem52ZXI0X2ZkaXYiKQorCis7OyB6 bnZlcjQgaGFzIGEgc2VwYXJhdGUgYnJhbmNoIHVuaXQuCisoZGVmaW5lX2NwdV91bml0ICJ6bnZl cjQtYnJ1IiAiem52ZXI0X2JydSIpCisKKzs7IFNlcGFyYXRlIGZwIHN0b3JlIGFuZCBmcC10by1p bnQgc3RvcmUuIEFsdGhvdWdoIHRoZXJlIGFyZSAyIHN0b3JlIHBpcGVzLCB0aGUKKzs7IHRocm91 Z2hwdXQgaXMgbGltaXRlZCB0byBvbmx5IG9uZSBwZXIgY3ljbGUuCisoZGVmaW5lX2NwdV91bml0 ICJ6bnZlcjQtZnAtc3RvcmUiICJ6bnZlcjRfZnBfc3RvcmUiKQorCis7OyBDYWxsIEluc3RydWN0 aW9uCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9jYWxsIiAxCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChlcV9hdHRyICJ0eXBlIiAiY2FsbCxj YWxsdiIpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZXUwfHpudmVyNC1icnUsem52ZXI0 LXN0b3JlIikKKworOzsgUHVzaCBJbnN0cnVjdGlvbgorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfcHVzaCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAicHVzaCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9y eSIgInN0b3JlIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1zdG9yZSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3B1c2hfbG9hZCIgNQorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAicHVzaCIp CisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImJvdGgiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWxvYWQsem52ZXI0LXN0b3JlIikKKworOzsgUG9wIGluc3RydWN0aW9uCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9wb3AiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUi ICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInBvcCIpCisJCQkJICAg KGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxv YWQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9wb3BfbWVtIiA1CisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJwb3AiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJib3RoIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1zdG9yZSIpCisKKzs7IExlYXZlCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9sZWF2ZSIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNw dSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgImxlYXZlIikpCisJCQkgInpu dmVyNC1kb3VibGUsem52ZXI0LWlldSx6bnZlcjQtc3RvcmUiKQorCis7OyBJbnRlZ2VyIEluc3Ry dWN0aW9ucyBvciBHZW5lcmFsIGluc3RydWN0aW9ucworOzsgTXVsdGlwbGljYXRpb25zCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbXVsIiAzCisJCQkoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCIpCisgICAg ICAgICAgICAgICAgICAgICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJIikKKwkJCQkg ICAgICAgICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtaWV1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ltdWxf REkiIDQKKwkJCShhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJpbXVsIikKKyAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcV9hdHRy ICJtb2RlIiAiREkiKQorCQkJCSAgICAgICAgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUxIikKKworKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJ6bnZlcjRfaW11bF9tZW0iIDcKKwkJCShhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbXVsIikKKyAgICAgICAgICAgICAg ICAgICAgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUksSEksU0kiKQorCQkJCSAgICAgICAgICAg KGVxX2F0dHIgIm1lbW9yeSIgIiFub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt bG9hZCx6bnZlcjQtaWV1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lt dWxfRElfbWVtIiA4CisJCQkoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCIpCisgICAgICAgICAgICAgICAgICAgICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIkRJIikKKwkJCQkgICAgICAgICAgIChlcV9hdHRyICJtZW1vcnkiICIh bm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldTEiKQor Cis7OyBEaXZpc2lvbnMKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfREki IDE4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJpZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiREkiKQor CQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52 ZXI0LWlkaXYqMTAiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1NJ IiAxMgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikK KwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpu dmVyNC1pZGl2KjYiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X0hJ IiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIkhJIikK KwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpu dmVyNC1pZGl2KjQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1FJ IiA5CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJpZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUkiKQor CQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52 ZXI0LWlkaXYqNCIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfRElf bWVtIiAyMgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIkRJ IikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIiFub25lIikpKSkKKwkJCSAiem52ZXI0LWRvdWJs ZSx6bnZlcjQtbG9hZCx6bnZlcjQtaWRpdioxMCIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X2lkaXZfU0lfbWVtIiAxNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIiFub25lIikpKSkK KwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtaWRpdio2IikKKworKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaWRpdl9ISV9tZW0iIDE0CisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2 IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiSEkiKQorCQkJCQkoZXFfYXR0ciAibWVt b3J5IiAiIW5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1p ZGl2KjQiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1FJX21lbSIg MTMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgImlkaXYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSIpCisJ CQkJCShlcV9hdHRyICJtZW1vcnkiICIhbm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52 ZXI0LWxvYWQsem52ZXI0LWlkaXYqNCIpCisKKzs7IFNUUiBhbmQgSVNISUZUIGFyZSBtaWNyb2Nv ZGVkLgorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3RyIiA2CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz dHIiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJib3RoLHN0b3JlIikpKQorCQkJICJ6bnZl cjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6 bnZlcjRfaXNoaWZ0IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpc2hpZnQiKQorCQkJCSAgIChlcV9hdHRyICJtZW1v cnkiICJib3RoLHN0b3JlIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yIikK KworOzsgTU9WIC0gaW50ZWdlciBtb3ZzCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9pbW92eF9kb3VibGUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImltb3Z4IikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUi KSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZXUiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9pbW92X2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIg InpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdiIpCisJCQkJICAg KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWll dSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ltb3ZfZG91YmxlX3N0b3Jl IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInpudmVyMV9kZWNvZGUiICJkb3VibGUiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJpbW92eCIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJzdG9yZSIpKSkpCisJCQkgInpu dmVyNC1kb3VibGUsem52ZXI0LWlldSx6bnZlcjQtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9pbW92X2RpcmVjdF9zdG9yZSIgMQorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdiIpCisJ CQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJCSAgICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6 bnZlcjRfaW1vdl9sb2FkX2RvdWJsZV9zdG9yZSIgNAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIg InpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZG91Ymxl IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdngiKQorCQkJCQkoZXFfYXR0ciAi bWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVy NC1pZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf aW1vdl9sb2FkX2RpcmVjdF9zdG9yZSIgNAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW1vdiIpCisJCQkJICAgKGVxX2F0 dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJCSAgICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2Fk LHpudmVyNC1pZXUsem52ZXI0LXN0b3JlIikKKworOzsgSU5URUdFUi9HRU5FUkFMIEluc3RydWN0 aW9ucworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaW5zbiIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi YWx1LGFsdTEsbmVnbm90LHJvdGF0ZTEsaXNoaWZ0MSx0ZXN0LGluY2RlYyxpY21wIikKKwkJCQkg ICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSx1bmtub3duIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1pZXUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuX2xv YWQiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgImFsdSxhbHUxLG5lZ25vdCxyb3RhdGUxLGlzaGlmdDEsdGVzdCxpbmNk ZWMsaWNtcCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVy NC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X2luc24yIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpY21vdixzZXRjYyIpCisJCQkJICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUsdW5rbm93biIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZl cjQtaWV1MHx6bnZlcjQtaWV1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2luc24yX2xvYWQiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImljbW92LHNldGNjIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQt aWV1MHx6bnZlcjQtaWV1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Jv dGF0ZSIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAicm90YXRlIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9u ZSx1bmtub3duIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUxfHpudmVyNC1pZXUy IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfcm90YXRlX2xvYWQiIDUKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgInJvdGF0ZSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkg InpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldTF8em52ZXI0LWlldTIiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuX3N0b3JlIiAxCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJh bHUsYWx1MSxuZWdub3Qscm90YXRlMSxpc2hpZnQxLHRlc3QsaW5jZGVjLGljbXAiKQorCQkJCSAg IChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1p ZXUsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaW5z bjJfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgImljbW92LHNldGNjIikKKwkJCQkgICAoZXFfYXR0ciAibWVt b3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtaWV1MHx6bnZlcjQtaWV1 Myx6bnZlcjQtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9yb3Rh dGVfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInJvdGF0ZSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIg ImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWlldTF8em52ZXI0LWlldTIsem52 ZXI0LXN0b3JlIikKKworOzsgT3RoZXIgdmVjdG9yIHR5cGUKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X2lldV92ZWN0b3IiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJvdGhlcixtdWx0aSIpKQorCQkJICJ6bnZl cjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yIikKKworOzsgYWx1MSBpbnN0cnVjdGlvbnMKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2FsdTFfdmVjdG9yIiAzCisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNv ZGUiICJ2ZWN0b3IiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJhbHUxIikKKwkJCQkJ KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUsdW5rbm93biIpKSkpCisJCQkgInpudmVyNC12ZWN0b3Is em52ZXI0LWl2ZWN0b3IiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9hbHUx X2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZGlyZWN0IikKKwkJCQkgICAoYW5kIChlcV9h dHRyICJ0eXBlIiAiYWx1MSIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJub25lLHVua25vd24i KSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1pZXUiKQorCis7OyBCcmFuY2hlcworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfYnJhbmNoIiAxCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpYnIiKQor CQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAgInpudmVyNC1kaXJlY3Qsem52 ZXI0LWlldTB8em52ZXI0LWJydSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2JyYW5jaF9tZW0iIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImliciIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJs b2FkIikpKQorCQkJICAiem52ZXI0LXZlY3Rvcix6bnZlcjQtaXZlY3RvciIpCisKKzs7IExFQSBp bnN0cnVjdGlvbiB3aXRoIHNpbXBsZSBhZGRyZXNzaW5nCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9sZWEiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGVxX2F0dHIgInR5cGUiICJsZWEiKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt aWV1IikKKworOzsgRmxvYXRpbmcgUG9pbnQKKzs7IEZQIG1vdnMKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X2ZwX2Ntb3YiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJmY21vdiIpKQorCQkJICJ6bnZlcjQtdmVj dG9yLHpudmVyNC1mdmVjdG9yIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf ZnBfbW92X2RpcmVjdCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoZXFfYXR0ciAidHlwZSIgImZtb3YiKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt ZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX21vdl9kaXJlY3Rf bG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZGlyZWN0IikKKwkJCQkgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAiZm1vdiIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X2ZwX21vdl9kaXJlY3Rfc3RvcmUiIDUKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29k ZSIgImRpcmVjdCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZtb3YiKQorCQkJCQko ZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m cHUxLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2ZwX21vdl9kb3VibGUiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImZtb3YiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIp KSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTEsem52ZXI0LWZwLXN0b3JlIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfbW92X2RvdWJsZV9sb2FkIiAxMgor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ6bnZlcjFfZGVjb2RlIiAiZG91YmxlIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi Zm1vdiIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRv dWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MSx6bnZlcjQtZnAtc3RvcmUiKQorCis7OyBGU1FS VAorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnNxcnQiIDIyCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJm cHNwYyIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhGIikKKwkJCQkJKGVxX2F0dHIg Im1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mZGl2KjIwIikK KworOzsgRlBTUEMgaW5zdHJ1Y3Rpb25zCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9mcF9zcGMiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgImZwc3BjIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAi bm9uZSIpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtZnZlY3RvciIpCisKKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX2luc25fdmVjdG9yIiA2CisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNv ZGUiICJ2ZWN0b3IiKQorCQkJCSAgIChlcV9hdHRyICJ0eXBlIiAibW14Y3Z0LHNzZWxvZzEsc3Nl bW92IikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1mdmVjdG9yIikKKworOzsgRkFCUywg RkNIUworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfZnNnbiIgMQorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgImZz Z24iKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKzs7 IEZDTVAKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX2ZjbXAiIDMKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImZjbXAiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUxIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZl cjRfZnBfZmNtcF9kb3VibGUiIDQKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZjbXAiKQorCQkJCSAgIChhbmQgKGVxX2F0 dHIgInpudmVyMV9kZWNvZGUiICJkb3VibGUiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibm9u ZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTEsem52ZXI0LWZwdTIiKQorCis7 OyBGQURELCBGU1VCLCBGTVVMCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mcF9v cF9tdWwiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImZvcCxmbXVsIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAi bm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCIpCisKKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX29wX211bF9sb2FkIiAxMworCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZm9wLGZt dWwiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwIikKKworOzsgRkRJVgorKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJ6bnZlcjRfZnBfZGl2IiAxNQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpu dmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZmRpdiIpCisJCQkJICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZkaXYq MTUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mcF9kaXZfbG9hZCIgMjIK KwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgImZkaXYiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJ ICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mZGl2KjE1IikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfaWRpdl9sb2FkIiAyNgorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZmRpdiIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAiZnBfaW50X3NyYyIgInRydWUiKQorCQkJCQkoZXFfYXR0 ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWxvYWQsem52 ZXI0LWZkaXYqMTkiKQorCis7OyBNTVgsIFNTRSwgU1NFbi5uIGluc3RydWN0aW9ucworKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfbW14CSIgMQorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgIm1teCIpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJ6bnZlcjRfbW14X2FkZF9jbXAiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUi ICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1teGFkZCxtbXhjbXAi KQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9tbXhfYWRk X2NtcF9sb2FkIiA4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhhZGQsbW14Y21wIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQt ZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2luc24iIDEKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgIm1teGN2dCxzc2VzaHVmLHNzZXNodWYxLG1teHNoZnQiKQorCQkJCSAgIChlcV9hdHRy ICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVy NC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2luc25fbG9h ZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAibW14Y3Z0LHNzZXNodWYsc3Nlc2h1ZjEsbW14c2hmdCIpCisJCQkJICAg KGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxv YWQsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InpudmVyNF9tbXhfbW92IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJ CSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICIsbW14bW92IikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnAtc3RvcmUiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9tbXhfbW92X2xvYWQiIDgKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgIm1teG1vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwLXN0b3JlIikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X211bCIgMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIg InpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibW14bXVsIikKKwkJCQkg ICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAgInpudmVyNC1kaXJlY3Qsem52ZXI0 LWZwdTB8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9t bXhfbXVsX2xvYWQiIDEwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhtdWwiKQorCQkJCSAgIChlcV9hdHRyICJtZW1v cnkiICJsb2FkIikpKQorCQkJICAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1 MHx6bnZlcjQtZnB1MyIpCisKKzs7IEFWWCBpbnN0cnVjdGlvbnMKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X3NzZV9sb2ciIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZyIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlY0U0YsVjhTRixWMkRGLFY0REYsUUksSEksU0ksREksVEksT0ki KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9s b2dfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbG9nIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjRTRixWOFNGLFYyREYsVjRERixRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9h dHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6 bnZlcjQtZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xvZzEi IDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWNFNG LFY4U0YsVjJERixWNERGLFFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1m cHUyLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9sb2cxX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVxX2F0 dHIgIm1vZGUiICJWNFNGLFY4U0YsVjJERixWNERGLFFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkg ICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVy NC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jb21pIiAxCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vjb21p IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LWRvdWJs ZSx6bnZlcjQtZnB1Mnx6bnZlcjQtZnB1Myx6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY29taV9sb2FkIiA4CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vjb21p IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRvdWJs ZSx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1Mnx6bnZlcjQtZnB1Myx6bnZlcjQtZnAtc3RvcmUiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfdGVzdCIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJwcmVmaXhf ZXh0cmEiICIxIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY29taSIpCisJCQkJ CShlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt ZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Nz ZV90ZXN0X2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAicHJlZml4X2V4dHJhIiAiMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgInNzZWNvbWkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaW11bCIgMworCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3NlaW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJLERJLFRJLE9J IikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1mcHUwfHpudmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX2ltdWxfbG9hZCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWltdWwiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9hdHRy ICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZl cjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9tb3YiIDIKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUi KSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9sb2FkIiA5CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tb3Zfc3RvcmUiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt ZnB1MXx6bnZlcjQtZnB1Mix6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInpudmVyNF9zc2VfbW92X2ZwIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGLFY4U0YsVjRERixWNFNGLFYyREYsVjJTRixW MURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9zc2VfbW92X2ZwX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIlYxNlNGLFY4REYsVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0Yi KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9tb3ZfZnBfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYsVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYx REYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9hZGQiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUy fHpudmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2Fk ZF9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3NlYWRkIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0 LWZwdTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2VfYWRkMSIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3NlYWRkMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIg Im1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1mdmVjdG9yIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2FkZDFfbG9hZCIgMTMKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgInNzZWFkZDEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYs VjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2Fk IikpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtbG9hZCx6bnZlcjQtZnZlY3RvciIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pYWRkIiAxCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VpYWRkIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUksSEksU0ksREksVEksT0ki KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9p YWRkX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWlhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2Fk IikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1IikKKworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bCIgMworCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbXVs IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNG LFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9zc2VfbXVsX2xvYWQiIDEwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1 IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VtdWwiKQorCQkJ CSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRTRixWMkRGLFYyU0YsVjFERixT RiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRp cmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcGQiIDEzCisJCQkgKGFuZCAoZXFfYXR0ciAi Y3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VkaXYiKQor CQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWNERGLFYyREYsVjFERiIpCisJCQkJICAgIChl cV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZmRp dio3IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2Rpdl9wcyIgMTAK KwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgInNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRT RixWMlNGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1mZGl2KjUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InpudmVyNF9zc2VfZGl2X3BkX2xvYWQiIDIwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VkaXYiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJWNERGLFYyREYsVjFERiIpCisJCQkJICAgIChlcV9hdHRyICJt ZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQt ZmRpdio3IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2Rpdl9wc19s b2FkIiAxNworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAi VjhTRixWNFNGLFYyU0YsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZkaXYqNSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4IiAzCisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vj bXAsc3NlY29taSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY0U0YsVjJERixWMlNG LFYxREYsU0YsUUksSEksU0ksREksVEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9u ZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eF9sb2FkIiAxMAorCQkJ IChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAic3NlY21wLHNzZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWNFNG LFYyREYsVjJTRixWMURGLFNGLFFJLEhJLFNJLERJLFRJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1m cHUwfHpudmVyNC1mcHUxIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3Nl X2NtcF9hdngyIiA0CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAsc3NlY29taSIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIlY4U0YsVjRERixPSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJu b25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4Ml9sb2FkIiAxMQor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAic3NlY21wLHNzZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJW OFNGLFY0REYsT0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkg InpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY3Z0IiAzCisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vj dnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRTRixWMkRGLFYy U0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1Mnx6bnZlcjQtZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jdnRfbG9hZCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWN2dCIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURG LFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQt ZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ljdnQiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWN2dCIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9y eSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUyfHpudmVyNC1mcHUz IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ljdnRfc3RvcmUiIDQK KwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgInNzZWN2dCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJ CQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6 bnZlcjQtZnB1Mnx6bnZlcjQtZnB1Myx6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInpudmVyNF9zc2Vfc2h1ZiIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIg InpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJ ICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNG IikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX3NodWZfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJ CQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpu dmVyNC1sb2FkLHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9zc2VfaXNodWYiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZXNodWYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIg Im1vZGUiICJPSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pc2h1Zl9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIk9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1m cHUxfHpudmVyNC1mcHUyIikKKworOzsgQVZYNTEyIGluc3RydWN0aW9ucworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xvZ19ldmV4IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAi Y3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vsb2ciKQor CQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGLFhJIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUw KjJ8em52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1MioyfHpudmVyNC1mcHUzKjIiKQorCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbG9nX2V2ZXhfbG9hZCIgOAorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3NlbG9nIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERixYSSIpCisJ CQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6 bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMnx6bnZl cjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xvZzFf ZXZleCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlbG9nMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIg IlYxNlNGLFY4REYsWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1MioyLHpudmVyNC1mcC1z dG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9sb2cxX2V2ZXhf bG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAic3NlbG9nMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIg IlYxNlNGLFY4REYsWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1Mioy LHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Nz ZV9tdWxfZXZleCIgMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbXVsIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJt b2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkK KwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjIiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbXVsX2V2ZXhfbG9hZCIgMTAKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgInNzZW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYiKQor CQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ltdWxfZXZleCIgMworCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaW11bCIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1l bW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUwKjJ8em52ZXI0 LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9pbXVsX2V2 ZXhfbG9hZCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWltdWwiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjIiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbW92X2V2ZXgiIDQKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUx KjJ8em52ZXI0LWZwdTIqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Nz ZV9tb3ZfZXZleF9sb2FkIiAxMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJ CQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbW92IikKKwkJCQkgICAoYW5kIChlcV9h dHRyICJtb2RlIiAiWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1Mioy IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9ldmV4X3N0b3Jl IiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJYSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJzdG9yZSIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1MioyLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9hZGRfZXZleCIgMworCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nl YWRkIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAg IChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt ZnB1MioyfHpudmVyNC1mcHUzKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9zc2VfYWRkX2V2ZXhfbG9hZCIgMTAKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWFkZCIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAi bG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTIqMnx6 bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lh ZGRfZXZleCIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUwKjJ8em52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1MioyfHpudmVy NC1mcHUzKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaWFkZF9l dmV4X2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWlhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0 LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZl cjRfc3NlX2Rpdl9wZF9ldmV4IiAxMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAoYW5kIChl cV9hdHRyICJtb2RlIiAiVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikp KSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZmRpdio3IikKKworKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJ6bnZlcjRfc3NlX2Rpdl9wc19ldmV4IiAxMAorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZkaXYqNSIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcGRfZXZleF9sb2FkIiAy MAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9h dHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhERiIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtbG9hZCx6bnZlcjQtZmRpdio3IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX2Rpdl9wc19ldmV4X2xvYWQiIDE3CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1 IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VkaXYiKQorCQkJ CSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1v cnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZmRp dio1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2NtcF9hdng1MTIi IDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzZWNtcCxzc2Vjb21pIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjE2U0YsVjhERixYSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkK KwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjIiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eDUxMl9sb2FkIiAxMgorCQkJ IChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAic3NlY21wLHNzZWNvbWkiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZT RixWOERGLFhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwKjJ8em52ZXI0LWZwdTEqMiIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jdnRfZXZleCIgNgorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAic3NlY3Z0IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERiIpCisJ CQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6 bnZlcjQtZnB1MSoyfHpudmVyNC1mcHUyKjIsem52ZXI0LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2N2dF9ldmV4X2xvYWQiIDEz CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJzc2VjdnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixW OERGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQt ZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMix6bnZlcjQtZnB1 MioyfHpudmVyNC1mcHUzKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2Vfc2h1Zl9ldmV4IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VzaHVmIikKKwkJCQkgICAoYW5kIChlcV9hdHRy ICJtb2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikp KSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0 LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZl cjRfc3NlX3NodWZfZXZleF9sb2FkIiA4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0 IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VzaHVmIikKKwkJCQkgICAoYW5k IChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnki ICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCoy fHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lzaHVmX2V2ZXgiIDQKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZXNo dWYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRy ICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MSoyfHpu dmVyNC1mcHUyKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaXNo dWZfZXZleF9sb2FkIiAxMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkg ICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJ ICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMiIp CisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tdWxhZGQiIDQKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgInNzZW11bGFkZCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkg InpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bGFkZF9sb2FkIiAxMQorCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nl c2h1ZiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1k aXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikKKworOzsgQVZY NTEyIG1hc2sgaW5zdHJ1Y3Rpb25zCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9tc2ttb3YiIDIKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1za21vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9y eSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1 MSoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21za2xvZyIgMQor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAibXNrbG9nIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJ CSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MioyfHpudmVyNC1mcHUzKjIiKQotLSAKMi4yNS4x Cgo= --_002_DM6PR12MB47955528574932E8B55DD545E30A9DM6PR12MB4795namp_--