Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7E62E200B8D for ; Fri, 9 Sep 2016 02:07:47 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 7D03B160AD0; Fri, 9 Sep 2016 00:07:47 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id D1ACF160AAD for ; Fri, 9 Sep 2016 02:07:45 +0200 (CEST) Received: (qmail 61590 invoked by uid 500); 9 Sep 2016 00:07:44 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 61579 invoked by uid 99); 9 Sep 2016 00:07:44 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Sep 2016 00:07:44 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id D12231A5E57 for ; Fri, 9 Sep 2016 00:07:43 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.797 X-Spam-Level: X-Spam-Status: No, score=0.797 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id Nfr0vtKG8B-b for ; Fri, 9 Sep 2016 00:07:39 +0000 (UTC) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0070.outbound.protection.outlook.com [104.47.38.70]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 8BA5A5FCE5 for ; Fri, 9 Sep 2016 00:07:38 +0000 (UTC) Received: from BLUPR06CA0036.namprd06.prod.outlook.com (10.255.219.174) by BLUPR0601MB0947.namprd06.prod.outlook.com (10.160.35.23) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9; Fri, 9 Sep 2016 00:07:30 +0000 Received: from BN1AFFO11FD043.protection.gbl (2a01:111:f400:7c10::128) by BLUPR06CA0036.outlook.office365.com (2a01:111:e400:83f::46) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.609.9 via Frontend Transport; Fri, 9 Sep 2016 00:07:30 +0000 Authentication-Results: spf=pass (sender IP is 65.210.57.1) smtp.mailfrom=merkleinc.com; hbase.apache.org; dkim=none (message not signed) header.d=none;hbase.apache.org; dmarc=bestguesspass action=none header.from=merkleinc.com; Received-SPF: Pass (protection.outlook.com: domain of merkleinc.com designates 65.210.57.1 as permitted sender) receiver=protection.outlook.com; client-ip=65.210.57.1; helo=HQITEXCH05.pclc0.merkle.local; Received: from HQITEXCH05.pclc0.merkle.local (65.210.57.1) by BN1AFFO11FD043.mail.protection.outlook.com (10.58.52.190) with Microsoft SMTP Server id 15.1.587.6 via Frontend Transport; Fri, 9 Sep 2016 00:07:29 +0000 Received: from HQITEXCH02.pclc0.merkle.local (192.168.77.4) by HQITEXCH05.pclc0.merkle.local (192.168.80.104) with Microsoft SMTP Server (TLS) id 14.3.294.0; Thu, 8 Sep 2016 20:07:14 -0400 Received: from HQITEXCH07.pclc0.merkle.local ([fe80::5cfd:17d5:93a:dfde]) by HQITEXCH02.pclc0.merkle.local ([fe80::7818:8dbd:fd58:32a6%17]) with mapi id 14.03.0294.000; Thu, 8 Sep 2016 20:07:28 -0400 From: Frank Luo To: "user@hbase.apache.org" Subject: RE: CopyTable fails on copying between two secured clusters Thread-Topic: CopyTable fails on copying between two secured clusters Thread-Index: AdIJ9fp28GN9LbF4Qx+iqPxAvpvuIQAIyLiAAAhOpQD//8SgAP//6EtQgAB65YCAAECx0A== Date: Fri, 9 Sep 2016 00:07:28 +0000 Message-ID: <1EFFC0EDF85B044A99A02C925FDA37552022424A@HQITEXCH07.pclc0.merkle.local> References: <1EFFC0EDF85B044A99A02C925FDA375520223A10@HQITEXCH07.pclc0.merkle.local> <1EFFC0EDF85B044A99A02C925FDA375520223A60@HQITEXCH07.pclc0.merkle.local> <1EFFC0EDF85B044A99A02C925FDA3755202241D3@HQITEXCH07.pclc0.merkle.local> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [192.168.76.200] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:65.210.57.1;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(199003)(505004003)(24454002)(189002)(377454003)(13464003)(54356999)(81156014)(575784001)(19580395003)(5250100002)(7846002)(5310100001)(7736002)(33656002)(102836003)(586003)(15975445007)(47776003)(189998001)(1720100001)(3846002)(86362001)(50986999)(305945005)(6116002)(2501003)(2351001)(55846006)(110136002)(356003)(16796002)(5890100001)(98436002)(93886004)(9686002)(106466001)(23676002)(92566002)(450100001)(2950100001)(2920100001)(107886002)(19580405001)(68736007)(626004)(2906002)(11100500001)(97736004)(1730700003)(5660300001)(2900100001)(87936001)(8676002)(551944002)(81166006)(8936002)(50466002)(76176999)(7696004);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR0601MB0947;H:HQITEXCH05.pclc0.merkle.local;FPR:;SPF:Pass;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD043;1:pBteT3N4A6VDvKieg//Mdoce4dc2z/S6xdFOirVtIPank1v6AMj0WfjdMSgogoyklG3C0fJuCIqe9Pe9rU21Q0eia75pt8HWWm6S8bEUDvvXZYLsXZQoCmpNOsDbOC6t+HZ7aiId6V5MyEKYh64wg20HD4Vh8BdhN+iKwyogP7MDPunas9bC74L3ffcalkTx1q2YV5ayRAGe7Pe1r0KeK066UCi+A40xCM0rmT9dwDfJff61zvP6FBdMmI/Fl/W6c0wpJYOZi7BI54bKO2HAUT0yGaPCXdowek0UFqcBI1Lall+VjJJ2bYnhcNJdwG/PquYfxIZw3VTgyUDNx9jTL9glgtve47sJjk6VNQsItHuo4VHxDrBZwADyX626Y7pDxTqNBIryv8QkLu1/ksErOY1fyS6GFW0VSGzjrkR0UfpZBDkuSbzOClTgZY2PCMu/LZrqgzU3MnGolYCl//KH/tTFYiXMmd5f/zelNsef8IfxStF3QUq4VQhnaJf5O9dL+C9dUYZqC9oZK++QKn1ffQ== X-MS-Office365-Filtering-Correlation-Id: d8e42aff-add5-45c6-ce10-08d3d8454a1c X-Microsoft-Exchange-Diagnostics: 1;BLUPR0601MB0947;2:A9B0czEauvsg0XpszibpIvpRAfJaAxhQUpPOmpnmauNltzCzKjQo1pMy3t9ADQfD2JGLz1RgEZEUC8GD9MibJ02lNmtspg83/22GI1d8pNdF+q+eHJGRcmqdcU2To/TIhd1XAKsOmXf2uWO45JyQdZ7idXSfFnfHi04PoT+D+qoosDrkgidBnAAuy6CNmPTB;3:ZYHzXJZ/ooBwU3FkxjioDmzYcpnAQvFhUb77yhw+4STXv+M0woSep31y+6qz2lw352AT4H1WA50DXfME0TypEsEZbuRgFiFuGi7HFiMT69qIfvvjEocoSsQYWiv6I0WtTaV2YyE+CcHPsYzs5VCfi3ZeD6uYPDmXny0VwqFb7mQs0jXHERUhg/I0dhQqN6eAcr7PAalhCOf+eD0gT+pnJHUrTqUqyhJj/wYX2dec+KHwZ3+JIVKfeFwftMOlRqe+jfYSDX10sS4S+rut08Vnfg==;25:9A5JNRlGkD88JV0Ua5FoSYCQF60Rdrvc7xz0HcwunCshoJMs4UvhCA4saqp/W3GfKUGoh8ujCgWoAoIEHGSXgts25W8eMD9Fhgdxw9PpJew8NXes1oQ7CJhhQVFyUx8VRZkuTeTs4oJ11R0z85r4vaRzvhdAPEgvv0gXaOJQZ93umySYIALZEPO7EsYkaGqHoheUWD/TT5xop7NABVv+ruYUnkKCvWx90iktsJwcZFbZLlt+wdfsmFMWa96Rhfg7jvPm9epfu/5NKqS52vgrFzCMRobPSbrWXNaBbvJzAK1hQO/b6UJ/wjBUq7FpFPwFaIwKa7haupFAjfOnZ+Cy8T+ovQIQnA8FPZKtkm3kfUzuR07kCzdvzmdj/NsmeWfw4agq+fUX4H6ygfv0OrDFf7jGa3bHZXAGIG/eKJX7Tdg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:BLUPR0601MB0947; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0601MB0947;31:LRb5Ci3lFBbdBZlGQtG+vc7sN2O+BRdSVJibQIsMMjgUA580xsMXJeZ5fQdhw0CMp87Scl1m6rj5AzdU3xMTep3HuRKGCWW9EXiOYM3N/Q6Bisjy80v8eYXqqm4xVJGQz4cg9n2VBHf2EPsr/eDkDsn1pSncFYXpJUbV0thmWUKibKGtemUAXi3elpdZxwl0EspMkKoXSZhmLxR7Y6Plr6H74V35w3oioSot2SgtYao=;20:hNOsofqBNtsotYECcadp1SzkqpZV2FtqEsocTU7qub/TO0u2Mc9/BZ5MwtWaX1RMZRWB/+nF3ZgnKTp6R5on7eEfqj9XYs+NC2Hxbx+tOgdF3hXqgpr0JgWmQ8j3ax5hOZFwyCz+VXJbsNcSunxc9Ab7PDWJShFEqLbcJSj8lZ+QfDuBYF+Hr+URIe+FGGKKCoYjaOQHSOrgiy3EljHJPtiRpbS1UayS+OoPIbsINBk56JD1QPR7+t0KcHnT+ZIqam3V1IlGOh6dYyx4cG/DJFzHbe8fYsXlTdRKkkGyN7ekcbXzCOUqOd6np4i/s+Cin+8AUseAImmjk+MpsQNKX4JmB4X6CdoHkRsYp+McPymAOKQF4pYYYM5rSFuL6Wvi7UCLHyJrgd10esrpQ/GqewTpVqtHpANjuA+Zv9iraMxhOUWs8hzQ/yhaTZltFcBNnMPpMu/1QHYkWvZFODvAYPOd+yfPqFn6z4XY99SRdy8rayZ9bAWj8Y8xGMxirdDu X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(93916979886435)(158342451672863)(192374486261705)(206605131091896)(5943731945212)(120990272794272); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13016025)(13023025)(13018025)(13024025)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:BLUPR0601MB0947;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0601MB0947; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0601MB0947;4:EOJQxAQG/vHP/wjOHHP/0AtDJlib2Df3GVFugZYG+jV/1doXwdR3ZMTjLL3e6ZbiUHqjQVI1hvsfj8V2Y80jTADUSAnBYW5nCRnA04RoUum4PYeFT6Ubs/yAAU4wlwwzNmrTHxmWkP3wWtcMD3Uasq/rMwDSBY9b8f8gFwbyR4cFDtbVQnA3vMKasqsu3DY+fuEKi0JXF71sr6YBvpypdyw6cfBfi6S1O8kR1/bftqukxK8rYdOJNlL75TBgh4enkjmc1+rLiRk18aXNuR59QPQh+sboSQ+5DynwwMVlIKH5/Bf5Y52vRF1KYn21XtCsDsyJbnU5aI4UFlrA42tuw2IJe6fQnj56Kggn9FxMzd56w0Kjiye0LomJARxoJj+CYTOqFYrfTE3EwJ7ZOCov3Oo6BZWMCqcw1ss4RdOezfiHWxDpsXI7ndQU6rtEmgeHly9H9eeX3MlUKxS3gGSrFHg65O8LLz/K2j4L5e93BBNsO0Srnv0sJb18lZH505zZR9cvi6rUT6tccZH7CjgaFBHOpDydaAvd6v9cxA5qFQ6QEcy71VW11dQZqYY6xXdZlXmVFxeul0iVdE2pOUP5VbJPLvUqTJaToWNR0lBL8woq0QxyVc2h/ouW1IQnsM8SvnqsfpNLnkOPkZM4LCpbJFXNY2lVyolDe+0RvyovhoEB8FY10SmdII+9nhiNL2Vw X-Forefront-PRVS: 00603B7EEF X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjA2MDFNQjA5NDc7MjM6aUZ5RXpwa3JsMkMxeENGbTQ0NEF4UWhT?= =?utf-8?B?bzFDcHI2SWhFbldzRVpXcjA3MkZJcERYVHJlWHBZZytpWWpFeFBORElPTzNY?= =?utf-8?B?Z205V01USi9yMENNYWh4SDFWQmJjaWgwVnZ5QkJwZFl0VE1JT2RTK3VrZDd3?= =?utf-8?B?Ykt5dzFpeUh3ZHk5bEU0QWwxdkJTQW5zazRhOUVFZHpoSFhhb3VYNmVUZEJs?= =?utf-8?B?ZG9xa1poM2RkSlYrVUZjMU1OMTNvSXYzcWd0U1Y3cVJMRUFHTTEydTdZM1Rm?= =?utf-8?B?b3lZRWVhVFFSbXV5TG5TUmU2WEtNMXJaTzBTbXlHZHVPNUNoSm9iMkQwKys4?= =?utf-8?B?QVhPbkVHcFRCb3pJaTlDNHIxbXpuY1kxWGI5NHRrcUg5djB0SXhBbFlKZ1Mz?= =?utf-8?B?SFM1bXRZY0M0RTAzRWRRVUhCYVhDMmpWTEN4c3NFWFAybG1UN3NvbVpKVnh1?= =?utf-8?B?UkJ4WnJ6VFBOQVpOOWtGRDI2dW4vY0ZHZDhvMHlQYm15RFdENnc2c05QU1NR?= =?utf-8?B?TlkxZVpoV3VVdzdOWjh0RVR0WHdqZUJvTmZjMWZvZ1hmaDNIbFhDMElsTGdQ?= =?utf-8?B?SkE5UlkvdlFIbkowWWFpWTJ3MXQzYjgzQjQrSCtjTXZ6KzNyenJjek1JTlhp?= =?utf-8?B?YXRMalM1NmdsZDNCYmRCdXlaaEhuQU9kNVdPL0J3ellyTVVFUDB6WUc1NW02?= =?utf-8?B?VXNjQUtaNE9Mc0g2T0dGUnV2Y0lGZ2VDakFoc2ZkblE0dFkyZkhtcEVxeTJV?= =?utf-8?B?S0RndjFmanBQWURSY0hBS0hORGQ4bzIzeUdlWFh6UWVabkJFdXAwdEpPZWpM?= =?utf-8?B?SjZNcXhUNTJLOVcrUktWVURqSXZUM1VCL3hrRk9rd3V5Vncvb3VGblRHcFRS?= =?utf-8?B?YlFJTlJGUHZYQWR3V2RWQUJYc1VQdmVxWnQzRU9BaFRheGE0WWV1R01hZXBT?= =?utf-8?B?MFFjSmF4dXRmUVBDM3ZhRnF2T01STFVEb2Z1dWlZYzYrQ1ZIYnVBVm5ZcjFv?= =?utf-8?B?aDlxaU15NFFSRjQrQ0wvcGhLZWY5WE5lZTJ3TDlJZU9FSWdHQkFIdHJtVU40?= =?utf-8?B?RUJDeS9aOWZyQjQ4WSs4NmtGWjJUK2grd3NnYWNGOGtwc2E0Q0xXYmhRYzRJ?= =?utf-8?B?bHkza0JCUHRURS92Tng1dW9YYkpQUWJKSDdOUStYREVPSUY2VVhOc1l1SUZO?= =?utf-8?B?Qmg0cmFKNTFmRmNyT0M5bExTa2pxc3F3WHpxbjg2eGFPbEQ1N3U3RmdxRTlY?= =?utf-8?B?c28vQ2o2NEZoOVkxRmR3V2Z5c0RnY05uSVlqUFJieVB4UEtpT25COWpGYWo1?= =?utf-8?B?S2llN3FKbDViaWUwTXdTcVJIdXpJK0QzdTBkTkVja1lPN21nVEVibENsMHZo?= =?utf-8?B?QS9EdU1LY255RTRuQnJNeXJCWjludXZWMTY5NGc2cTB5ZVVBbTFWeEVvWGM2?= =?utf-8?B?dXNCaktPQjBTVENuNm01Y1EyNHlLcEhqSmtieFQ3NHhPanJNZmpIcGFNcUdj?= =?utf-8?B?S0JUK0FFQ2w1d3lhMDBjam1reEtXbGM2ZnRGblVXRTdrKzliS3AyeXRydThs?= =?utf-8?B?QVhtZmF1K0cwOGhRQjFJdGFyL0FWb0RyVjFvT3B6VlpyWWJkSzZoK1lJcEJC?= =?utf-8?B?WnBDT29iRm5JMVdORzVOQ1hTOXBZOHphV0RuaW1uUVhkTGlUNzRsUjBKNHFN?= =?utf-8?B?UVJoQ2ZhSlcxU085NWFVSjJKZkJua0ZjVUhuVDVacUpQNW5ZSlU1THhONUZG?= =?utf-8?B?T1U5V2ozRllyMW1KNGVHSnJ2VnZnd0Z2ZGQxTGdYaEJwY3QyMEJvMXRuYWpI?= =?utf-8?B?b0JIbHd1Y3VLbFFPaW9mMDZJaXB1ZVJBelcxVFJxV25nOUdOYlg5RXFRS2px?= =?utf-8?B?ZnJwa0ZBRjl1NnlMMjBreVk2eUUrVmxLNmJBMWtLa3BpR3VwSjM1cHZSVVJr?= =?utf-8?B?SDBTVzZyYk5UaXNvWS9zWGN3Y2Fkc2E2ajFla2d5TFR1a0Zac0o2SVY5VjVZ?= =?utf-8?B?VS9sa3BYcE1mRDVCYlYvZDhlTGM5eDR3UE9aMFRDNXk0Zlk3RlJ3YllNL1F0?= =?utf-8?Q?1xm5KtQbHHKE5fHd2PVay7HnsvM?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0601MB0947;6:nuZW0tT+b9JcW5ZRnLhQV4QeO/et7kta1jR0URGra4Ib7bWNqAShh58DinpiXRB+aj+oAaEyUdpYq1Tg5zWIBsgPGyqhKP43PFk4PDFYW4RVxInycIU+r1CoXti27X+nPVLJj8qifQmg7j75vsQzdpILXQlexbXvRlQWa5LTEW+XDoDarbG+IPT8sETIO6Bcr978MUK9S2aPxnnKWKtg0ePkuOOuCgzaY+rQ7KGDKYoo4+81IJDJ+PtUR+rkL/DFReYNKMUD4XrLJgACDE/UIzGyHYGFW+50hPz0HVfbW4AjM9if/EDkykXzSctNBlNo/j+poHjMyPxpaVkW2c/C8g==;5:LKsdQl9VCOYZdEl/LZ2jg+Nxq3lLyxqVeqftqb6osk0aOnowNzqxuAuiwb8aD2uPwMu20Xk59Dan3IAuAKmfcPgXwxfHzDr7gwD1fxnIC5MAMd+1R1PxZL3POZPF1U2E4rJkne+zJs9thFF3UM+QQQ==;24:HaNddVhp5/qFio+pcxF/LMXAXpDhTLSDUVyaAmoMPRAHWoOF47CuLQoPXzZwqrR0uzuDUH/Y9Or7dw3pvvK6peWkJ5Q22es1EJiG716ZMBU=;7:EpEiVYhUYy+2DbgDp9OGpYYPONsDW11HluLFbIcMaGSz4ytm5Ceq4hGkKCaYDWNWZ45bS6VDHwoq1L2j+vzcsan6JcCU49zCBq3rrKi0KGxLkl2Wu22PYZFjVvN6nuoyBeXzNxC4zB8zVcI9wr9T9D5l9s+CbANsfLwUgtx4SGp3fH2VZF+y8XHwsbC672dUstkgnEYwmkKTjBYcC6y4SpOEH/6tGa8LURe0cnDa3o+ueSYsckbfX6BA/OKz53X7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: merkleinc.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Sep 2016 00:07:29.4776 (UTC) X-MS-Exchange-CrossTenant-Id: 1396be20-c06a-4b1f-811d-98bb02e25b5a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=1396be20-c06a-4b1f-811d-98bb02e25b5a;Ip=[65.210.57.1];Helo=[HQITEXCH05.pclc0.merkle.local] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0601MB0947 archived-at: Fri, 09 Sep 2016 00:07:47 -0000 SSBrbm93IEkgaGF2ZSBnaXZlbiBhIGR1bW15IHpvb2tlZXBlciBuYW1lIGZvciBzYWtlIG9mIHNp bXBsaWNpdHkuIEJ1dCB0aGUgYWN0dWFsIGFkZHJlc3Mgc2hvdWxkIGJlIGNvcnJlY3QuIE90aGVy d2lzZSBJIHdpbGwgYmUgcmVjZWl2aW5nIGEgZGlmZmVyZW50IGVycm9yLg0KDQotLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogSmVycnkgSGUgW21haWx0bzpqZXJyeWpjaEBnbWFpbC5j b21dDQpTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDA4LCAyMDE2IDY6NTcgUE0NClRvOiB1c2Vy QGhiYXNlLmFwYWNoZS5vcmcNClN1YmplY3Q6IFJlOiBDb3B5VGFibGUgZmFpbHMgb24gY29weWlu ZyBiZXR3ZWVuIHR3byBzZWN1cmVkIGNsdXN0ZXJzDQoNCkNoZWNrIHRoZSBwZWVyIGFkZHJlc3Mg eW91IHNwZWNpZmllZCBpbiB0aGUgY29tbWFuZCBsaW5lLiAgSXQgZG9lcyBub3Qgc2VlbSB0byBt YXRjaCB5b3VyIHJlbW90ZSBjbHVzdGVyIFpLIHBhcmVudCBub2RlLg0KDQpKZXJyeQ0KDQpPbiBU aHVyc2RheSwgU2VwdGVtYmVyIDgsIDIwMTYsIEZyYW5rIEx1byA8amx1b0BtZXJrbGVpbmMuY29t PiB3cm90ZToNCg0KPiBJIGRvbid0IHRoaW5rIHRoZXkgYXJlIHBvaW50aW5nIHRvIGRpZmZlcmVu dCBsb2NhdGlvbnMuIEJvdGggb2YgdGhlbQ0KPiBzaG91bGQgYmUgL2hiYXNlLXNlY3VyZS4NCj4N Cj4gSG93ZXZlciwgdGhlIGRlYnVnZ2VyIHNob3dzIHRoYXQgQ29ubmVjdGlvbk1hbmFnZXIjcmV0 cmlldmVDbHVzdGVySWQNCj4gYXJlIGNhbGxlZCB0d2ljZSwgdGhlIGZpcnN0IHRpbWUgcmVnYXJk cyB0byB0aGUgc291cmNlIGNsdXN0ZXIsIHdoaWNoDQo+IHdvcmtzIGZpbmUsIGFuZCB3YXRjaGVy LmNsdXN0ZXJJZFpOb2RlPS9oYmFzZS1zZWN1cmUvaGJhc2VpZCwgYW5kIGl0DQo+IGlzIGNvcnJl Y3QuDQo+DQo+IFRoZSBzZWNvbmQgdGltZSBmb3IgdGhlIHJlbW90ZSBjbHVzdGVyLA0KPiB3YXRj aGVyLmNsdXN0ZXJJZFpOb2RlPS9oYmFzZS9oYmFzZWlkLA0KPiB3aGljaCBzaG91bGQgYmUgaW5j b3JyZWN0Lg0KPg0KPiBXaGF0IEkgYW0gc3VzcGVjdGluZyBpcyBab29LZWVwZXJXYXRjaGVyLCBt ZXRob2Qgc2V0Tm9kZU5hbWVzLiBJdCByZWFkczoNCj4NCj4gICBwcml2YXRlIHZvaWQgc2V0Tm9k ZU5hbWVzKENvbmZpZ3VyYXRpb24gY29uZikgew0KPiAgICAgYmFzZVpOb2RlID0gY29uZi5nZXQo SENvbnN0YW50cy5aT09LRUVQRVJfWk5PREVfUEFSRU5ULA0KPiAgICAgICAgIEhDb25zdGFudHMu REVGQVVMVF9aT09LRUVQRVJfWk5PREVfUEFSRU5UKTsNCj4NCj4gSSBhbSBub3Qgc3VyZSB0aGUg Y29uZiBpcyBjb3JyZWN0ZWQgZmV0Y2hlZCBmcm9tIHRoZSByZW1vdGUgY2x1c3Rlci4NCj4gSWYg bm90LCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBnaXZlbiwgd2hpY2ggaXMgL2hiYXNlIGFuZCBpbmNv cnJlY3QuDQo+DQo+IEJ5IHRoZSB3YXksIGJlbG93IGlzIHRoZSByb290IHpub2RlcyBmb3Igem9v a2VlcGVyczoNCj4NCj4gVGhlIHNvdXJjZSBjbHVzdGVyOg0KPiAgW2hiYXNlLXNlY3VyZSwgaGl2 ZXNlcnZlcjIsIGhpdmUsIGhiYXNlLXVuc2VjdXJlLCB0ZW1wbGV0b24taGFkb29wLA0KPiBoYWRv b3AtaGEsIHpvb2tlZXBlcl0NCj4NCj4gVGhlIHRhcmdldCBjbHVzdGVyOg0KPiBbaGJhc2Utc2Vj dXJlLCBoaXZlLCBoaXZlc2VydmVyMiwgaGJhc2UtdW5zZWN1cmUsIGhhZG9vcC1oYSwNCj4gem9v a2VlcGVyXQ0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBFc3RlYmFu IEd1dGllcnJleiBbbWFpbHRvOmVzdGViYW5AY2xvdWRlcmEuY29tIDxqYXZhc2NyaXB0Ojs+XQ0K PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDA4LCAyMDE2IDE6MDIgUE0NCj4gVG86IHVzZXJA aGJhc2UuYXBhY2hlLm9yZyA8amF2YXNjcmlwdDo7Pg0KPiBTdWJqZWN0OiBSZTogQ29weVRhYmxl IGZhaWxzIG9uIGNvcHlpbmcgYmV0d2VlbiB0d28gc2VjdXJlZCBjbHVzdGVycw0KPg0KPiBJcyBp dCBwb3NzaWJsZSB0aGF0IGluIHlvdXIgZGVzdGluYXRpb24gY2x1c3RlciB6b29rZWVwZXIuem5v ZGUucGFyZW50DQo+IHBvaW50cyB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiB0aGFuIC9oYmFzZSA/ IElmIGJvdGggY2x1c3RlcnMgYXJlDQo+IHVuZGVyIHRoZSBzYW1lIGtlcmJlcm9zIHJlYWxtIHRo ZW4gdGhlcmUgaXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dA0KPiB6b29rZWVwZXIuc2VjdXJpdHku YXV0aF90b19sb2NhbC4NCj4NCj4NCj4NCj4gLS0NCj4gQ2xvdWRlcmEsIEluYy4NCj4NCj4NCj4g T24gVGh1LCBTZXAgOCwgMjAxNiBhdCAxMDo1MCBBTSwgRnJhbmsgTHVvIDxqbHVvQG1lcmtsZWlu Yy5jb20NCj4gPGphdmFzY3JpcHQ6Oz4+IHdyb3RlOg0KPg0KPiA+IFRoYW5rcyBFc3RlYmFuIGZv ciByZXBseWluZy4NCj4gPg0KPiA+IFRoZSBLZXJiZXJvcyByZWFsbSBpcyBzaGFyZWQgYmV0d2Vl biB0aGUgdHdvIGNsdXN0ZXJzLg0KPiA+DQo+ID4gIEkgc2VhcmNoZWQgem9va2VlcGVyIGNvbmZp ZyBhbmQgY291bGRuJ3QgZmluZCB0aGUgcnVsZSwgc28gd2hlcmUgaXQNCj4gPiBpcyBzZXQ/DQo+ ID4NCj4gPiBIYXZpbmcgc2FpZCB0aGF0LCBJIGxvb2tlZCBhdCBwYXJhbWV0ZXJzIHBhc3NlZCB0 byBnZXREYXRhIGNhbGwsIGFuZA0KPiA+IGl0IGRvZXNuJ3QgbG9vayBsaWtlIHNlY3VyaXR5IHJl bGF0ZWQuDQo+ID4NCj4gPiBQUy4gSSBhbSB1c2luZyBoYmFzZSAxLjEuMi4NCj4gPg0KPiA+IEhl cmUgaXMgdGhlIGxvZzoNCj4gPg0KPiA+IGNvbS5tZXJrbGVpbmMuY3IuaGJhc2VfbWFpbnRlbmFu Y2UudGFibGVleHBvcnQuQ29weVRhYmxlVGVzdCx0ZXN0Q29wDQo+ID4geVQgYWJsZSBDb25uZWN0 ZWQgdG8gdGhlIHRhcmdldCBWTSwgYWRkcmVzczogJzEyNy4wLjAuMTo1MDY2OScsDQo+ID4gdHJh bnNwb3J0Og0KPiA+ICdzb2NrZXQnDQo+ID4gMCAgICBbbWFpbl0gV0FSTiAgb3JnLmFwYWNoZS5o YWRvb3AuaGJhc2UuaW8udXRpbC5IZWFwTWVtb3J5U2l6ZVV0aWwgIC0NCj4gPiBoYmFzZS5yZWdp b25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnVwcGVyTGltaXQgaXMgZGVwcmVjYXRlZCBieQ0KPiA+ IGhiYXNlLnJlZ2lvbnNlcnZlci5nbG9iYWwubWVtc3RvcmUuc2l6ZQ0KPiA+IDI0NyAgW21haW5d IFdBUk4gIG9yZy5hcGFjaGUuaGFkb29wLnV0aWwuTmF0aXZlQ29kZUxvYWRlciAgLSBVbmFibGUN Cj4gPiB0byBsb2FkIG5hdGl2ZS1oYWRvb3AgbGlicmFyeSBmb3IgeW91ciBwbGF0Zm9ybS4uLiB1 c2luZw0KPiA+IGJ1aWx0aW4tamF2YSBjbGFzc2VzIHdoZXJlIGFwcGxpY2FibGUNCj4gPiAxNDky IFttYWluXSBJTkZPICBvcmcuYXBhY2hlLmhhZG9vcC5zZWN1cml0eS5Vc2VyR3JvdXBJbmZvcm1h dGlvbiAgLQ0KPiA+IExvZ2luIHN1Y2Nlc3NmdWwgZm9yIHVzZXIgdGlkc3ZjX2V4cGhiYXNlQFBD TEMwLk1FUktMRS5MT0NBTCB1c2luZw0KPiA+IGtleXRhYiBmaWxlIFxVc2Vyc1xqbHVvXHRpZHN2 Y19leHBoYmFzZS5rZXl0YWINCj4gPiAxMTQ2MiBbbWFpbl0gV0FSTg0KPiA+IG9yZy5hcGFjaGUu aGFkb29wLmhiYXNlLmlvLnV0aWwuSGVhcE1lbW9yeVNpemVVdGlsDQo+ID4gLSBoYmFzZS5yZWdp b25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnVwcGVyTGltaXQgaXMgZGVwcmVjYXRlZCBieQ0KPiA+ IGhiYXNlLnJlZ2lvbnNlcnZlci5nbG9iYWwubWVtc3RvcmUuc2l6ZQ0KPiA+IDE2NDQ5MyBbbWFp bl0gV0FSTg0KPiA+IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLmlvLnV0aWwuSGVhcE1lbW9yeVNp emVVdGlsDQo+ID4gLSBoYmFzZS5yZWdpb25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnVwcGVyTGlt aXQgaXMgZGVwcmVjYXRlZCBieQ0KPiA+IGhiYXNlLnJlZ2lvbnNlcnZlci5nbG9iYWwubWVtc3Rv cmUuc2l6ZQ0KPiA+IDE2NzcyMCBbbWFpbl0gV0FSTg0KPiA+IG9yZy5hcGFjaGUuaGFkb29wLmhi YXNlLmlvLnV0aWwuSGVhcE1lbW9yeVNpemVVdGlsDQo+ID4gLSBoYmFzZS5yZWdpb25zZXJ2ZXIu Z2xvYmFsLm1lbXN0b3JlLnVwcGVyTGltaXQgaXMgZGVwcmVjYXRlZCBieQ0KPiA+IGhiYXNlLnJl Z2lvbnNlcnZlci5nbG9iYWwubWVtc3RvcmUuc2l6ZQ0KPiA+IDE3MjEwOCBbbWFpbl0gV0FSTg0K PiA+IG9yZy5hcGFjaGUuaGFkb29wLmhkZnMuc2hvcnRjaXJjdWl0LkRvbWFpblNvY2tldEZhY3Rv cnkNCj4gPiAtIFRoZSBzaG9ydC1jaXJjdWl0IGxvY2FsIHJlYWRzIGZlYXR1cmUgY2Fubm90IGJl IHVzZWQgYmVjYXVzZSBVTklYDQo+ID4gRG9tYWluIHNvY2tldHMgYXJlIG5vdCBhdmFpbGFibGUg b24gV2luZG93cy4NCj4gPiAyMjQ3MzUgW21haW5dIFdBUk4NCj4gPiBvcmcuYXBhY2hlLmhhZG9v cC5oYmFzZS5pby51dGlsLkhlYXBNZW1vcnlTaXplVXRpbA0KPiA+IC0gaGJhc2UucmVnaW9uc2Vy dmVyLmdsb2JhbC5tZW1zdG9yZS51cHBlckxpbWl0IGlzIGRlcHJlY2F0ZWQgYnkNCj4gPiBoYmFz ZS5yZWdpb25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnNpemUNCj4gPiAyMjUxNjUgW21haW5dIElO Rk8NCj4gPiBvcmcuYXBhY2hlLmhhZG9vcC5oYmFzZS56b29rZWVwZXIuUmVjb3ZlcmFibGVab29L ZWVwZXINCj4gPiAtIFByb2Nlc3MgaWRlbnRpZmllcj1oY29ubmVjdGlvbi0weDRkZDVkNmJiIGNv bm5lY3RpbmcgdG8gWm9vS2VlcGVyDQo+ID4gZW5zZW1ibGU9aHFoZDAybm0wMS5wY2xjMC5tZXJr bGUubG9jYWw6MjE4MSxocWhkMDJubTAyLg0KPiA+IHBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxLGhx aGQwMmVkMDEucGNsYzAubWVya2xlLmxvY2FsOjIxODENCj4gPiAyMjUxOTAgW21haW5dIElORk8g IG9yZy5hcGFjaGUuem9va2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVu dDp6b29rZWVwZXIudmVyc2lvbj0zLjQuNi0xNTY5OTY1LCBidWlsdCBvbiAwMi8yMC8yMDE0DQo+ ID4gMDk6MDkgR01UDQo+ID4gMjI1MTkxIFttYWluXSBJTkZPICBvcmcuYXBhY2hlLnpvb2tlZXBl ci5ab29LZWVwZXIgIC0gQ2xpZW50IGVudmlyb25tZW50Og0KPiA+IGhvc3QubmFtZT1KTFVPV0lO Ny5wY2xjMC5tZXJrbGUubG9jYWwNCj4gPiAyMjUxOTEgW21haW5dIElORk8gIG9yZy5hcGFjaGUu em9va2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDpqYXZhLnZlcnNp b249MS43LjBfNTENCj4gPiAyMjUxOTEgW21haW5dIElORk8gIG9yZy5hcGFjaGUuem9va2VlcGVy Llpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDpqYXZhLnZlbmRvcj1PcmFjbGUg Q29ycG9yYXRpb24NCj4gPiAyMjUxOTEgW21haW5dIElORk8gIG9yZy5hcGFjaGUuem9va2VlcGVy Llpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDpqYXZhLmhvbWU9Qzpcd29ya1xq ZGsxLjcuMF81MVxqcmUNCj4gPiAyMjUxOTMgW21haW5dIElORk8gIG9yZy5hcGFjaGUuem9va2Vl cGVyLlpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDpqYXZhLmlvLnRtcGRpcj1D OlxVc2Vyc1xqbHVvXEFwcERhdGFcTG9jYWxcVGVtcFwNCj4gPiAyMjUxOTMgW21haW5dIElORk8g IG9yZy5hcGFjaGUuem9va2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVu dDpqYXZhLmNvbXBpbGVyPTxOQT4NCj4gPiAyMjUxOTMgW21haW5dIElORk8gIG9yZy5hcGFjaGUu em9va2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQgZW52aXJvbm1lbnQ6DQo+ID4gb3MubmFtZT1X aW5kb3dzIDcNCj4gPiAyMjUxOTMgW21haW5dIElORk8gIG9yZy5hcGFjaGUuem9va2VlcGVyLlpv b0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDpvcy5hcmNoPWFtZDY0DQo+ID4gMjI1 MTk0IFttYWluXSBJTkZPICBvcmcuYXBhY2hlLnpvb2tlZXBlci5ab29LZWVwZXIgIC0gQ2xpZW50 DQo+ID4gZW52aXJvbm1lbnQ6b3MudmVyc2lvbj02LjENCj4gPiAyMjUxOTQgW21haW5dIElORk8g IG9yZy5hcGFjaGUuem9va2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQgZW52aXJvbm1lbnQ6DQo+ ID4gdXNlci5uYW1lPWpsdW8NCj4gPiAyMjUxOTQgW21haW5dIElORk8gIG9yZy5hcGFjaGUuem9v a2VlcGVyLlpvb0tlZXBlciAgLSBDbGllbnQNCj4gPiBlbnZpcm9ubWVudDp1c2VyLmhvbWU9Qzpc VXNlcnNcamx1bw0KPiA+IDIyNTE5NCBbbWFpbl0gSU5GTyAgb3JnLmFwYWNoZS56b29rZWVwZXIu Wm9vS2VlcGVyICAtIENsaWVudA0KPiA+IGVudmlyb25tZW50OnVzZXIuZGlyPUM6XHdvcmtccHJv amVjdFxjMlx0cnVua1xtaXNjXGhiYXNlX21haW50ZW5hbmNlDQo+ID4gMjI1MTk3IFttYWluXSBJ TkZPICBvcmcuYXBhY2hlLnpvb2tlZXBlci5ab29LZWVwZXIgIC0gSW5pdGlhdGluZw0KPiA+IGNs aWVudCBjb25uZWN0aW9uLCBjb25uZWN0U3RyaW5nPWhxaGQwMm5tMDEucGNsYzAubWVya2xlLmxv Y2FsOjIxODEsDQo+ID4gaHFoZDAybm0wMi5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSxocWhkMDJl ZDAxLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgNCj4gPiAxDQo+ID4gc2Vzc2lvblRpbWVvdXQ9MTIw MDAwIHdhdGNoZXI9aGNvbm5lY3Rpb24tMHg0ZGQ1ZDZiYjB4MCwNCj4gPiBxdW9ydW09aHFoZDAy bm0wMS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSxocWhkMDJubTAyLg0KPiA+IHBjbGMwLm1lcmts ZS5sb2NhbDoyMTgxLGhxaGQwMmVkMDEucGNsYzAubWVya2xlLmxvY2FsOjIxODEsDQo+ID4gYmFz ZVpOb2RlPS9oYmFzZS1zZWN1cmUNCj4gPiAyMjU0NDIgW21haW4tU2VuZFRocmVhZChocWhkMDJu bTAyLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxKV0gSU5GTw0KPiA+IG9yZy5hcGFjaGUuem9va2Vl cGVyLkNsaWVudENueG4gIC0gT3BlbmluZyBzb2NrZXQgY29ubmVjdGlvbiB0bw0KPiA+IHNlcnZl ciBocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5sb2NhbC8xMC4xMjkuOC4xNDoyMTgxLiBXaWxsIG5v dA0KPiA+IGF0dGVtcHQgdG8gYXV0aGVudGljYXRlIHVzaW5nIFNBU0wgKHVua25vd24gZXJyb3Ip DQo+ID4gMjI1NDkwIFttYWluLVNlbmRUaHJlYWQoaHFoZDAybm0wMi5wY2xjMC5tZXJrbGUubG9j YWw6MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIFNv Y2tldCBjb25uZWN0aW9uIGVzdGFibGlzaGVkIHRvDQo+ID4gaHFoZDAybm0wMi5wY2xjMC5tZXJr bGUubG9jYWwvMTAuMTI5LjguMTQ6MjE4MSwgaW5pdGlhdGluZyBzZXNzaW9uDQo+ID4gMjI1NTQ0 IFttYWluLVNlbmRUaHJlYWQoaHFoZDAybm0wMi5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldIElO Rk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIFNlc3Npb24gZXN0YWJs aXNobWVudCBjb21wbGV0ZSBvbg0KPiA+IHNlcnZlciBocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5s b2NhbC8xMC4xMjkuOC4xNDoyMTgxLCBzZXNzaW9uaWQgPQ0KPiA+IDB4MzU3MDY3YzU0NDI0MTBl LCBuZWdvdGlhdGVkIHRpbWVvdXQgPSAxMjAwMDANCj4gPiAyMzE3NTggW21haW5dIElORk8NCj4g PiBvcmcuYXBhY2hlLmhhZG9vcC5oYmFzZS56b29rZWVwZXIuUmVjb3ZlcmFibGVab29LZWVwZXIN Cj4gPiAtIFByb2Nlc3MgaWRlbnRpZmllcj1Ub2tlblV0aWwtZ2V0QXV0aFRva2VuIGNvbm5lY3Rp bmcgdG8gWm9vS2VlcGVyDQo+ID4gZW5zZW1ibGU9aHFoZDAybm0wMS5wY2xjMC5tZXJrbGUubG9j YWw6MjE4MSxocWhkMDJubTAyLg0KPiA+IHBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxLGhxaGQwMmVk MDEucGNsYzAubWVya2xlLmxvY2FsOjIxODENCj4gPiAyMzE3NTggW21haW5dIElORk8gIG9yZy5h cGFjaGUuem9va2VlcGVyLlpvb0tlZXBlciAgLSBJbml0aWF0aW5nDQo+ID4gY2xpZW50IGNvbm5l Y3Rpb24sIGNvbm5lY3RTdHJpbmc9aHFoZDAybm0wMS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSwN Cj4gPiBocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxLGhxaGQwMmVkMDEucGNsYzAu bWVya2xlLmxvY2FsOjIxOA0KPiA+IDENCj4gPiBzZXNzaW9uVGltZW91dD0xMjAwMDAgd2F0Y2hl cj1Ub2tlblV0aWwtZ2V0QXV0aFRva2VuMHgwLA0KPiA+IHF1b3J1bT1ocWhkMDJubTAxLnBjbGMw Lm1lcmtsZS5sb2NhbDoyMTgxLGhxaGQwMm5tMDIuDQo+ID4gcGNsYzAubWVya2xlLmxvY2FsOjIx ODEsaHFoZDAyZWQwMS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSwNCj4gPiBiYXNlWk5vZGU9L2hi YXNlLXNlY3VyZQ0KPiA+IDIzMTg3NiBbbWFpbi1TZW5kVGhyZWFkKGhxaGQwMm5tMDIucGNsYzAu bWVya2xlLmxvY2FsOjIxODEpXSBJTkZPDQo+ID4gb3JnLmFwYWNoZS56b29rZWVwZXIuQ2xpZW50 Q254biAgLSBPcGVuaW5nIHNvY2tldCBjb25uZWN0aW9uIHRvDQo+ID4gc2VydmVyIGhxaGQwMm5t MDIucGNsYzAubWVya2xlLmxvY2FsLzEwLjEyOS44LjE0OjIxODEuIFdpbGwgbm90DQo+ID4gYXR0 ZW1wdCB0byBhdXRoZW50aWNhdGUgdXNpbmcgU0FTTCAodW5rbm93biBlcnJvcikNCj4gPiAyNTM0 MDUgW21haW4tU2VuZFRocmVhZChocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxKV0g SU5GTw0KPiA+IG9yZy5hcGFjaGUuem9va2VlcGVyLkNsaWVudENueG4gIC0gU29ja2V0IGNvbm5l Y3Rpb24gZXN0YWJsaXNoZWQgdG8NCj4gPiBocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5sb2NhbC8x MC4xMjkuOC4xNDoyMTgxLCBpbml0aWF0aW5nIHNlc3Npb24NCj4gPiAyNTc5MTQgW21haW4tU2Vu ZFRocmVhZChocWhkMDJubTAyLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxKV0gSU5GTw0KPiA+IG9y Zy5hcGFjaGUuem9va2VlcGVyLkNsaWVudENueG4gIC0gU2Vzc2lvbiBlc3RhYmxpc2htZW50IGNv bXBsZXRlIG9uDQo+ID4gc2VydmVyIGhxaGQwMm5tMDIucGNsYzAubWVya2xlLmxvY2FsLzEwLjEy OS44LjE0OjIxODEsIHNlc3Npb25pZCA9DQo+ID4gMHgzNTcwNjdjNTQ0MjQxMTYsIG5lZ290aWF0 ZWQgdGltZW91dCA9IDEyMDAwMA0KPiA+IDM3NDgyMCBbbWFpbi1TZW5kVGhyZWFkKGhxaGQwMm5t MDIucGNsYzAubWVya2xlLmxvY2FsOjIxODEpXSBJTkZPDQo+ID4gb3JnLmFwYWNoZS56b29rZWVw ZXIuQ2xpZW50Q254biAgLSBDbGllbnQgc2Vzc2lvbiB0aW1lZCBvdXQsIGhhdmUNCj4gPiBub3Qg aGVhcmQgZnJvbSBzZXJ2ZXIgaW4gOTY5OTNtcyBmb3Igc2Vzc2lvbmlkIDB4MzU3MDY3YzU0NDI0 MTBlLA0KPiA+IGNsb3Npbmcgc29ja2V0IGNvbm5lY3Rpb24gYW5kIGF0dGVtcHRpbmcgcmVjb25u ZWN0DQo+ID4gMzc0OTIzIFttYWluXSBJTkZPICBvcmcuYXBhY2hlLnpvb2tlZXBlci5ab29LZWVw ZXIgIC0gU2Vzc2lvbjoNCj4gPiAweDM1NzA2N2M1NDQyNDExNiBjbG9zZWQNCj4gPiAzNzQ5MjQg W21haW4tRXZlbnRUaHJlYWRdIElORk8gIG9yZy5hcGFjaGUuem9va2VlcGVyLkNsaWVudENueG4g IC0NCj4gPiBFdmVudFRocmVhZCBzaHV0IGRvd24NCj4gPiAzNzUwNTMgW21haW4tU2VuZFRocmVh ZChocWhkMDJlZDAxLnBjbGMwLm1lcmtsZS5sb2NhbDoyMTgxKV0gSU5GTw0KPiA+IG9yZy5hcGFj aGUuem9va2VlcGVyLkNsaWVudENueG4gIC0gT3BlbmluZyBzb2NrZXQgY29ubmVjdGlvbiB0bw0K PiA+IHNlcnZlciBocWhkMDJlZDAxLnBjbGMwLm1lcmtsZS5sb2NhbC8xMC4xMjkuOC4xMToyMTgx LiBXaWxsIG5vdA0KPiA+IGF0dGVtcHQgdG8gYXV0aGVudGljYXRlIHVzaW5nIFNBU0wgKHVua25v d24gZXJyb3IpDQo+ID4gMzc1MDk1IFttYWluLVNlbmRUaHJlYWQoaHFoZDAyZWQwMS5wY2xjMC5t ZXJrbGUubG9jYWw6MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRD bnhuICAtIFNvY2tldCBjb25uZWN0aW9uIGVzdGFibGlzaGVkIHRvDQo+ID4gaHFoZDAyZWQwMS5w Y2xjMC5tZXJrbGUubG9jYWwvMTAuMTI5LjguMTE6MjE4MSwgaW5pdGlhdGluZyBzZXNzaW9uDQo+ ID4gMzc1MTM2IFttYWluLVNlbmRUaHJlYWQoaHFoZDAyZWQwMS5wY2xjMC5tZXJrbGUubG9jYWw6 MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIFNlc3Np b24gZXN0YWJsaXNobWVudCBjb21wbGV0ZSBvbg0KPiA+IHNlcnZlciBocWhkMDJlZDAxLnBjbGMw Lm1lcmtsZS5sb2NhbC8xMC4xMjkuOC4xMToyMTgxLCBzZXNzaW9uaWQgPQ0KPiA+IDB4MzU3MDY3 YzU0NDI0MTBlLCBuZWdvdGlhdGVkIHRpbWVvdXQgPSAxMjAwMDANCj4gPiAzNzY1MzggW21haW5d IElORk8NCj4gPiBvcmcuYXBhY2hlLmhhZG9vcC5oYmFzZS5jbGllbnQuQ29ubmVjdGlvbk1hbmFn ZXIkSENvbm5lY3Rpb25JbXBsZW1lbg0KPiA+IHRhDQo+ID4gdGlvbg0KPiA+IC0gQ2xvc2luZyB6 b29rZWVwZXIgc2Vzc2lvbmlkPTB4MzU3MDY3YzU0NDI0MTBlDQo+ID4gMzc2NTgxIFttYWluXSBJ TkZPICBvcmcuYXBhY2hlLnpvb2tlZXBlci5ab29LZWVwZXIgIC0gU2Vzc2lvbjoNCj4gPiAweDM1 NzA2N2M1NDQyNDEwZSBjbG9zZWQNCj4gPiAzNzY1ODEgW21haW4tRXZlbnRUaHJlYWRdIElORk8g IG9yZy5hcGFjaGUuem9va2VlcGVyLkNsaWVudENueG4gIC0NCj4gPiBFdmVudFRocmVhZCBzaHV0 IGRvd24NCj4gPiAzNzY3NDYgW21haW5dIFdBUk4NCj4gPiBvcmcuYXBhY2hlLmhhZG9vcC5oYmFz ZS5pby51dGlsLkhlYXBNZW1vcnlTaXplVXRpbA0KPiA+IC0gaGJhc2UucmVnaW9uc2VydmVyLmds b2JhbC5tZW1zdG9yZS51cHBlckxpbWl0IGlzIGRlcHJlY2F0ZWQgYnkNCj4gPiBoYmFzZS5yZWdp b25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnNpemUNCj4gPiAzNzY3NDkgW21haW5dIElORk8gIG9y Zy5hcGFjaGUuaGFkb29wLmNvbmYuQ29uZmlndXJhdGlvbi5kZXByZWNhdGlvbg0KPiA+IC0gaW8u Ynl0ZXMucGVyLmNoZWNrc3VtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZQ0KPiA+IGRmcy5i eXRlcy1wZXItY2hlY2tzdW0NCj4gPiAzNzY4MzkgW21haW5dIFdBUk4NCj4gPiBvcmcuYXBhY2hl LmhhZG9vcC5oYmFzZS5pby51dGlsLkhlYXBNZW1vcnlTaXplVXRpbA0KPiA+IC0gaGJhc2UucmVn aW9uc2VydmVyLmdsb2JhbC5tZW1zdG9yZS51cHBlckxpbWl0IGlzIGRlcHJlY2F0ZWQgYnkNCj4g PiBoYmFzZS5yZWdpb25zZXJ2ZXIuZ2xvYmFsLm1lbXN0b3JlLnNpemUNCj4gPiAzNzY4NDEgW21h aW5dIElORk8gIG9yZy5hcGFjaGUuaGFkb29wLmNvbmYuQ29uZmlndXJhdGlvbi5kZXByZWNhdGlv bg0KPiA+IC0gaW8uYnl0ZXMucGVyLmNoZWNrc3VtIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVz ZQ0KPiA+IGRmcy5ieXRlcy1wZXItY2hlY2tzdW0NCj4gPiAzNzY4NDMgW21haW5dIElORk8NCj4g PiBvcmcuYXBhY2hlLmhhZG9vcC5oYmFzZS56b29rZWVwZXIuUmVjb3ZlcmFibGVab29LZWVwZXIN Cj4gPiAtIFByb2Nlc3MgaWRlbnRpZmllcj1oY29ubmVjdGlvbi0weDYxM2NmM2M1IGNvbm5lY3Rp bmcgdG8gWm9vS2VlcGVyDQo+ID4gZW5zZW1ibGU9aHFldGdoZHBhZG05MS5wY2xjMC5tZXJrbGUu bG9jYWw6MjE4MSwNCj4gaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUuDQo+ID4gbG9jYWw6MjE4 MQ0KPiA+IDM3Njg0MyBbbWFpbl0gSU5GTyAgb3JnLmFwYWNoZS56b29rZWVwZXIuWm9vS2VlcGVy ICAtIEluaXRpYXRpbmcNCj4gPiBjbGllbnQgY29ubmVjdGlvbiwNCj4gPiBjb25uZWN0U3RyaW5n PWhxZXRnaGRwYWRtOTEucGNsYzAubWVya2xlLmxvY2FsOjIxODEsDQo+ID4gaHFldGdoZHBhZG05 MC5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSBzZXNzaW9uVGltZW91dD0xMjAwMDANCj4gPiB3YXRj aGVyPWhjb25uZWN0aW9uLTB4NjEzY2YzYzUweDAsIHF1b3J1bT1ocWV0Z2hkcGFkbTkxLnBjbGMw Lg0KPiA+IG1lcmtsZS5sb2NhbDoyMTgxLGhxZXRnaGRwYWRtOTAucGNsYzAubWVya2xlLmxvY2Fs OjIxODEsDQo+ID4gYmFzZVpOb2RlPS9oYmFzZQ0KPiA+IDM3NzAwOCBbbWFpbi1TZW5kVGhyZWFk KGhxZXRnaGRwYWRtOTEucGNsYzAubWVya2xlLmxvY2FsOjIxODEpXSBJTkZPDQo+ID4gb3JnLmFw YWNoZS56b29rZWVwZXIuQ2xpZW50Q254biAgLSBPcGVuaW5nIHNvY2tldCBjb25uZWN0aW9uIHRv DQo+ID4gc2VydmVyIGhxZXRnaGRwYWRtOTEucGNsYzAubWVya2xlLmxvY2FsLzEwLjEyOS40MC4x MToyMTgxLiBXaWxsIG5vdA0KPiA+IGF0dGVtcHQgdG8gYXV0aGVudGljYXRlIHVzaW5nIFNBU0wg KHVua25vd24gZXJyb3IpDQo+ID4gMzc3MDU3IFttYWluLVNlbmRUaHJlYWQoaHFldGdoZHBhZG05 MS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBl ci5DbGllbnRDbnhuICAtIFNvY2tldCBjb25uZWN0aW9uIGVzdGFibGlzaGVkIHRvDQo+ID4gaHFl dGdoZHBhZG05MS5wY2xjMC5tZXJrbGUubG9jYWwvMTAuMTI5LjQwLjExOjIxODEsIGluaXRpYXRp bmcNCj4gPiBzZXNzaW9uDQo+ID4gMzc3MDk4IFttYWluLVNlbmRUaHJlYWQoaHFldGdoZHBhZG05 MS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBl ci5DbGllbnRDbnhuICAtIFNlc3Npb24gZXN0YWJsaXNobWVudCBjb21wbGV0ZSBvbg0KPiA+IHNl cnZlciBocWV0Z2hkcGFkbTkxLnBjbGMwLm1lcmtsZS5sb2NhbC8xMC4xMjkuNDAuMTE6MjE4MSwg c2Vzc2lvbmlkDQo+ID4gPSAweDI1NjVjNTUyZDI5Njk4MiwgbmVnb3RpYXRlZCB0aW1lb3V0ID0g NDAwMDANCj4gPiAzNzcxNDAgW21haW5dIElORk8gIG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLmNs aWVudC5ab29LZWVwZXJSZWdpc3RyeQ0KPiA+IC0gQ2x1c3RlcklkIHJlYWQgaW4gWm9vS2VlcGVy IGlzIG51bGwNCj4gPiAzNzcxNDEgW21haW5dIElORk8NCj4gPiBvcmcuYXBhY2hlLmhhZG9vcC5o YmFzZS56b29rZWVwZXIuUmVjb3ZlcmFibGVab29LZWVwZXINCj4gPiAtIFByb2Nlc3MgaWRlbnRp Zmllcj1Ub2tlblV0aWwtZ2V0QXV0aFRva2VuIGNvbm5lY3RpbmcgdG8gWm9vS2VlcGVyDQo+ID4g ZW5zZW1ibGU9aHFldGdoZHBhZG05MS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSwNCj4gaHFldGdo ZHBhZG05MC5wY2xjMC5tZXJrbGUuDQo+ID4gbG9jYWw6MjE4MQ0KPiA+IDM3NzE0MSBbbWFpbl0g SU5GTyAgb3JnLmFwYWNoZS56b29rZWVwZXIuWm9vS2VlcGVyICAtIEluaXRpYXRpbmcNCj4gPiBj bGllbnQgY29ubmVjdGlvbiwNCj4gPiBjb25uZWN0U3RyaW5nPWhxZXRnaGRwYWRtOTEucGNsYzAu bWVya2xlLmxvY2FsOjIxODEsDQo+ID4gaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6 MjE4MSBzZXNzaW9uVGltZW91dD0xMjAwMDANCj4gPiB3YXRjaGVyPVRva2VuVXRpbC1nZXRBdXRo VG9rZW4weDAsIHF1b3J1bT1ocWV0Z2hkcGFkbTkxLnBjbGMwLg0KPiA+IG1lcmtsZS5sb2NhbDoy MTgxLGhxZXRnaGRwYWRtOTAucGNsYzAubWVya2xlLmxvY2FsOjIxODEsDQo+ID4gYmFzZVpOb2Rl PS9oYmFzZQ0KPiA+IDM3NzE4OSBbbWFpbi1TZW5kVGhyZWFkKGhxZXRnaGRwYWRtOTAucGNsYzAu bWVya2xlLmxvY2FsOjIxODEpXSBJTkZPDQo+ID4gb3JnLmFwYWNoZS56b29rZWVwZXIuQ2xpZW50 Q254biAgLSBPcGVuaW5nIHNvY2tldCBjb25uZWN0aW9uIHRvDQo+ID4gc2VydmVyIGhxZXRnaGRw YWRtOTAucGNsYzAubWVya2xlLmxvY2FsLzEwLjEyOS40MC4xMDoyMTgxLiBXaWxsIG5vdA0KPiA+ IGF0dGVtcHQgdG8gYXV0aGVudGljYXRlIHVzaW5nIFNBU0wgKHVua25vd24gZXJyb3IpDQo+ID4g Mzk5NDk0IFttYWluLVNlbmRUaHJlYWQoaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6 MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIFNvY2tl dCBjb25uZWN0aW9uIGVzdGFibGlzaGVkIHRvDQo+ID4gaHFldGdoZHBhZG05MC5wY2xjMC5tZXJr bGUubG9jYWwvMTAuMTI5LjQwLjEwOjIxODEsIGluaXRpYXRpbmcNCj4gPiBzZXNzaW9uDQo+ID4g Mzk5NTQxIFttYWluLVNlbmRUaHJlYWQoaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6 MjE4MSldIElORk8NCj4gPiBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIFNlc3Np b24gZXN0YWJsaXNobWVudCBjb21wbGV0ZSBvbg0KPiA+IHNlcnZlciBocWV0Z2hkcGFkbTkwLnBj bGMwLm1lcmtsZS5sb2NhbC8xMC4xMjkuNDAuMTA6MjE4MSwgc2Vzc2lvbmlkDQo+ID4gPSAweDE1 NjVjNTUyY2ZkNmIwMywgbmVnb3RpYXRlZCB0aW1lb3V0ID0gNDAwMDANCj4gPiAxMDM2NDQxIFtt YWluLVNlbmRUaHJlYWQoaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldDQo+ ID4gSU5GTyBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIENsaWVudCBzZXNzaW9u IHRpbWVkIG91dCwNCj4gPiBoYXZlIG5vdCBoZWFyZCBmcm9tIHNlcnZlciBpbiA2MzY4MzVtcyBm b3Igc2Vzc2lvbmlkDQo+ID4gMHgxNTY1YzU1MmNmZDZiMDMsIGNsb3Npbmcgc29ja2V0IGNvbm5l Y3Rpb24gYW5kIGF0dGVtcHRpbmcNCj4gPiByZWNvbm5lY3QNCj4gPiAxMDM2NDQxIFttYWluLVNl bmRUaHJlYWQoaHFldGdoZHBhZG05MS5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldDQo+ID4gSU5G TyBvcmcuYXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIENsaWVudCBzZXNzaW9uIHRpbWVk IG91dCwNCj4gPiBoYXZlIG5vdCBoZWFyZCBmcm9tIHNlcnZlciBpbiA2MzY5MDBtcyBmb3Igc2Vz c2lvbmlkDQo+ID4gMHgyNTY1YzU1MmQyOTY5ODIsIGNsb3Npbmcgc29ja2V0IGNvbm5lY3Rpb24g YW5kIGF0dGVtcHRpbmcNCj4gPiByZWNvbm5lY3QNCj4gPiAxMjM2NzA5IFttYWluLVNlbmRUaHJl YWQoaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldDQo+ID4gSU5GTyBvcmcu YXBhY2hlLnpvb2tlZXBlci5DbGllbnRDbnhuICAtIE9wZW5pbmcgc29ja2V0IGNvbm5lY3Rpb24g dG8NCj4gPiBzZXJ2ZXIgaHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWwvMTAuMTI5LjQw LjEwOjIxODEuIFdpbGwgbm90DQo+ID4gYXR0ZW1wdCB0byBhdXRoZW50aWNhdGUgdXNpbmcgU0FT TCAodW5rbm93biBlcnJvcikNCj4gPiAxMjM2NzYxIFttYWluLVNlbmRUaHJlYWQoaHFldGdoZHBh ZG05MC5wY2xjMC5tZXJrbGUubG9jYWw6MjE4MSldDQo+ID4gSU5GTyBvcmcuYXBhY2hlLnpvb2tl ZXBlci5DbGllbnRDbnhuICAtIFNvY2tldCBjb25uZWN0aW9uDQo+ID4gZXN0YWJsaXNoZWQgdG8g aHFldGdoZHBhZG05MC5wY2xjMC5tZXJrbGUubG9jYWwvMTAuMTI5LjQwLjEwOjIxODEsDQo+ID4g aW5pdGlhdGluZyBzZXNzaW9uDQo+ID4gMTIzNjc2MiBbbWFpbl0gSU5GTyAgb3JnLmFwYWNoZS56 b29rZWVwZXIuWm9vS2VlcGVyICAtIFNlc3Npb246DQo+ID4gMHgxNTY1YzU1MmNmZDZiMDMgY2xv c2VkDQo+ID4gMTIzNjc2MiBbbWFpbl0gSU5GTw0KPiA+IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNl LmNsaWVudC5Db25uZWN0aW9uTWFuYWdlciRIQ29ubmVjdGlvbkltcGxlbWVuDQo+ID4gdGENCj4g PiB0aW9uDQo+ID4gLSBDbG9zaW5nIHpvb2tlZXBlciBzZXNzaW9uaWQ9MHgyNTY1YzU1MmQyOTY5 ODINCj4gPiAxMjM2NzYyIFttYWluLUV2ZW50VGhyZWFkXSBJTkZPICBvcmcuYXBhY2hlLnpvb2tl ZXBlci5DbGllbnRDbnhuICAtDQo+ID4gRXZlbnRUaHJlYWQgc2h1dCBkb3duDQo+ID4gMTIzNjkw OCBbbWFpbl0gSU5GTyAgb3JnLmFwYWNoZS56b29rZWVwZXIuWm9vS2VlcGVyICAtIFNlc3Npb246 DQo+ID4gMHgyNTY1YzU1MmQyOTY5ODIgY2xvc2VkDQo+ID4gMTIzNjkwOSBbbWFpbi1FdmVudFRo cmVhZF0gSU5GTyAgb3JnLmFwYWNoZS56b29rZWVwZXIuQ2xpZW50Q254biAgLQ0KPiA+IEV2ZW50 VGhyZWFkIHNodXQgZG93bg0KPiA+DQo+ID4gamF2YS5pby5JT0V4Y2VwdGlvbjogRmFpbGVkIHRv IGdldCBjbHVzdGVyIElEDQo+ID4NCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuaGFkb29wLmhi YXNlLnNlY3VyaXR5LnRva2VuLlRva2VuVXRpbC4NCj4gPiBnZXRBdXRoVG9rZW4oVG9rZW5VdGls LmphdmE6MzY1KQ0KPiA+ICAgICAgICAgYXQgb3JnLmFwYWNoZS5oYWRvb3AuaGJhc2Uuc2VjdXJp dHkudG9rZW4uVG9rZW5VdGlsLg0KPiA+IGFkZFRva2VuRm9ySm9iKFRva2VuVXRpbC5qYXZhOjMy NykNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLm1hcHJlZHVjZS5UYWJs ZU1hcFJlZHVjZVV0aWwuDQo+ID4gaW5pdENyZWRlbnRpYWxzKFRhYmxlTWFwUmVkdWNlVXRpbC5q YXZhOjQ1MSkNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLm1hcHJlZHVj ZS5UYWJsZU1hcFJlZHVjZVV0aWwuDQo+ID4gaW5pdFRhYmxlUmVkdWNlckpvYihUYWJsZU1hcFJl ZHVjZVV0aWwuamF2YTo2NTgpDQo+ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLmhhZG9vcC5oYmFz ZS5tYXByZWR1Y2UuVGFibGVNYXBSZWR1Y2VVdGlsLg0KPiA+IGluaXRUYWJsZVJlZHVjZXJKb2Io VGFibGVNYXBSZWR1Y2VVdGlsLmphdmE6NTkxKQ0KPiA+ICAgICAgICAgYXQgb3JnLmFwYWNoZS5o YWRvb3AuaGJhc2UubWFwcmVkdWNlLkNvcHlUYWJsZS4NCj4gPiBjcmVhdGVTdWJtaXR0YWJsZUpv YihDb3B5VGFibGUuamF2YToxNjgpDQo+ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLmhhZG9vcC5o YmFzZS5tYXByZWR1Y2UuQ29weVRhYmxlLnJ1bigNCj4gPiBDb3B5VGFibGUuamF2YTozNDgpDQo+ ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLmhhZG9vcC51dGlsLlRvb2xSdW5uZXIucnVuKFRvb2xS dW5uZXIuamF2YTo3MCkNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuaGFkb29wLnV0aWwuVG9v bFJ1bm5lci5ydW4oVG9vbFJ1bm5lci5qYXZhOjg0KQ0KPiA+ICAgICAgICAgYXQgb3JnLmFwYWNo ZS5oYWRvb3AuaGJhc2UubWFwcmVkdWNlLkNvcHlUYWJsZS5tYWluKA0KPiA+IENvcHlUYWJsZS5q YXZhOjM0MSkNCj4gPiAgICAgICAgIGF0IGNvbS5tZXJrbGVpbmMuY3IuaGJhc2VfbWFpbnRlbmFu Y2UudGFibGVleHBvcnQuDQo+ID4gQ29weVRhYmxlVGVzdC5leHBvcnQoQ29weVRhYmxlVGVzdC5q YXZhOjQ0KQ0KPiA+ICAgICAgICAgYXQgY29tLm1lcmtsZWluYy5jci5oYmFzZV9tYWludGVuYW5j ZS50YWJsZWV4cG9ydC4NCj4gPiBDb3B5VGFibGVUZXN0LnRlc3RDb3B5VGFibGUoQ29weVRhYmxl VGVzdC5qYXZhOjI1KQ0KPiA+ICAgICAgICAgYXQgc3VuLnJlZmxlY3QuTmF0aXZlTWV0aG9kQWNj ZXNzb3JJbXBsLmludm9rZTAoTmF0aXZlIE1ldGhvZCkNCj4gPiAgICAgICAgIGF0IHN1bi5yZWZs ZWN0Lk5hdGl2ZU1ldGhvZEFjY2Vzc29ySW1wbC5pbnZva2UoDQo+ID4gTmF0aXZlTWV0aG9kQWNj ZXNzb3JJbXBsLmphdmE6NTcpDQo+ID4gICAgICAgICBhdCBzdW4ucmVmbGVjdC5EZWxlZ2F0aW5n TWV0aG9kQWNjZXNzb3JJbXBsLmludm9rZSgNCj4gPiBEZWxlZ2F0aW5nTWV0aG9kQWNjZXNzb3JJ bXBsLmphdmE6NDMpDQo+ID4gICAgICAgICBhdCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QuaW52 b2tlKE1ldGhvZC5qYXZhOjYwNikNCj4gPiAgICAgICAgIGF0DQo+ID4gb3JnLmp1bml0LnJ1bm5l cnMubW9kZWwuRnJhbWV3b3JrTWV0aG9kJDEucnVuUmVmbGVjdGl2ZUNhbGwoDQo+ID4gRnJhbWV3 b3JrTWV0aG9kLmphdmE6NTApDQo+ID4gICAgICAgICBhdCBvcmcuanVuaXQuaW50ZXJuYWwucnVu bmVycy5tb2RlbC5SZWZsZWN0aXZlQ2FsbGFibGUucnVuKA0KPiA+IFJlZmxlY3RpdmVDYWxsYWJs ZS5qYXZhOjEyKQ0KPiA+ICAgICAgICAgYXQNCj4gPiBvcmcuanVuaXQucnVubmVycy5tb2RlbC5G cmFtZXdvcmtNZXRob2QuaW52b2tlRXhwbG9zaXZlbHkoDQo+ID4gRnJhbWV3b3JrTWV0aG9kLmph dmE6NDcpDQo+ID4gICAgICAgICBhdCBvcmcuanVuaXQuaW50ZXJuYWwucnVubmVycy5zdGF0ZW1l bnRzLkludm9rZU1ldGhvZC4NCj4gPiBldmFsdWF0ZShJbnZva2VNZXRob2QuamF2YToxNykNCj4g PiAgICAgICAgIGF0IGNvbS5pbnRlbGxpai5qdW5pdDQuSlVuaXQ0VGVzdFJ1bm5lclV0aWwkDQo+ ID4gSWdub3JlSWdub3JlZFRlc3RKVW5pdDRDbGFzc1J1bm5lci5ydW5DaGlsZCgNCj4gSlVuaXQ0 VGVzdFJ1bm5lclV0aWwuamF2YTozNDkpDQo+ID4gICAgICAgICBhdCBvcmcuanVuaXQucnVubmVy cy5CbG9ja0pVbml0NENsYXNzUnVubmVyLnJ1bkNoaWxkKA0KPiA+IEJsb2NrSlVuaXQ0Q2xhc3NS dW5uZXIuamF2YTo1NykNCj4gPiAgICAgICAgIGF0IG9yZy5qdW5pdC5ydW5uZXJzLlBhcmVudFJ1 bm5lciQzLnJ1bihQYXJlbnRSdW5uZXIuamF2YToyOTApDQo+ID4gICAgICAgICBhdCBvcmcuanVu aXQucnVubmVycy5QYXJlbnRSdW5uZXIkMS5zY2hlZHVsZSgNCj4gUGFyZW50UnVubmVyLmphdmE6 NzEpDQo+ID4gICAgICAgICBhdCBvcmcuanVuaXQucnVubmVycy5QYXJlbnRSdW5uZXIucnVuQ2hp bGRyZW4oDQo+ID4gUGFyZW50UnVubmVyLmphdmE6Mjg4KQ0KPiA+ICAgICAgICAgYXQgb3JnLmp1 bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyLmFjY2VzcyQwMDAoDQo+IFBhcmVudFJ1bm5lci5qYXZh OjU4KQ0KPiA+ICAgICAgICAgYXQgb3JnLmp1bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyJDIuZXZh bHVhdGUoDQo+ID4gUGFyZW50UnVubmVyLmphdmE6MjY4KQ0KPiA+ICAgICAgICAgYXQgb3JnLmp1 bml0LnJ1bm5lcnMuUGFyZW50UnVubmVyLnJ1bihQYXJlbnRSdW5uZXIuamF2YTozNjMpDQo+ID4g ICAgICAgICBhdCBvcmcuanVuaXQucnVubmVyLkpVbml0Q29yZS5ydW4oSlVuaXRDb3JlLmphdmE6 MTM3KQ0KPiA+ICAgICAgICAgYXQNCj4gPiBjb20uaW50ZWxsaWouanVuaXQ0LkpVbml0NElkZWFU ZXN0UnVubmVyLnN0YXJ0UnVubmVyV2l0aEFyZ3MoDQo+ID4gSlVuaXQ0SWRlYVRlc3RSdW5uZXIu amF2YTo2OSkNCj4gPiAgICAgICAgIGF0IGNvbS5pbnRlbGxpai5ydC5leGVjdXRpb24uanVuaXQu SlVuaXRTdGFydGVyLg0KPiA+IHByZXBhcmVTdHJlYW1zQW5kU3RhcnQoSlVuaXRTdGFydGVyLmph dmE6MjM0KQ0KPiA+ICAgICAgICAgYXQgY29tLmludGVsbGlqLnJ0LmV4ZWN1dGlvbi5qdW5pdC5K VW5pdFN0YXJ0ZXIubWFpbigNCj4gPiBKVW5pdFN0YXJ0ZXIuamF2YTo3NCkNCj4gPg0KPiA+IERp c2Nvbm5lY3RlZCBmcm9tIHRoZSB0YXJnZXQgVk0sIGFkZHJlc3M6ICcxMjcuMC4wLjE6NTA2Njkn LCB0cmFuc3BvcnQ6DQo+ID4gJ3NvY2tldCcNCj4gPg0KPiA+IFByb2Nlc3MgZmluaXNoZWQgd2l0 aCBleGl0IGNvZGUgLTENCj4gPg0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g RnJvbTogRXN0ZWJhbiBHdXRpZXJyZXogW21haWx0bzplc3RlYmFuQGNsb3VkZXJhLmNvbSA8amF2 YXNjcmlwdDo7Pl0NCj4gPiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDA4LCAyMDE2IDEyOjM3 IFBNDQo+ID4gVG86IHVzZXJAaGJhc2UuYXBhY2hlLm9yZyA8amF2YXNjcmlwdDo7Pg0KPiA+IFN1 YmplY3Q6IFJlOiBDb3B5VGFibGUgZmFpbHMgb24gY29weWluZyBiZXR3ZWVuIHR3byBzZWN1cmVk IGNsdXN0ZXJzDQo+ID4NCj4gPiBGcmFuaywNCj4gPg0KPiA+IERvIHlvdSBoYXZlIGEgY3Jvc3Mg cmVhbG0gc2V0dXA/IGlmIHllcywgZG8geW91IGhhdmUgWksgdG8gdXNlIHRoZQ0KPiA+IHByb3Bl ciBydWxlcyB2aWEgdGhlIC1Eem9va2VlcGVyLnNlY3VyaXR5LmF1dGhfdG9fbG9jYWwgZmxhZz8g SWYgeW91DQo+ID4gY291bGQgc2hhcmUgYWRkaXRpb25hbCBsb2dzIHRoYXQgd291bGQgYmUgaGVs cGZ1bCBmb3IgdXMuDQo+ID4NCj4gPiBUaGFua3MhDQo+ID4gZXN0ZWJhbi4NCj4gPg0KPiA+IC0t DQo+ID4gQ2xvdWRlcmEsIEluYy4NCj4gPg0KPiA+DQo+ID4gT24gVGh1LCBTZXAgOCwgMjAxNiBh dCAxMDozMiBBTSwgRnJhbmsgTHVvIDxqbHVvQG1lcmtsZWluYy5jb20NCj4gPGphdmFzY3JpcHQ6 Oz4+IHdyb3RlOg0KPiA+DQo+ID4gPiBJIGNvdWxkbuKAmXQgbWFuYWdlIHRvIGdldCB0aGUgQ29w eVRhYmxlIHRvIHdvcmsgYmV0d2VlbiB0d28gc2VjdXJlZA0KPiA+ID4gY2x1c3RlcnMgYW5kIGhv cGUgc29tZW9uZSBjYW4gc2hlZCBzb21lIGxpZ2h0Lg0KPiA+ID4NCj4gPiA+IEkgaGF2ZSBhIHRh YmxlIGNyZWF0ZWQgb24gYm90aCBjbHVzdGVycywgYW5kIEkgYW0gcnVubmluZyB0aGUNCj4gPiA+ IENvcHlUYWJsZSBjb21tYW5kIGZyb20gdGhlIHNvdXJjZSBjbHVzdGVyLg0KPiA+ID4NCj4gPiA+ IFRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUgZm9sbG93aW5nOg0KPiA+ID4gIi0tcGVlci5hZHI9em9v a2VlcGVyMSwgem9va2VlcGVyMjoyMTgxOi9oYmFzZSIsDQo+ID4gPiAiLS1uZXcubmFtZT1UYXJn ZXRUYWJsZSIsICJTb3VyY2VUYWJsZSINCj4gPiA+DQo+ID4gPiBJIGhhdmUgZW5zdXJlZCB0aGF0 IHRoZSB1c2VyIGhhcyBhbGwgcGVybWlzc2lvbnMgb24gYm90aCB0YWJsZXMuDQo+ID4gPiBXaGVu IEkgcnVuIGl0LCBJIGdvdDoNCj4gPiA+DQo+ID4gPiA9PT09PT09PT09PT09PT09PT09PT0NCj4g PiA+IGphdmEuaW8uSU9FeGNlcHRpb246IEZhaWxlZCB0byBnZXQgY2x1c3RlciBJRA0KPiA+ID4N Cj4gPiA+ICAgICAgICAgICAgICAgIGF0IG9yZy5hcGFjaGUuaGFkb29wLmhiYXNlLnNlY3VyaXR5 LnRva2VuLlRva2VuVXRpbC4NCj4gPiA+IGdldEF1dGhUb2tlbihUb2tlblV0aWwuamF2YTozNjUp DQo+ID4gPiAgICAgICAgICAgICAgICBhdCBvcmcuYXBhY2hlLmhhZG9vcC5oYmFzZS5zZWN1cml0 eS50b2tlbi5Ub2tlblV0aWwuDQo+ID4gPiBhZGRUb2tlbkZvckpvYihUb2tlblV0aWwuamF2YToz MjcpDQo+ID4gPiA9PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+DQo+ID4gPiBEZWJ1Z2dpbmcg aW50byBpdCwgSSBmb3VuZCB0aGF0IGl0IGlzIHRyeWluZyB0byBnZXQgdGhlIGNsdXN0ZXJJZA0K PiA+ID4gZnJvbSBteSB0YXJnZXQgY2x1c3RlciB1c2luZyBhZGRyZXNzIG9mIHpvb2tlZXBlcjEv MiwgYW5kIHRoZSBjb2RlDQo+ID4gPiBiZWxvdyByZXR1cm5zDQo+ID4gPiBudWxsOg0KPiA+ID4N Cj4gPiA+DQo+ID4gPiA9PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+DQo+ID4gPiAgICAgICAg IFpLVXRpbC5nZXREYXRhKHdhdGNoZXIsIHdhdGNoZXIuY2x1c3RlcklkWk5vZGUpOw0KPiA+ID4g PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPg0KPiA+ID4gQW55IGhpbnRzIHBsZWFzZT8NCj4g PiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+IEFjY2VzcyB0aGUgUTIgMjAxNiBEaWdpdGFsIE1hcmtl dGluZyBSZXBvcnQgZm9yIGEgZnJlc2ggc2V0IG9mDQo+ID4gPiB0cmVuZHMgYW5kIGJlbmNobWFy a3MgaW4gZGlnaXRhbA0KPiA+ID4gbWFya2V0aW5nPGh0dHA6Ly93d3cyLm1lcmtsZWluYy5jb20v bC80NzI1Mi8yMDE2LTA3LQ0KPiA+ID4gMjYvNDdndDdjPg0KPiA+ID4NCj4gPiA+IERvd25sb2Fk IG91ciBsYXRlc3QgcmVwb3J0IHRpdGxlZCDigJxUaGUgQ2FzZSBmb3IgQ2hhbmdlOiBFeHBsb3Jp bmcNCj4gPiA+IHRoZSBNeXRocyBvZiBDdXN0b21lci1DZW50cmljIFRyYW5zZm9ybWF0aW9u4oCd DQo+ID4gPiA8aHR0cDovL3d3dzIubWVya2xlaW5jLmNvbS9sLyA0NzI1Mi8yMDE2LTA4LTA0LzRi OXA3Yz4NCj4gPiA+DQo+ID4gPiBUaGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgdHJhbnNt aXR0ZWQgd2l0aCBpdCBhcmUgaW50ZW5kZWQNCj4gPiA+IGZvciB1c2UgYnkgdGhlIGludGVuZGVk IHJlY2lwaWVudChzKSBvbmx5LiBJZiB5b3UgaGF2ZSByZWNlaXZlZA0KPiA+ID4gdGhpcyBlbWFp bCBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGFuZCB0aGVu DQo+ID4gPiBkZWxldGUgaXQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQs IHlvdSBtdXN0IG5vdA0KPiA+ID4ga2VlcCwgdXNlLCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmli dXRlIHRoaXMgZW1haWwgd2l0aG91dCB0aGUNCj4gPiA+IGF1dGhvcuKAmXMgcHJpb3INCj4gcGVy bWlzc2lvbi4NCj4gPiA+IFdlIHRha2UgcHJlY2F1dGlvbnMgdG8gbWluaW1pemUgdGhlIHJpc2sg b2YgdHJhbnNtaXR0aW5nIHNvZnR3YXJlDQo+ID4gPiB2aXJ1c2VzLCBidXQgd2UgYWR2aXNlIHlv dSB0byBwZXJmb3JtIHlvdXIgb3duIHZpcnVzIGNoZWNrcyBvbiBhbnkNCj4gPiA+IGF0dGFjaG1l bnQgdG8gdGhpcyBtZXNzYWdlLiBXZSBjYW5ub3QgYWNjZXB0IGxpYWJpbGl0eSBmb3IgYW55DQo+ ID4gPiBsb3NzIG9yIGRhbWFnZSBjYXVzZWQgYnkgc29mdHdhcmUgdmlydXNlcy4gVGhlIGluZm9y bWF0aW9uDQo+ID4gPiBjb250YWluZWQgaW4gdGhpcyBjb21tdW5pY2F0aW9uIG1heSBiZSBjb25m aWRlbnRpYWwgYW5kIG1heSBiZQ0KPiA+ID4gc3ViamVjdCB0byB0aGUNCj4gPiBhdHRvcm5leS1j bGllbnQgcHJpdmlsZWdlLg0KPiA+ID4NCj4gPiBBY2Nlc3MgdGhlIFEyIDIwMTYgRGlnaXRhbCBN YXJrZXRpbmcgUmVwb3J0IGZvciBhIGZyZXNoIHNldCBvZg0KPiA+IHRyZW5kcyBhbmQgYmVuY2ht YXJrcyBpbiBkaWdpdGFsDQo+ID4gbWFya2V0aW5nPGh0dHA6Ly93d3cyLm1lcmtsZWluYy5jb20v bC80NzI1Mi8yMDE2LTA3LQ0KPiA+IDI2LzQ3Z3Q3Yz4NCj4gPg0KPiA+IERvd25sb2FkIG91ciBs YXRlc3QgcmVwb3J0IHRpdGxlZCDigJxUaGUgQ2FzZSBmb3IgQ2hhbmdlOiBFeHBsb3JpbmcNCj4g PiB0aGUgTXl0aHMgb2YgQ3VzdG9tZXItQ2VudHJpYyBUcmFuc2Zvcm1hdGlvbuKAnQ0KPiA+IDxo dHRwOi8vd3d3Mi5tZXJrbGVpbmMuY29tL2wvIDQ3MjUyLzIwMTYtMDgtMDQvNGI5cDdjPiBUaGlz IGVtYWlsDQo+ID4gYW5kIGFueSBhdHRhY2htZW50cyB0cmFuc21pdHRlZCB3aXRoIGl0IGFyZSBp bnRlbmRlZCBmb3IgdXNlIGJ5IHRoZQ0KPiA+IGludGVuZGVkIHJlY2lwaWVudChzKSBvbmx5LiBJ ZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWlsIGluDQo+ID4gZXJyb3IsIHBsZWFzZSBub3Rp ZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgdGhlbiBkZWxldGUgaXQuIElmDQo+ID4geW91 IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IG11c3Qgbm90IGtlZXAsIHVzZSwN Cj4gPiBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRlIHRoaXMgZW1haWwgd2l0aG91dCB0aGUg YXV0aG9y4oCZcyBwcmlvcg0KPiA+IHBlcm1pc3Npb24uIFdlIHRha2UgcHJlY2F1dGlvbnMgdG8g bWluaW1pemUgdGhlIHJpc2sgb2YgdHJhbnNtaXR0aW5nDQo+ID4gc29mdHdhcmUgdmlydXNlcywg YnV0IHdlIGFkdmlzZSB5b3UgdG8gcGVyZm9ybSB5b3VyIG93biB2aXJ1cyBjaGVja3MNCj4gPiBv biBhbnkgYXR0YWNobWVudCB0byB0aGlzIG1lc3NhZ2UuIFdlIGNhbm5vdCBhY2NlcHQgbGlhYmls aXR5IGZvcg0KPiA+IGFueSBsb3NzIG9yIGRhbWFnZSBjYXVzZWQgYnkgc29mdHdhcmUgdmlydXNl cy4gVGhlIGluZm9ybWF0aW9uDQo+ID4gY29udGFpbmVkIGluIHRoaXMgY29tbXVuaWNhdGlvbiBt YXkgYmUgY29uZmlkZW50aWFsIGFuZCBtYXkgYmUgc3ViamVjdCB0byB0aGUgYXR0b3JuZXktY2xp ZW50IHByaXZpbGVnZS4NCj4gPg0KPiBBY2Nlc3MgdGhlIFEyIDIwMTYgRGlnaXRhbCBNYXJrZXRp bmcgUmVwb3J0IGZvciBhIGZyZXNoIHNldCBvZiB0cmVuZHMNCj4gYW5kIGJlbmNobWFya3MgaW4g ZGlnaXRhbA0KPiBtYXJrZXRpbmc8aHR0cDovL3d3dzIubWVya2xlaW5jLmNvbS9sLzQ3MjUyLzIw MTYtMDctDQo+IDI2LzQ3Z3Q3Yz4NCj4NCj4gRG93bmxvYWQgb3VyIGxhdGVzdCByZXBvcnQgdGl0 bGVkIOKAnFRoZSBDYXNlIGZvciBDaGFuZ2U6IEV4cGxvcmluZyB0aGUNCj4gTXl0aHMgb2YgQ3Vz dG9tZXItQ2VudHJpYyBUcmFuc2Zvcm1hdGlvbuKAnQ0KPiA8aHR0cDovL3d3dzIubWVya2xlaW5j LmNvbS9sLyA0NzI1Mi8yMDE2LTA4LTA0LzRiOXA3Yz4gVGhpcyBlbWFpbCBhbmQNCj4gYW55IGF0 dGFjaG1lbnRzIHRyYW5zbWl0dGVkIHdpdGggaXQgYXJlIGludGVuZGVkIGZvciB1c2UgYnkgdGhl DQo+IGludGVuZGVkIHJlY2lwaWVudChzKSBvbmx5LiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz IGVtYWlsIGluIGVycm9yLA0KPiBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkg YW5kIHRoZW4gZGVsZXRlIGl0LiBJZiB5b3UgYXJlDQo+IG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBp ZW50LCB5b3UgbXVzdCBub3Qga2VlcCwgdXNlLCBkaXNjbG9zZSwgY29weSBvcg0KPiBkaXN0cmli dXRlIHRoaXMgZW1haWwgd2l0aG91dCB0aGUgYXV0aG9y4oCZcyBwcmlvciBwZXJtaXNzaW9uLiBX ZSB0YWtlDQo+IHByZWNhdXRpb25zIHRvIG1pbmltaXplIHRoZSByaXNrIG9mIHRyYW5zbWl0dGlu ZyBzb2Z0d2FyZSB2aXJ1c2VzLCBidXQNCj4gd2UgYWR2aXNlIHlvdSB0byBwZXJmb3JtIHlvdXIg b3duIHZpcnVzIGNoZWNrcyBvbiBhbnkgYXR0YWNobWVudCB0bw0KPiB0aGlzIG1lc3NhZ2UuIFdl IGNhbm5vdCBhY2NlcHQgbGlhYmlsaXR5IGZvciBhbnkgbG9zcyBvciBkYW1hZ2UgY2F1c2VkDQo+ IGJ5IHNvZnR3YXJlIHZpcnVzZXMuIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBj b21tdW5pY2F0aW9uDQo+IG1heSBiZSBjb25maWRlbnRpYWwgYW5kIG1heSBiZSBzdWJqZWN0IHRv IHRoZSBhdHRvcm5leS1jbGllbnQgcHJpdmlsZWdlLg0KPg0KQWNjZXNzIHRoZSBRMiAyMDE2IERp Z2l0YWwgTWFya2V0aW5nIFJlcG9ydCBmb3IgYSBmcmVzaCBzZXQgb2YgdHJlbmRzIGFuZCBiZW5j aG1hcmtzIGluIGRpZ2l0YWwgbWFya2V0aW5nPGh0dHA6Ly93d3cyLm1lcmtsZWluYy5jb20vbC80 NzI1Mi8yMDE2LTA3LTI2LzQ3Z3Q3Yz4NCg0KRG93bmxvYWQgb3VyIGxhdGVzdCByZXBvcnQgdGl0 bGVkIOKAnFRoZSBDYXNlIGZvciBDaGFuZ2U6IEV4cGxvcmluZyB0aGUgTXl0aHMgb2YgQ3VzdG9t ZXItQ2VudHJpYyBUcmFuc2Zvcm1hdGlvbuKAnSA8aHR0cDovL3d3dzIubWVya2xlaW5jLmNvbS9s LzQ3MjUyLzIwMTYtMDgtMDQvNGI5cDdjPg0KVGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRz IHRyYW5zbWl0dGVkIHdpdGggaXQgYXJlIGludGVuZGVkIGZvciB1c2UgYnkgdGhlIGludGVuZGVk IHJlY2lwaWVudChzKSBvbmx5LiBJZiB5b3UgaGF2ZSByZWNlaXZlZCB0aGlzIGVtYWlsIGluIGVy cm9yLCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIHRoZW4gZGVsZXRl IGl0LiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBpZW50LCB5b3UgbXVzdCBub3Qg a2VlcCwgdXNlLCBkaXNjbG9zZSwgY29weSBvciBkaXN0cmlidXRlIHRoaXMgZW1haWwgd2l0aG91 dCB0aGUgYXV0aG9y4oCZcyBwcmlvciBwZXJtaXNzaW9uLiBXZSB0YWtlIHByZWNhdXRpb25zIHRv IG1pbmltaXplIHRoZSByaXNrIG9mIHRyYW5zbWl0dGluZyBzb2Z0d2FyZSB2aXJ1c2VzLCBidXQg d2UgYWR2aXNlIHlvdSB0byBwZXJmb3JtIHlvdXIgb3duIHZpcnVzIGNoZWNrcyBvbiBhbnkgYXR0 YWNobWVudCB0byB0aGlzIG1lc3NhZ2UuIFdlIGNhbm5vdCBhY2NlcHQgbGlhYmlsaXR5IGZvciBh bnkgbG9zcyBvciBkYW1hZ2UgY2F1c2VkIGJ5IHNvZnR3YXJlIHZpcnVzZXMuIFRoZSBpbmZvcm1h dGlvbiBjb250YWluZWQgaW4gdGhpcyBjb21tdW5pY2F0aW9uIG1heSBiZSBjb25maWRlbnRpYWwg YW5kIG1heSBiZSBzdWJqZWN0IHRvIHRoZSBhdHRvcm5leS1jbGllbnQgcHJpdmlsZWdlLg0K