Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1evHw1-0006II-1P for pgadmin-hackers@arkaria.postgresql.org; Mon, 12 Mar 2018 07:31:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1evHvz-0004Ho-Lq for pgadmin-hackers@arkaria.postgresql.org; Mon, 12 Mar 2018 07:31:51 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1evHvy-0004HM-EU for pgadmin-hackers@lists.postgresql.org; Mon, 12 Mar 2018 07:31:51 +0000 Received: from mail-ot0-x229.google.com ([2607:f8b0:4003:c0f::229]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1evHvu-0004gk-5u for pgadmin-hackers@postgresql.org; Mon, 12 Mar 2018 07:31:49 +0000 Received: by mail-ot0-x229.google.com with SMTP id w38so14304153ota.8 for ; Mon, 12 Mar 2018 00:31:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sqyChqpJ6CdydmNT4UoHm0JxktTTNSVCGjTl1W88rdI=; b=JWlpc00/0WdqWc9W44UhjkCckvKEGEqfXH3A+cPi4igUL9j4Ul93ctdIVQ9CedGZB0 Y/xVYmGI40sG1Za8Q/93k7CAuIi+af05zEnPIjICEw/zSYvT8O2Wm7I4DsWMFEQL8JkR 3hJFD9ho/c2cuSaUnKK8w6m6L2jVETQNvgvxnC8rQ4l7Jz6FSdkkZzuxiXpl3gXBVQzS vbNgFOx4qVa2FWItadbMZRKPrIXfh2p93urgu3eTug/V7HpQZE4CisOevBBViTmiIVC7 +6izTSD6pAmRoYeDoyb3t408f9uWtFlOAY7+ksV489ORvuX3yQMzmn7Ampl+ZJZB+sGg 5LJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sqyChqpJ6CdydmNT4UoHm0JxktTTNSVCGjTl1W88rdI=; b=NQXY+ui1oYqng4jHuK5IZSRp+VUL0Bcd048Xil3amOfyoMMaHg0ALUlxFqPHbDyXbw q7Ai2OJFTUgaGyy07GJexhv+yrahbEjXa+SWJK5DzWHPnbfi3rB4CRxJRbrujriqQDYo /zbRNSYjFxAGO0z/gO3wduuLXA4Cr2GLRDg/RJgUqz25E1WugCNJGWZ/EV0RBtXEhjQf hYVyaoQsTRkrvS5BOr6kmbECQ71epDxvujaR2wzfQqo/0tuwudUK1tsrN1j6c9rWVQGH DSp57Wh+rsTEMKpT80V/Zw5sEffNoMrrWV9C3pdEsavlTt8kl97eCDyg2UBWJXfNWg2V HCJQ== X-Gm-Message-State: AElRT7G6BEIlUC1bedtN7DzQdwIgNGzVtkJ6XoKjEJUl7eqxC5U5aTnR rKsgm9uF4WhPNM/EyGEl2FjoVSjaRFNu7i8OjP9byw== X-Google-Smtp-Source: AG47ELton2ec/jZY7//5tqibk/vhK1lD0AMuSMgcvCcbWnyPl3qNJOASiGuObdqVd8IDodcqn6+HBYpFv6xTEwXpXKU= X-Received: by 10.157.58.53 with SMTP id j50mr4509676otc.157.1520839904556; Mon, 12 Mar 2018 00:31:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.8.150 with HTTP; Mon, 12 Mar 2018 00:31:24 -0700 (PDT) In-Reply-To: References: From: Murtuza Zabuawala Date: Mon, 12 Mar 2018 13:01:24 +0530 Message-ID: Subject: Re: [pgAdmin4][RM#3140] Add service parameter To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="001a1147191045c969056732220d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --001a1147191045c969056732220d Content-Type: multipart/alternative; boundary="001a1147191045c966056732220b" --001a1147191045c966056732220b Content-Type: text/plain; charset="UTF-8" Hi Dave, PFA updated patch. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Fri, Mar 9, 2018 at 9:29 PM, Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > Hi Dave, > > I'll change the name and send you updated patch. > > > On Fri, Mar 9, 2018 at 9:25 PM, Dave Page wrote: > >> HI >> >> On Fri, Mar 9, 2018 at 11:47 AM, Murtuza Zabuawala < >> murtuza.zabuawala@enterprisedb.com> wrote: >> >>> Hi, >>> >>> PFA patch to add service parameter in server dialog. >>> - Docs updated >>> - Test case added for Service ID parameter >>> >>> Please note, >>> I have extracted Connection class and Server manager class from our own >>> custom Psycopg2 driver module. >>> >>> Patch also covers RM#3120 >>> >> >> This patch seems a little confused. The "Service" and "Service ID" >> fields from pgAdmin 3 are very different things. The Redmine ticket seems >> to be asking for the Service field (the pg_service.conf service name), >> *not* Service ID (the operating system's service ID, used to start/stop the >> database server service). >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a1147191045c966056732220b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave,

PFA up= dated patch.

<= div class=3D"gmail_signature" data-smartmail=3D"gmail_signature">
=
--
Regards,
Murtuza Zabuawala
Ent= erpriseDB:=C2=A0http://www.enterprisedb.com
The Enterprise Postgr= eSQL Company

<= /div>

On Fri, Mar 9, 2018 at 9:29 PM, Murtuza Zabu= awala <murtuza.zabuawala@enterprisedb.com> = wrote:
Hi Dave,=

I'll change the name and send you upd= ated patch.
=

=

On Fri, Mar 9, 2018 at 9:25 PM, Dave Page <= dpage@pgadmin.org> wrote:
<= div dir=3D"ltr">HI

On Fri, Mar 9, 2018 at 11:47 AM, Murtuza Zabuawala &= lt;= murtuza.zabuawala@enterprisedb.com> wrote:
Hi,

PFA patch to add=C2=A0service parameter in se= rver dialog.
- Docs updated
- Test case added for Service ID parameter

Please note,
I have= extracted Connection class and Server manager class from our own custom Ps= ycopg2 driver module.

Patch also covers RM#3120
<= br>
=C2=A0This patch seems a little confused. The "Service&q= uot; and "Service ID" fields from pgAdmin 3 are very different th= ings. The Redmine ticket seems to be asking for the Service field (the pg_s= ervice.conf service name), *not* Service ID (the operating system's ser= vice ID, used to start/stop the database server service).

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
=
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


--001a1147191045c966056732220b-- --001a1147191045c969056732220d Content-Type: application/octet-stream; name="RM_3140_v1.diff" Content-Disposition: attachment; filename="RM_3140_v1.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jenwshhz0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvaW1hZ2VzL3NlcnZlcl9jb25uZWN0aW9uLnBuZyBiL2Rv Y3MvZW5fVVMvaW1hZ2VzL3NlcnZlcl9jb25uZWN0aW9uLnBuZwppbmRleCA3ZWJmNmI1OGI3YmQy NjBiY2IzYzEyMjM5MDdjM2EyMjM3NWZjZDk0Li5kZDE4Mzc2ZTU4ODRlZmZlZmFiZjQ1ZmMxYmY2 MzMyZjU1MjJhNzNlIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjYyNDMKemNtWl59 MXlFY34mXkMmQHlTdXdQRWJiUUUtNmdvWXlBdmMzQnNqc0g7MTBwdi0yI2lkRU83Sk1fa1h3a2Qk KCQ8CnomWTc4Pj93O3YwSl5nZ1lzNEJ9S0JNPX5mZnFAfiokeDVuJGZxe1IzZms4MEEhVGYwZkg1 UG1hMTRGe0dtNUAtQwp6bGFMQCZiIz0wYGIrN35qbGEyWTMzOUZHZGhCST1eTkZQcD5FKCVvfno2 RXVuWTRAOXFqTXlRWkRxUGhKNGhtYmEKenA/cFZBNn0+T0VDVSN7QlZwT2w1RilwflBUU3J3Xzda O0k3Vn5ZeT51SDkpYCZ9a34wd1AmT0thVnFGMj1YbllWCnolI01ZcW8pMT9PbVB8IzFFKFFfVnFO S1JBVU4jOH5WcEozeEVyZEt1cEEwMkJBcHpuO1hLT1FmdEluVn4/ZkF2SQp6PVI9Um44dzl9dUNk K2h5V0NZSE9kUDVIOEVMQHxiMV94Rk14dSNUeDgrIT1DWH49Kj1mQ2BxKVhjUWZMYWgrMGEKejI8 eFhNUGVrVTIxTE9FSWtPQnUqRm4tJEArWGomcCNTKGMmd2cpZWolcSNKNVh5eExhWT8oWkFhSHRl a0JefX1MCno8PVQqPkZYJihiWil8S0FQRmpaX01+V080OSZ4WmVIflp0Kjlkd3pSJHcrKUwwSHRN QExCKnNqViNWaHE9dkZIQQp6MypTeUFGX3o9SUlobm45SGB4SV89K0t7NWZncHFMVjApYXxXUGwl MTVscHByQTQqQyooaytJZ2dnKnZjOyVxUjUKeiZhNG5Yenw0ZkNnMTNoPiozPyFBdk8oYDU7fHQ3 Y2VBQGphIUgqbH5TYF83RFVkbCNBIzk/Nmp5S3R7NitAZUpKCnpQQkRkem9gOGVjUllwd057fi1B elk+JnpGdH1hUUVmT2dwZD1HbjI3aWMwdzs/Qm9DJkRHOU9oKmNGU3dvJE05WQp6aWFNTyR5ZEVv MU9uI3dgaFhnPlVRdnRxekVmcGoybUEmbUojRDFqTl8rV2R6I1FUYkw7QWZqJCpTentTWHNQUmcK emRjejNrNWMqP3F6eDJ0Tlh3QjErdHIkZGUlPTkmOUIxdiFfSTB6PVAyeVJHNCRXX3NtdEBRPU80 fDt1WkZqKDFPCnp1JmE+R1dKXjhALUMyc3pYPlYxZV93WWVqWGlBcm1TUz1CeyY8OXBadDsyWn4z a0pQN0VPaD1JYFU0PlkpV0BOJgp6WXIzYnFzNzNoNFVnNDtIOWxMPXBqSWJFN0t7aGtFU3prJDUr eyZwNE9eRVFJKV9eIUZBIT5JRjY3KDhPaXx9PGEKempGeXwtdFYwQVROPWdMPzYpZkd6Y05PZG0q K0E3UGkyVj94O1J2Sno3RCh3d3F9THJCKW4tUEw9dlVEPFJsJXZqCnpgKFdZPTJwTnB2KlNgOThh b3s2RDJfLX1LPFlDZz0qbkkkQ218U28oQDxPMVAhZHcjSUh3WVlJST1laUloN0Y8Jgp6eCpOblho cG9SfHArQlNXI0lsRUFJKWhxQFojRXF7NU5nMjRxdG9obGM1Kj4qPFkhQkFVS3VJdUQ7KExxLVMk MDMKenFFRHZWOy14IzdyYn5CJWQqSGZPajhSUzI5N1BCPXdoJj03NztHalRhQ0xSUTB+MzdAJjwr JllWI0Q1YzRFSCg3CnpWZzheMyVSOEsqZCRRV2tmXmFeZDJhRVVHYnx8Z2dlYjU4JXR3KldSUCVD Y1F5QDNUKzRKTyNZfEpqUnsxO05OaQp6TCVSZGg4M0tUVktfYFF1M2Y1cVFwN087UjRYWjIqVFF2 Y3ZnVHl3MClgN0leckshVXtnWXhTSXBNZ3BZUm9AfE0KekxsV3JxYUteMWtfPFJMJTd2ZzBDQ1dl TH5FYGItI1ZpdWw3KiVGUHA3eEZ+V0N5UnY8UlpNWGI0VGVzeFgySHtkCnpSdzJyZUxTVFdZbUlS Nj01PnFDfU87SkFKeGp7UC1Hb3M4X01Kb0JPUn1POSRrfC1yUzFJQzQrQnVaTlohOX5nfQp6dHVT azghPnQhfUF4JGB8e0BlMFNmSS01ejswPj09Z1BxMUllJHx1JmsxKCFwdTEtLWdiYUxvZEp3cH1C ZFIlal8KelJ7KGFKWTFmS09aWnhNZSZTJShWWXJNUUB3YCtmWW1Ucyl0S0NpdW1Dd3ZnWUpLRSh5 NH43aj9LcXp4eDlHYkUkCnpJVUwrUHlrJDU7emh9UWB6aXdPNlB4I0FkTnMyVFpJcmtfKCZNI1I/ eGwjdTU4PUBPQkxVTHpSQX5YK2F2USZudAp6JXd0aGw1X2AhQWErYnYmI2hiO0wjVmwmUEN5PV5k OTModntxTFN4RkRPfTsoVj57I2diMnA+e3JBYnNqWHxyb3oKenRIcGZVdChlZnp0IVlweWt2ZmMo Wn5YLSg2PW8pUFR9WStjSyN4ZWJuQkpBJW5DX1IoVFVsOTJRPCt6WnNTIzBtCnp0TkJDb0ByUkxX Sz4xNWJyQ2Y3aUxxJUctKzl9NT0lQmtGYDwwJkNRZnxifjlTOztKZD9ZUFotKHxpK2I2UkpEUgp6 VyomKzFAJEIpZXtZazxkJVptYXhIbiY/ZFNUbnVka2UjTC0+fCN5JWVkVWpHe3Fue3x7IV9PX2Be Qlg0Wkg+IWkKejZCfENlTDdNfHhycDEqS21yd2ljRzs7SWVvSH1WYHh8UXZrd0BwWHBGdkR6P2JA JkZ1Oz0/P3t5Myh5VXBUXll+Cno0SCklKmh9JFA9YiFnP2NsKHhpcXJhbUJAPnokamdhbktBbW5N ODhCV3NoZ1dYN09nX09YSjVROzA9KkJUUCRwUwp6R0EhQngjeEdxaj8qaHwtWFk9aGZ3e24+IWdq RzMzOWNyeXxrS0g2Uyk8d0t4UEN2SiN5QmRBRmlraFlVbDh6RXQKek5DUW1uaHl5Z1hyMikhODhT aCRlSmEyKUo1QEQqNF4/ZD9pXkR0ZUppVntIczRnLXNrQmdsVTdjKyVhezt6ZihuCnp3RElwSXd2 Ny12P054UzVfKihoKC03Wj02MypLPXE5b05BekMzNF44ViNZKyRVUTRtbVFSZnhzN2ZZKjQxRldS Mgp6Xzl2fSF4VSk5ZHdiPnVwcmE2cjUxR2hrMzVoWVIkTGxraXxhbU5ffjhNXyVuOE9SeHJSV0Az SVRGK1ZAVEZYXjIKek9DKEdET04zUXw0eXVJT0laUWN2SWdCbWspajhFT28/KHYxYz5RP08/QkNm diVzO1B2SSleeG1KdEhfSFM+cnF9CnpJI1cyeUlXdGI9Q2R9ZFNKWTJhbz8tNkpkSTFxNGZZWGc+ XztPKit7dD9XSW1qU2FeREhHdUF1KispY3NMZXVUNQp6JnRLeEk1d3xVaSMra0p2ZiFAbmZIUHRv Nzh5bE5jcFp6dntIenFnY0g8dnJNP2BDZUk/eyFYSGBxRm1yZkFkZUAKem1MSlFvXjQ1eWlMSys0 NnRvc34kVSl9X1lPdH0mVFpNMyl+MXR8TFNpUmstVmJUZShjWiU9a30wTCVmMiNeMUluCnpnVmNs YUswSDZIIUkhe1MhODsoMFU8OUQjQXk4cXZ0Xk1rYz5yYE0mI1J8bV4jbUBWX19RbXZaX28wZF9p Ykloagp6bExyKm02Z0c7aE01NmFvM317N2VCSnNpPE09blBfTzB+Jk0jUERJdENCIUZII3JSYGNW cDdOMDtVXl5+O3F9O28KenhAPk4zS0RuelNNWitpUVYhSHZCSUN1YUx0Pyt+Sl5fWF9GTEo0bTFJ bUJLZmRGVE17S3k2UypjeUlWMnljY0ZRCnpNb0NQeW9TakArPlNAeypFaUFQKiZBOGZkPjRhUSta ZT1FZXFONmZwMzNaOTEzTlJsfSRZcFp5TGFydzU3dExtdAp6MUhhR2tMN2Uocz40N3Bva0VTRG9e PVk1R3hVY0k9JkUwZV5vLSVQNmZLdGRqSyQ8amoocmBTV0BBa08qPT45NjsKej0/bG1AVE98OFNf QjZDZXNBZ3kkUSVfWjhsQFluVjR5RkdXOyoyaSgqOHBZM3NsP3BBamYwSDxwTSVjM1BEJT07CnpQ bD4tTHhDVSVGT0ZkIzhoYit4PnlTM2xIZjwpd3NFJlJhTSp4QyEpUlNgKSUpezM+fUB7M1g5e053 RTZMPTt1Tgp6MjBCTCRCaEFMUVdiPCVsUFdXcFBzZSM2c3tCZ1hyZkRaZXNoKnA0SE9nOElyMUI9 aFk4JXNXPXhBTW14KTJRRWkKeitgdWl4cmI0JEJofnlhKndwYkw2UkBDZk4xJHlxVFJTRSZ6Pjln WmhtYnx6PXRaUGtwIyFMbnEtR2VAM0tkRnQhCnplR1c0amghYHB2THw2fTV5NnpoSHJ4eVhKRWFM YEMtNVpZMiFgT3FeLT80ZU1VYUJ7QUQ/YUhPSmJOIWJYKHMmOAp6e1Z9ZkhXNjA/LUltRDF6c2Jv KVlVdCh7JF8tU3p4SUkmYyVeVm0tRjxIKjwxPGg9WC0xKDtiQylEek5MWGtZWCgKeis/OWpHcXZg T3txfSVxcWxyaDdjO0RPX3pzVU0+cypDTWkrKFIyPUNDRnhta1QzJEQqZTtZQGNNT21Ge2AofU4q CnoyP1RuYlQ8VUVGXlQtblZkYUE1IyozO1VrKyF9UnM9fDhZUFlNI05xbWJgdkVhbGI3UyFjdzMl az0qZ01KdGpYRgp6LWJkal9qVDVFfVhEMCtHPV8pbEdFZ1ZmenFSWiYlY2p9e2pTYmVNfjc3ZmVU Qyl0d2YyajtxVi1hWU5hPnx3c3EKejQkPUNseiQqKVh7PGh9KD0+RkAoLWtLKVk3Q2A5cChCR2N5 UnlHWnIzdmxUPj93XmVfIWM4KWBYPEtrI0okRShGCnp2MHZaYUhWZ3U2VHI2I1E1NTM4fE1Pbil6 OUpmdkY4d01KZCl4YTFFZG9oRjc0dVB9RmY9Kk9oWjYwb09Ofl9GVQp6KXlKKUZQQ1ktPi1LfT5u S3pgd1ZobVZWdytRS3RJcyprTHxwITJsJHV8IzFjLTwxY3RfdTAqbmpTPCM3RVRRS08KeiE8WTFq cnFrQCUjK1BIfD43PEE3SjlpTktiPHpkeTl4aH47V3NuYEh7az4jeVRxNVpDVntze1NadXczQSNf c0JWCnpqYHlkTlhRemtIYFdvcl8kQnlBdk42NnpMc1hPMmReIXhmNlJDYl47NE8xRks2SHhQUl9F dkllZjNXTnE8YFdpWAp6bUthe2RoaFMzb0p2JHEkYXw7fWQ4OVJAN00+dFZqZCNlV3ZgcUxJWkhx Pzh9N2NWWDs3ZjYjUjA5ZWN8Y3l5P0IKemRQM2ItaVBDPUs9V0Q/fSh0QGNlTntAMFozanNsVHdA PHN3a3lvYjlSfCgpPyNXLU55dk17aSlKVis+a3QxdkBiCnpGZ3E2QUgoUnU8bEhTQUg0eTxLfjdy ZE9rc0U2QXlvRE8tJUs2THRqMHRJK3lTelJ8VUZkWFc/e0BgK0lSOUFtdQp6MnBDJXA5ZHtpaU1G RGRzTTsyMkhDb0BZSFolNX1wcXJ0JDB5YW9PfEkkRkEkbDZnQmllMENHPzdOKz1uZ3V0S1kKenpu V1BvJG8/TVVaWkF4c3FvaGhFO3BBI2IjPzhYVCFiVHkyS3RASTs8WjU5aHBlOEIoRlpySzBWRzB7 fWNWX2BzCnpSeGQ5djdCNVp+Q3MlNyRjN0E/LVJ5R2IrNGk0ciZCYmVRTUtEKFFHR2s8b1l7QVpI Pz04PzI/R2szTGhjREhyPAp6TyFuOGpyZTtuYT8hcHVsZT0rKT4tIz5DJWRmV2FWUE1fV1dScUt5 fXRiZ15ldmFfKFV7KHE2Vitna25xa3AwIzMKejU4Mjsoe2xpWV51Z0xeZFpNYGlXYlJ9JmFFa0M+ YzVsd2Bob3Q7RElaJEFINSpaLTA5ZjA2M15GSCR5K3t9PHsxCno+aVM9I2Y1e0BDOyVhTzhYUE4k NTM9d3VBKjhpKlItfDw0TWYzNEwyVERnQz08P3ElJWB5enJNI1FIeWJFUTBXcAp6bnR2SiRPY1lF YFFjU31le0xCIzZNMDRAXiF9M3hKMHxOdWpecylsKGB6Ulc7NyNnaElWeF59MnFUT2I3Yk11OSEK eno1VGM5X2ghQXZEclNVb0p+UypXR19ocGw1RzBKenQrRFpecHFeWFR7ezNyPSlGJWpYZjBeNWhG NjtkNXVINWElCnpmTWRiTzdsLXdoWUxkXnAhRW1rYVReZGtXOzhMUktzISYpVmlFK1Y2QlFAfEh1 VFM1M0lNQ2xPUEREZ1J1MHJOfAp6MVgrQm07cGlZQGdEREUmaH4oZkZ7RUEmO3AqPih6ZGo+dkhF P253YkB1azk0MldiOGBQb2ZuUjFTbFd9RllzTEMKenJmaz8pZVpSTHEzR25BTT5MXi1UTWlyNUVQ ISVoSHp2SSZUaXtvRjZmMitkNWVKUUdKQSVRT3BZfT5FdWhDe2xOCnpCQ2RYV3k+QUY0ZWFgVjdR YE9YckFoelQjI3xpMEU4UW1eZ0gwaERRNmFTQWA2LW9kQ3FQemJGVEt4U0wrVVJGcAp6a1Q3VXQp T2FvK0FPUVgxNyYyLT5HJVZ6cEpNNjc7NSVDYHR8Njw2ODJPLXxlTGdaaCFLe0FoQS1RbSg8RlAj Y2wKemhyPUxvTFNpWT9JMDQkWmtVZ2lKMGdJc35wXnpxPGJ8KHNZeyNOe057YiFnVTAjb0chdDIy NjlaVyNFNUw8N0NDCnotWERtSFReWmk8dSlYTiU7V1pDU3t3Jk0hOGtnNHBrI0g+KHRvbkMqdmsy VHh3TT1JfC1zVl56R0lxKm40cjB4LQp6PzVTVCNVWm51KHB1RGlnTEptc0ghOGB3SDFQSmxyaTA9 NmtIT2Azc3BCMU5yKnBkaTdGcnMxLXJZfVcrRU1pMioKelM5S2lpVlA7TVMjU3c/Qj0tfGJkTTEo fFJSckdUWCNkLTlHWTRueCp2STgmMjZ0IT1oIyp0P0B7KiU0ODUzT0tXCnpXaUxOWEhMPFkxcSt5 OWd7fHFBWkt2Kz1HSGxWIXJoZVZ3ZEsxTGI/SXhiZT9xbmtLN3dXZCFDbV5UXz95ZD5Hegp6cHdF UWRLfHN9K21tMHdtRVRHQ3YjKkxvemY2RCMtNGQ8S3lQKko/WWwtajRnbyooRXxgMmQmd1AyZlpY VCVZPzgKekFwZ2h9X054ekEqSFg5c2B+YHI2M3piYWByY0RaRl9lNnBmRyozMTh1OERuRUpyQU9u ZmtNMl5Ud0UlWUpWVU1pCnpWbzNLKmFAMCZGRTEjNz8zY3t3K3R1KlNUPXptUEY1SDZWJihsUX54 R3wmITJePT8hbGQ+QTBXNFh+QjAzTnV8bAp6QjMwVFBrQT13TGRnRVA4dHszSXtAfCRFaldNPHNp Q21WOH4wKW4wRjdpbmBmblJDVj9XKj5QYEMoTzcpQnxGVW0KekROMmxrR0ZZODBsT0kqbzZofFdF R2x8Vk1fVE1JPTBwfm5MK2NWcHFXRG54SFNPMjQleTVGKEZ7UlNrcj4kM053Cnp7Z0V7aCg4TiZD M3lRcDxYMDdRSDZBbnlKTUZZMmlQakFRRHJsM1ZfI2RYQCNoWF80MzBBUHZNOXxtQ3xOUzJkbwp6 N3pTJVElZGhPPzZyN3VgI2VhMX1PWCZRRFltMH1BTHVNMlFpJklLI1EzcTBPRCtyUylYcXElUT83 VlU8eERSZGkKej9YWChIckZ0dnYpbk1NPSRwVHFeRC0qQXg7WkNLP0I+NEE+NmArU1cwR29PUj9H cGdEMytKJjRfMkM/VHpSczRhCnpeTytDOyZBdFZTYyRCYGtUeHJMUjh1S0FwYShoVnNRRFk8PWNE PWpsMXJLd19JeWBEdytwQDZnQ3IoSWN7OSV3bgp6bUp+KTAkRmRsXz1tZkkoXnYkckNKbD1wZ2d3 KVVMRSRiLVJVVCF0a09pR0FPOW83aFAxWGtjVUYmJXk4KzVuVlEKekFGQTJDWSY/PnY3ayh4SlNh cU8jKF9hUyE5ZlMtUCM2X3tnKnQhUT08WStfP3A2cHEzZ1hHUkpaU0FzR2pDbShBCnomejh9cExP bmFQVWBzUzt3SG18cEhASTE0Knt+QyZGPzZUZnZHUmhmXio2Ji1gcSN2PnJ1LWcmbiV7JEBzJW87 Rgp6M0dycjAmNmg5UyhNMzhgQSY+PjdBamI7R0dUTW0haXxrRXlLNW1rYmthcyE7aEppST1BTWU5 O0JuPns8I2k+bFIKejZjZ2UoKSkmK3wweko2JHZINlhEWiRieHhkSkM+P0taajVRU2oxOEMpV1Yt KWx3fSFIMCNCWSlCeXd8QV9Rc0E9CnotPDk0dE5NRENhNWBadjZ5UGZifD0tYnBwbnV7cEttTjtn K1V6c00+d1NvdTlmKlBeSUdRYm1+Jmx7WU8mUVJBNgp6LSUhM1VNPztsciVKKmJQMWFWIVh2MWFV aCh8MUQyTWBhSzUyfShYaFNsWDhDWDVtZnlhe1lVTkhuQm8qRDNKPHsKenhfNGRgTWJJJWE0ckUq QihkWGpZNyZVJU8zMHspMXYha2Njc189LTVzYmU+bkJjbiM+T1RJSjdQISF7RCpgOWhXCnpIVG1B I3huYmJvU1NfKThAM01TUnQpIT0/PnBjYmUjfW8yUzlhc31yI2QpbFdRbW03R3k+MVJPYjIqazhB P0ttYwp6MzZCLWYme3s0Q2FeO0ZkbUY8QFNUPWNFeUFTNHJETjZTfUdjOHVCKjwxc0V7ZjdoKkxz TmBgVkNmSktJe3FDcU8KemNuRjB4ST51QTYmWCEreVpnWl9tPGBiQT5vSXZfSEtpJnwoSjxEZz5e Xk8hTGYrWnZ7QCs9Y3VpQHprQSUkTnc1CnpXUVdScGVicCtfJTEwNl5ZZGgmSXd1MSNmTiVYbD0l fnE8fS0kM2tUZnNxOC00QjZaRit+X1dhSSpGVHQzQGJlQAp6c1drYmZFKmRPY2NGVF9ac1Beezlq TUF7XiVgezYySjRaQ01nQHJge0l2JG12eWQ8MlM/d00jNytAflVvRG5TT2oKeldJNG9gViZ2cF4+ Mlc/ZkN9JCMyZ0V9dkxsZnNSPEkzRCVBJkElPiUmbVllRDk2Jl97SEotXmp2WiF0QkRBMz1nCnor aTEwMC1NWkVQJjE9aGM/YFNlN0R1cSghZHFZRlJXQ3hUYExjYEYoYmJtVkEofS13d3t4Xklzbzg7 TnxpcnZUYQp6Yj07SmNsd2srYzJydkBjO2luZzE/SSVOS0RtdHxVZCpRME1Xb35oZUxVSEhUVDtW eWk1N19hUi1FTEgjdWlRNmoKellUdUk9c0crdEcoKWFWTlEzaWowZ0QlSHYkWSpETypLYnNDMkZ8 KDFDJkJrYGtDYyhJMiUtSigjTSFGX29ifWE8Cno3YzNNKzRNKilBXiU8ZzVoVWUoMiN3PlNfX2lL QGxaem19WSZnMj1BWjZTS15lY2NfTVZqT3Q7O1drNmQxKHV8IQp6RVQhZlMkOCpsbzdxRVJrdGFf NXUxNHBOMypjYylua3d3OH5ANHpZbkxoWWBIbjY4PVYtemdfa3szNjElbkhuVyMKel9WT1Z2YH1W VyU4Z0hFdUNTb3FydDl5RVE0VE54cU9ZdCE+NXZZQEk2ZklCd0cleEwqI3NmQElIO0I7ZzklSXtR CnohN3gycThEcyttPlM2R2xHeFVaVFRrcWJXVS1RfFQydnJ0T0w7K298d2tPUHBGbWErc04qfDwr WWBOIUwkSnpaZgp6Y25gMyZfVlVOU3YzaT9tcXc/ZmchVHlOKCo5fCN9MlhEdzhjY3JJZTY8dz50 ZDAhOVZVSnZjRCk7UilzQnhQakcKekFJP0B+bTZkcyhuYVd4ISppaj8mcX4yPXwraUFvJiVGdCVJ ezJJe3d6dThvSig2Tz92UGZMblRfQjNmY0BGQkR9CnojPX4wPlhOdE9VYVdDe0pVUFBxVnEmJTZ2 OGNuPGBLbU1eRDFjLTJGPEwlVT4mUj0/cDdYK2IqV2hmWSF6UjJRKAp6NGtRIWA1UjV6KiF6PWZH KkduRmwkd1kpIWMzcS1AdmBtfF5vV148eUthJTdJaSEkP3IoYTQ8JG01RVpMVFFlPlAKenp1Xmlw cVgoJCh1QHpWb2k1UnlOS2h+fj1KdWlRWWUlfn5BQEtoeERpS3piM01LQSYqSUM7JVEybFhxI3s3 Wig9CnpOZ0xnVlU8NCg0Y3I8akYxbE0hWm5TNjF+cTNMQGI3eEA5MDFLUkcrcSNNbHNNaHY3UCQk UEdjbmVvT1Foe05JNgp6a0tTbiY7IXReKWNxQypMKEs7T0Bod30ydXpEZVQ/RUlEe0BRMUtSQHFs MSZzITxMdSM/KipmXyF3dkp2SW9SOCYKelooTHhIb2oxdHVFIyM9VFdrPyk0QGJQZSU2TFN3NGQr KVYjRE5LdHpjK3c4e3pXLWtIXyQxK1VacHYmd1A9bFR6CnpeWmFrKnMmd2loezlHVGhORFEzJnB4 YlZLRmB7RSlMUGlhXjFaJSNQY3tiaTNZPlJIWkh6V2RfY1NNPT1UaHZ+NQp6JXc/eTJLUlBeUE9Z SCV4JUsrT3NffTleRz95JWhYNz9xOXArMTRMdm9qdXpPVlVIQ3UlTyprVHV7NyhmZ1FVV2kKeipF eDVGKVdzeyo5OGxZek5CajNZUiZ7NnpadVhCK2NuM2VHUUoyaWRUS3FTPncmKjYlSW89TFdrc0t4 JWBlS29ACnpiPXF4Rk1iPHc+emZLY3spYHo4RHl+bnpEek1RfXFjJUdWNnQjJVNSRnxXcmteT3h2 MmtJNzFhb0xJTlFHb3xMYwp6d1FwMk56SiRJT2dVJUphT21uailQTj4+K0xEJmZHPkFsQD9hNUV+ Mz1QNEEoJlRvY0JrLTxxPylAQj1aQnYxMVoKekJjXk5SN2c7QGF4Yk4qJnM5SXlHeS1FV2UxYmY/ R1E8NE8/Yj5xQHRoaiR4SkIoOEpqVlJxQWxzJENPNVdlQyUpCnpfX3Z3aXt2MyhnazNFcmFvfH5h RU5yNk1GQDhrUWQlOFRfeVlqNkZWbD10PHxte0NUaTBiKGNyQz10V1o+LUYyPQp6b3p3WktKKlMr Xlh0WWxXSEp8I1BUdDx2MFVPajFKT1Nhak8jcEFGSWlid3dRPV9yczgzLTJCN0NsdkRUVVE3bVUK elhrb0NaIXc9YHszQnhNcWA1Q3RsYU1pUnluTU18SEtBTWApKFc/fUZIdCg5XlRuMSVNJCo3OVQ3 KHZSKTs0T35wCnoye25jdEtodzlvPn43KSsyJm5BbWtxLUNIU3pqUzAqOTRvQHFtcjR3eX5MYTZe cE1edEZ0OHMhZjF3KyU5ZHl8Zwp6WEt6eGAjYD5hM3NXKSs3Yns4aypsM2xmfGtSYCtpSn12d3o0 Nj1BT1kybi1jIyMlZ245Kk58Xi1LPG0zdHZ6Ym8KejlsJGpCZD9sI1E9QnxTemVYazxnVHMrbys/ PnNmKnR4P0J7QV5qSytCZUU1ZSVwJnFzU1BZe2I/Yk1IXiVUZXdyCnpZamdzJS1iPD9FPXZhVVFH cS0kdTJpRnlXeVpYU3ZSVkUzcDRAO1phJmFHZD9kbUgzWEJzdiYwYl4xaElpWDFKSwp6VyVEI3ha N2swOzlQMkRMYVRCcWs7e09AQ1FvKH1CWSZWTlgwRDluKytRaSllJkk8Vz1zMUFCQzQlMnBJZVp7 UG0KemtFeGR0eT5qdmAqX2J8KTJ1eEUhRT5reUp4NSVDaG5GMUFXUnxeNURCZVNIeEpERzFaUyYz ZHhkLVhxOCV3QUttCnpWMT5obF9sbWB5aGMpfVEla0ViO3k5SyhMJW9ePWxxaFNKM2B7en5ie1BW QDtLKjFIUUd5dH5gNDh+ZyQ7RyViLQp6IWFPOzxUP1h6NGliVHt5JUFjRHU9JEp8dSEoMio9ZGR2 Uy1KKVQ1WlJfT2lFUVN2aUc4NTE3ZjxHc0kycSZab1AKelRmSy16YyEoWip7YH1ufnFxYDt9XnFX TnRuZn11Rz5iMUVnS0FGX1NafSh0Q2M7ckRKdnB1VDxQSUFjWUYjcFRrCno/eCR+QWdPRjYxWiYw fmk4MX5Ae2AxQmRqRmhTXmEkIVBLSzslZ3p8b2d1Q1BFbT4zZTR1K3xsO1U7cF4lO20hcQp6PURz RiM+PWplOCYmKU0xQigrWWdnViVlMHN3QEdkeFRqR2dTe0EjN21rbGxoYnV+fVY+RipSZVJEMENB KH5xX34Kejc8aW0pPXAoNDtqeiRvcVExYWVwVHg8ZFJZZU1rOGRhWjIhPkZPYzElYSZRIWhGbWBo Qmc+LTZEMGFgQz1HWXgmCnpKTlpmMTFXNzFnWHRMYiZPYyo0PTs4SH59S1BiPjY9Y0o8WF4wRGtQ WG9SfS1gPis7QnxCVyp4TGN4d2ZKM0EmLQp6ZGQmITQrWDF8KHNpfHlNNkw+PFBzeyF4YjI7QWgl JSY3SXg5Z3tqTU4mSDd5MUhofX1NN1pUPGV6Mz0weTBYd28KenUybmw0clglYCVYNDtHWmJCMiNr eGVJdVNxXlY0bzs5SD9tdEFgdVlNfFZGbjc1NmJFc0sybSZSN2oqJG0xcnhkCnprc0gzMClHTjtW KCtjMTRuQEpeOylnTFNQSGRWTzxjPn1RO0Y/VXNKWWtJcUd5LWVRayY3SWUtMUVsNzA2aGR2Kgp6 ays+PGEzWXVWbW1hVn4oTVF4bn5qVTsqJkxibjQkPkdgWkQ/MGRxMTJLJX5lO3BudFNXZEFrPiFg JEQkMilJQUsKenRsIU0yMndrMy1zdSV+Qys7IUdnTzhLaF9Vd29KZFplak9DQVV7c19DTDZpekw4 QEE7MSQ9JS1aOTU4TSZMVSNICnp8SFhHJnl1SU5sZGlHblFQaHs9fktyPEtZcXQmKytqdFl8OSZ3 ekRzQiVFQWZfX2RiWGtLSHlvNGZKdClYZitYVgp6MiVEUlc3dXV6a25MPH0wa192I3YoYENtZjN9 KzNtK2U8bkxlZzd7fGhrPmVFbm0pVioqN2xHQExgMVptUntvZiYKeio1fT1EcEk0SEdZckU9NG9V SndQTnZ1Q3xZN1ptdXVRZUtieCoxPVRSWmAtRD5oUWdYa3RpbUBUSkZSRGVVPHNtCnpGeFdpTiNx S1M+KGM+eU48bntNUkVLRT8zJkRlMlhkZmN2ZkdCQWpmZ2Z1NzxNR3crOXdoVWtsYkdNPTA1c3pt Mgp6VGNJKXVCZn5JVkpMYk0yUGd0KyV3QzVXO1VmaHkzclNocGpPQV9ESlRiQjcrQ0J7NXhOIVlU QFRGV1Z5dHV4QSYKelEmIWdWZEQhMUFGQkt+Y1UmMV9AWjBwVXc8IUkrJVJAaH0pU0t8N2peJn1j NkQyJTxVIXpBSTF0PEJ1MGJvQypWCnpmJVV7a0lyaykxPnlRZyt4Y3pBUXtmWmRFUlBCLUNuc302 dlpwaW5WelpfNlhxOHtuVj1+I2t6LVA2Tj5YJnUpewp6YFZJNkRqVEBCV3toRXxZajB8cXA1T2tH UjRJYGoxK3ZHezU7OCMxPTBzZVV7SE5oTik1QlU1JCRCfDNIPGEpU14KekZHIXhhSDEyamd8MXBF U3VeYkBgYXshJGJKRzI5XndsfUIlPUFgX0BLfEtGSXdqQnhQbGUlUGRrPSR8ZylnQ0Z6Cno2LVl7 YWZRZjxPZUEpRkZ0R1R2KW1Sd3tVb1RsQmkrQCtRQ1d8JWBGKDNJSTNPZS1eaSpAMyhgVSRtWHRa UXVSZAp6MjVAKXI/S2VVNUhvdzlyKmheTnd0Qjw+M3lBNippPWxKeWReUyVtfmd5KTh2QCN9Pi0h KHJRKjx1ZH4zP2tnSSgKemhiM1ZGQ3Q7R0dkYE9NTWtMKkQkR3VBLTJ4fkV0N1Q+ZTUqcW1EeGhP aGRnQndnNzR8KS1taXBRfHI4eyY1XndVCnohUDBTQGUqY0w7UGt4KzE4SSEkSHRYcGZ+dUwpeFhg a193SlZBZ1gmRzZmaiQ/PGF5JUxAJGcyVTJvNmQzeCFpXwp6alVSMXRnP2BjN3RPJkdOVmVkV0hk aExaN1F1OWYwLThaVjdDSjdGYSZxT3YweTRGd0Q+bCgjVU8oaF9rSGB6TWEKelQlK25uZj07NVkw SU1+OGt7UUIoNWQyX3YjSEhPRWB+aGQraEItbEYqPlEjJHVycHpiOGFieDwmMChUfF9UUzU1Cno2 Z0RgOUsjVlkxQEFIak5wMU5yJURPZV57Y35kaiZ3Y0NzJU9eYGVqYUpkI1VBK1JrKShPYW92WGQ2 JTx3dk5AMAp6SzNzVUtYS0k/X1YjZkQ7a2NSQnpDIVJDcUA2U0hURmwhX3UrPjh7SSs8WUdMeS15 bCQ+P25xRkpNO1QpI3hKZWIKekFaQ044Jl5kLVhaMDROSG1ySXRmJndDU1VpYjN3fEhBRmVfPWA0 anUtQHVKT1otaGFBWFlPZVRNQ0d4PkcwbjFCCnolSnc8YlZSfThJTVRzNit5UTdkQ144QD9yPnE5 KlM7SzhySTJATCtTZXcpSGJeRCZtaEkpclNWST9HRXc1cFN4Zwp6MlklIUBJJUx6V0RFbFdacUQo OHZQRGd+NmcrcFB4NENvPEpBRjhqX2NUZClSU2ZTQkJHZklEaVVXaCNqJGJFdkkKejJ5aTI9TiFk aTh5LVB9S3JGbyQ9ZTBoa31mcjUjQz9MJXhKUVlBQSMhaDZueF8+NDxMbyozKkBKdFp3VXMpclRC CnpaU2pRPF92U29jZV42IWpHXnUzfFNuYjFTRFhXZDIpfXc9MiQ/a09pKiZYKitrbVczbDg+TSlP YDl8OFYhRWU1VAp6YiVNZndQP2pBX0Q4MjlRcFRLczsxTXNSbW8lWCQoVCREVmpzVTV1Oyo2blUr M3BySEAzZ3N4Y3hSN2paWjZtTHEKelElUEBJMDV2N05FN2h5bFBmd3hfc3xgYjBkPW99TnM5bHp4 SEpQO1Z0RiZeSWtGfSU0MCtXdyh1fjU1VjdQXm5oCnplPWZkWHE0ZylZQUlDOVNHVVJaMnpAbWJe MjU4c3VQMWpIfEwybzVCY29rMk5YNiRIN0pXajFaPk99OV9uM2ojQwp6NlkrR2VHfjxXLWd5RnZB JWJud08mfXM0MUh1SU00KGl5KiZZPDNEYyNYP3J4UVAydSljbDh5bFBzUCtMOyFyck4KejdGYnhz VHxvTjZJY0BtVkheaC1Sdmc/Y3xhR3wjQDJtMXAmPmNCY1F7JkF4TFJ9TCNkPUB6PSNCa1YhIypy Wl4mCnp2YCF8Z1E7YV43ZE5Ad2pha2NPbUVQR2pGVFNqPno4bUFaY3NGTiQzdkYrNk5vUWVNc3Nq RDx9dmZCMkAoaE9yXgp6XnYqS0FyOS0xQUtmOz1HWm0ldGQ4IXV8cT91dys0U00rbVcwNEUwck8w d0ZTTFpHO1dMXyRRY3JCMEgpVlo4WWMKelM9OztjekR7PjJ1aUQ7MERBa0MhVUVme2xGfUdaUFV3 VnJBPVV3eCEmWlkzXzs1dzEzWk0qPDd5KFI3UFk2VkdOCnpiT2Y4eXZTeENmWGpneE9Je0ZjZ2Mt JGMyXyV2cGhCZ1goJjxAYzZ6ZXRXMClPeU18bTQkXkp2KFBTUkNgTGJrPgp6WGJoKHAja21YU2Ul UEsmUThSMHlIKXlKTGFCfllFNz9jRExqLSlwY0BPPlRhUD17P0dgVGdvbzJZbipndXRfSkQKekpE R25WejUrd15vczl7ZlokVFNBKCZ1PnlvSm1VUHVZQ2ZOZCRlVEBDYC0wTFl5RTA/alhpekVjUGIq Xis0WD4lCnpHb2U8fTs8N1R7YnNFQ21JMFE5eWI7OD92bCUqajdWUTZ9QFh0a3x7QVdAc3NCQ2Vg JmJwandvO3E1ZXg/PF4tOAp6b0FpOVQ2WGQ/UFJEKmpyYjhsKFcjVkNVekBMdUM8WHRiTiN7KEQ4 PGEzOWZgd3pgS0pUZkBGPHdVWFI2SG5PbngKelUmd0w2OH5UbWBHbUZFREp9fUhvcm9kc0JNUGUk aT4tVSRuZDdWa1F5PXJWUXJmYzxKKzM4V3FnZCtKPDZpJngqCnoxJTBMS2luM1YqPSs8fTtlPTsw NzVYcTs9dSVncDZEZ1YkQzRpJU82QF9gcShgcE5WITZzNiVhQF8pRmdzSXxFMAp6bFYtWHlzUkkq fHczIS1waSZOVTYwWCkzbmUhfDBON1FKVlFnIzV3anBURHVEZXkmUH44dzBiT3FgbV4wX3R8cy0K ek43aT02Py1yMU9meHBPWlpIPkRYaFhkYUZfSTA0MzEjJis5IVFtUUZtYmpJZCZKRFI7bFB0Tl97 KTFFYmBxMnNpCnotY2B2cmJOIS0mJj1LWX40KWlVS0A5Mk1rI3klT3ZNQFJVN3B2YztCTHwlX1pX WXEzcyp5P1ZuZ0s1M0M4WEBWVwp6dmYyKns8bDVSXzskSG02PEt9ZG1PO29CWmclJFkoZlM3IWJg bCpaekNwcDVlfDhEOVolJCpLeTI4KXpsPXAjXj4KeiZoXktFQUsmYms9JkJ6JHE+VzI+Q3l4bns8 NzBudURwVCRJYDNKajJvUDJscU5+SHdMWndJdCZuRCNJNkNvNjRrCnpLb3BjeTJMTSZ+WGU8QVZU TGReRUgyak9nblJAOHBgV3dFQjQjdCUja0dLelc1LUVhdlBSaVZyayVCOXxFaitFdQp6Z0IrSE5q OzV6cDA5RmtsRV9XMml3QkdGX295O01Tcm9gM1FMfkM7eThLM0AzQmNTaj85Q1VkSHY3fHYjaSpF P0UKelB8dGl+NkBSQkZWTF5iJSk1LUZBQH5ZY08wc1NhWl5JZTstbztEe0htTHtwOVNOaHY5ez5v KH1zekRLV0gkciFBCnpQPkVzQEZsNFZHIUsmQlNWNU5hWWdibncpd01MP24xPDR+Qk4+LU1xSWp6 bSU4ZnphQz8jXlRXbW13JlNwY0s3MQp6VWd+a3lfVmw2Kk1DcypUZ35OT29mNX05dTNHVGA3WXxT JV5qMW5qSUp5XyVhazZAPTxOXzQ/PDcyQmo2ZVNjciQKelM9aDAxSXwrb1dDSF9FdVF7JlN1VFFH QDtEWn42KiExO2cxSjV6fH1MdE90enlGNnYlWTk8Wj4rKnBAX0orbj1aCnpyVzc0JmMyMSQqNWx4 Wlh0cDhfIyE0eHlUUCozJDtNX1V3YXF8Zlc4Wi07M08zNzJGZFl2PURqJnJDXzxtUGllVwp6bUd6 QUU2I2x+KGFsbSgoZXdeUFgxUz4lJjlaWktsVC1xRTUzVykyRjx2QEplTjBsdCNrR2J2TEFvdiRs LUAlNWAKejhgVUtsK3hGYkMkP3JYMSZWMGhBTXl7NlZfNGtNY0Qjc2NFZ1hjSD9tVipjYT5NUWsh Izd0bjZXOVhVKXora1deCnpJNS0kKGVMOFdDSiEmOWlaY1opejQ/NWQldkdEMSZfRCR7WXVhbEZx O05XdWlCSzdHUmV7WGJEN1BXJDQ1ZCRoVAp6R18pNmhwIzB9TCReZ35gI1duZjI2dXNvKXFVV29o TWR1Qk9hZDRKb0t8aS1IVk4/LVduTGxGe0x8ZU5oKGxTQDYKekhVNjZsQHJEUGQ0Jm8me0lUbHEx SypGRWRKby02QGw/YFBNUDlsSH1zPUdMX3lNTylrKlM4ZW5ESSs/ejRRLVorCnpPfXViTSgxVmVJ JG1odHt7RGlLdVhCUUV8cWZzTERGTWkkYDlofS1qbT9hfGZ3azZGZytVWmA9PF9qLWR7WkRwLQp6 bUYkb0ZGY2JqRzs9V2ZueHwqI0s0ZzA/I2whOEIqdTsqNTZlJih8T202amtQS0deUShCX1M/K1JQ RVJsTG9ZfWcKek5ITFMpMm9QMmlTUW9vJl47QUlUT0dVR0o2JCMzd0pEcGdkYE8pdEc1ZGhnWUgj VG5JTVRYXz9BRnhDRnQrTSp8Cno7X043dz9lUUdXUylsMVQrSEQ+RUtANXolQkdHbDgkeUFSTi0w MFNhVj1CeWJpZFUxamJXQjJ+SU5OSWN4I2YxaQp6ZFl5Z3hTdUQ+NUBMWSo9ZHNgM3V0cGZHUkBK O0YqZVAlaFZ3YFQwbS1weFFqdHgzTDUhTFE9PmZkXmh5KU1CYX4KekxMb2hlN20oVzdwWTl+JTdr QGs2ITlra0xqITFMJnUqODtVdl9yJGpNc1Rgcno9VDgpY3JDcFRJTDZ8NTc7MF42CnpKa1BCa0dq YylWeEYpXkdreWYxaWoyTSgzYDNNbWBHaSl0UyFXSmNARXopMzRyWmFhTXB+UX5eRmIxVTY+ZG5h LQp6ZmRgNnx5Sz1wZSRLQGxpbEE4Jj4tPU5oNCZMcTtySUI8X0xEYXA5dDNkUURCYHF3UnYyNkQp dnpxaSM5YiUldCYKekF6b2szMVBGSl4rNSUlbWtIcmNXNTFlUmh2WGdocWhhPUE7cDRjMClkYGVL RHFNKnBnWHxOPUdyTzRSQGJaOHZQCnp6PE5Rc1R3fDtXMmN2d3JOVHsrLXZiUT1+YjlrNHpAe1hJ el9GPGVgNWhHT2txSUlrLVomYDZzOENiajVqNDxSSAp6U2hATD9ue352QUJASW5yakZ8eHUlfE09 X1ZpPyhyRWwzR3o7OzBsenpoOUQ8WEYyRFh4NGVseDxPdV4hQ3J+IXwKek9RJWZoP2dIdk1UNSNw eXZaU1FPVEM7ZE13YmtuXzw5OXp7ZlVxJUdpNFlzbDllKFY8U2JhN3Q9VHRkIWw0YU1ICnpzenpi STwlaiNFYCE9cmlsfFh4eTZgQ0decH1KQWJBKSNCbnNSfT5ua1JNMXU5QlNIU0p8b1A2I2pXezhy PUE1Qgp6VjNBJl53VSFXdihxRTlye3lVIzJMXiU2LUNEfH5jZXFheTFtJVhWNDVfVWBfN2dGK1M8 PWZFMTUxMFBtbDJEaWAKel53dU1uZzlhMmZ3dnw4bjVJPEhVPihsJjkpd2JjJXdjfj5LRDEzZ0pJ WlVyY3dueUZVPm05I08zKjQ/flNlRnM1CnpmM1ljRGFtU295RG02T3BMQVFvSzdQailjU0pTU3Uk b2lQfDkzMTZqdikyJiUjYl9AJXYofCZHdWJsTGtFJUJxLQp6RVBlJmhWayp4eC0qaTc1Wio3TjxJ YkhUJiRRTXxmQHJrUihqcjVINlhLWE5KSCt7M3hRSWA2WG00U25RJGMma3sKemgyWH1fUm9uby1T djlmcTUmTGBzcW9waT1nRy1oSG9xP1FBM0F2QV9zR0ZTdyR8Z0JyT3s/VjApQjllYnZJbkFXCnpB biVaP082flNHN29nbUFiIUREZGkmcSROPythSkk2amUzZ2ZPJH5ySjlaTF5NJE0/PEpZTntrZnlo b1dLT21oeAp6ciYyTlNLTDR0YD1hZjVgQmo9VTRAVFloWTZtV2tAPjlANDYqWHNDIyRgUDV3P3tp KXdwcD0zJUpRNX57OHJ7ZzMKeiFUUk9FcHthaVF3VjlEX3tkRiQ2YFgyVHtuKypkSyszNExGQHJZ IyUoK3BLWUpkMVNlJUBkWDl5anJycmlDTSY7CnppTVNFeGg+Vld8a0RlWDskeGV3eT55a2wydzFD eU1HNDhyaSNaYDMzeEJ6cSM7N1NeP2FINmdxWFVXKjthPys4Iwp6QHw5VUhWMVJTN1lCMSlKTE1L bzdSWikqSHs4X1QpblJtQTstRnNIdkQmSVo+NXl8O28oM0JgJkorOSgqSjA+YSEKemFqSF5MTUMx fFZnfjlaWnV8Z1g7e0M+NWFgVFNVU2BPTnYpVVJZYSp7R3MpOXNNM3l6KzxZcWI9aHpidmdzNUhz CnoxJn5STGBRSSVuWj1gN152RFY8bGhzMm80PEVHbkxLSmRLXz5PR0IwWUE3KkJyS3UpQj1Db2p1 Kk0zSkNHbytsTQp6NmRCQ0lCRjZxUSVIVD1IIWhueztzaH4+dHRkMm8zIT5sI2U5IVo5Jjk7X25G RkBJYW54RSsjfVdwYnlLaD9TYl4Kelg9azZEcnlrblk9OFNjOEstcENYKUFkdF5vSlVBaEZfVV85 THBgS0h1Unh8MSZPSEkpREJkYSpvd1NPcCpJZlVJCnplYC17YHQoPGoweSlgZDNEZTRWbmIkY1Qm VD1xQ0JYb35PbFkqPW54TXNaSDZKek04dlV1KXFkJUpnY2NGZEJRIwp6dG8jU2ROS0tXMnlUVjI2 SF5PQn4mUlFiam1waHFsNV9wO310LTFMZU1jZkFOZSgqWnAwTEgrTHVaZzJpUjdpdnoKelZCZk97 JmNCSmtldiRmS1NoRjIkMlNyOXRqWk1HI3o1WGlicWleeU8qTCtQYjM+fTlnQkteWVVZMUxBanRX PnwjCnpIan5DdE1oWlJmJHk3TCYoUWRZNStvWUlrPXFwISFHb19vZ0s+ejtGTEpENEYhZEJ9LTF2 TWB1bDlsQnFkJEA/SQp6Xn5tMSFVRTBVYUA4dzlmUipPNER3PWxiSGQ4WHg2SEdLPkZ6TjRJbk5q RDdgT2U8UDMlVHM0el5PM15eNFY1QCkKek5oZDcoVSMkQi1GK3YyQlQxbWNNPk16O3FZWVJRKG5j cmZYSGsmdytYSUwpcDxic0ZqRypxQlRiVlRKPz1PO25LCnpjWWtqcDAtUTAzbF9aaEV4RmQ/RzJF enJVV197QlBtajRqRjZ9c1ViWCN6e2ZgYSlKKWd8ZGxCc2o5Q1QoVWh4cAp6QEdGZHZkUnEzZjcl cmBCTihlWX4xQnhtbll3WjtSVWJCPGByYXRMYlZAPT58bEUlV3BHUGw9KV9DTVM8NU8qbEEKeiYh X2BARFokcHNHPlpTX1lrWVR0OUA3PzAjc3xmaVNXPz02MGRRYXo0O2dAIU5FP3VuSiQ1XkhjX09J ejxObSYoCnpoMlcoMWQ7P1JzTEEpQ0w+ZX1mcE9eVCQxa2xFfVdSUyl4b0tvMWlXXlgtNkhmWW9s Q0BvRW1fPSZlT190NDxrawp6VUF1d1EkeVFCazZ8ZGE4KWtMdSYlISpsVzJvYj4pZkpRfkljPGF9 MndZQSNDKX1xMzdZRVMmK1olZT9VWnhvT0MKejZNOFNMaW93OXcwaXFAPUhQbn1VeEoqUG80VzAj MFUtRmU5Sj81ZE5lZkRib1RoZm9NbTU+VnhsUDV2RER8djlYCnolaUp4I3p+QlgxT3pJRE5EaTlB dzc8RjUmbEtzYGx2Z2NtVFdHbWlZWjhkaEdPbXFAS3VBfStEQC01cF9fLWRCaAp6RS1TaUw5ZUN+ MzwzTVlVKE5OYT03fk9VVXdzc3lUI0JOdzFqNyt4VCVDNHBOYHtDcERsSnlVRXVOenFuYDQ/N2QK ejtlTyRfVGtiNEQrY3NPWClsT1hZenowXzZoaUJafk88dG91JX0xZHF6e2RyR0ItOUpwK2VpdFkt emR+VXpCN1dfCnp1VnFTfilCODVwMldRYXprelg+TzFxVnNqQmhPdkZGWmJ0ODZEWF5EVjM+QHkj WkxPeypoJlhiMklQQiQ9MSZUTQp6RXFnIzFQLXBGb1VCKEhGJVUyPXteT2ZQeD4lTnh2S2EzV3x0 RE5EYTJBPndYNj8lVmFePlJLJndpYmoyZHhvOHAKencpeXQ4KHh6KXlKYUlLYnZzQDcmTU5vUGlo SlZjRzUrcEA3IUJRP01ePH09Jk9tWTViT1AqdipaUm5uZSgwZ3JaCnpZREl0YDV2djhsQTZSZWRN I0F2RC0oYFBQKXU3UnRieE1FKmR+O0FoWX5INlpgUE8pQUU1dERuOTFrNilReERtSgp6cD9YQn04 TW5uKGlOPElXYVMoOXlrUm1kYzhYU0x8SHItO0w5ZlU8OSFpQEozPXRUTGhlSFB8JmI5cGN9ITJx JlYKenFeUVlTZlcoNXhIPiFoTmU1V3dAd1h6ckxlPGRrUlA0WUU0OSZ3b1p0QkIoPkowQD41SDxj OFd0d3ZseUU/ensoCnpAdHMmLXAxO3RPR0p6LUo/OHRifUQ3OXZ3X2o5Zlk5dXRJdW9EcUNwUEFm N2cqNVpEWFBFY3BQNWFCOT93KmhBegp6eFA5dzJ1O2ZvK2cxWlFtcDVpLV4wUFhyc3p1aSticTxV P1FEYVVnMVVHUG4rWWtGTGxDUXtzPUB7O3pVYW1na04KekM3M05IbC1ARkpXSEdhMTBFPUVxQiEw ZnRQN1prZUBGITxtVGp0TkNuMmMjVXlpYmRRWV81RylMTEMmU0Jsbmt+CnpScDskKFMzbkc9WmRX K3pYc3JmNlpJbntiSFZWO2xEYEtNM2dOJm1rdiZkQktmWktPK253VFgrK0U1dUtPRldWZQp6MyVG RV9IbUtjUmNCa3FBU2ktcENab0MwLW1acUhyPVFVQko0MyZxQURRcXM5QDdnTTVUOGVZRCZ3YG15 ey0zXyYKek1gbndJUjY0dCRtaDtAY0E5JEQ/ODMhaXFQcllFcUUoXjBOVXtjSWZMMHEmd0RUMXps d3hlfHE9ZipUVjFPZ1N4CnpqcmNMJVFAY21pVXpBdlR1USQhPHd3czYxSzJqNj5vY0RzZzdlTT1f aXFYbyRXd2F7MnghMXpaamM2WlpMNEtIegp6OF9xMkwjRn0qSSkrNGAxKn5yNnNfRnExcGNTeHJW WHwzRk0oPCZYcHNxWmpvY3w+NDUjNGoqK0lkOT5zeDxCO2IKeiU2Mk9ldHhaPE9NKmN1I05mSTVm ZVhWRWFSVG5RWjQqb1lOP3J8dUNsYkk3QCtiKWdIeUFmYVRASktELWFgfkVnCno+WDVraSRTe0VI RFEmK2VuY0YtSm4zUEhBZlhgLSZycDVzZjUtdm02Xjt5cm0kX31HK2VQXmJJWTs0cEJoMklVKwp6 cDRPUlY0P0JBbiY4bEIpNEI8PWo3eGIlJGNrdz0/YyhsJnhoUjslNUREZTJOUiNUQjJRcmBpTDg4 S35XcSpjISUKeiNQZGh6QzNjQV5WU0NRQWpRQV9yI3U0RH48YUJFfU50dnlKJk9sd21pQUZZYWN+ JTJGVD1LNnpVQFZ8T1RDMEdwCnp4Vytea0BoWTFlT15WLThGKzNqfkMmSzhBJH1zY1Y3eVR5KzQ8 XkkpRzB7fl9lV1hYMSF+NyMmQmh5SkxxNnM/awp6MmwrNCVyfWtHREc5QWZlKTVEYld6Nyg/VzBi UUl5bT9TUl95emM+QE5jfiVSQWR8NDMlQD9IdFdgJHxjKT58IWgKenBPIXVNXmAwTkF8OG5EckN7 UHg5aiM2eENSajNyPGNzNj1SQnxWX1BgJGM3ZyN8dXdgKkl6aUQtMiZRKmFVTHJ6CnpNRyM+e2th ZENmZDElRGthUk02ZkBScS16V04hb1BiaWlua2ZwKW8jQVZ8cE11U0I1O1FIbzd3KDZhMDV1P0pW OAp6Mk51fS1gJWF0KmwtalgyMGZNJi1AdG00OWlxV21QJDxaUzRnflB2a15UTlpTNWx0OE8qMTJf YCZSKUEjRDMyNlYKekpgSGopX354YDhiRSVWTmw1Z21nP1ErLXl0PEhNVUNjZXEtUztPXz45fiZa NzElYT0tKn5NIU1tYGBVM1o9d09GCnpVczNwQURnQDslZ3Y4eT0lJmI9YzBiQ1Q/bkZPNC1pSVh7 MCs7R24pITBWSW1EcCFrLWd0SFE2T0p+MCVidipeUAp6R0h3eCVyO0BkeFlsNnVuSyg0MSRLSjRL N3IwQCteLSpqfEE8K0B0dSEta2lLZHUjZG09RiN+UV95UStMMjRvYCUKeklkY2NSVkN9fFdEI3BH bzxiZzR3KDtALXY/dmc/NSh9Pz9eS35YeTNmJGRqIUdiakgqUXY/VkYyRFoxdz5iQlJPCnpefH5e aDFzbjckPjNIUzc8Oyh8aDYjJVNOUnxoaDBjUlJqcUpHU3glTj82eDtmK3puUXlgZyNZeVA0a2ZG U18wdwp6WUJjZWhmcnx9U0ImQGd2S2ZxRFpfZmlzVz8hX204JUBFX25YbytSR0FkVGZgdiNWZWhL SVVPPHFQTnFPOERAa2AKem5JLWRWSUsoUEBkcCZUM2VzTU1gZGNgfmcobUBhU3pOc2J5Q1leZGg7 TlVOQXdmQihLTz5rJiNrdH17SG9OSX4lCnp7PXJ7Z0ZpMGFTen4+bCElNU49VjcqKUQrKmE5ckgo VVMraWxaOHNWPm0pTSkoI187ZGkzZzcmb1IrTmk8NEE4Kgp6amdGSTRwbmlsbCpjRzJ3NFpmTjB7 aSRYXng7fmUldEt8ZHp7SzIjdzxJeUxXI30wc1lWZ0IqUVdrKjRUWHhZQT4KekJ7TGJDYnRGNXJx cVhOKClvY0FhO1FDWTF0QkJTQUA7bU5haGMlNnUra19ucj92dGplZ2tFPkgjJjBfQjwjTXtnCno9 bSN+KkdARCEtaFkkK3JnO0EhRl9WeyYzK3I3Z29aQXhIIXd3Y3Z0KCtAUTZoSXI5UT1hKDdUOyRm SzQ9Qmdnfgp6Uld7eEk+Z28hUThvIXJWVHtsflRfYlckc3N8U1JrLVpxbW5gZFNII1R1a3UrIzN9 ViFQfj5QaFY7bGxxMkczOCkKekYqVnBgaTVRb2Y8Q3BJbU9MfVFWRzhFeUVYPFFoWWBMWXhYck5v Q1FXYiU2ISl9cTBEYGx+eD0kWChKalBCNDRSCnolfFdFQ2NYbjg+Jnxme30/Wj5JTD4zRkopOzdN MHFyRlJtJEpfM21aKnwzTHZgMD11bXFvZDJ3bU1tSV51SFJxYAp6QWJHfH4pcCVuZkFuK3UqbjVP WT0rcDgpWHJ3VjNORntnI1AjcWtXKWl6SVc+YkxiME0xa3w3YWlKU1A5UXV+d2kKendKeGhBQ2hC WD4+RithZzRibUFRRm4yMXchNkdodnY+a0EkVTB1WFpSYTxkRDhjKko3QCMoemxIWVJFdT5xT1JK CnpeO14jISk7Tz5JaXJkJCgmNEY5NiQ5VEcjY1ZlZHdhbnhvWFRacUtKKT9RQzFCal8tY0tuYi1S M0NScEsldW5UWQp6TlA+Zy1FKyZ9KlhYen56MmlhV1hNaTMrYyM9Y1BGWWQ8JmdnTGgwT0BKUmxJ MlRYJUxNZG8jVEJXQWUoRjdScyMKenkwZipzZ3BUY0wkei0/PStCKzE/eV95VmUtKzdPQUtpN09v b3ZTWjdMenxxUEpuSk9UbCpUQzt6YSlSMz95O2YtCnp4R0ZxZGpfbEEqPnM1blpEPjZDb3A8U0lB ODVJZk1rbHFDdClhPVNMZzl2K2pSZ1o2YnR5YDRDVnszTSZtOyt5dgp6M35UPWFVbUdkdmteKWRU IzlnNmpeRn49cnZvTz8+bDl0YmhsMFRjTlZkWFVFRH5qJFpndEw2RlBwMTd7TlFBR0cKeilKO0Z6 PTQqIylvPTY0bStGeXpOQHs1SG97YSMqSzsqfD98Kks1fU1QPSUoTmpRa2dRTCR9WV4jSmlPfSRA QXAyCnpWejgpYFBmQmA4JTt1YDhLIXFrWV9URUQrcVJUWT9vQWErXnl6cisqJHxoSWhqOTlJS3ZI WHdvUmBQQH1UTH18Vgp6e002VUR2PllOX3JXWUxUZHxATGwrY05NN0tETlBPWTRYTV4lYDt7e15w c0NpWjh2KXlgX1h0TGE8Xj8zOU9nRTcKejtxNiR+QF94SzQkIUtzZjZFR0pyKEt0ejd1NnBpaDBE Z2E9bnZRIyVMZzFUM01iO3Fpa3AtbnA2fEx9NE1IMEB9CnokUDRfPTBnRyteKjhYZlZuVTdJZjM0 LSk9QGxUMU11Nz17LUBlPjFqOH1wKGtZZWwkSkRGPUZgRztzSk83JkFoTwp6JDJHIWBNUztpRGFn MFBFPnQ9RDswTilZUWl7SFpETFg4Ozl2YzZmfk8+Ukt9TzVhZFpFeXBhVXZMSkhiZWZaeSgKeiRv TnVzZWx4MlNIZlMqJXV4MG1EaGRqO20qSnUhKFptcDw+QExKc3V3UTBDV1ZqKmdoKnxBKyFDcDxa KmdUdihHCnojcjM2bil4dm9XSHlUZD9yVERmT2MlSVlgWFB4MTZRT15qJnFNTFB9ZDx7eyR2SDV7 TjFOWGAoYGhsc0l0SUBJdgp6THkoOzZYdmAzek41aEsjWkpjcWFINzdtb25qREBZNyRSekBsKHNJ Rlh9NUglWCsyJFlBPnVDTzNBaThsMnp3ekUKejFxKDQ7cz87dU5HQmpxOU9pNmZSVTQwd3N3MU1E ZUxjTFFJUUp9UGc4YlNtZ088QzMmdX1ZdSMkSWIxUXowJCtLCnozfT5IbSREJXNwUFRoKk0ra2wj a05pakRDPDBfTVMpIVkzWSNiTWhwNmhyclJkWCE8WENEJUBhS1U/b1hlYEZeXwp6clNZbi1sSVM0 dyo4IzxBVTFyclBySW5pOSVeb2U7a3M0PGpjaGxyZ1ZpMEVJVUdELTUtNTducG8zVnZTc3x+QTwK eiZ5V3R5KEt1NmYhQmdsTEhUc1NaRUdhWG5vQUZCMztlZnNFbEtvVW0lVj9+T2VKSklBaEI3TSkj OHE+SjtxJWxlCnp7UzYlJVhNY2J7WHdCR3BsQW1AYk1qSjVyUyRCWj4qWXdhTVZeM2U9MU95Y18w SD1xOSkmMiFsJGI4dTdZZmo/cAp6PWJSWXg4aEA7U0tjeUA+VHZvLUdZZmhrci1aX3FNMVUhVlJq VUtQeUNsUDxaUG9nKU9fJilFNmshbjwtcStBZE0KemQ2QHl6aGFHJjJidFlOb3QwPjYhR1grY010 IWVRa3l8bHxgOTw4ZFV6SWNqV1RDbmxfS3Zjb1RUTUs0Z0RFUXI+Cno/XlRMRW1TR0YwcSoxc2VU YCo7RFhHdHJtPE87bEJPMSQ/Z1VoN3JFPEpsPSs8KTd7TjhXNUg2KXc0bHA+eFAxQAp6WkpVVFdZ ZDF3ezc2QiEtKUs5TVdwRG0oeSF+djtgMEVedSpPWHtwdTg3ezNeNk0rN2cyeDUrNXdSJGF3anBW UyoKeiUhQj44en0/ez1kRkVyLTZkUnFLcjIzdSpyc0VHbjRocFFfa3J0MGN1Un1WTjEyQHYrJmRv fG16WXZmZ29MVT5MCnpWVW5QU1IjMktkZkJmcEFEfU5aJHhXNElsTDFiVCMzekdEWmYpO3NXQWsw NkU4SXNCeSpZaHpkR04pdTA5SyojMAp6QGU7WjtHP3Bha2wtVWczOzZfRD95TD5JI2NhVUJxNXhS Wjs+YHh0dj5JSHcqZ0NOckMzM1lRQmlRQitHdGI9N3sKejhGIylRZEw4aTBNNjchd1VLcU16Ujwp SWlgWjI/MUFWMzhMKDYyKXI9UkdWY3VFTmw3SW1kPXc2a2tBR008cW9JCnpkQnUmSj90ZyZidm5j Q1pYNV9kSSU1RVNVM2ZnYUI3R3s4bTYpbHRRSl5qaXxLcVomc3F6KThoISZoTDFANGJ6NAp6YkFJ Y0hfKVluNkNaRH4tQVZuJFlXRDxSVjktNHw5Ki04NV8tVj5PWV9eQUMkaStNS3U9VTdJYEN5QWU1 SH4kMWgKejZRZUo9QSRxa3ZQdkZzKHE5RXY+UktxKlh4NHR7fFF2N1hsR0BMYnQ3dWJiNmVlSCU4 MHVOJGxTIVp2IT1aWERjCnpeUGlZN2ZedWh8UUtSS05RPDdtQHhyRSZ2biFNJVFZQWlNYldsTWBm OWo4ZWdaPnQ0ZGVlZTFYQChxJj8qQGQwPQp6YkxYIWdPKT1SaUp9bV9Vb2B+WVFVJTxPa1ZmVXQl ZDNRcWVZWDs4ZGFyPGo2QWt9QyNWP1ZhdThPXzx0dWRoY1kKemJqdHxNPlhjdyVxRCt0UXIjdWpo amVgXmMwbUktWWpaQDBPb3F7bFo/ODRVJXJJKmdIOUBeJnA5a3BmfXlne0EhCno5PlE4b0xDOVR9 ej9GbX4qMEFhUCYlTlJGamNqWlR1JT9pI0x4a3AkclV6fWRaT19MfWwrRjQ/ZnY8eD5Fe30oXwp6 V19KX247WD5jS188LTc4YGBNTVJGMkMrTCokanZuOHx+RVU/RHA0eGl2Z3ZTa1c7NHc0TCNrQD1J YER0Ozd5TGsKekkzSXkhIzQxME1ackIjSUgxYGpPdmd5IX4wbUAkfCY7VGo7PGBgXyY3TSo3YE9v UlBTVWdtRHE4dyREdHpweVV2CnpGYkJjIWBtWi05VDZtNHlOM1BBVHBNbD96Vy1VJmhqaWNIfChL aF4pK3hWZDhGelBOSlRBUTRqVEtGV0Bqaz5DZAp6Y3VDZmtDU0RxXylwOEIrRC1UNU9QVWZNSFN5 JV5zU0ZMej1wRVFJdD5YMksxI1JYcyNVdjl2PSY2QitwJU8tUWYKemt6Vzc2NkR+KEk8Rigjaj1y Y3M0MzIrX2wkJUhxQHRpSzd1WiMlaDlGIVE8WXlZQX0wd3FNPSlyUjlIK3R6emZCCnpNRE1QS2Jj SyNBQkEwPksjJnk2TmBsTXVDd3pyeTgwQDUjbSElel5uYjRgYnZwM1UtQVY7fnR9Kj84R0wkRD8/ Mwp6a19xSVZCRllJKjJgRk5CQFd5ITh7b1BDYWsrI1ZtWUR2MEU/c2pYVj1TOSUzXjczZlBJOXYy cjN+S0A5fEVJIUYKem5nXjMyVnxnYlE9SU52Py18V1RSTUdgWn4/Zj5FSnQ9cHBkelctckx4PGpO Sk01THUtNUpXXnUxKk47WWR0ZTl3CnprcmFfRzBZUmpAOEc3ak05MiVzJWh4PyMhS2l9VVl4VWI4 OTk4UyRYZCN9Q0xFN24rPHFAZnNGPmFEaEdGeWc7Ugp6YFQzTFJGaH4tYVBlZW9eYmI/dkA/RlQm Oz9RIz5rRGhxMGM3VVkzUyY5fF9jaUc2T0BEYkhZTHVIKHVDaFNXOTkKekQ0REpkalMzT2FhRSoq S04tOCUmcm1Le2hRJlBGKmRacXR8eypqVF9pTHUqNnc2eCZ7TUVGbCtxWWJGUWA4MVBfCnp5RXQh YkQ5KUsrM1dJeXUrMDQhXkQlRiNIPTk0a2pgNWJTYVlXO2ZrNDNqOD1MbkVQclNDQDQmUStpbV5i ZU1zYQp6d1REIzVHVD0/NiNVV3hAJXdYfWlJQHwwNj5zNCtraHVrKU89ZEJVSGEtVkt9NElSZGYl IXVIaXE8Rl5LRHFTNkIKelRMbW8tan5kNiUjdSZkPmBAQDQrT2ZqKnN6TnkhdUN3ZVB+Zk80TyV3 VTsrIXFtZVBUJGk5Um5jdzF+fDJsO3ZMCnpVODFtVDd+dD5aQCpDZGlGVSVHY0paMVcrSWQ/WD0p TF50ZEMjZDtCKTMjejZvKzAleTFVdD1YZS0lPEx7YE1geQp6MWRIYnpseT49TmR9PHt6ZUJpaSpr ZmFreXw5OGE5VWp+TyZ1JkM+MCglQVFNS15nbitBUTlybTZgZEd8aFZoT00KenlaSyoxZ0J9cnlv QTh0ZykzQGdPQzxFelREKSpYVXRXSmA3VUQ5QiExPiFtMSFZY348WnZ8X2slITgoVVJsOFJPCnok Jk5pNW1wYUZFbHU/eU5APXUtPSRLNVJCRnhARjlyMkRLTE50SWdNN0JJYSFTUHRgPlZqYUNHRjM8 cTB1QlBWKgp6ZSsqOTg0VC1oQjI7alFzclg1VX1ubXhtZ3gkYm1PP3s+dlpuaTQ8fE5yMn1tPXB6 bmJGLVROWnEtRzxoTihlRXIKelZpbkRDajxJe1MlRGtIdEtWME9QPElDUCMrdHB8ezNDMF53dGxL MVMmST5hY1dTR1RAXkEhSlAqa0UwOUVBaSt1CnpuR2ExfWBLZjM5TTROTmlWM1ArJEo/PChKJTU/ bnFfdlk7KiFvTktxeUJmPzZDQE9XI0sxb297KDg7fTlwREE2Iwp6Y2U3IT9FVD4mPV5YfHxxMGY5 WVpZbUhKYWpqe1ZqMUVBM28+M0UmfFEoNEQ3bSVSK1BXNmZSPzZFWmJHU0FecGsKemxrUDRFIUF8 N3VDKD1SUGRibDM+d3R6MjE0NGooI3U3QWdSUHl6JjdyWm5HWXBFVlViVFRFei11TDlZP3VCPlp2 CnoxOyo4QGUqN3R1I25DUzhad3l3cyhSLT5NQz5YZzZJSDdPZ19Kd3cldWsrSUk1WEhjNjdJaHF6 LVRRbEFFJUVhXgp6OTtLTHlkPk5uMFEhVE9gUHdPZTs1QGsqcmlrX15MUjU0OVNvVzA8JWJ5eUgw JHh8U0VOYlZkPClyPldiY0dpdEEKeiNpJWc9PXlnaTw9VVBWT1ojZUM9REdqdTVvSD5uKVo5ek1a UTFSRmQlR1E9RWxqR2FpdG05ZUtoWFVzNXdtdUUlCnpNXlhZaHFLOSpuVih8ZHVNNjVlJT50WT9I QnF7YztSO2hleStJJmNGX1JFeEB0Kj57I2NgSks/bGc8RHklfSVYcgp6Vk8hUGMjZVZkOHFDbHc7 UnUhbnF1OUdIdTshUzVgYWJOeClSRyRxNjVJZjw3cXlqZFk+KGFjRjs5NSlRJmNLJEgKemVrXn5L X2Z4aUZBNVdkWnhtbDxGMntucXpCVT0lN2R1T088X1M7RnhuakZ0Mzg8WlBmY0Q9USpUSyFxQGBx WWNyCnpKPTN7aiU/Vlc8KWtDRTwwVXdMRHNBRWFibTtMUjYmUD5WalJ4JkRRV1Jedkc9TXtsVk9L SXRhIVlnTUhve05ifQp6dnk8XlltLTh6KzNjQ3V7TVdGczR5Wk8ldEBBRWkqI3Z5fT5vcDZ+Xi12 OE91S0tycXUjb28tbmQyOEUrTjY0LUYKenEofjN0VUglX0Z6Wm5QZm5lfn53Pyk5bSh3JWlMY3hz P1Foaik+QmxuVShKcnM8VkdnOCptRip4UGZ6Xys+c0ZOCnptNVlldlhBfVh8ZlIwa0AxNCkjSj5T NSpRK0MhOW9qOUc4Y0haNVBPSjBEUzBEK2Bnfig/ajsyP0BiZ1k/fSpeQAp6ckNsa0o/ZXJiU3tT LVpaTTZmcFgkPXR8amBNYkAjKip8UEZ7TzMhKj4mcytzWGI8d0xPMnlPNT42Tno7OFRibnYKem40 OUlSV1JFSXx8MWs0ZkFEZGcmYilwM0E+T1VBbmFhemdxfEtBc3IzWHledi0wWGgyNXFtTE1OZGhk dGR6O2ZlCnpBO3h1MjJJQ1pIPF5Bc3lOMWBgSmAhKGs7eT50RV5sN1UlKWdZcGAmaTwxQjAqU305 KGJieFVaK2lUbzxCTyNWPgp6ezNfJmtmIWlPXyo8VSQ4JURjYWp3KSlESXhYPE8wcDBwbzl4e3Jq dEdrMyhuSjc9d2t8TCNIR2U3LWtEbzs1OHAKenJRUTdhKGleOCtTdTJWSyhiTXojLVpHUCFYI15j YWFVVV88RjhNPXAzbTBIVUA1bzM/MHxwOXJHel5TbiYmZ3lJCnp6bkQ4aXBqeGVXUjl7fUt1cTB0 KlYpfk1qR0l2NHpHamlVMEh9JWg1PGhXMj1VMG5mRjcwU2l9R0FnPTxGNENKTAp6a1crZXUra1dq Z3pQdipAU3k9e2xfVTtQSG1EeHRybmczajA+P21xWXQhLUApKTlLQyppJW1YTUAlb0wocClwWFEK ekgjX2FGNHVFTTdGKmNARmomTGJhZjlZb1EqdX48e0N7biplYCp7b04+fTJIUj48NEZ1TkZwc0B6 ZVglYm15dH0kCnpWMnYjPEU9RUp4WG1qd0R7KmUwa0t9Zz4/Mk8zaVg4KTtuZikyb1NndnJxSCNw a0VnPlh5U2xwY0Z7bCstbWpYUgp6JVVAa0l3NkF3bHlnJWpNJTRiMWApfVZ9ZHJzQmMobU0zelhK WilzZysoSWs9LXxOYzJecEl9ZXdubjVXa31gd3MKemxlcihpQH5CcjxMOSRId2NmaW16O2xaelVt NihrPEc9d0pKQX5EMyFrZkYrTTk9cXZqYTcje29kaCZ+RXkyJUU/CnomYDNnTmg+RTNQNnp6WXI2 dTMyOTNhdnBKNSRFUiNVaX44MW1tWk43SmE5MVl6Vzd9cT5OezAjdTQycmM1Q1Z5Nwp6eDF9KEgq SyU1cT9wQyVmSE9LNHdoNXswYSZhI01hemVFMiRLP2RmdEZoQkxLI1ZWOzdKMWQxcHFkSXtzSl88 WUgKekd2YjIlZCtoR2VmcXtYfV9FM2BrU3M8Q18rfFl1aWFyfD9RZSljbSpZYmFhYWY4RGhBIVdM X2UpPmc9KShSensjCnplNmJYdzByaSNlSXtoOEFISldTTzcwblJiWEtpSjUmX1MqYiZ4KEBkcXg4 SyktMTNfQ2tSSXBNdlpaO1R6LVlhbgp6cmE9JiVPZzhyKGs8TVFSdnNKZDZlez5mMjxORjI7fDN4 IUw1PWNKMkM1QyR1VFV9UWRrNjFWZ190YGtWIztDO1AKem8laCpKPW5zWVg8P09HQGQ7IWZ2LSg/ T0BDLXN4VFZHbFc1Kj5oNytWaTAzX3MpemtUaSpPaG48a0BNN3A0SHZxCno7YkJmPk1oM209T1VS IVdfJX1TakYrRjZELUVEKlE4UzNzMypRRmtaTXIhWmgzblo8Z3FONFcwdXVRJSFubX4zZAp6QyZQ MkBjRkc0Q3BGWUtQLVdVKWw9NTA3MDVUaHpZYzMkc21WVHNwNGlJY2R5SWFjeXZ6UVc7ZEFPelNG LTFSZ3UKekBfRkw9I0gjfU0oaFRgdVVEO25ORyVDQDc9JXAlMHh9WXMzU04jcyhENVpjOEAhM3FK d2QxNiZkJn1iQnFReEVhCnpFZTVTZUdhO3lWTlpzSVF3VlZGWip9T1ROZzVSTit2KVRZS0dGfGxC YHZ4QWF6P2VpdVhVNjJlMllqI1Z2M3plcAp6d2J6VHk4dShBNTRhQVVVV0s1NTVIPz9PZntDNmRX WjRQXzI4KyglKUl5eHh+NVo/czkpenJqOSVjbDFgTnVpWEkKekdNMUw/PXk7U0xgOyYhP1RMSzs9 aCZaIUsyZ24/KCNjPW0pTDlIcU4tKUVtLWZQVnZ3Mm5YZyRgI1ElUGJqNWsmCnp7OExQb0U/anNp WlpucF9iQlFrdCg7MitvdDMtfkRPTDZCWVVscGNuVWxsZChZM1ZyazMkUU51UEN1cm5aYE0lLQp6 dzAtfWlVSDZtdSYtaG5vK1hvPntTQ34mK2REXmJuczZRczwoZVlnU0NWYnEtQDM8VGE2YWJzVVE/ PEApPm5TMV8KelFJYzBiSExyNzVeazJMe15FJWx5SlIwVHBPQlhiTzNxP3xCYm8lWm1jLW4jI0d5 azdxQFJQZT1FTENSZU57Z00tCnpTQG1ZaHtkWWlTK25GdUBiKlNGbS1lJDNocmg0OXUlSihvI0tZ PykoYXdwKz95UjlFNmhCUSZBOVdzYGQ9ZGxtawp6UHBrbXE2Zy0mOWo+aWAlVCUqeFQ7QUpGci1t M2wzQFBFUT1WOVdDU2xSS08zdGM/eFQ+Zkh0SDZ0Vz5aLSFAaHoKekp2KDtoT2xKQGduWU9zQyFX VFZVVFZLIWdLSHROeyRHNilkSkhPKFdXTSVFTnhPQnR2KD8lVH45Z1I0cXFlMGg8Cno+X3g2PkRs NmstO3UocipVUElQR3g2dnxRXkV2X3FwLW9AeylNfWwmaDNhJmooaHZWXzZBb3xDRT8kR0xwb2NX Vgp6WnIjQHpMQ21PXkRkNF56WnIxKUFVKjwkMTIoWldkV0FoR1glZ0pXcDcoUio5UTlQJjRmNHUr LXQwaE17LXt4aiMKemAjfVYhSmM+Myg4UjMqUmx1XnZ5cTdQPmJNdDNVenBNY1pNa0R8dXs1cXdU O1J1VTV8VmN4KUVrdSZXdz41JntTCnpNPlhoLUtGS0hVdUg+JWR5Z3M0LVBscEJzTXtNTmN1VFUx KGJNJDEhJjU2IWd1akQ3QHFvK1VyP05nNlkodWZYdgp6SzdhPF9UTm5JYUlDNlAkems0bX40b20p VGdXU0NyUXBMQ1k7MHszbGNrdjcrQ1dvO3ZwbFhRPHcmeX0/JDN0Sn0KelA8RTY1VVppPEFzUUls TjAhK3EoUm1Ye2ZeWil9UEsmRH50allGPGZTJE96d2JDcHNjdlFSJClKISt8OW98bE5hCnp1RHE1 P1JAZ1h5YUtaWSNOdi1RV2wwe0x0KCNqV21YN0VPO2AmX2FPRFlNKURMSWh4U1hnVy1PdW9uPGV4 YjI2WAp6XnZRdz87JXVwO2NLJFZVSm9FND9lNjtuPyNWZkc8Jnl1YG5nS3AjJVpefjJNKnEkaFNS e0J2TlhITSVxdWFoYm0KelckaGJRVlFiJE9qSkcrT084Xil8Nj1OZEspakJJQiZES3U9dVMhVG8j V1U1M1BUbUR7LUA9MSN3KTdYQ3AweUVICnpKN1A+YUZ6Wj5mMkhVVT1UKjNiSmB5eSEySGhzNlUr fm9TRWpCXz99K2hhQ1lweiFfUU97c2FIR1IyI2QrPUp3cwp6OHcxMmBFUVVuUFRGZWVaVz5oUyZ2 MSpJO292KTImR0VERHlRPiEhVyp5NlkqeSZPTT43a3NzcW80eyp+ZXFvRCoKemUqTnBrSWJZRXZZ dH5LNEFYdFYkVSFWYDM2dGFQUGMzU05RdTJRTTtTdWJDK3BeWW9RdzI9Xyh6ZkhRLThQekcpCnpS UGpiTFlJal4pVFRBQEN0MSorc1MqWkhvcWxFZ1VUOG9ASjthN3B6SUtkNF5GPzAkUkVHI1MrPWdf LXx3Xj1YIQp6X2pman4xTUA2WmtfR1dySXdTYSpWZHI/b2ZNWlowP2tPK3BNVmZAUyhMe21mQlN+ LSMjYnwyfiZSWj81JnNANTcKemFLTDhFeEEtVzUteUh2Q18jXitqK2tGViZFI1gjNXk8d3paYlhD bXpeemx7MU8oMjB9R1owU3UpbG19RHFOOWZyCnped2lXb1FyUn5RQyt5MEBaeG5mOylFOXRuKktt S0tGPXg7YCNXRERqNjxNczZtczdXbmwrTzMhYHoxQVI1VzI1UQp6R3kxfEstKHJKPjJHMVApQ2FW TnYofnw3fEdGPEFGRnp6T2NFMnJ+JGNQMmkqayNHblFFI2NuRERpV3ReaWl2emIKejQheUFmU0Zx NWpuWW5xZ1hjUCRIcF9uRjRRU2xVZmF8bTAlI0BYcUd3KilHUVJOM3pQVE1qOUpzKzReLTlZPUdO CnopKTVecm09SEYtcDRIMzAzOVNeN2dOKXpZT0ZQQyg/ViQwMlphZDljbW8yaVJZUjwxSXY+dEZ8 O302aX4mbTBjRwp6SjZsUCVaJGo/Mj9vU2QzaFJZLVIrRkRZYWRmMD19MEFaNFMzXlJ6KWBGXndi SihnRTw1fkVPUnhQcVBuS0kjcm0KemsjezJ7ZVQrOGUyJjN1aD5mJGtKYmx2YE4+YDNSIW4mNjY5 eXR9MFhkfVRAdipMKEZaS047TGpOd3h2Z3FWTE4jCnpWdXVkSSgwNnUrSUVQWmJXMDRPRDR5SFcl IUVeNkFOJUIzczJtK3NjK0Q3MSNrJilHJFBHfkQ+YjJwdzR6WnhxeQp6OX44N2EzK2NzJC10T0E+ U0wxeGIwTGt+Jk8mMj40aCt3RlFBRUhUMU9FK148TzlKOGotYUolZEhVOHdkUXUtYEoKem56V0Ql alFOPGxXS05iYCo4fm1nd2Z+TkZ2MGhgSjVQcmt1bjw8Mjl2dGVWYnMzLUt8SkJ6UERmYUFZU1dR RzhGCnowSUheVEtpQUlBc1EyRj08KVd1MEM0RFgqNVhGZlNLbC0lQWdMVT56VEBNKkZ0Z3hINWRZ Km9GMUdBfDg3P0omdwp6SUpPdnZHS1BoTUZCPHB5WX1kTUMqQipMMVZiT2JjMFJzYHoobmdqViE8 SCoyXzR3bVplST1xZG19UUhxant+SmgKelNRVndKP2RHTk1rfEBReHpvTjdPYE5pQT81cmZxaD41 R0pQfDRDOUAjOTF8enFXPiVhaGw+Wkwjb3FVcj5nI34wCnplOG8pPDRKdTVBQXk1dlIwSms3OCtm TTEyaD1fPDRAcT04eUhNeyQzcEdYaz94Kl9Dbzd0ZkclJWtsOWJoKSZGSAp6aHNRQnEmbnU3T2Mm XnF0ViRKX2NJc19xTjJmY09FYXE0RGFDNGVjaXkrb2hRc1hiVlolMTNIMFd9NyttRjJ5USoKentv bCQlTVZUMWV3X1A/QDElZnY1MUVubn07PFQ4R2gwSz5TQXc3X2ppJVU/M05xI3V8YDZ3dEotOWw4 VHJTXz5rCno9NEZDJEJ5YWs7c2QmJT5ZfiV7Oz1uSU9TTm80dW94YXJgZCZ7OER2KD1wWVloVEVx KzBgQFQ9a283QSgkbC1EYQp6RTZDcGpSQW48QUZyS2ZAI0tzMFkyfSUteU5kQEYrcmFyXyR1YVgl KDJYPEo+P3g8R20yTHpHKiFPc0tINklKc20Kek11fVQlOUFRIUFuJkNsIzxmSWxCcjNOTVZwVHlH flRDckZvWjVOI2ZDND4qI05nXkRZVSZUb0QtLSleSndWVEg0CnpudGpaV0liPThIS3N2Q1hkcFJu OWA9NTs0TExGQDtATTN6JiZHQ1kxaUM8JFJCaUpfN1lyNCR6KSQ3LS16MSZiNgp6T2tyTiQ7WkBs e21QRkphZl80SSRkUzR3WiZQck5oSUpSQHc3M2gjLT1xdWs8d1hGY05WV1UkODVvMUJJIXsoPE0K em5SRGZqaWptfiVRYDc/TT0lRCFpYW8zM150d3I9YTUkRXpkbEZAOUE5MypOX0xoNTsyPWR8UE9P P1ltYGEjOUVpCnpHVjAyZGlyKG4hISs3WFROQkViaUg7P1BLYSsxUz97NE59N3tyeXtFYip8ZmVU QStBbzMoZ0VBVkBKV25uWE00cAp6fDgqMG56XnNeQCtrVzRfQ35lZHxxPDN0QTY+VTl6cE5gT2k1 MXhOajxZP3hHVHE/KklnZ2VtdlkmPXRBM3IjeCgKel85QmBfP3toJmpBSngyR2c2Pm9PeVFfSEs0 T2x4TXYkTUstbUpkQiZAWGohJTQ8c1g7UWRVel9HblB6eUwhU30tCno5T14ldUM3MWs2dzJBWjFP a3tLUSl5NH5TWXpFd19MR2R6NCNJJGduQHFOa3tEUkhMWnlvWnFDWGpfWmQkTEVyOAp6JFAxajJx IzxSMEhQcm5EcUw+QEJSPWJoYm1RSUlvSG9vMCstS3pZelh+UUY+Plo3NkZPaHVFLSYjbjVJZVhO QDkKemg7cyRkXlM2QDI5d01lcl93O1hudEd+cGQ2KXxGdHIxRFA1aWBUbzs7aTVrciotbGRxLXQl d29aeUs1I3NQc2tHCnpWKmVTY0A0WntlOG81Mmt0bWAlSD82WWA8SVliZSliYkchaUIjR2FfKHFX YmhqSSlfNCErUzc1TjRgUDJ4O0JudAp6Y3NzS14wXyUqUjsmb2hwdT56Q29NViZSKHVDUkR4IUMq SkhDM1N+JTdVa2hjKFhSMUFqb2x2R0Y1Kjd7fEFDKVcKemVadVgwY1UwUXBgMXxxVFgxa2d0YlVA bSlMWFE+R2J0SEBWTlc+fGRMSDheUSNlWHxhd0RaZ0FaVyhnJUpnUGYtCnoxSz9eRF9MPG4pb1Q8 eiZNUlZ8R2tUezY8dHQ0ZWpiczYjMVd8YFhLO0QjRGVaKX4+OVd2PGFwJks2Mk4tO2c1YQp6N2A0 PWQkMjlAN2ROTl5hVEpuMFpGbnB8OEdjRXc1a1dmT15EflhwVT5STGs+b2VPV3liMGFuOT1GTX5f ajBUdFYKei1EQk03QTxMcyY4SyFIK2ttdU5mNj5vK3BUTUdTa2VpP3x1eH5ze3dIYkN4dShAcD0m Z189b0ZCJHNRPCM/LTloCnojPUw1cVpvPjMkRzkzcU4xPVBLdD85Z3NGMj19QDE1Ujt7REpiTEI5 e0VScUhjWDZAWUpnUXI2Jnt3cVlGbGw0Vgp6TDRJbHN0b3JVOUU9QTFQV3tJM3A8PVFtPHdoN2g1 V3Q4cFB6fSN8TGBTPH0zOW9XWCV2bnIpbGF8MGhZI1d9c00Kem4/NTtKdjE8R253Y1NXbVl8Zko9 YXwka3dIOylaeCN+TihtIzM9Z1AzWnROdlk0eCtQYzNZVVZlPX0/e0ZLelpMCnpRfilObWpwfkNW dFk+dyFCZXJiLXtkcmxnZD19K2pHc1dsZihJaW8zPkEpUUpPWVUhZT1nKStTPzFXcVVrPWpOaQp6 TzN2dktuUjs7eU0xajZeYiVXakIqKXJ7aktobzV1MWhyemFOTiUhRGNUbzRaQ2hjeGF5I0pkJFNB UWtKUzt7NGEKemN0bWxmPiRLPjxPbW9OK1h2JWN5P2JFK1ZeMHYwfk9TOHU9clRKMnxXckdgd3NF VExkdno0PyMwZWpXY1h9JjV0CnpwYWkzPER6TnFgK056NGBBNzlFVkBEYGFBd0ZUTHYzS3Iqam9J bGg0elhJR3BrT0EmYFJRK09Zcm9AfU5jeihzawp6U0xIQm1Tekg5dT4oYHtKPTQ2JWNZdGlrKXVe ajgkdiQ8UTM1fnNBUWFVRntEdEpEOXJyTHdeRzJaRU9NRlchSDEKel40P2RfNzZvN0BPSGhtJSlQ SEYlSmVvME03NG05bnFWciN8YHYxIzhsMV4wUl84ajYpYXY2VU1LWHtpK00mcjYoCnpGPzRDYUVB V0ZpbTxSM1JVfEk8T3M3PmE3YCE1fGIybjZDa3VOIUR0dXpLSVVzUXQ9cSNBYDxlIypLWkhBOTZF ZAp6PXE7YV9OLUYmYU5fbVZAX3xneFg5TG0kSChzU0hmO2xeZD5EeXV+TD1FeHI5UU4rVWVyN2Bo Y2ojNHJxMSU7KkwKengxRnRlPzljSzRnXygwZ0lCZmcjPWcpbX1WZ303ZiNXK1grbHZBJnNURXVH b0pHWWFMajRUTFgyPjQlOEVwREx+CnpwI0MrOTFreV8+ZnlCazw1XmhCPmZPYWRAaitmKDl4QHQk fj0kfSgtQFFWJmQkSV9GTXUhfSU+Nk57bnRSZXhZMAp6UUJ0NWlnMFpwam0kKjNlZmVydSpCOHZy RG1ZVDI/ZyVKT1FMWlJ3KDRhJklqZSpxKXBWdE9nbEZsVCUzMyhjKCQKenB5SWpBMHNZWFZFM3JG PzM4SClVNDxfdypZekxyaXVNc3JjZGUtKjtkd3AobCZEJi1XbUcjaUc3QFpqIThyd2czCnp6JitC amA0UTcyXit0bElrcWxHKE08dSRkRDV4WWRUfSNEIVd+fHxWTVRAeWliTjtHSSV3U0tDdzV6S0M5 Mk07WAp6QmNYOT1qJjdqWU1TYS1+ZFdLZUhPfWxObU40YiN+LWJ0Zns8Xmo2Y3BpQ2tqdkMqNCFR SF50YnJVcC0xNTA5eSsKelRPWk5Zb15id2VzUjB1aURDZmx2azF0bGdzJHt6RkY5QDZkWDVTcG4z WW4ldWoze3M/P2khX3g/WENgSFpDODVCCnoqLUVZKCFVMlFANjB4KGgpOUpLbGRVNz95Qi1PZXVr IWk0Z1d4a2dAJDNKUFhGTEdTRjtHSzN8NkkqVGgpSCk2SQp6M3Y9Pm9fZEAtX3xEWT9hVV9XJk1o QGhzYllHNXh7SnVjKjtqam1hIXRxYCM0bGswPGQwU2hDcWA8QFBlViljdGEKenA7Zj4jKmNrRVMj fUREOWswZDJkWXA8REVTdCpacmVyMmkoVDE7Q0EjSCRuMFM2XlJARiRzeUdkTFErfCYwb21WCnpq ckgmbygjQyZeWlB6Rmg7IW5JREBZWWgtNEJ3eCRlUjtsc0kjajlmdV5kJFNleVlsb3BVPiRHI2tY WT5XUHdATgp6QXVGJVJiekIwPil8b293KzBwVylaTXg2VFdrTUp3U3NQMDJpdCU0X3NOTiVlQFcp Y2s5SU4pQk5wZGwrQG0jdiQKelhEVD03MWhuQyYrbXB0S282Q0VRcUNjJThSbT9yZnk3VDxeSUw+ SVUzTWBzSTI2cWw8ZmFuMyNrUGIoJlVyV3QpCnpEUXwkdnJ7ZzBRM0UlKnVpY0MxJHRLWC01Wloh N3VaM2RrbThFYSZ+XzR4Ti1pd2ZWWjthQDY8cGVeI25QfGUpYgp6VjU8d0ctVChyfVE+dHxNYGY8 K1pmeFIoQSN7a25FYUBjfHxgWTJadS1aNH1vV1J3O0V4IXNKeyspPGU3QSk/NDYKemgyTkYqWHc8 aEVCOGZvOWk3UmU5REdodzE4NjY3U3lRSn5HbzA4VCE+TWJ1Wmh3KGt0QWRNKTdmWFFHNHVQc1RS CnpoPzRUbVEyZHpgcVFXUzgzPXIjcU81P1JrWWtIQW0qI3xlWE8rSTIqQ3RIQ3lUczI1USNmMDg7 Xl92NWlPZXFvdQp6VXtHMXYqPVVuYC1rYm9vNyslc1crJSoyX1ZHeGEmOCRBR1FHI3F9UzZDSDk4 Q01yUXRvcCNOWlZpN2JRRzF5NSQKek0xT0pnTXBXKDU1bjZRVj9WUkdGQm9WbFEmI3tVZ0V9dzds SzEzV1RAfUxGMVQ7NTRlZ1NEfXhlTH1OM3R8YXJnCno0RiRtfjdNdUxheE1gbmZxIVNQYUU0OVMr IUc/d01hRExPVVQpXmhsO1hOVnhaTkRKJSFCV1FXY3srcEl1ITVgcAp6dj13WTczYzNlNEJOTVYh RzZ4MCtnXkhQMDF0eiFYZmI4bjJNb0ZgWV92eUdndWtGaztAI34jKE9kSzQzTzBiUiYKel4/akNv VWxhJFFjPWA7OFlgX08wMiEyTSFsJEBtcUR4b0N0YTxsJXtqT1QlaHgmYGBgekZ+K1ooRnEzYmU1 NktKCno3ZGdNRlRoIUslJX5TekkkUT4/Ji1mRnJEcTEkRkRwRGBaI2B0UkRgcG5lbEBXbVNKTU50 KzskQUh2Q0tjMUlYNAp6PzF0ajdMaU4qU2pOdXN7N0J0JEZJYXQqMz5LTn0rYkIqZD9YTjA7PkFt d0c5THh5S1NBKWItR2ZZKlBafElqbE8Kejw8dERGbE1sSVhqM0djcmkqUytqTlFuRXFZZHI3eCpN bkxkX35JUitkaVlCSVdeQkR5am1MNj9gS2V5UnFmNWByCnoxQStyTkpHLUolQWhrfm5gVHB4eTR8 VHNYaWIoa15MTk9hYj9TeTdBJEdpN1g7UWRyJUlpWi00ZVJJLTJ3QyVgVgp6LU5AYlVgeGIhYExW RDZrRkQjeX1rKWozYU1lQ2ZhQnhVO0hySG87MVJIZl4+byt2ZWJ4aytyZkY9YHMoeFV5ejkKel5x N2R8djhrLWImIyNAbypTZGI3MjZOYGU4e0NaUFU0UE9+V0JCS008JjxtQVBYWjtnaD5UfDYlYFBH KUpnJHpqCnomXn54P1U+RWBUd15oXklvdGNqMlcrYFhRX3FzdVRlbmAlSGJgI2FVNH5vYEtaVm5q V3VkQlBXZj4jI3BAMkpFKwp6PFFoeHt8NDZ1N0x2SntyZXdgeFgkcVomJE5zPXZJYEZ2ZWdrYEhH amRPLWNTKnVtO0g9aUc/d2ZLMnNINjtlWjYKej58Mmh2Mik/OW49djEyVyp8SzMwe000STFfRlNK Pj56a2kwMnBvQkE9UnZHckYja1paZnN3PylebSpYbD9NSTQoCnpAQnNUIytpM2t1bDkhVmM5e0Bj SlB2TEZIJUdzdUctejBhR0M7TGt4O1pFMD1fa1QlYFNXNXkwKS1VPm4jP288Ngp6NTVATTBTSkBe UCFESyVBamFTe2E5cHU7MyFubEw3RWkwY1p1ez48TFZtNER3NENlR3Fke3MyPHBSWkRqclhYblkK elVHNzs+Z0JJRkBZWCsmT0ZJYX5AIW0wY2M8TENYYiRrbm42PXJRYWk/O2g9V3BJRllfVTBWfjh5 Oz8zTlN3MUoqCnpYY3BLTTBiP1ZzKTtBSl83Mn5pS0hQdn1uMl90bHF8SXxydk91NzVtQnxrO1dq eEBCclNPbjl+V1N3QFZxSlE4PQp6KCRRaUt6XldNPWNQYWNFJngtY1JObDg2RSNzOzl1QiFQanY9 Nm87c2c4a2B+cHYxJEdFfH55N05aP3Y8andqSHoKek4pZmM4PSVWQz5VI2xySGIrRlpANSZYUE1x bnk7PFhQPEI+Z09aQmwqUEFPdXs/R2loQVhUPC1MSHZNNTM7XmlkCnpaY1oheHc5U3Zjaz90KzJP aWdQNDJ+dGRXKlIwM254V1J3ZFFue2gqI0R5e1JXSnUkKyU3NlEkKjV+XnJUZ2hBaAp6UVk5aDwh ZlphLVowbi19eH48VU0kVz1qVnl0QSswNzFaJilUd3xwd004bUMwOFE7MCowWVlmS0Yhe3t+b144 M3sKenJ8X0E2aik2WVVHUUpUJFV6STVrYFo0dmpAYDB9cil+M1g3TWUpblEoeXJlQTdxKlN1SF4x fVM1QjglblRYan4rCnp6Sj5hQXQ9LStTaTtJaW5SXldeWTNPYHVLSms7bTJWQlVrNl5BP0YtR2pB QWxPYm90emFebzhBVUVGd3x0dWYmcwp6N2VfLWBFTkpaO1BkXjB1U3lNQjReb0omR1Ujc2k7UjVD YjxvO2h5UUV9fmgpQlZDfVJiODEpbChjYSt9ZUZ5fFYKenNKRyY2PTg0cjBvQ1pPR3dsSk58Sz9h JVQ3Jn11dCU3OyVpIXgpKDQ3YFF+S1d2OWdzK2lBIytTNTQycUwteF5MCno7M2I0STtETDh7Ym54 Njc1dFBhYGFJTDtIVldqTzNUJUV4TVJeY0xNazJCaygtXjlmRy0rOFpBfEQtKFR6QD5AeQp6aXoo PjhfK2ZFIzg5eUljZGI/OE0pXkZBSSNMd2V1bDdYZD9qKEN+ekooOTRBeURrLXdERVNXcit6KW9a YkgqSWAKenJhWGZPTlZHc1QoM2pxQy1UZzdySCpVKDdgZEZqSXBCdH5OTVBSO2o+dWB0PlA3VilR cW0lVFgtT0YjPVkmeDgoCnphQyhyVjxCUEw/YGBoUzY9PkVFSUo+UDI2Xl9WQ2pnU05tZVd0dW83 byR9XlpoQFZpezA9LVQpaHx6WUdHRipJQAp6ZUNsTjIkMHNzIWY0b19EZFhOQ28/S1lwbyVEOCVs JklmIVdNJTJUQCUrIW1FezN3VWRGP1poXm11OFpIQ0Zwe1UKeio2PHFmO15XN0BxMWN5cER+V15P OFlEVnFnfCpXRyZSbG50QjZuJHMhSnM3R2B3YChkRGdvJTYyJSh8I1dGVzJiCnowMCZwdjxpKmJ8 JT5EUyZZbTElNGhOZzQoITNMeTdeZk5rLXpIV2BPTEtJV2VIM3dtPDRvZTxGcUEhM3JKQzA1bQp6 Sz88KDIlb1cjbzdpZEZNdmdneHFWKlBXKVBtcSU4ZS0+XylgJFNGcWJ5cHV5ajtKMilmUHM8KEo9 YndKKzsyYHMKenJsJC0rT1NFPzVsdk9UXj9XVG1+Q3k4bXtLeG1ASmdvR1UkQV9UcjFqKkNDUE95 S2wmOHRzNGdnPGxXeVVzQlpJCno/PkVgS05SPkp3OGNDMSNeRTF3PERvSiQ8ZC1pbGJZRTx3NnlZ TVJtSi12R0wmY2o8SSFKNkR6a00rQGl7SUN9UQp6bTF7Pk8jeVFBSXl7WnYtd3hjfD1IO002S0Y9 PUxBVmYkWm9FezFad1UrU2JYWnZDJk8wOCZqQ2ZMQ159KUJnMjAKelByZ3E8bEtATEkpRCEmZEtN ZVcqait2MX02YGlVQlVzd0Y5MWt6ZVM4UkVoO3F+fX41YjJvZ2VRKXpKbXpMP1htCnpwVVZ0TGxL K2M0V2hofXo9Xys0MEp9eSllQFpgIX4tS1FYcnUkNXw3WTBCIVk9MmB+OzspSnNwWHxuJms+aSN+ TQp6UT8rcjwrIzNjMTlTZ1gxPEFjYy1aZT97bHpGPVEoTGpWPnZRfUczWlp+WDBkd0BwP2ltaXtv fTRtQ3M+b2x5NkUKenkofHlCTT9CM2d1en5KeyZFIThVYUpLODRxdCYqVGQwej9peX1VI1A/SDlu ITNaOX17MmQpfV8ocjBReEd+cWsrCnoyTS1jITxERS17TGVtNF45ZjU0QiYkPXc4LVhtPko3Nlgx fD4hfFFaWXdrYTlNN1dpeEIqKWpEMVo0UjMyLUhkIQp6REtxVHoyWVR3MTg3YHsmKTVAZklJOHdA KzVYQWRGMWUkZipKI3pSVEVsVFoqYEV3bUlIaChsaEYhbGFPdHNKc18Kekk3PEFON0k9V0hyS1FW UllAMyZyJE0raGMjRV5BfWo7d0k9P2J8bTFnX1YrKDRIQ1dDRCp0bjdES1JGZzVkdGklCno9alZJ IzV1PXI8VlU2UGpHMF5KaG9zWHdlQXJiOV5nfXktQk5UOEE3TTRAbCRmIT1tQjVIZDUyOEpZYHlX bzJjfQp6X1NXbjs/N2VSfEY1TF5SPWY4VyZiYnN9eWdzNzxqbWRjcEUkX09GeWY2WWJVdTRxNU9L X01ZajwpOTZDbGgxWE0KenYlTFdEd202eF5FRzJZU2FgUWxkfEc/d3dgcyFEZDF6WTJ8PStwWkcj UV5pb2J5UCV6dGQ+Xk53QXBVfHswRUA2CnoqKWVsKC0rT357ZFZXND4+cX5SRVpqcFpmSUhRZEJy NGpJNj9KP2YzRyg9ZGk2ezt4UnJrLV5FekU9JW92QHRlJgp6UnMtY0UlTkBTPVleQ3g0cysoKGlw cnA/QTRBPkBCTkBUfjYrbWxwR1VYOykpeyU/KWtwSnxLZjBhV3FoaXFEdGIKejFUPzN0c216TyRm N2RCaFVuY2kjKDVmdThSbnFOa3tYZWF3YCFOQ0hpJXJ3cSlZTmMkcTdka1glOCVBM08hY2JrCno9 RVlKUnIqPERnUjw5bzUqIWd7Nmt1KH4kUE52M149aSpnJWxUNH0xYks2eTBNUWdTeCpRS0BNe1hl Rj9AWiZaTgp6d3lKM0ZSaEBzdTIpcTlHNWleRCY+WW5BaklJV2ZxZHpnc2U4Xn0+dFM2fWhScHBe bWA/bjhpI1Bqcz1geC1xNlYKejxlIyFtZ0NlZkJBTXU7dlVTdntHMGVBd20oWDgoT0RFVjc3cSt9 VE9nRFJDRypCTGo3SEFsYHR6TyRMUWpuZGo5CnojY0VUWFl1Z29EUDRDP1dQJHlsWHxJfWt6eCRY SCRNX3xIOWRERndtaj9Ud1FKJilIRFo8b2VlY2lXWEI/biteXwp6dilwMiVtb1M2bFkzb2oxQExg OFd4bWtvfktTUXk2JUd1ejB3TXFaVSZXPz5AaXR3PDtMbVNfOVhVLUxgMGRkXiQKel40Kz9QPmFD KChrNiY0fU1AcitDK2Z9QiFtRGJ3ZlYoKEMzLU93RUFAK359NS1RTXlpTWtgblorVWxjKXlDZ0xf CnoqVCVpSW96dT9BNk1jaj5BTzRQeExwJFNySWpQKHk9eTBTY0ZXJitIKi1fZz9fNHJJTCEhNEt0 MGpmVHJuMCs8aAp6Q0B+N2lLZTYqYTZ0PjImRDN0aEl5UGZQemxpYTcoMlROXkFxQU1mckthOGhK NDkoYj0wTSRTe1A+aHhXJTdWVWgKejVGRyR9Y0lKJkxjVS1LJWxHaT4wcjJkPStfTFN0ZzlBZHtE IzIqKHRLVjUmPShtKVgyO1U1PHc7PUc7I3dBUmFzCnoyKk0jeHM7aFV+e2FuNTFJfigxOTImMFJs OzVWbWQ2bU1PZnVHK251NzkrVExeMF9oc3grTylkd2J8JjdyUX11Mgp6Q0BXaGNibj81aEl6TG1y KWNkcTtwQFZDeGV1fDVjQCRxTVJTeUd+K1hJbV5NTnp6VDgzdkU8ISM+NyVXOF9hQmoKejJmZnF0 VGdRdjA+NTEtVT8odG5ma3pEQjdhVUJPX0NoV0lZcj0janpqNjErIWtZXmB+eThaJFI0PUpxKml8 QFA1CnorS0RfKUw0SmlBclA2T0V4Uz08VVNYZndFQXdZeDBDdC1raSFySSRsWD4kPEAxcTd2WCVn ZjhwYGcrd2xSNTJsQwp6PCVXJHxwUHYyN2d9dlJva2tXTz1iTn12TlclJEx5Tz17Sjd4bkI5Plk/ UnlOIzZFUTMrZjsxdXlJaUxjV1pJSWwKejN7YF8jeD51d1hFZHVNTj05NEx4RylfQ3FieCl7YyUm VSQraTdIWSZtcHpJYGQqejRyODRYJGdDQmx0Rkh0Yk5hCnoxfFV4cWxxRH1zNjIoMnNxP0AldmZ0 ZFB+MENaRHd2I295QDE5MFFwdiE0a1E1KTtgMHl0JndCc15vY3gzLUNvfQp6NEVeNDtlczZQX21e UjsxcThtakExfDRXT0lVOypaRUFDT1VHZ1ReNj1kI0MkTChVYUB0OWQ9WDZEOXVTTCYwTUsKej54 dE9hUmcrWWQmR0dWaCNSUShgdlpvdkFrT30zc29eS3FMeFN2amVOd019VHppNlpeUy1fU3hIYE9n RSt9a3VJCnpjeDl1MHp2KE5sYWlfJko7bUxRSTViT2RmaFhmLWp4bT98UEghRFl9VCU9TGpPI18+ bTNWQigpWkYrek8lZCEtOAp6KzAzOXBYKCVKdytwUylWdnp4RW0rSUNKQnZnYm1AeiRiTmFgV3pE JEZlSnR+KEFXMmRYeCNZUWUpSHhtUm9kMm8KekR0dX1Kb0d7TCFVNXhSRzJhVTNveUcobHp4fmlq RDtnKlltdjBQdHFUfFJkP0FwWWh2K2VMSEg9TFY5fnI8MUJ2CnprUElkeT08UXglUC0zRXs3SkI2 QW04PlZCKkNnLUBGUUpoYkwzZXxTVFFWcmpnY045Q2ljMmMmeG1UcV8xU3NoSwp6VmdTZmQhUUA5 SXV6dGJ0ayo5bW49WGAjemxYbGJIZmI8cXx5e2BaVUg8Km5BVmcqbHROcW1ySHNldyNQTGg9S1UK enAmO2AqV1NMYGZ6ZFN4KWdnXyhmaExKcjBwXjkxeGNNVGtjKDtnVWFLQklRYkpndiVLPm1xaEAh ZXEwK3dBMit0CnpCfiVZelcqQjBVaXlZJTRKT3I0flopV3tUbVBzYGkhbkZXQHd7fitwSUxSS09z d15UcUFiRCtyKlFOcGxlMU99Twp6P1FPdnpod0ZLNXY1NCQ5OUp8bT5VfT1ieTc/ZXJ9VkYjMX1U LThyKUYjU2QhfEtPT1FLYjkhdlc8djhhdmljN3YKekc3NTIlNTt2WUY+UDI5SzNMSil+aXBwIWxk QUV8RD1payhTRDdITjtHZW9AYkppRiEySHRMVWE+aURNcUk7dSpeCno8ckQ0TnotJCNCcSlXUzRv Tlpxems7VTxGJjdAcyhxcW0jdzxWJmAmNCN1QDk7I3xNU25ZKVFBZT8oOUxZJFF3Wgp6WSk0VX4p P1VIV2RGUVVYZEApeGNeZjBQUnl8fC1HLWR2Wk5NJUI4dlBrejYqeDQ0bU1fUXl4SHtQKzQrSWs3 UmkKem5rO0thKT84bntse1pDU1lRTDdaYGU5U01BNHo1Njlrajk8bHh6M1I+RnwwcnBJeypfUzA1 fVptPWhubldTK3VwCnpwM2U4OEMpVlctdWs1Vip7M31+bVNhQm5aclNgZGtDQ3VsYiNDYkl2SWhD Mzl4MEUmeGlTSTx2e2M9S31Ca09uMgp6b2wwUktHMzVlWFI7P0A3MmgrS0l1RnQqIXM3V3RDOCRO eWlPWVFBZnB5MTlBZTI8aWMwR2RlVy0ybj49NiZhJWYKektTeTFJcjBAMmlqbGsmIyQ7MGJiQjJo ZEkxNTZ3dz5IXmRTJldBXz9zcj40NDxKP1Vibk94SyN5Sjw0VD9IOXgmCnphTFVEVkQxSntDN3NE PUVMVHErT3N4fnQrbHN0YUpmaTxZZyhGdiVCdmdKd0c+O0A5b3ZQYFdFZXhkbU9jPlMlRgp6SEZ4 aGBQMjs5UGVeWFVNUDtmOXtSK0dxWXsjJXVKM1B3VXcjYVhidGszTz1lUT9GJWEta3ImPDdvJn5m KXVyez4KenZofn48Q1J5OWFxa0JFKnJldTI1QE1BPSp2Uz8/ejthdzR4bmx7NDFKQWNrK1VuWnV9 SGJgZTgzKSopSGJ2KVh7CnpHdyUlITslQlpyTSlLVktURmc+dXJtMCEhOyRKWkpicW83YmUyJVRD IW50N2k1QlglU2t4Vm0rSlhMPCN4UGohUwp6Ryp7X1E+NkI3QVhAMksrY0BLZ2YkTG1WeXZHKDc1 aHlqIW94ckpYd0JrOTtWcXJ9d2g4anFDbylMMSpQQWhGPUgKeik8K2E0UUJrWU1tTVg3KilYWTA9 TEB5bG1fQmJCKGFobXNMQ1gpTyhfSCRuUSVDMFpwQDNlUHk7aE1KTnVwdko1CnphJm4rYDsoVWJU Qlp5ZkZoNTI5LV5NVlVPY3N5VjRwNUxWcHokI1gwRmloSTRlWDV1OThPS3ZVcFMrO0syZlZ1dAp6 aEhtQGdgU0NmVWVvYGZTR1goOSMwfGpXcCEzUmxqcm9McVpJe1lRPVlUTk5CQ0xqKWtUJEU1N0ck SyhpT1RpbiUKel9SM047QUtAU0clfnNwMTxGdjQpZ0JpMnJxQ1NNNzwmWUAwM3VJbzBNdT5iR1pI O0NWI1pOZXMzVGRUb0I/PVpHCnphTGBFaWlgdH47ZGlzeit7Sjx9a1F+Tl8oei0pRyFBKTxTQGJA TmZeSDF2SXUjfD0mR1FOeGx9eytNeDZfVztOQAp6SGV9Jml0SyUrckU0fTkhNmQ4VDB6c1U4Q18p QSRMXystPjFGS3RHU09MVCpqSnZvdzFxKD5maHd3dFpqQHhwUn0KelBheE1kSEk/UDMmQ2JgNnQw fXZZKHprdnY3QGN5QUdDN0R0cm9NWEU8RjAxKW8jI2ZyJGgmZW84SHZjeWh8eWdJCno2Xlh+VHpq SFBiWCVTJjJ0MDIyP3EwVj5GaChmRGhpentFN1Z6bWtmVn1+Y3gqejRXMFlzMVdJVCFnQ3spbjB8 aQp6I3BNK1dMP1duYl9WQiROcVc8aFRnOHFTNHIkUkdKV05iUyE/UW55JGtWX2lwV3U5YXF0RXBG Rj0kTF8xRWZOPi0KeksmTz1tcTJDUmxOSkN7UEsqSkd5dHtLSEhlI3tnWlFCZ2BqUEteKXhCdUZp YXkkTHFKTGwkTUs2PE9WfDRlUylqCnp1PX5qLWBaeXVVanxGTTVKVmQqfXFxSXRhO09HKD1YVnU+ bz1AbnxvbH55ViozekNxPDVXT3ljMkY3eWA8ZF5tdgp6an5XN1orcGNLKjJyRnhXa3hfbz9WYDJH U2Zmcm8wRUFDJiFXVUdFfiM7MFhQeEBVZyZeYipSOWl2MEV+QjNTXz4Kel4hZChzYGliUU5MVzlE JmpXQUUyVUVVNklBVlQ0I1Z7YldMa2NNQnlAMyF5czczRGckMUFRWGg/O0BVQ1UhZmBlCnpHT0or R0ReaVVzbk8/ekhuX2djPG9CUW5tSGdiR29zYXo2bmxXd0h7MG9gTUpTZnxwdj1eJnF6RCtOQWw9 XlQ/Ngp6QHpMYGY0fjVmRCVaeUcxeDJDcClET31nZi18XjtFaEBiM35rM2lpQ0VjSE1STVoqT0JU UlN5QXFRdnliI0UqWlkKejtYaGl1KThqdVBIWkIrbnh1a1BHJFc4UDVnPGEtflRrcnl0c18lLT5D KmR5TEpeeTQkay1DJkYxJDEtZF55b18pCnpyKyVwcFBtdGVSJCV6TEIkVFNuXjJFNm8ka34mJjV1 PCRCYCopKVIkSE5PKTs+YzRNNEctdzUtbCVFKyV2X2tLMAp6P1JfVz5kTTd4cStFRXxVMHMlfiZ0 OFNCI0xjbDhhc2U9bCNBTEBoe1RwbTNjTUlAJDxyaWtfZEJgdyo/cykpZmEKenRmd1ErTWlnSit2 fT9pI2h+UCgpNmJkQkBvYip9S1R1UHhhPDBnPmNhJlM5eVo+NzU9Q3VrNiV7TXNnZy04Tn01Cno5 eipYK08tSmF0ayZZYkpLcykpNWlkXyoheU1wNWFINDNOVElrJDNjc1R0IyVoTVI1PSVRdk9qb2dK QnROdkhWXwp6TXlNWkUpXkF7RW84V3pNcW5RIT16UnlUQVF4KF5nbzVEZkRydTN6NWpmN2RXX1Nj LXE4QlhIeUpsWnRSdjVlKCMKek1zVU1YX2ohX2pZYHg/cjVYTjg4JDYhdjtPamlyRyp4MGgjQylB Y00oK29AP1gqfmFnNWklXmktbktvSyRDUitSCnp1K3ZgcktMM01BNCoxaT9LJnQ8QDE9Zko3JTcm N3pBc3dLVWJzZCpYTHdjLVVseVU+S2A0YFJmMT1LXlh5en4+KQp6MWBNPmNyUkMjQHBTXnAhXl8p MktTYC1PU253TDhPeD4laH5zMiR9K0xsPnFCeGA4T3QhMUJ4bzM0KXNoeGApUzAKekcjQz16WFIq ZSFIMks+UE81bFdYU2MpdGVCdHh5UGFsbjdWREVEaHRCMiZQUG10PnV7QUtNR2RKYSl8cndRT3tu CnpHc35BWj8wO0MyPVQ7NFRRIUhUbytIfnt3dGZvbVNIa3M4Z2RTOWJqT0glS3FKWFY9SypVXmFo d1MxVWhzPnp0bwp6VjkpWHYkIWhSMU0oOz80cUItLVlGQUB+UDdgYXxMSXwrfTRCd3s+THolR0xw bSNffT8/eitfTCl3JDwxRUxWUTcKeldIeVpyYC1mOWRLYGIkXmQtfm9wRHJyfjZPV3ZZeWw4Xnp2 eEQkYD9AcVljalQ3IV9RTnYqNzZaJWxqN1hVe2ZLCnphPi1RMHpLZj5KdkFDU0kyTEVGIU92Pih0 MSh9JU1LVTBhbUN4WHZhQmFsZT1XdyhDKWB2VlBSZzE0PUJgeFooQQp6SlB+YnVjd2Q2cnF7Unk/ TFRaP31LZTQ5YHRIe2ZEQ3lzVzBxTFU4eWJRY2VkR1R4RENJMkByQnpzNFZ4NUpoPHYKenJ1PC19 P1J5cTdzOWtPWTg5eD1kZmV6YGdeYnVoSVVJPmA/Y2dXUHIraCpYbWtNZT9BZFlaNFhgai04T0Um dn0/CnpfUjkjJDl1eXx1cl5Gdz5wfTItZWhQdSZ3PiVVUylieTFHU21gUkNeJXtLaSRWQnFpNjtD eVNyPTMmc25oXzt3VQp6aXNXNV4rRTdBSTxUfjhvO01WWFlyIzU1ezFOWlBUXk5md19feXxNQTl7 NGtWRGFkSVd2diQyVWVRbXtGR0lxaDEKenM9SVl4QH5mTVYkYHwqaEdgMlNIPzRHTDF1eCQ1QVI7 UmZZYHlLJnZ5eDNjQGlRWmVHNm5lVWpSNHp+aTZ7bmMqCnotVFFVVSNtQWc7MG9AfWsjd0tVJmxp Mz94aGg8S3VFX3JXXyU1Z3N6KTZlVCl5eDxacDRVQiNLeykxNSFtc3sjagp6VEJxQFo+Zz94aEY9 Zl5wVDxxX2dlaTstIzUxbzNQY3k+N0liaURFUT12MCtscF8kZUg5NTFgfnhMVEspZTQrTWIKelF8 ZDhMWFN7dFlTZ2c7a3B1UTk5OCg3IWR2JCk8ZmFfYXFLamFMYVI+PDtSJmY+bkY5SGgkRHdWVisl KXtRUWRKCnpqJEdQM1BKPFhMU31MMl5GVjNMbms7PF40KCk8QHVpPU4tKGBSfCNPVWBtMDhuKXRZ Kms8WTRgSzRGd1QzISE0fAp6SjIza2swJE58VGVjdT83Yk1UbFIoZjIlZGlPPzw7bFI4VilGem16 dTdvK3FndGQpOTFZS00ydGZVRFQpPjZ+YCgKejwjJVU4OHIqRXlaPWRHI3k2cEM1MSN8azVNfT0o K1R1M3NIOCt8YllLP0BSb3BrZihIbSNVe3RMUWhqI0ErSUVrCnpMPjtjNio2c259aHsxNl8rbmR7 PzgmcSRUNzhVMiF0IW1jVjJjQzlJWTFaMF96YXJLR0Exd0NMKyU7KHFxQDZfVwp6JStASVdLQ2dT eiliTmBRTWR0UU9jWG9CYlUqZ0FAeSFtVVYmV0QkYWshWTl1KzJxK1RgTWYwNyo2PTRPRT99b3cK enQzbWI0WWJ9bjBAKyV7PXJZcX04ZTF9Oz10RnR2fCkwTGl1O29jaVF3WXl0YlBTK2hXSXZlYjdE Yjt2WDgrK1R2CnpreVk/aG9Ob2goZiY1Q09hRyVnfUdRWTZrPGBnPHwqZEFoJUwyez0lSk1ucmtF enFRJCFkIyY8UE4wbkdkdEFmdQp6RzdUeEJWTDxGdzk7bi0lQXVxfXlTU3R1Y1l2OUhnaDgyK3hf OT03QTRCfUl1MypsLSRMS3FjeXV+UCUwM2w8czAKenRrVWpaRX1BTDZxZlBxKHFuS192OFR0Yitr Xm9XemNSXmtweH0kWWxPfE1rOStZeCU+d1JvSXp2T2d3T1clSyVMCnohcEUzKnE5TypiMn5zY3w5 QmxgQzlPNUVVP1lLWjZkY0ctNV8obk1QX1BtT3g4Mz4zOy1DYlkqcy1PQG1lQndabQp6QjtqVmlf KFlTSlchXlpUSHswaGw9VilfPmo0d2xwKTE3bXYtfHVhaSFTREshJSNIMXNzJmlkLXk4U2V5P3h9 ckkKekhHa1JrNDZgKUAkbUUlPS00bGpVKlArKylAMFJedFEzZ1E5aSthPHcpPT8oKT9yKWd1UHBL VndZa348VGtTKHxWCnoxbXs/XiZ3WDhzP1J7YEd5MCU1ZD9GSGY1NGpHUlUkYnFBdDxJKDUlYzw2 WFhSbS02Ul8wQzJGNj9MNVlQMWIyTwp6QU5IfGUpcip2REl1RGFsb3VGbkhNWDN7bEchV1RoZi10 K1RBUDxiLT9LclpDKk1vdE1fNn4oPHIjMHMhJm8+M0EKemhwKWZrN28wNUNuaWZCR0QkT0ppfEE0 aExfPEU4MypiS304T1BsYGl5MGd+d0RPY35zZy1wTE9vYzU8YEVPUShlCnpsWWVNTiVDWlheKll9 VUgmWDlIZGk1NzZwcFV+RHQ1M2lwRkBzKlUyZylsaWRoXktIU0xzRlFwPVZwKjxvfVR+Swp6ISpz R3N7cUE9YCtvZFV7aWc3bC05P2p6cD1EOWBBTkF8KjI5eylQYF5SQ2YrJnZvIyhkVkUtTT9laXp+ QT1xWEUKejd0KEl1RVYmMElUPk44UVgzfT9gRCVoRVI/X0R1S09xR2lodTtaS3g2WWRnMVJCbGpQ PUF3fitoMXBKK2FVc3syCnpoaWZhTl89LWhUdVBFVn1kUUFTcjI9KiVMJjQ9PW9YWHtKVD4qVD19 bkNneV51Y0htYDhzMUxPSyN+ZUhEcXIlPQp6S1duaWgqSXsrdG9gXnc5V3BeMG13eGZDRiVULSk8 YlRyNyM5c0szfitIYVcmaTRTMilfNE1geTRea20tI1ktOVQKeiVmMG9XbVIxfmBNSHohX0UlO0tn WURIVkxjJi1wVl5gU05JLWVwTkY7RihCR1E1Y0JzMCFWJEV4aUBkWmo8RTEkCno9TDUrZDktMVYm Nil+SiNzT0lLZWdIIX1hTyhZVjh7JnpJUWRyUmQmOGFtZkp0d2JaX1N3Rm4tYUIkb0cqYEBjVwp6 PDAyaTNvUmkpeWA8NE5ob1U7JExWdSE/aUhianExKmFkTXF2RjltIU9RSDhPdT12c2tBYnlqUUZJ U3JEP09gPX0KekdLd1g1X3w/Si1vSll7enNAYXFJPi1CVlAoVF49T1Rzc2Ere3lMdSpfckpLY2Yy TzBUTzFNdjF1X0w5UCZ3S2xqCnpMcTQkfjNSKWsxVExoJXJTOGZ2VT1MciNHb1JMQyEzajt5YHF3 RXRSKn47ME1qUEFRJDVAbkE4LX1QYDw1YS0wTgp6U353QkxBMyVrQCtVNnVWZ2cwMGM0SkhjYEdM PURFKzg+Y3RTSU0wdm5yYDNVZmRqZElhKFRoSlpyeG5oaFlYQE4KemZqMEllUkF7byZhK0d6MCF9 cm02YV5lKUZjfGgxUj1wQ1hTVkRPa1c8YEQtbkg5fEBiNmRwbWAzKGUqT1JDY0J3CnpxdU9heD0j JGdsKUZ+NHFwNCZMa1M4Zzd1JW5LaHJQMTNZfC0qdmdLYiktLXBDXllYPyl8QFpYZn1hKGlOeUg+ dwp6M1UxaEVoTXJAbzAwbHAqUWNeYVY8WCs4NjF1YmojZ3w5P1kmTikhRFplRWBzOyRIKVIlakAx YVBFJFowZWYxPz4KeklhUmRWSTclV1hxR1FBN0BVO09MJV5YbH0xRF53JT14PmFgZ0RjKERGYkFZ MDk+YWgqSlA0U3Y4a2omJktLdnZaCnooTXI1Zk0oU3pqQEkhdD94N2t1MzNCQkdFeUZFa3Q5aVZi QnYrWlUrbjh1bXpkeklKcDYkKV5YUDV8Jj5aUWVFbQp6WDNodlJxUEN7ZmxXVlhUVzs2fTVDKTFH b158JmgzbUd3ezNBY2UkKTA3JntAUlpHUyQ0c0klRVMle2BrPTs9RV4KekE7P0MhMTVrdm9Lby11 SVl3XjdSbjsxSzQtOW1pfUteKVdGbWVIYTtXVzlIZ1hfZ3VWVlJQJVRnKyo8Xm5JdHhNCno7ZWlx dHVMYzF4UUt0VEFvQT0yZTBFaz15O0wkMW8kKjd8ZldeM0VrJHx7M3lVQzIlVztyUjFISmk7NWQt SStZSAp6N0h3OGhXV3ROSi11UHtkeiUtOSNFS2tKYyMjJk1SLWlSblgtLWxESDs/MUY0RjZ3Q21m U2pIN2VndkA1PXZqTkgKekYwPnRrPTtZWXMhY3FGUjR8UmlkeDZRTTtCUDVEPTM2PG1eaXxLdj42 RihNNHNrdktidmNHPntKSmt+eE18UDA+CnpGK2teanNeQUllbWFDK2dtKntVVVVoSTRDSD9qY15n Vjk9SjdiRzRVcSExJFNBWiMpaGxmXyZXeChGZmdnIypwZgp6P0JvUkBvd1BPNnpgZGdUTzh4YGJs Xl8pdiV0ZjlXRVZLdyNnXzNecTBZNz05ZTwpKil3b2FAO2pXblhZS0RtYnoKem9NNDJzWU0kbyM1 XipeUXVAVzkoIVZfZ0VrPUFqV0hsNndZOTFnJD5WKzQkIXckTSlvM2lPaE1RNk1gdm5VKTRKCnph YCUmcmBPTmBaLWBJWDUyQXlSZCF7eDheX2NubEpVNWgobXd0cE5iN1RsR2QoWj4+ayErVDAhKiNr aVIhfXJ4Ywp6ZDhwZkcrVWJeVzAxPlorOUV6bzNmRXs0QGl6SUEkaFNEbnE9ekdUcm5nTT9xM3RO Z3FmSD1eSHw5NnkyZzU1ISEKenJLYDAwZ1JSM1lFZShQPGtYMyhgcXMtJG5oYjhJTSRtV2V0aG5F X3t0RWgrRV95YlJvcmUtPWNzQXV7R1dBNVdzCno0T1QrYWxgZXJrYEhmKlZ1NmRUJWo8Rj1JXkEy bDhmO3g9Tjh4fT1aJShNPDQrPiRuYzQ7Y3QhP3pJdHMzUkY9eQp6a3FqaUU7TDlVWG04aERGS3ZT ZXFSSns8VnsjKVR8eGplbF91UWJ5JW1sNjNIVU1jZXwwSDFSTEpYY20yOVYxeTEKems1TTUlZFNt MGZfaUUqR1MpTWlzK3czLXdoRSRiQnsyM24mT3d6SCYkIVphWlUlPXh3IWBPJSp1KV9zNCF9QFdk CnozPSN3TXUjP0lhcEp3UyhtO2chKFVVJnFhOHM2fnswT1UwbTtjWlM3UXBJZDhpfWZ1NUY5WWsq O1ItdmxGalpvYQp6VVpkOD0/dzNKVDYta3o/bWt9ZCFfKFpVdGE1cC1MellPKEwjJiRaenlPSXlN azllZGUzRnNTdU1QYElVP3I0Sz0KekRwJUxOSU1jJjxBN0c9VVJ0WFBHU002S3poQ2pZQ0ktQ1Jh JU89T2B7WVN0ciRVV3ZIayNDPUdecDMqalN6az5ECnopRigwKXRaWiFDeW5WaypuMEgoakp3bj1V QnFLS2wofkVKPz8/SilpVHx4c0ZRQ2lQY3FDe2NHJXhrP0hkPjw8JAp6biRPbjdqVU9oXztQYzNA YUU4ejBDYGhPLWNEQz0pa1dDWVZhbk10QTRabHlkLX4hb1ojJTRmQHttVD8taS09JiYKenokZWdF dkxmSnk7bT1CLV9oKiFEN0NIPlVZJiRfVHFZX30hTSZ0dF5yYGooYWBKaEtrWDg/ND01bzJBeypl VElACnp7Jk9zRU1ZMz1DIS0+Nkh6LUpNK2d0NFcybTlxI1NYTGw5dzEte2gjaElIPmU1IzJFaVla UyRrTjE/e3c+M1RqUQp6MGwhX003bFooKWc3fWRpM2Y4X1E1OXp0KTFTVHszVkVGN0xgTTAoeyRS RG49UnN6Xml0O1QrU2V+MnBuMWs/U0gKemcqPDs4PjlteV4+Z3JJP0w+Yy1BTzFodTxBMkJiPVcp XjN4amx6a1p6MS11O295PUVQaygtLT5GP2wqWEA+d2I2CnpiJExpQlYzaUc8O3MmYjJWQl4+Kipt WlB7ezghZEctNz1GPEY4cD5jPGtpNUFwZWZpWkE3SXxrZURPPFFxQWtFNgp6d0VVPTw+Y2x9M3JQ NkdMKVFqe3gzP0YrV15RJTlQYzZaYiVfUm9FUS1GbGBYZXkqM0pOS3djRXh6Q1krZTtGbDIKeiFn RSMtMEZSNmlEKCVOWllsWWgrKEYrZU93RmEpeD9NP2tRbnc/d1RBVHZXJF4+Y0ZHe3lUKy1TVUJi NHgoLWYmCnpXSjYxeFgkaC15cnBMWDs2ZFE1Uz1KMHpmb0tuNEZhMi1lOVlEO0pNRncpbDcpVF54 XjlBNHFNaDZuaXJLaXRRdwp6Kkp4bUokZz41R2hUNGAzai0/NSNFKUxNSyZ+VE9VPzdGJnt1aS0w dSZ6WHMlKXduOzsyUENuSyRvZGEmJFUxX3sKejJtYkMmJXhgcUMtclIoM0N6e3MtSVdGKX1wRTsy fkxyTnUxWkdge01RYiFpNEwrJkU7d0I3c0k1OFNRXz9KPVVgCnpZXjszZ0BBKTB5a1VGMz5YYFdU ZGVAOUA3SU9CcVJSJl9BPUQ9QGBAcShkRXJebHNUfWVjSjklZSZCRFU7SjIpQQp6cWpFYmVGdD9F NjtnYXwwP2BpT1QhcEE/bz9mbn47X1Y9SH5USD8/bD53d1NQKzZvR3FmdTZlaG9TSURjWE1jSyUK ejAkMl5hX0Q+ZkFaPjw8UTdQKGBIbEE/NTdmUEwlUmB9flFuR3psPmkkZUN9Yig9SHlra3dLYmoh MGI9NV5heWpSCnpROSQmYGpMKVV1dzJ4VStsQ1NCK1VXZjFkKEIqeWRacD1PeW1tdWF7cll1ejYk U0Z5IUN+ZTZyR3hpbyFlQlMyMQp6d3FqdDZQTmlYKXQrc1BJVSlVWH5hVUB3M0xuNkpDYn03VHJl JjA3MU1GZUBiXihebGw9amVPaDVCK1pAIzUmPzQKent8b19xcFFPMkBYUnEpUG4xJDc+ciV1NHEl R0d1I0x2UD9AZHl5TjwtQVI8VkQrRm8lIXRpKFRUV0BINGRwbmxtCnorZFhVLV84cT17SHJ+TCRs T2kmdisyMT4jPG5ESFFfI0dGRSFpVkIxaDhsOFhKVXspJktNeV4/SFZaSXA/SnNGKwp6NHJ+aFNY RUUpQmxWOUhOMDFSdm5AUComI24jME9CIz5WRzNkbzh8VmNYZFIqbGlgPFNQZiYoTVhTbWhnOD0y blUKemZqJCFwVVp3ciFUPDxnRmd9JGZfXmA5NHdnbXNoWHg0I0BFaSt6RlBifSRSMlRNcSs7SmI8 bjd7YGMydHNUUUlHCnpwTWt7PnBTPCZOVFM2ZHFoNl41Wlk8fmo8RmZCWSNuaiZ3PyYmXyp9KV9Q Mz1qIUh5OFhsYiN8SFU5P0sjUkpTYwp6bS08aSlXPmU3UVlRTCZxSFFZM3NabTZyLVo4O3pKYXVm VlhZNDV8S0F1fk1lQktmaEluUTBHVEdGfTVMWGchd3MKekxIJnZSYStIRUxrRXNOMGhJbz11YyZ3 M0BIRmEhPT47fFlGP3dEXmE/SkhzMiFDbDtKRU8ofWtEI1lSWU4+UnFiCnojcHp4KGJSVEpvaVhP KCNMU0hyKWVTXmomPF4zSm0wSVVuVUdaalV9KnYoRFFJbEgxbUF1eXdPPiNVYCVtcygoLQp6TlU0 RUshYWxgbyYld295TVhTSWlMMiRJe3doOyNFWWxqOEMtQUNIP0lASUxrPG5WeXdYeiNHYklSdDRO Z1I4RjgKemg3WFNmNF9pQzRGalBfQWVXUUpWZHReUENvS1pNbCt2aUJaKztCa0AmMXNxWWVndDNP QlFKS2BJYXV0aCpCTnpTCnpVdFgrNG5lTlRpMCtJbm5LJGpaPnJ+X1VET281NjFtMUxyellaNT54 bFBBcHM7P2B7SSQpWUVuZkxISEpDPCl0Wgp6c1BDPUdPb2lxQjdTUlB6U0dodS04c3U3NEh0aEYj aThwVVF0PnRKPUw8LT5YTmRvYW4mbEUhdVQ0c1ozeTk8ZHIKekA0VWAtQC1BWl56bSoxWEwkLWJC VH5tZUt5akdpZWUtY2FIfEhzfjJNcGUwbVpLRGVXRFd5fGw1ZW18d2JjY2s1Cno1fFl3Tk5xMldp QmFOaGhoOyg7JWhqZkU8ciE7KFg7b2tjXy19IVpab25QLTVqNktITURyLUlTZERmaXdlYnQ/bAp6 VzQpRD0tMj4je0U1TilKZDIoWEFJYlVEPD0qaTJqZE04QD4/VDN2eWlySGllNk0pRmVreGI5bURq cT89eTJSbHMKeiteYmdGSj9IKTs4VC1sUXE/eFFLZWFVTTg0X0lXSW9SYFVydHF4RDBpNDs2MlQ5 Qm5rQyZ0e3JqNzBPZVJud3l6Cnp7VVpKQD5PQiY8Xm4mTkFfcHxCeDFOZ2JWOHpkZ1J1RUZpLSMj e14mdU54dUt3e21HVkNpdWtwSzRfSkU8Pk9yVAp6V2IrKTMkN316I0ZKODUyO2Z6SlpyZG56cDlV VlBqJX5xZ3k9SzxHWEUhbl95IXlNKU9MfENRckJ7REwtSkg+cz0KemNvV2RORlVfV3ZPdmR3UWBK R1E5UDtqVj9DYyhiRlFxcyQkaH4rTj9NOHdpUChYPjxeKk18WFhQVUM4WlFvR2FUCnpTJUJISlpi bF5OMGB8c0BgSDwpPVZfM21WXnVpem4jO2B0bFhfVGdqeVchYWN7LSpUdD9yZTJ3Vz4lSlFfVHQ1 UQp6cyFEcE5sNmJ4SVgoa1hWT2NPYi0/PmZBRT80SUpabUxORGJjR1VNLT41PXtOeDhGJWBDQVBX eVleIzNIJXxQYmIKemYtNldTI1BaTz5aSTs3cWw5bmpqWUphT2JrV15gWG83KWg7NnJgZTNKWGpM KT9SP2NLdHo9Jl8lWUxxUlZSbVhCCnpyXyFYcGZ+KXIxKDlvYkpPc35VQmZrcFhAJWd8WWZZfiRV Qm4mV1ZFNW5KMWslYTdIekxffSYjOS18YUlaOz5pcgp6ay1qZiVfeHAke3Bvd2ViTC1TX3V6OWpS LUphQWpfc0VUQjJnSG1rKlFkfmh8a01MUW1DTlJCeWlISVBWaiQ/fVgKelI4VEVXS0FPeTlIXkxI OVFkcVQmTzJsVlc2aXhUO18wMTMqQSVMQ1IrTis1eFl7MjBUSTExK2FyPGomaUwzczIlCnp6PGJG cXhSVk1qbEdjQnczX2xVTmxPR2khZ2I9YikoeGU3Si1Cay0zRT1AdnhVVXJmP0IqYFNjbCotM0dY IUNBQQp6RURWYn43RWhyOHR4aTtLTEN3fTF5Wlk1d2paN2V1e3tyeTg3SGNrUWI9QWwjdENsQDZF O3t8eHkySUoqRkMkZnYKemNgM1oyZCMtRFpCU2xXcSlrfHdPblF5TH5EYjxMdXg1ZXl3WXNRJTdZ bVpLbGp4KXZkKVQkM2dxRV5lSWN3ZSptCnp8QjxzYV50ZWpxSjhZdmx4fmVoNVI7ZnUhdkxBUiQj Rn5+fmNYOGYoKUJ6bmh4eDNDaUl5eyFROShhezRTOztaPgp6VmNIUFRwISM/OCMmUyljI2AwOyk+ N1I4Q15rR315Xms/QDM1aU5BaiU0VEtDektoZi1ZKjRJRmhMVCVeKkdrZkwKej84bSVXTlBkYlRh OGh5SUtxWCZMWEh1MnFWdF5xPGkkfGxEYVA/dVVFJDhURF4zQks3d0h0Kjc9YTFae0l9fmc/Cno9 ZHN3Vzcoe3MweGx3ckZwelRUcFRYRXtkRzZSbEskUiVxY3RYO019eCVJZF5eUG40Jk8/KXw9YylS YSRfaUdvKAp6QWZFdmx5byRWNW0xWCk+UThWM0NiVllaKTl0WD4lJnZWaTk3andfaU5sfVVDSH59 bDItSHhlVUhDTX1PZj1nPUcKekdKT0RBcD44bGlfYWgpSU5BbEVPSlRBUT93ZHJHWjRvTC1TZk5j VHNvMyk9UmckMHxJQXpgVFJFajJ5dDROUG47CnpeSVN1NWJwXzRJXlFtMjI9ZztFOHdQSU1jR3JN b31FZ35AJT5RJlpjWnEqOyFiRXljVi11UlBEZEBuRnZDPSsyUwp6YnBGfUxgYGd4T3VpOFdVJiE2 JjwoejgmdV4jYnskUU80RX1IIVRTeDF5ezAxRWRkemFjOyNPe29fQChYPk5HYzsKemNXOVlFblQl RGFvam5eVjVoWFRPcWZ5JSRySzR9YFBvZHl7SUxCbG1PR1p5aDkyQEo5PmFLUWNfZTw+SntFOHE7 CnpNa3lySU9mRCk/XnA1ZStqSGtEXkdXXlR5a0creXB6Unhkb2M2ek9rK0FWcXs2dl5VKGltejVX JXFNI0tSeW4oZgp6Jm1LaUJmVmc5NF5haFJqdDBSPTBjTn11RE9zV2pMQmwxV05efTchRUlkJUF+ VnZ8bEVaRDE3PDY0PCgtUjVtejkKejc3YEgzI3t8JVFuZCZgcD1obnhaOF8xK0tufXA0Rz53PFRZ ZlZ6eUpUSkN6ViR2Uj5fYFhmP0RFWD9WJFV4Vlk1CnpmVVhqND83dnc2TWM3UlZNbC1mUHtwKnh7 WXFyQnVsZzBXME54LWFvMU9gKWYwfVlPeTJ7fnt4KDRhNTNzPzhOIQp6SUp3K0o3Kjw9YVYmP3JL MDNnRkRzRmYjYkM+YXpxbzclJElBTWVmbU4tKHkqNnxMK2tDd09kYWI4d1lxbWdgKk4Kekc4Snhw TU9eeXMrVCtyb3JqOW9NPExQOEByYUpiMyN0U3ZKR3F7fFlPUD1iTD5qbmpQP0hhd1UrMlZ3a0lx IXcxCnolakUzN1UtTDYlYjhTdkYpK0Bibm1ZVExUVyNtdSVfTSYxVXp5RG0wRjNHN3BXRnZWaTxh cFMrOCF4LU5eIUt7LQp6dTU8WSo3ZDN+QDxIWEI5azRLNmRoO01sLS1FSnNwdF95b1JPWHAqb2Na VSohenItMnZsYj9weSVrOSt+cnxuRXYKel9nfm4zaz15KyRITVRNYFFlWn19NT5XcG9WWWZnN1JT PElvUkJCP0ZhTjJEUFYlVV51aVp8WWZYdDxGb2Z5SSpyCno/bCtlVDZ7YyNCTVFQeFVGVkFiUWs5 eTBnU2IjTXQ9VXJ+QmYyLUkmc1RIdmUxRnI4MlVDejdmaVhSaHdZQTtxbgp6fEVQb3BGVFFVWE91 JnBePWgzdkNocUg4Z3lxQSUkeGBMI1ZFYG02Pl9EJSlpMzJgVyl1d1o8QDFRTWpDWUt9OyMKemg5 aFZCMURCJXg/aE11RTB7d0I1TU0oOCFHfk80ZEpBdFZadEMqS25iKEtuekt+WDFwe08wWU5ObEtw LS1zdEc3CnpIUHxNWD9HMV9UKXpwPX4lKHFTb3NhWkdTd3Z1ISljOVZIYmJFN3QzUWFXKkMoQSZV Jl8xLWpZSlZ2M3dSZCh1Ugp6OGVaLTYrJilMR0FkXjk+Tihuei1lUn5gVVZjaD0xX2dWKWpUUnUm Tj9kKy19YHgteTVYQ0ckIzhKWTZDRz8/RSsKeks8OTBhRklmKnVqeTswTV9RUFgldi1IPVF0ZnYr VXZlWS17dHB7OzlkKHotYEdvNV5UM1BSMjZKJWpOIWM4cUxxCnpAQjdQMG5ubWpPSCYpYiVLKkxv Ql5BO2ElPHJjeWkwejE0THAjNVAyNmt7PldxVjY0WTNkKVJfP2tKalZlNi0heQp6KEcyTV5vfHxM X0VfbyNaJm1oYyotV1JVSi0oSnpwMjdWdzclRF45TW50c3ZqRWlDaDNRT1gtPWdFVV5wRn1hT0cK emlrZEshRj1VOStOXiN6K0ZyMWc3eDV5aTZ0emI5Wj90bE5vaW17bUY9MVdQfWFaMndYJUpHMkk3 eUZyQmt9dDJjCnpTTjlLJW8kTnZCRG51Ny02fEd5bHlMPmo2SDU+KSZuPlFtbHQzKyZUKWo0MUdt T0g4KG5iZ1F9OUZxM1ghKj1KUwp6MyR8RkxPdj53JjMrZ1dnakt8aVFvY3tROVgzMmtpRkpZZE9A LUBoNHhiQi1ZZiNiO3dAIW0mVzQleX49TnBeMnkKeiFicVI9ZExHTH5wcmledXdXRHY3YHBnI2Rx Mz4mOSYpRVZXYEY2dk5oJm5xNzZTRkpKI0speV5iYG00dlhfMCN7CnpCfnF2PEYwenBUTDMha05X VkxScXpmPTd4Xz1mZiR3Z3lAN2pVIVFYTl90IXp0eSUrWHsrNVl6JGpJUnJhdjhNNgp6RUZzNTdt fXRpYmomcS1CUXNSJVJWKG1FY0FePW5INzIyfnNsPHQjd1Y8cmM2KGstM2BBe0JQRDs3PU1CJlZe N2gKelhnSFNNbEx0MUpzeWMtNFJtdzt8Vkthbmg/RU50NmBGOGsjbnxiTEdJaHUtKGUkdng2e2dZ JXlkVkBpMT8oRDJLCnpwMm9IaitOMGp3Izsla3JlQFFpNClUaEVEPEU5WnI9N3FNWDQ4bF9pQzFT P0xIbTFDMTZVdVQjMCNiPX5Qe3ZsZAp6PihffWYhTGVwOHZwclhpZDhkSjYjKHFESDQ2JlhvWVJe QSRAR0h5TDVXbjVjTCZVPzVkWnpFdV5iO35+PHRUJlUKenl3OEthVkgtV1ZgN2x5bnkqJEReUjlE bWM4QVh4JVF3e3FaeUwyVkpBWTBxO1gjMVVNSFVIM2FBP0w+fkBCTWVrCno9LSl8cVJNbGEpYiRV dzYrXl4lU1NXaz1QYUFHRGc/M3BNejl3fGcoRCVYJjtUJjB8RWdabjwlJVImYmY4JTIrVgp6O3dj VlA1ZHNHd1pGbWBYb2IhJk4kXzRMcCFXVlZSMTw0a0NheTJSb2JtWW04ZHx5WmxyMyQjNmFKJW5R Xjc1XlIKelNIKSpeSSh1Y094fnV5PVNxYDtCYUZsWmViODg+TiVgPHllOFQzZlpKQ2IwSUJoak98 WjxNKG5fakFAdlZ3IWQ1Cno3SHFVTnkoJjQjYUM2TUV2QSpmQm9fV1A3NzNWK3JkakMpUGhpMS0m OV9+dCtzNip9TD9qVGh1Sjh5Tlh4b1liZgp6c3tFRGprKHdYeCF0a3NvdmhIdytvTkxPWV5QbEQ+ ZT5CYEhWSTI4Wnt1UTUmaH42V3dNVDE7MURXOzN4emZ3XkIKeiVQLXt+bTQjYnwoQT1gPEZJaXVu OGwxQHkzRj5+ZjwjTVJhbGFgRlRXNHNpN291dzJwbz9+fXZDR3leOEo4Z0hzCnpPS0AjaGFjZVk9 cmVLP0g/KDJJLU1UNXstZkEqZlAqaSsoX3YoPyY8aXpzRnZ0MkxCclktTVhvZEIkUURfQmA2Ugp6 LWZmSGg5SkxPPXNeJFQqaXU8KzM1KDhpajYzI1k2Mlpvem4yRG90JV5NNTZMN0AkRUMkaTF2NT4q PXVDOzNxbXUKeihQTTlWa15hQy0oNUNDYkhreFV1KlhtVEFsVEdscThObCExentRNmw0LWtCRzs+ RDVsOVBxMDIoWVhNcFBKe15NCnpJZThFTiFeJSZGREFqOGYjfigrSW5ZJnNtdndKSFEqTHlNdz1W QEE8KnshTThHYH1kKzd4Y3k3YENlfT8yZHVWKgp6UX0rfStKSTxWPENGdEpJa2MoaDVLZElOOWtn R09XRWRNZjZtPVhQRWZpQmV8QnJkJGNQMTVBcVokJG8mRTBOKEEKenV9cUBreV95OFViO3FaX00o UiQ/RHs8ZF5YZHpEUlRBNmc1c0BKVXRHalV3MkgtfnZ3MVhjYl9OUW08KUthUmheCnp0TjszTmEo fHdQI3JuaCFUamZ4OCh7NHZ7YkdTRDJgaDFMcCRvYGFfP2NEY0lpM155UihYaHxScmVrVD90PWNI Zwp6KFhKOV90Z1pFSUhMMEQjIz4xZV5WVlV3QWB7T1RnKHB5dHR1SHI5bTdDb2Q0YXgmcE42Uj0q OSlRcks8ZVBQeEEKeiUmYjk2R0ZYc24xdU4tfFdtV3F4Z3VQQjtiS1MxaVlvRnRqU2lHY3dfVlRq VyliP0lfP089O2RFV3QrV3goZj1+CnpyK3toZE5KZDArfEtqfFpRYC1BJHJHdyMlQSUtTjRHczU+ dVloPX1SN2Z4JiZleW5WbnBKZGU8dCFtcTEwXj5AJAp6S2J6TWpXaWpzdmR2ZyhSUW9ZY3UqcV9g clNrLUBAJV48YWBzZUNwMjs/ezlrJmNGN0x7b1pVYWtxZDIlKHJmSEYKek1UJiRlJDJPK3ZifShx ezFARl5kTSU9I24zVSNgMUxSeDZRdiFaYFJGMiZXWDNqKzQ2Y0xUUyFZOz1YJmR+Q1QoCnpOKEFi bWQ5dTVCI2FDfngkO3gpODtMbC1wUFA9aldHeHBVN0dFJGJHV1AkUzBSdTF8SmtMfU5IM0BQdjJQ eCM4egp6b2hAeGpDWE9QMnZ5bThhZCUoYVZheHNLaXo0ZHl2a2BzXkJFVD8wb3ZreX58JSlmazZU NUhmaClvZnhfNmpsN3IKenNxfUc+TmQzQnUqRWReb280ZSRjPD5PST03RG52NDZQbGBfc152YSFK Mn1YeFd0cjUpaGk8I0t7RjxmOzRMOTduCnpMOzdfKW80TTl9IXR8VUc1aClAc0JNfjhnP0hPd3t2 eD5PPGh3N00lTz49JjdGIz9OKVVeX2tTMkdfK3krNCFqIQp6diEkbnRUUlhSTXAwQj5Wcmx9NVFa PGhWVkZtVzxgKj8/NDYmZkxScVVIeHYme1ZYR3piV3xLV1N4NGc0ZWpHTWEKej9nT19zcTJZQlU/ QDE0PTdneU0leWcjTnFtKjkwWSpXUWtKdERyQ29PKUFCITs8MFFpV0kyWl5OdiNsMld2OzJoCnph RVdiXjtrcHs0Pzlia09JMWNaOSo0a2V4RCkoWTgqTSp7c1paLXYlWXJ2aj1zQSt+UXVob19YLVp8 VUxAQnpGIwp6KGt+PClPeW9CWDlrKj1rK2RiUmkkQEhTckFyWmZyYFEoNHIkbHBkd0xBenNMXk00 JFhyZ30hKGFjVmx9Zkg8QCoKenc5dmZHRnZ3dE4jJHhFc0hOU3QyRn1eZnRSYGhjQXpJQnRRMGY1 fD1BJmJuWiVDSyQ1aypRJSZxdCV+TWcmT3NiCnpHJmp7fmpxaXIoJWhuOE11M0lwWG1Vdnp9KnFt aSt1YDFNSGtkak5eTiFvLUgpJiFzeUBWKG9iJGZmJXtQP0MwaAp6Pzh3SWdqWjt4YHg+JTNHeU45 M0JCdyt8JV9iKzhmeTNxQi1hTn1SXntSQ1M+bGg3MXwkeyM/c3l8JDUrYXk2eFkKelA4OFRjK1Qx NjBFdXFgIzJATUREM0crfEBncCpEVUtINndAd3ZtIyNfUDdBdmpXX05zMnt5fW0/U25qJnFWX2wq CnpJNT58cGlOOW9wcjZhJXZUVkxwZnZ8PClIRnBeTHc3Qip1IzJofHIhQ0o9JCYhJUF0bkdXWnlt PmJhPjI2OVUoZAp6MFl1YiM3PUR4SGlHbiorQUdmVUN3OWJmSyhpd01FYSl3a093RXg+Q2EpX2hD M2tKVFNRciVOfSE3ZkQkVkZuKEoKenBUJCsoOWRwRkd2QWF2MGorSnhOczVIPHw7MylIQU93c1NM TmhXeUo3S0hBRkkmTW8wZmtjOTk1LUk4RHctTz5iCnpAZzI/SEpiayRuS2gqbCYpVTBZfTdTXj1Q TEl9MU9LZkN8TVQpbik+QS11VVJNY3I7PTlJcT9CJDU8OEM2bjx9Pwp6PGV2Jj5xckcqMTgjMlU0 ZXFBK3JGejM/fGBuM3YhRitjS0l1dFV7Mm5KYj4wRkdxNGVDNGtKbFNhMVVFJipuZWkKenh6R0ND O0pVdklTJSQ5dCh3R2NCdnhodzQkWGpuMUwwKCN+WUFqMFM5MCUmWHY+IU51SngrMHIzb1JJSXhP ZDsmCnotRih3LSRLamV0cThFPGtEMUhiODE3czgrXnsqaWRQP1dsKihmeDwjamxNKHNQdUxubyNL Pz01OCFfSm56SnROfQp6VWRZc01FempQRVR+blF4OU9mRXBNSmRMKkgrMj4hQzFCaitkcVA/V2Ri MVBLODB1TyN5VTFeXmtINSl6Smt4MWAKenhxI0hsTz01UFlOO3s5JEhBUF5iOWJrUlBAUiZFaVF9 ODxVM0Feb1pgQ1JZflVHVj5mclVxdk10VkUmUyszeEhJCnopRyhPeHpfd0hoej58Sn41Q1EhTHZs JExCQyZfJHZAKGRqUyRDJH1HRXl7USZkYG0zTCUhPVBibHlkUE0kNDlUeAp6R35DcG5fbFBlcEpV fiZPSjxGTWJvLUttdHlwMEMhLUhofEFTOE84MyVfTT57SCtFYTJSYGZVZVR3Q0VvJDkqdWsKejdn cXFEQENIUCFicGFHfFBKZGpAOFJKaUdFVXJoUnFgME5QaDhJQU1FfWZUTnVgcUZqIVg2ZV4zUXQ8 KVNyO3BlCnpLUW1URzt9K2tyNX1+cDtTazhKPTN9Q3JMcSM8Vz4tWmZfbSpMUTJpJXo8UTYzd2hY NGU9K1J7cCN9dDMmWn44NQp6ZjViN0g/I2hvOHMzOXZBZSNqS1RlYHluQlI/c2RBYTxZfkl5U09m ZWQwfUNEeTVfbFBFb0h1MGdTVmMrVSkwPCQKeiRnfE1FMTk9Ryk7fnhSJVAtMSQpPHxieChXJCVq MEteYGBhMHdScSUqVFEkVEEwTXctUm96X282cVF4Q0g+MWlfCnp3RmVYUXpFamJCMkZtclotP1Bn bWtwR0FXT3NzPWYqUm0lP1pYbUBrNkEpeDBnJSpOMllOZyk9cHRuOHJnJlYqMQp6SFcwfGVLNCs2 Xkk5b09nKz9xWiQ+cUl7T2VvVXNudXc3QHwyWCRYI25DJlRZV2g5d2Q8Zl5gYVZPdWpfUSZSUzEK emQpKTMoZHZNRH5WT01OdVY5KjFRRUByQEFtTS0+Tmc3QiRXKDdRXiFqLWgpN198PmpyY3UhUD5h ZkhkWERWR3A4CnpVVTY1Syh4anxYZVA1PyEmZGBnbXNhZm5FcmlAVUZjK1E0KWMwcmVVPjsrWi03 YXFaI2Y0TU1sPU0zTiowdmtVPQp6RD08NjJ6MSFZXktESFJvT01zYTsxVEkhXmgoSklZJS1HT3l1 fH1MQTs4dFRnVFAzZXZZMGR+XkNtVDVNNF47fUAKeig/Wj0mQkt3a2dSa1kwYDUpPGlldUZtM01m RH0qLVdNQVpJUkxYNXQjU0p0O0VyYyNscVRafH4qJGhWaGUzeHF5Cnp1bmJfbjJvVDhGMyg5KiZV PEBnLVMoayRtJHl1VFM9cCM5Ykd7VHBJZl9MdSRSNi1MJl9pbkAkTXIrfDZmPCVIfAp6KEVISDRJ aUUjZDJvNGdjR1VgbEFzSWx6NzBrI1QqZmgxWiRqWkk5PGVTNHJvTi0mIUdtbE9iNzZFQj4wfEx5 cHMKejRyXk4la0FRJHl5QipMaHZOO347PGgpSnlLR35nNyhRLVJ8aGNeTH4+KWkhJndKUi1YJStY TWZZeCMlaEJ0SHRICnorenkoTj5ePXk5b1dhZUp0WUQ9YWc7JVhaUVhuP1dLajwhJGJNODRYS0lQ KHZxcW9+bFhsN3E5WHgxcCojNEBOKwp6UFExNFgxI3UzajxLIW9NYX5kNmhYSEFCUzF8YjczeUdy RDJKZzZZNXc3U2U+PylBLUVnVm1sR0x+M19jQ1lKblIKenorVmZlMEFmMXwyb3Y2MyRGVGtMZ2F4 NihPZV5FNmZkWDFeIVNiQTE1YHA/NTxEbWMxQX5tTWMwdUt6TCY1RChrCnpSYm4zSypTK09BI3Fn QVUwQVNyeVg4YkV0cXRnNnxkLXQ9cmpTVyZOeURFXzgzNzkhZEpzSC1mWC1GYDxfOzFYUQp6M0B4 cVJxSUd5RXF9fjk4P2cxZm0+fUcmYU1Ob3ojJCNgVGR3RD5sZ0xlJEA9NkdDK1g+P188TDFtYV5+ SlpudWoKejdnKEhQYl4wTnV3ZzZFSDdeMiZvITE0Q1llZDd4dzZEVmpGZCVHNTkjTigmNVRAUFI3 ZkcjNU83UXAyOFBUKGAhCnpNdSQ1ViFSdl9LdTY/IVcwZGM4eDdJbGFJcWdIeEJTWD1AbUhaeHxH SVp+dThYb3ZwbzVjRC0/VTtXQH5vcz4kSQp6MFd0cytDdSltfWB9WlpYT0JkN356MjNGZGAzWGxG MVFSOFFobSsreSR0THI+K2lTUW8kOCt+PnclZUpNdVolfCoKeiUwXkpjaTRQS0BYfktWU2ApOV50 biZKbkx1WkF0S2M5TFhsbm9mJml6KUZqSWlIS2hrakMreTRBdT4hI0tpKHd0Cno4VShhUXw4R29f RHkhY2VJWFR3PXVOJVlTNkpPQSVGbj1mUDdwVWNOYklObEclaCR7VnpCS0UqbzNxfSV4bXJZZwp6 X2BxfEpxP1N3TjdFKGo9Q01Dfl9sSSVOVGtzUVM0MWFsQUVtfk8hSUdZSDtZbSUwTFIjej9ofDtq WkglVmUwbyYKem8+R3l0MllNcHIhNTVlcV8jdEsqbHtwdkN0ODxASEY4alFjfEVPUlF4aDhAYCZn TTQhP35ibT1xLWR2R1JqLWBwCnpoaEs8cXYmO1p9JSQzTys2ZUt6JlpYTmRQJHErUUBZTE53Ullx eypRQyRxdHo7c1E3IVJkODBVZlV2ZnFmaEpLNQp6ez4qV056SUlPMiQrdGpQTDhJUnBIV3RhZHds dTZ9SDE7IXc1OFVBekNKNDAkN3NGXlA0emleKF4qQm1YNDg0alIKekJqT35kYTN9dW1QeChAUjc8 TjJreExNPjU4SkkzYWBvQkxUMkw1WVhoPmspKTxMQihTMllwK0Z7b3ZFPjl8NGNZCnpDcmt1KE1u K2pne007PnlFc2hjPHdVU0gqXilnOTxiRi08RVNIflQ2OXlYWH13dUNIbUwlQXg8cjBHPUdXeHdR cAp6cH5Mdz8tQHJITjdFfE9zaDtJZFk2MHxjR2NDVHN8VFhoekBNWjBraDhPfG4/MUYmXiRtTztr eFZjQXRSV1g8MG4KeilAQGUzYFMtclljcnF7Vm48YiRMaW5ucjVSeG0yfUh9YyVSPDM1fFV2NkY+ fT97SnN8Yld0KmpreCpVWkdwYjh8Cno8dUoyIzJQYjVPSEA1PmFpfStwPF4/VGRsUzhPMjF3O1ZV ayl3aHtxUih2ZlA8TlMxSU5eIWBgKThfKVp7bTM3awp6bG56TDdWcXU1bHdDYDgqOG1VJEBRcVJ1 flcyQ1c8UkhAezZIbEdAZzdEV08mTjBKeHEyVGk7N0BMfEFUbztEQ08KeigzKG0reHlpcHZ4OFc5 flpzTiFQRSpAZzRseWBDODY+K1ZiQ3FVMEkhalU2IUljXkRaO3lWaHNhSVp0TzlRKm4xCnp2V18z Jk55WiY4bFdpZExKJHZANXdPQTY5XnVhazU+RG1WQ20mJm9yRjZjTXshKHs2PkFzTiE5PHtIbkpm aHIpbQp6UElMPmg0U3pjbip8Zz1ScCZDZWxsUCltLXZhNUk2YDtRcWd3OSU+TDxuMj9hKSZkRmps ZVoyUSNGNW40QnNgKnkKelp5d34pNzx+VGhZaFV+cl82MiMxaSEyblNXODUqI0t8RHomUmlDfi1N RV4pbXd6MF8xanVfdW04K3QwKkwwRz1OCnpoSDA+QCtMQDJvbCo7WDVpezZScGRoSjl5cVQ1V2FK cEZxeFgqQj5XdnhudGNjcU9YZGh5N0RnTEp9U2Y0IXAoMwp6MFpvWTYjZz9ZU0luQWx1N1FCeSZ7 SCZ6Xnk+KmVFaDBFYSY2Ulh5IWViKWxHc0U0JGtqfChGWVA7cnJ0RyEwKFkKelpgUiQ7VGkwMWQm Yk4zVXZ3MnR1O0NGcjxJUCF0TUtkQD93WXlBN0FlKXskdFdePDlDXmxvbjFZRns+LSliNkhsCnpl RURPMnNpb2QqPjdMWXJHMzRVIzRiMTJDQSl6MFZWS3dnazQ+fkJwcCZ5JDYoYlFvLSRBQHc1JVAm aEt8TXxVXgp6NXM+eWZhPG59ZCE0MkUoaXBmRlVqaH4kbWB0LWcpQmxxJEZ7e1R0Tmt7SnJgKnlI djAxUl5nKEs7ND5gS0UmOHsKelYpJkFednxPcX1JS3hYQV5nJmVCX2BheTRNQSpeVmJgd29hZVYy V0hDR2BVU3hNbG40O2thbT5KeUFpTGIyP1VGCnpuQ3lNISs5Pm1YWTF1XkZKaH0lWGFlS0k0YDlQ ZGdzdnc2cWhfM0lqdUpHdVVhYX0rQ15VaTZEJFUxR3xnWi1rewp6aGdkdlp3S1B9cWJuT2NtTDBF fU1aRGEoKiZkRjhoRnZKSE0mdGp3RyVrbE1aZm4wPnNiaSt3T0EtckUtZz4qJUcKelpBOCo4eFJZ SUZzblJxOSpSJnFEOGBiR29KRHh7K1UmWHRAOCpINnZvRDJJZVlvOFFgISY/QzNObHwlbGFURDR7 Cnp4V0NLUTVQdHJjbWN9OSFxNEVPVF5XZkx0TWV+aD8kcVErMylBXz8wP3lFdHRALTE/biVne2ZI T3tsTyVne2BYKgp6a1ZjNjFlJEQhS29oUU5UUihEaWo0MV5Xa2FNO0smdCVRK04+QzFtI15NY290 WntYPGZfaktePz18RFZ6IUR0YkMKeiYoRExgeH1iTiV4U35EQ2hJZF5wNUZ8LUp5VDFZP2MqRy1y TEZDQktrQGFhITc0MnspVCs8dD8jQzszSWVeajsmCnopXyt3clUjSnBRSlZzeXRPVGBOPFE3cVA7 aTt8RS1hSmAwLUtqNjZoSHJMNFlPMiorOG45az9DU3NLWFkrIzhOPAp6Sl55Pns+M3t6Jmh1UVF+ N3s9UnxDekJKUTBLUmt1NEIpczl1dG1OTmxPIT5sWmZ6ZkFDZWdMNXs7Y0pgY2Ble3AKejlyTXYk I3xAbTZKc19nNkstK1Y9PFlSRTJUQi1RUnVVfWF9IUxJPEE+Yyk0Wld1IzgjbFNMR1I3Kn50UWNj NDFACnpWIWhnUGxWMXtsdWlsaFFUU1BlckdEcGVfVjEzTSl0VGRmY21AWUc/RG1OTVgweVl9fmlJ KWVWZFIjYikobnh+KQp6MCUxI2E/dnRJK2shZzJ3PC1KQ0huI3l6SjxNSC1vYnZnVHh2Z1hiRFAw V1FiIyhYbkk0QVh3WmVWNmRhQEgwWVYKeiVNaWlRPUE/X00hfSlyYlJSRmd9Z29IZHcwT2UzTHYk akBeISM8UFFiZWE1TkRve2ctS09VR0ZTdVphPy07ampXCnpoQ24lKHdUXlhxYT1ScSRmaDxiVz0y ckB8R19vR3x4NmtWVTMrUz1KaVRUQCUhQT5ePDNMeih1diVVJXZ5Sjl5cwp6ak1RcHViNU1tJVAx QnlBSD4qOXRROHVsSUg8YXdkKDhFYUB7fkYkWVgzbSUmbGNnJmNrZXA8cVJfKnVJJGYtNEEKeno9 aDtKMjUmYDRLQS1kaDRATzF3aXM1Q3xDLSlgcnNfdi0+LXwrKlNvajMrSD8wTlcocTdxazctO0pi O0I5Jkx2CnowZTdmMUs7PzdUc1hebHRQKXA2I2hqSFh6Yk8qU2Y1ZGhSbChXWCskNDxxcVglJiR5 Y2x8RDFHTm8zSGRrbEFpMwp6eW1RKkxPdWNWYDMxRUs2SFRObkkxdTZ3M2ZPZF5RIyNoc2goS2lJ Vi0oTV5tRjJzMmVpJT1odEAraiMlSjZ7ZkYKelVoJWxRTmA9TTNEfHswfWt1OX1ZNU9DVmVpcHZC bTF0Wm5mOHJ8eipac0UxUTFTKVdaZX1TUjZ6fj51OVdrajZfCnp2fVh+KFdHUVd1dEU1KDhuKmRV SCluSkJlcjxiM2BBN1NURmpsbjctUHx8KFI3ejRgQ1VLRS1uXjJia0o0d1YycAp6XjJiTHZQX3Vr Vk8zSz9yZFBHUmhaWmFBSD5YPmMtPWwoU0ZsJlpIX1h6O2RvMmFDQEpFWUNATlp9JEtudjt1PFEK enFrdkZzeUs4cFpydy0mNyhTZkFhWThkeWdAS2NGKWJEfVU2Iz9LM1c0ZCRvPUIrKkVRMVY7Vj5W QW9jYERJVFR4CnpoWDM2IXVVNjBzJn4lZDZncDN3eVl4QllaKHw5RFBhVjYoIT84K2FYWnZ2bTs5 KFozKEA+X3sqOWEjYD1zdTB5Kwp6JDc5YDNDSEBrPGlzRXMqcHZ2bkwqelcyakJIVG4hK1Z+bE0m Mj8kc1d1SEhwc3NkbG43ZDAqK0E7OyFkSmdAKGQKej8kXllgcEJsKEdZazkrUEVDRHl0T3gwcmps YkQ0LXlfLVljVDV8eVc+QTc5YEAyZUkzMjZAQFV2ekhwS19NIT9qCnpZZnVyJE5SaT8qUylGZXte YyVaTmU5aj5FSXRpKG5YeCVXYTdyRE1VQGdBc0VXNUVUZVQlUFMwMCojJkJPN0liQQp6ZmJ2UHZM dz5OYmlBekExMXghWXRfYWtqYS1iSzk7cGpGWWRpP04zKzIyQGBGPjFgXkgyb2w8a3dwQmFjMndR cDkKel9rZntyVm9yNFZAO25XVGBnYis8eUwyRXxJb2Z0KFFXIUt1LSR7UmZCbXVicns8SFUrSy0+ YGYhblNLRDJfMThVCnoodF52alYmM3VoPElUQytPNEwmNFRmZnh2XksoSH5ebm5mQHR3OEMmbjlr Y1M2Yjd9RHJeRnJ1ZTVwNX1WKk14eAp6WVBsKTdtRHplZS1rSHg4PUhWLXklVz9eOWgmWiNDWEQ3 ZWplNDM5WHZ0cUN+PWElO0JfekRkQjsjTX1KUXl8V3sKej5lWm5BYT41KnRjYkwtWFAwNipEQihx YkAqdWxTYTEodlRWXlJ9LXlCZi1wQHRWYjAqS3ppfTlIY1hecVRWXkdDCnpVM19aRlRxKVROPGlN QDlvc0E8dGRUWVV7RmxnVkJlKzg0ZmJoTCttUmhlKyheZUU2WjUyQilaYm1+TFE/YC09QQp6XnM8 RmxVN2h7KWhQPXxrYSRsMzQzSHwhIS1lSjYxbEp4e0MyPkpednhxMDQte1Z3fkspTGtDSnNlJEU0 b1gqZmMKej58dno+RTljZDZMNjxrK0JEbWRhOXJnenJmTz5RY3h7ZnorejlQb3NPPT45SHJCJnk2 aH1ISDtPISQzZmBkP2khCnpHOEFydSpjUmxoZFo+X2NCeHshJCR5YTwkOVEqQHpvWkhhUVRrdGdJ KnhhJHkzTGJTKW5TQWs9VDNGXjxgWmRncAp6fEQkQHE+I3xrbWs7N18/JTlmO0tIWmVRejtUTT05 SXY+dGFLP2tKOERITGspSXt+QFM+ZlA9Qi0zcksjI2hEO1gKeklRenc/PjF3Yl8xPkk/VmswQXt3 eyo1cD5qI2cyOGZiVW8pU3hkKyV1KztnfiMwczd7b2N+WSFUNXVWJTQrYDAtCno0Kz1ENnBXOX1B Q0JCJlQ3MytzQ08haG5kWG1ufUY3RSp3ZHtVYD50T1otKncyS3VKOSg8KXhgSCRJdmNZWENIdQp6 WHRMTkBicjJhIUNRb31BcWgkdVhmPHczMkRZaHk7MF95RF4oM30peCpxNlojQitEYyNHP3hXYmdS TmxOZUJjamcKenhEPlhMMno2aCNZSTx8OEtjflRWXyo/Uz9KJWR8bGdQeEdIVkFBJF5xfXErRXZE dksyUkQtOCtHem5kfVpJKGwzCnpWdU1ofU81PWRhRDFQNXhWKyNUODh6TjVLaDFxPGErSW43bzF8 O2d3MH1RQDJffXRJZDdicU9VR31QMkpoe24/OAp6SjIzNl9iYkA3dW5JPW5zcFM3allnSVBaVXQm TVNObk99YV5XOzEwbXUhe0xEKCZ6PER6Ky1hPkA8ajZBeXdHdW0KenBkYXNBbmo8aSF5OFRIMjt1 VnBKMldmTjE+d14+TWtIK3pJMVZ8SmlwdVFQQiU5R0srLUU9bGgjQmhJVyRoQUdJCnohdm5YQ2p5 Vy0rI3lpKWdeP1I4bD9mM3s3NWtDPUluUXBTZnxKejJoIXtuRGwhcEk+Rz0+JSlkdFA0QVJPTFg1 PAp6Y2w8a1ZmZk9Te04oYSVpWW5zbDFWZHJaNykhcGRXKWAxUFJ0PiNXWipKRU9pWHotck1ZcWRW ZnBWS2FXNkg8b0MKemIwPmAlRlNZbXEybSFNazN8OE9GOy1Mdj1CO2dAMDsjMVdte3tkdTd6WFhC MipWIXdLbHleKDxrP00/UnlGK1VMCnojKUtTMWo3JTl9NnBCVnp7QnwobWJRUDl0VHAtOzlGUjYt OVJJciUlc2JLZz5yQGQtRCNsX2F2OUY0QFItWWRVSAp6TEpZX0Q2Qlc7K0I5cFdpZWlFMDl2JCVv Z2BGbHBwZyE7bklOY14tfTVCfk5QaXg5eHpMKldzWm5tNiNudVhHVzQKejVGUmh6MHZ1ejUmTiZj WTxecSVZVD5zX2U3YVM9cjlMRCY7Zk47V3NWN1I2NU8/YUhXLXtGRTx7YWRPQDBmSm59Cno5QVkp I3FqUDhJb1FwbyFNZVgkRk1kcHc+I25mVmVaK28ldF98aVBWPD59K29XKVRzWGwwNHVAPVVhZWQy STxHJQp6KmNlfTVndllJO2EzanFPO25fJC07KDVMU0syM1RyIShSRXNZMSR7cXY1eFc9WklMRFc5 TTEtTUZwJVpfUExjQyQKempmVWAkSXBTamNMakhtRlVGITFCVy1ja3x7KVJSViQkND1Pb0opeiRS b0VfZkZoYWhNWEkpVmQpfjxJPCk0QjhVCnoxXnJkNWhvdkRVXklmQ0QhKFZAa0x8aUA/dFYzOT43 YWZkNnZ6OT43cSZnZmZ8NkJ8XmNWXkM4MDhjMT5pbkNTQAp6KClOaGopclBDJXkmSVVqa184WmV0 O2JlWVhtX0tPb3xfMEVUYWtqXzVyKEZeYFlHUGp0dnJsSDRDeS1UQkhrTCMKeipXa282Mjk5Rjla fVAzO0pPTj55N3I/VXE+XlgpcWdzJmoqYWA4fHc8ZCRPYyg/b3R1aW4tPjRLZkAzNigzKlpkCnpj OG5yUjhZNWF3PXE1WSQ2cks4ME1hcUJAPytqOHBjN0BnQVE2MEI3diYkNTk+SG87OFFZPW1haG8m TmA8NVRTTQp6Mjw0cG9HWDQhQyloREd0N09qTSYzLVFqOzFVRGk7enl1Wk1qbjB4cD57PldpO0hP WEl3PDE8REJLTkhrQ09ve24KemBBSl5YWT9ZVE4zeEorSjVyTmh9PjwweCZfMXc8IVBYWSFBcnB2 VzMwe01ebHlIM2ZPQk40KkIhLUxqdT4/SGNvCnpMY2VrQE94dS1AMkFfXjRzc3FFPFp6eWI4OGJ4 aSpLNzJZSExoK0tpUElqMGRIYiFGaigjcHlNWENOaHsjV0UmcAp6JEA7Q2Neb1hsTjVfJm9oR1hD cnQkYz5PQ0d8NWVWT2FRJW44VHhhZWpOVjMhcGgrcDA1R2ItR0NuYyUrQ0w4fHsKekFaajlWeWpj RFlSRD5BT1VoViN0c3h1SWU2PHlNWWtHVCNXSnA5MnNqcmowNiZmIX1KJWNoektGI0ZeQ3kzT3pw CnozblNAYTgqai00SFIzUm4ka3RuejVoX2BebjhOPlJxRVRaWnduI09RZW0ycmh7QXE4diUpO2VW Ni01fl8pMnx3Sgp6Zk08YSZTJmsjfkJWUUt0az5BRUVjRENAPDg0cW5VZ3FoWHJSLX4lTFl1e2VQ TTV6JFBLQWdFO01oSE5KeCpUJlMKenkyKChhaVRhfF5hdDRIOV4zWks4NCprPVUjNUZDb0V5UXRx U20wMV9vV0RSUz00a0YxQ3BOemcrQDdtRShHcn0mCnpraDhjfENhVmJhc2EpNkhCU3UkN1pZdmMk KkE/VnFLNXM8fk5QdTIxZEgrZ2k8YjM0NVdecXtXOXZHflRSO24rcAp6QDAxYHx1fnhUUGNaZy0p SVgobWEmeWBCVzQ9Uy02Tm5jV3tvOUQtY3FmeTN4SHtoQGs3ejlQXjttJiMyPlgkTD8KeiFPNCVt eXVgfWNtKW9rVmwmRnolRzFmajwpRUVgVktefldTZU5ASj17JCs+UkRWLXRrR0xvdzs+bVRkUEVS ZHEjCnpTI25KSEF8MDxlYSkpc3JTTCZPR3IkQzZ2XytOYTdieGQ5QHViVT51WnZBcDF3UVFWcWUt ZG99ZVZ+TmttIzh1Mgp6c1hVbHYhaiRTP3spZTMpcEB7OHQtUmE7fHwxQj4tUHFoZnpzazQjQXw2 MW48ZkpELT57NHlvPlB5Y2xRYGVxbTcKenpqWkxVczMxN2RqPElyZW5eTkFsYX1YM3EoNyVCPE5U dTxqYV9mR1JMZDVkNzthPmNLMC1QYjdkZUJvfGxOT2w+Cno4a3FRZTxFZDg2VWt3QXlTYVUkWkd3 VmArcnFsUjM+bzVJSzlCZDlJVFU+cT1hVjstT2JOK0BFNiFFdWomN2cpMQp6Y01AMjkwLWw5YnIl SVBZZEJiUTRfI2g4NW9lajV4Wjc8QVFBUChJT2E2OTtIYU9LTkpeIUtqZ0s3dztpZGFTTGAKelVT QTJvejZKLSNeSUpybGN9aHheN3BIfmw8KngtTkgxZ0hpJkVoVTMjSGdsX1ZIZihgN2xDRXU0WDk4 ezFeMWRrCnpOIV52O2V3dEIoPm1tNEQrPiRLKmNSKUBmQ15vJD5YdT5ZMyZPZWtJZ0dTSVYycUp6 Kk9He2hnZFNRTEBrez45Owp6eHF9K0RwSGd1X1BsUH1jXlNmKVJzc3omfl9xYHxgSmZaMip5YXdp Vy11VnloYmU9SzRPMTc3JDFvSmtuaVF2PFUKelFOenRUcGwhYC1KYTJDI2Nqa19DR0E/QGV4Nmdj UGRHZVBOblUkRWE7aHNMMVNUTWM2PEZLMilFWnlYQTIhdVl2Cnp2fGFRSmdvNjBvTzslUUZFSlM0 Z3Vxak9vRz5mX0NxS2d4R1lFK3c+bnsrM3QzR3FvdTN9OUN1YCVTZTgoWHFQIwp6S3pBayg7anA9 JEFCZF91S0hiRVNZSV5YYDlWaG5eMVlPJHpeeExDPVU3UjwzNnNLRWJRN3x6ejVMSVdzdWVMcksK elJlYU04cU1vZElBYzJPKTUkSUhJYC1mbSYhVWB4ZWcoNyVARW4qKjd5Ym9edW14RzlDaW9gbXdU TTRJcEAhfHo2CnpwKGhURXshcldMd31rbjtoVk5qfEVHNSkqMDdJYXxDS09Odyk5fWRrcEJ2YXwm bktefFZVRS1MQTEtaGx2QE5zfAp6WVEqb2RQSXFvVjNxYW5DSEdxYDZLX0t5bXdtPlh3MHM8UDEz UjlTenk5Y3o/bkU9V2tEYnlDKzFhYkVSaG9VPT8KejBpaz01R3xMXyE3OGgzajxoLXZnTnFWe1Mp T2Zyc3BgKkEyVj9uOW9AN3NYP2cyVDR8KV87X34zKTRFI0t+TGArCnpzJGshcCU2bHVuK2oxR1Jv Yy1XXmtTLWxVJXNLRjdkbVI0OzIkZEM/PlE1QV5fWnpNPGZ3PWR3O1ArYThWbFFaYAp6TWsjZDso V1V6U1hGMiYkJmVASkNYSWElZFg5QVRBd0hVJFJFJjArcnV3S3QkKWdud3heVFo0XmZKZjd4M2NF KT4Kek5AdGxUKktBRmM4N21VOGVGJWluMz09M3xoVFI0YTFWSnVVS29kNlNNNkszN0E0WFVaITBF e15Bd2dacTBvJF5VCnoxTlM9T1UteXBYM1c2KTEyUUQhYiRfekI/SEdMYGs4amEhemprSnAyZjJj dlAyI1pzSmhGVCVwS0FFSns0TEh9Wgp6R0p+JitCciYlaT92UW9faFNOTThmQEBNbGkwMlRKU09r QEk5STwob2FCcmBmcmwmI0lKJUk+WUUhWSMlek8menQKejdrdGZCY09hNlNuI3lVQkAoQElvenAw RmVtejApezB5TlJqZ1BBJmtKVlo7JFBYcGk0IVImfHA/VDRuTUxlOT9xCnpGeXNealpHMjBUWnYr eUxkamtGKjgoTld0M0IqMSNTSCR9O1l1MSRBV198ek8xOGNscyVIfS1LLTJ1fVFoMjhBTAp6NV4k IUdSbF9XWlM4WUZAajNZRnFEPyRScz9sfEpLJVQzPDdJWTBvbXtTKUJHUDZ3QShfc3UoT0Nub29S WndSQFQKel8zZ2gjVStSen5NVz9AQk5eJCQ2SG03Rj1aSUhibCpSWCZvY2tTKlhDQ0RPZ1o/M2sz LTZEYD11M2A8cnczTT5uCnpFY1FGOXk5bHRMdSVmVTwoMVA5a3FWaVAjazB0YShJQz0mPTdCMTNG dUtkMngzPHFRYEBuY3ZRSnF2aUZCaFo8awp6O2godHkpd2NEIylBfVpTTG44YTlFZk43T2JsPVh+ aDtiaER1MVlYWGh8VEhmMTEhSFAzdCRTRGZlUm85RlpVQT8Kek5EKUJUYDNGYDVNRztBZz1mMSVt NENUcElgaWMlbEZvbmFxIXU1ODM1Q0lrcXU8RVZBaDdhOWVZRmVOejchO2klCnpnMD17K3FufTRj Vldod2RJV3dISlVjJUtPQWR8dnooTm9jfHtuSHRNTVk7ZG44WXF+MGVjTFhpMiY0d0NFfVArQAp6 cXg0RVkkaVhxYGZwWXxTZ3MrdzZTanI4cVBCKit5SigyI3xsIVZ8VldTZGtEQntyJHxzOD1SaTJI V1BZYCFTM2MKejRRflRfVGJFcmJDJHM7YVRpX3wtVnVObzhaZDdUQE17UW40em5pX1RKMllGVXhN OzhCYGt6fTR5RHFkX2JuVTE1Cnp8RzxMfjZ5R1JGeUl8Nlo4cGw4OWk/MGBXe2IpJC0+QSRjNHp4 e2RlK29AeyljNnJ+UWdGbypUOSs2TXEta1duRwp6PnF0YTJqS05gKXs+JnZAKWFYO3cyPC1WdGJI cGxnVmNlQG45RUpsempsJThDOX4hfEVqS0FPWXA1d2xGRlp8d0QKekxYKCNJezwla3soSyVDeEAh SzhzbFcqM3FxfXtMY05SQ21OO2F1cGMxUkJiS3VAfSRYXiM9O24/QXczRlM3MkA9Cno9RUElS2FM cCVTbjZGblVzMWJAd14lQ1FSJiNFfG07JlpTQ0FQUCR5NTB7ZnZ4Rm4yOVZMVW0mS3paUzJKI2V0 Rwp6UHYoS0BCREUjRkxtb2grTDErJCRiKT1zRGtCUH5TcyNqWXlaTn4zRz1wWVdiN3BHVEAqSiZi JCUrbkwla3xxfFUKejVZdF9+TV5lb1V6QSlANmh9Kzg+KTE3PkUjZi1KRlh3dm41UHhWQHNAVDl0 MWJ7R2grWGBmRnFSOH02QiZvK2VyCnpgJHJpeDViNH5CQmoqJERtMU9WYlI4Q0BsRV9td2V6bEpk N1paTz1jWUI1fnA7citTQjB2Rzdze3BERX1oI1JUZAp6bTxBM29KbjYlOzsxMzlFYFVKJGooRDJJ YENRV3I5ZExOTHVwKihwMVNGYUVaQXYqO0hgYDNBdyE/S3RLYGRpdnQKenppbjU3cFZNalVDOz9h PTMyWXhUKXlxd3NPPmRvPntASDY1UDs/R3JmTXZuSlc3ZGNHclAxUUheIVc0SmhTWlgtCno5ISM1 U21lWXdHTUcyTTVWP0BEN0pOS3o0dXhkeWVsNXJPdWpqUHQrU31rQyh5WiVjVl9wWmZkOSE8Nz89 c3s+YAp6PSZIV0UtJiNsIUMzdStJeSZ3LVl7eUxJPlhTbG9MZ2JyT0IwbnIwYUA0ZV9qOWxtTkdl LXRLK0Y/eiNHfDFae3oKekQ0SGhKY2dyRmxwVX5wV1NhRGlRNnAhUWVgK2VFTWhYbTtUO3xhMXU0 bTdWUkUpazc/OTs2Xmd6WnlRbnsqUlBeCnpKP3FPRE9KS0hXUkd3ejdHRnZISW1kSTtGKm0yYT4t Y0hLcXBxdVBfe1dEJmgxV2Z9TjQrXnxaaHJoTF9tWHZUYwp6ISNRMGJiXmlYPkdBMmR8eDNHM2lA eHhOdj9LQ0ZINGZzMjxXVmJtS2ErTWpZS35rcXAhQH5lYXQ7MkhMaFo4TVUKenJpekh3P1pyakJk c1UpeFY5WGNtdkVjSHd6X1IwVT41WXlEe2ExfkRQU0B3P3VzbENlQzVqKThTaShSS3kwUjFpCnpq Um83VG4oUHJjKSF4QlhibUdhQkp2TWptI0klWSh0KyZjIWtvRXY2SyVZOXs0O2xLRlhJUGlYeCpK eHp8Ml4lKwp6KiMyS1lEWVZlWEA1TGQmMTlRTylGQjtoU1RhSzlvWXtvRSRNQ2MyKk9JeD1EVktC Z0k2O1B+RUttczY1ZFM7IVYKekFJMj5uQ1V8P0UjSykzIzBGKU04eilmb3hxemh0WXkpRjdQOShk aldSZHB7b25GQDZeWWl1SzwwK0pifHh9ezNZCno9WG1aTlU7fDBxQlJ9TStncn5YfHchWChLeyp+ ZkBHSyZqTnlZSDRgcShDWD4lZCNgVDtYaTwtPEtBSExtUGk4UQp6NHw9bFZ3Q0tRUHIzeXRLJk0k K3IwTU5RJTcpPjBiQ2JlTypUYFVhUWVOX2lzKEtXOU87Vjt5PEg9ZlNneypxTXkKekowc3BQRVNi PHhAV2wob3lfIyglUz1icTVKWGNlMDU1SyhwYHpmR0NGSGc1PXp+SFU3K2lnSmZ6eUphU1ZnVGBL CnooeSMmZnIkMzFodkxYa3hJdy1hZCtpRGxHV2ZDWlgtJH12QjlhSms+OShUN2VEQyM1MXVzY1cq dnRgdSpqS0dLVQp6Z1FYSUt7d0tuUWFBPCM2Y21qTkFMMEZ8X0pPQGsjQERZcjNmVDZVXzUoWXEt el52YTlCRUpwKTlqN1BfKDtVUGQKek9jJXElNFluSVkhWilUe2k/QWR+cG8+N15MR0FBREhlcndG RmlWdVZ3SnU1R0ptTCVPe3I4LVFKc1ZnYW8rYXs1CnpnREwhV2QoZFBeOzVuRVdOe0tAd0ghOVp6 Tn1aRGp0TntKfm98JkQhalJXfktvO01iR1hJNDQpb2ZMVXgzezJLRgp6SnN+dT4wQXVHPUMzWjBI ME14UV4zay0tcXQ7amUyUjRwdkcyUn56Rm1DcmBPRy0/U3lgdnJjIzF9X2FQN3RvI0AKejh5ZyFP WDN5QzZ2ekBwUFV5QTt4S2smc2xraUJrMyQ/IW1DVEQkMFh5Xz9oekBBaWF5VjAlbGRkKE1Xe01y aWZ4CnoqTllEYWleNypWcytrZzhCO3Y9R1RwYTxBejwmOFhJcEZKXlRXSnYyazxvTm5QS1IpbjlV cUxlWGJKQmA/Tj5gPwp6WTRebDwzSk5TRU9kY3BLc1Y/IUJrKlZeWiF8cDghQDtUaXRydFpFPHpg QE5LQVZ6diZoTFgmMUlrPVF3KmY2YE4KejBzXjtoVHhHOHJvNWJwMjd7dXdZWn08dUBPR0U8I1U7 emZBUG8/NUhLN3JXV1NqTkJoPzFxWUhyO0dUSjFWZVpwCnpseipCfiZUV1FpT1JWWXpIXn4zelZX MHJUZ2xMKHJiN3ZoTio7KHQ+SFRKWEQ4PGYyOVF7WVFONTApPypxKlcqcgp6OUU2aGNEekJmZ3cl aEBqPU9uNWFlN3x+JG51JVFsMSR+Syg1NkB4Tnh4JFB5U1pZS0A3M1Z7dkMpLWFtemttT0UKejJo JURUcm4qKEFxWFdrdEhCZ3ZEMFU1eyF6RmprdnIwO2dhbXotbyhScDd+Z01QQUByXz1kYmNvRSls PTtWfkRFCnojYyNsKiE/Qm0pb3U/X3pUZVIkfXQ/JEQtNF9MR0A9IUh0Wl9tXyQ0PGxlQjdWKHlx S2d9dzUlQit6bjk0X2h3QQp6RDZXdGY8Uk8yNDIxPFNgOFRLWXJQc0JofnI3SGJTYm1OKGRkP3Rv QVRaRVJrZl96cTwxRX18YEJQYW9JWDwmN2wKelN1PzVselQtbT0mP0UyXmhRQisteWEzOSR3VTlq NCREVVo2JWV1djZZZkQmMj0qLTk+c3RPOWdjaSVRQXtAYWxOCnooIXZzPl45ZGYpelk/aU10cSR9 alRSJU5rIWt5ZX5rPjVUZjhBbmZoO1ZvJFU8aUxvTTQ4XnpmPGlGenVKNVVGdgp6a3ZiSG5mbj1D bUowKHdLaFBtO2poNkAoQDIoRTEmIyhpekF0TEpBa3gpM2VgLUtVbDAkQFAoaDc7LX4+XytvQEYK ekFGTGpMbUJNLT1wZDNQYTV5JVlVcFZJMHhPbTx2O3RIeGhZQzEwcUtSZ31CZEZFeld6aEVHNzxX MnZpNWsxTl5rCnpnTEdqM09wKnBManhLJjIlI0tkJispMEAwXyRoSlA9Qz9tRXU4JmNCYX5uP25h UkdadFFaODxMSCVoe3tSe1Q+VAp6Zmc9V187QXx5KXRjNFhXdS1YO19ibkpYaEx3e1owbyhQbntK dWF2KSRUMEtqQUpXfGsjT0FFU2BPcDlKT2s/SCUKekIwSkxBenxFVz5IUjZFaWNgMiteQHVES1h1 YUVBcW53YTxHRWYxJDg7JnlJTytMS1hjP299NnZRdWhvc3o4RGcpCnpubnhIaSF5azMxSmxVbV5I SWY2eDV0aXA/KzU1JU5Nd3pWVjBESW5rXkV+c35yRl9JYl5UbEM/TFNLZEBycUNiYAp6ZmVzK2ZK XzZURU8qa3tkYlJgTEAxZnY9bll5fGBQOzBYXmNmY1VJMkVFcj9CYz94SmcjfSUkYChnQFI/Z3dD eXMKemJ5dmR3dEMyKnQ3RCY9JTROTERZSX1nRn5QRjdOSyRifWo3LWwmMzQjMUFwSEh5Tit9VHpE WT4rOHIlcSRHPXJDCnpeQG07YitZXi1kb0NTKnxCJSZhWDtZSTx9SXoqdUw5QjFsKVhPMmV2eVE9 MmAlYmMwLTQtQjdIXn5YVmN8SXdISQp6S2lLXmJ1I08tMGdKfTtJeUNAWjJgUzAzJEI4VUw8Snlk PUV8OWAkKTJsM3pnVWsyYEhgZkM0dUFxI3NSY0VEPzAKekxCemJqZ2dkQ0hXNUVNYVI7UDlrTXU2 K31PJE0pYnZPViRzZVMoTDs2QlE4NERnOTY3P3AxXlhVZjx2cntxeWBoCnojWig2dUojPUw3emwt cHtpfTFmcyF2QjY5P2w7MiEtNG5vUnBicWJXZUZ3JThkPTNnNFFKPkB9ZCNDc0I5d2BMeAp6NXp3 QEIhcHAmUkpVT1lfLVA0MEBkYlltKzNOOEpBYFl4YilrYzA0fnIxb05ZZ3ElfkhnVXw+TmBxWXYl P0JWe0kKej0tK2t8Q1UoPFZOc1ckPCZXPkZWWTwkTzBPKVZ+UUU5dUJwPlhvKGhaflRtODhZWDVK eyMwdUhVRDQkWSYwem97CnpJUy1IZVB2OGdDKm5pP0ZHUV47S0A4WTtXRzZPeDAqfXJkM2ZXVjRu OT1NQlkhT3hBYSNFfkUjVEBuOFpzd0xBNwp6dSNxZHE0V1omVSRHOUdXPyh6aWcrYkRTN2Y0dzh6 UipGOV9WcnVzaFREPGUoYG44ZnUjdWZBJkdCdDE9YmZ7PnEKel89RWUqYEB0S1BTNHlwU2F7QX4t Wl9OOH16Z0p9c2V8enZJXkNsVSU4bURndnFxcUkrQnd0dntGNn5SY1BnKFk7CnpZTGlmSlN+fExA VTg+ZTFYSHAhK2goKVhGPnl3JUR6ZH1OemxoPTtfYz1YZXVZUDspNURsSDlWQHk7T1dzeGV+bwp6 N1A+UFJ3YGFhOFZQOHRPO2R+SiU9IV4yWjtKSzchVXxkemFRTWN0OGBUbV8jeTxtSSRYQVBaYTJg KjwrNzE5Y1EKenQxXlkmJm1DeW5Wa0lNPF5PP20pU3xQdXt5Q3YqbztGVGA8YjtpQHQ5dXI/JXZN Z1AtIyhPYylCUSRzZmE3VCR9Cnp3XmZjNW5MdlV0ez5yUCR2ITM4WWApOU1aJSFpTnFVVjFxU1N0 bkE2PUx0UnNgdkI/JGYqSk1hWk9WNzB3TENHNQp6OHNsQEEqa00lOzJEeytLUDxsYWJwPjRkdzhz Kzl1Yis9UHpZI3ZVREw1PUg7PTEqVEw/c3NDfCNvOCZYZyM2fX0KejNaPXQpZGdCQElCYG83d3cq ejx5PDtJS2VJfnFrenBCcm52QiViKFlASkVGU045I3VuKW0xQUE/IUpgRGxOVCkrCnooT2Umelow cVF+V3oyblF2JHN3OCl4KVplckhhPmFQO2ghViRpVVNoUyolKihwdG13JmFAPGhUdyklOz0/YnE4 bAp6OSo4YE1KTHlnajIqJWIhbkZNYEdLTV48YVEkRWZyRnUoI3RVcHBOVkZmQ1BIclpvYGwzRjYp WV5EKk5GYXVkZUEKelFBSjh4YGo+clhYNkFKY1cyfVUqZyo/PTwjUnolfGdQK3BgcDFxRk5LfXQo b2RUfVQ2M1VXdVZ0ZiF4SmtsbyNkCnpCcEM3ZDhORjApQkt5O3gmPTlJVXZjMjB1IWBpRld4fHJQ QyMoSHxWIWs7emNjZ2J2YDJGT3kjbV5mPWh1T2Z0bgp6LVZRQiRQT0dta203QDw8cHpyNEhVYThO Umx2aXhJMnopWTJIcnJPcFIpNTc5Z2dXcihUTHtXQUU/YjFxK1UoUF8KemBNU0c+Xl5fSXJyKFhu RUVjemprbSF3aSshYjtANm85MH5IWEcjMT88cjduZXZTMkZqYUJjeUBufFd0NE05JlcrCnpia0w7 QzxaP3ZCTnowcWxLbkhHMkxDMnozc2ZvMFFTZnxyOWg9Z3tVZHxJfDhsKnx9LXg2fl5GKkRRSyRZ KHJ2fgp6PXhwd2RnbTthRiFiK3lObG5NYll4KHV9KEJiaGdlJTMmOGFJOTgob0hMUFJUc3YyfThW TTJqVzs2cyspeHs1RCsKempxWk9ka2lXMVQyWU9AYm4jPkY3LXZxd3w2JHM7YUN7PzJveiVXKlI4 SHE3dDZqdEAoR3xgQ3dVTWNjby1LbHlQCnpQVW97ZHc8PSomTEJTOSZeTEViJDczazs3UVZUYyM8 VmYyMUZLK08hPXt7WSFrckRsfU1qfEhLK1Y3QEdAKGt4ZAp6a1YmO0BhMUdOeyNZVzlNSlFJVl5R Z3g8eno0aSkhYEZkeURRNyNzO05HPlAtJkExKWFDbk0+cmBTUF5APkVNRzwKekAhI1A9UiNiRnVG WDc4dyFqTm1gWn14KiN6b212KWRUUkRBVyNQNFBANVlrKlJRamIzMiMqPUJGK1pnMTd2JGwmCnoz PjJ3WnszNHtGcUdHc01Ae0N3WVApYlRsezBrcDtlNHwhPzR2dEtGZCVPNTBfVXNhRk43SkR2VD0j KztrTVk+Sgp6bGtwYndEfDJnZmB7O0taOTtLYVdUTmFsVThELWVxLThublE7Kkx7aWxhcXVkcnRB a0pxcDlOZzxGJWh1PS1vfm8KejNESFE7QkptYVVNN2Nnd25GakBDaD56STRGKHRYUzgqNz4kSklN VWR0Z1k1WFVETDZfPEd2O3p0Tih+KHJUdn1YCnohTn5AaSNpanx1KjdqbWgoRDFUNVRmKUZ1X09D dXwqYFV1c1VabG9TRUlgVVpFTytIQEd7NUFwJHVlYjBZT2ROYwp6aEBxY1clYzJ3WSpyXmZlOGN2 RCo5UDQqUUFpdj1KOSgpRklzPW8xMlZvYnIkR3BZZmFMWFNefUcyRHZXQ2AwTy0KekEoXldSXnpi IVVCfilrZiFWR1VxQHlydVJuMnVofDxJSn5COG5LJWtqVlQ8KWwmZ0k3Uz5AZWBRMnRfNl9uR1FS CnppbjA0dGN8KElha31UUW40OURhTnJyRldONk10cUJabHtJWTRqIX0qYXEqNHU8Ql5GWHh9XiNB N2hOd2NVd1ZjYAp6SlByMDhpQTRCPzwoPGV2KnZhem4xbSgkNWJFJiZEI0ZPNjlPNmJPNXVIWGta KG4qTXFWKXZsTXl4dFlYP3E/PHgKekJweCZoZHhzWG8jNlZ4LWo7dUlsJHlfbTREUCY3XiN+QXxT PGB4bm9iZ3JkT0RAaiF9UHV4QEVeeHY0TlpORGF3Cnphflo9XihUUWlaI2lpN1E7OzhWKWhrc3Jx OXghI3R6I0hJYyp1WHdzMnV+WTNSR2VOWmB7PGU7UVkkKz1wI0FmPQp6Kl9SWjNzOTZkNmM5c3Mk YjJvdiFkU3BTcTVVJkNLd0RTMztlVEJRZUMrRCNrb0l3TWdDbXRfT2NEQns9KTF5ak4KekcmNTNy YmZqK3piOFhJIzVFeWw1ayEwcjNtWWVkWER1UmYoYzF0PlUpcyhUOVRFI3ReVXQ8UTtXbllQQk90 e3NDCnp4S2FDSG9FT3lfQV5uVz48TGN4UVllTkB2U3wjJjtfP0MhPDxkKldvWF4pdGFFazxsUFhK aGQ7bCtqUUZnMVJoRAp6TGp+dmlldCtGP0JMMj8oJCtsXzVjPGxfbFhaKyU9SiNAPm9IaHRDZnlH NSQjYW4wcTd4b0RCUTsmLSNOK0ZUYWoKei1UK29oOEN7e2E4QkQ5c2FHbjlUNUdkWj4hYEZYJHhQ Pl4/WWpVa2FgRTFBQy1ZdjJmNHMqTDxfQ0s/RUVPNilFCnpBcE5kTGskXlQrYX5DckJhNVN5RkBF dU5Ia3N0SWNIQTFfdWYjeFYoO2lnWW9NLVE+ZEFmNGV8TiNVNzhNUT4lJgp6akQ+XjhFPWlqITt1 Zm9abnIhMl9JaXJtbWVGKTtQQFZRIU5NfWxUY017QEFFdztzPTE+ZU8zSXxGc2JEWmh2Tm8KejE8 fmNJT3EhXnhrSj53VjZ+KWhBVVNVd3FScigxJCMzSkVrPGZAcUE5VF93Ykx2fUVEUystYjZafFQ1 JDk1Pnx4CnphdVlnO3dWN0dLPzVteHBsWHoqbzhwXnZmNXtCRXB2NUswRSg2VHNvUlFxPUJwJGoy RE5JOCs1P2p3P1lMWTQqTAp6d34jPGBvYiNWR2FDYks5Zl8rPzgteEptVzJ9S1dpYGxSYWxCZTdS cU80MjtASXRlRHlYVkplYSl+aWc/MWp1ZmoKeit0T2x7QSooWW9PIy19NWl1ajB9Z0NfSnNqSX05 aV9EJlBAUT4qQT5RKygtYShxPWN+VXlUKTY3UVIyPyp8cyM8CnpXTHNrWVQ4Nk5uZ0JUPmNMKGlg SWhqdThoVEhQKnNWSSp3S3VwbiNZTlE4fWhDUytpcCktI01Yem1sJFNJe2clNQp6dGxaRGNnTEVS QjdtO2A+IVUlKy0xUSREcShWKX5+SiheeHJ2ZVZwcXVDI3hGdSV+LVFXaSRFb213THdtP0dNSXoK eiYqekVKTmhvUy1UQmRBSi1jIU5pISVaeTc/ITx1ZT1ofWdZPGpCNjwjYk1HZCFvMz90LSpXZ0RD bm4zJUEyVGt2CnpISjtpXjN0NXZNaH1NUSklIURYdVQ+eTEkYHIhWnAmUkY3Xj94UVg4aGdZKWtD ZUkoNWM5P3ArX2FFfWJwQiVKXgp6YWZsI0NwPkFnZkdGVComamRYaDlYWi13ZzQ5clJwaVl4OWI8 QVFoZ0QhUnQreEx2VjJudTxOKU01YEdubldYYiMKej9AcX1kVWt4T0U0KlkwYWBIbFlfQS1ediFQ eTdlRyFJX0ckUHV3QWBOWihufjImbVNJMmZVWkt4JU8yQ2JAaSpFCnorPW9gVTVYb3BDVXY8MEw1 QkJjYlIwNlp8Qjg5d2NQeEAoMzAkKGo7cy02VTQ0JiR+S0JWVlFTSUBBZFVyNlZIUAp6WTl8VlA3 dV99QGppWjthbHZidj44VyE5M1hVdXRpblZpfTtCY2M4ejJHZkdESXk2Xz1hRDxoSGs7PCMpd0d4 QTcKek5SMXd3OEBgUyZldyE+R0JHellxYi1ldXN2fGVFfDNzLW5WT3NFMTspSDl2PXVaVWpvSC10 IXlfN0xuPU1TKTB6CnpDREQpUGlYdmtBbnBrdnsySVBqPD8tZG96YztBfj5aVTZhcG5WVVV5ZThN WnN7Km4zKnNyUU02aHlQP3IpYDVqewp6aXFFc3A0IWc3diNiaX5+RyUhfFRsb01hQUVKYSNENlV6 cV5YSllXVnBFej5TNjg8Q21rcURFb0pKKX1YbCQwO2gKem90enlDbyhwZ2B2Q2RLbGg4cyhKb04j YzVpRWJhdDg3Znc/ZGNieyVyO0J7SEoyanEkNSExY2tvYE1pbUBVKz5lCnoxczxtb0BVdEFTPFhU cj9JR2spPnJTVzxBeENLfmt0O1hKfD15cFg9Nyp1UGlBYlBxOW8paWNYRmNFe2g8T0xAPgp6ZHkm OENHRjBkRzJBYyZWO25NcmYjSW5QX1M8fHtoaVVraXt6UT1CP05YWXJCTSRfZEoqT00tX2pwUHhX LStTN0QKempFdz9GZyRxYCsyNnh3bXNAbjZ1SUw7a3VEZSZIMzJ0Q3dmKzFESyZJSWV0Pz1Tbysz TH1Zflg7OEJkdShvZ0tYCno5NG4kX3JYSmQ5PEwqYkpDODB0PlQ2I1o8allAOEZxVjRTRSlneUl1 SEtrSUR0aEA3OUxJJipCPDJWcyZMU3lPOQp6cWtTS29IWm8/fGozfiRfSEtMZFFyZkkxKnJuK1JJ ezZXSnNFPj4mdk82KigxSDxETHYodXhaV2ZmfD9HM0o9bDAKekxvaCNKM1J8fFZ3dy1fQ0VFSDBr eypYQykhfTtgVlVxNTk9Um9TO0JUKT55dEIxK3pSbCRTIXRrITJ7Pz1RVzRrCnpXR3NgWnh9b3VX dnVuKFlzcX45Ri03U1JQdUdoTGpoJT17U3RwTnhqRSpyRjU2PmNHK0hpb1RNTjhDeCV4P05nfAp6 VnZkYGg9RENfdGhKdkRsQDIqenBgK0U2KTY5ZmhadjVXVy1kWmFhPW1lWjM3eUo3aChuSTtFSi11 e203RU5YcykKemxPJipuTnZBQj42aTM/MihTQ2peQml4ZnwkVks+PnttbE5IdWxQaUc8djdzQjt6 QnZ2XnBlMjJeOCQtRnMheSsoCno1VShTQnNLNytTQUNYRHx7VlQzM2J1c0R4Mn12cnApeEMySW0t PW52anJuP31wMkg7Z1lXNkpWY3VxbEw+TDZ6RQp6e2hGazkpVUhsZVNxbz1ZWmRkK3g4fW5DWilv RiNjSkBkPm52MWlYNzFFKyVCTlcqU0hOTFJwYnppaTdPd0dpRVkKenNySykoaFJKeUcjVFJrSzY8 MSpGKnMofVZPZilZbWojQnVPUGQ8cVU5KFZ4RG1NejFHNWhLdUdobzVZfXhxYUBjCnpwV3poN3o7 VFpPTCtGQ1VqLVB9LSRPdk8yLTU0NGw1ZnMzIVpeY2NiSjI1PkxwSGV1OChCV35SdmFrfjgtdSpp TQp6YExucnI+I29haUp9bSRSYiM1ZF94KHBNcFc0ISRBJW9JRiYtN05HPWluaSNiQTtRNDQoSGst S288JkdZaWJFOWQKelJkXmR3T0M9JEtYNyZWNUZWc154WCZgOEJUS2AwOVJhdWFATlcpfXRQO3hP WmlVTE11ZUlzZ1F4cnAhfWohSWFhCnpnYiFBLU5+eHFTVENRfWJJcXw7ZUtgMmQ3KnghPVotJDNI dXspVStzVXlRPGE+IyojSyVnfjRUaWJfZ0dFd15lZAp6VlBMWmZrM05SdnRTbF5mXmloPUZhMDYx I28obiYla3RYcVI0KD0mWHxKNiRQZXtjdDtVaVYkWiNZVktpQXpEMFoKekdTKik5VTBQRjs9bj5D cGttPyVhZCp2ZUliUEArOXRTKGBmI2xiOGBeZiRtP1VCYH03bGNwZE5waGQrTlRBVU99CnojSkdM Nl5zNDgoYXordX4yNF95Vl9eJGtGbzkoIXcqPjxGZFpQJWNRKShhMm1zVXdERVliPDtqamJFczBn QT1QJAp6IU4wPCM0I1RMZWR0UHFeRlRMPFlfWGI1SGI1bzM4JC1ETH4xb3BmR1UpMVRTc1ZEezZ5 a1ZAJERfUWdpd3lieSMKejg3R3s5SUliU19eRjJ5PGxqdykwZElYJVE9c29GRD9scXV6RVBTdUom czFNfDhGc3pAZHF5MW1qOGhnI3RWMlBQCnomLWVOMiojQWlPSWZoZE00ZCVUJSQ7NiNhanFFPntG MCF1NjltQkNycCt4enQ9TyYhfiMlYzxiI0l1WHxWVjtDeAp6WE1HVUArNWR+RUkwfj92eyh2VWU1 WWBUdlpWO1JYNTQ+IytRdlQ+Iz5OZSZ0dT1GV0thOE9RfUc5QFZhU2V4IUIKejhzREt2WjlsQzJK d3hSc29VQl40JH1zKkpHaUc0UGt8ajlqb082KUg1QUZUOy0hfmU2WD15MmJfcSpUV1ZUR1VNCno7 MD1mJWJuKnArZSgzdnlDIThPfnpfRSR9YGBhfCVnUH4pVndqX0dpS3k2KzM/TjNVWjsoV1RIMDlh OXBoOHctaQp6aXdBbW9QX1ZaYVhXc2M1LXV+c2VfeykjeFYoX291S3lwTVpxRGlCZG1IS2V8bF93 ZC16dT9gXmFPYXp3O2Z7JksKek1IOH03eX1KYjROcHpFRzhDYkdvNHwzQlkoVH17Ynk0SGA2aWBe S1JtVn5JcmEjU3xCNUZOKjtwPTcrVzIzOWJiCnpOPm9FTm5IVUteO3J6SXUxWV9iSSRjPURkYHlT UnM5NDRnMVFne2VEQWdXKkRCTkI4JSF+eSVBPmJ7SyEoXm9rIQp6PUkwQGszZFowfEZFeiNiYTd5 JX56ZHd0bW10VGZOaDZGQ30qQj11ZmRtUEZBYGtET2sqSWtGVEc7aTFjYEMmTncKejQ8SGooQ3xv TDJ5RWRUZHsyTVVsTV5fLSlSZ2E9KUEzQD1aWjstPmUoRFBnOFFQMyU4V1doUSNSSU5vfS1ZI0lx CnpSME1qRzB+VCZVPn4wP3QybFhUNFpAXndNeWc+ZWtAVk4ke2FqQEYyZnFVc15ORXRHVTVxR0le WWtESThCa1o5Xgp6eSsxM0JgU3RNWis9YkwkeSh1OG9xamI/filTaTRJbmk5QksmKDJOZ1FPUih8 MTV6a0Z1PHhScWRlXz5VIzxxZysKejdMaF87WVlBTDd1QTB4bnJTZ3ElQStwUSlga3VwNFNuaHpn WGNxIWNVeWsoQVMwSD1aNzRVbmo7OVllZThScjE+Cno9cnQwTihVSV9Peyo+MnxEQlphcCNhcl8r O0ZfO2N6V2ZENVJuRGhpIWNmOUE/Tmo3b15MJFEjOCFpUG5ieVU2dgp6NiRAXk1CZFEtZlM+SG4z PTtfRnNkTHtQMF81JTQ+RkwqMUxWMFl+UkdgTT1SOX5FMy1ARjd4PyMrJkp5YGxeLUsKelU3ZHNt Y05Tc2hJUCZFcUF2JURCX2B4aCZnUjxndkN+cTF8S19kYiN8N0lre3hfUUpnSlp+fTUmaWZBSFlM O1d3CnpkeiVyUEhXKD19ZzNKNjVQSkl4QFo7LWw7YEFadkBtYl8pXzdHb35nJDBVPXlMaD5yPz9W KDhhaHQtdn5ISjZ7MAp6bFk+YFplSEdgT2NPRCptQEloUkNfMD93Y3B3KzhhVzlIMTYkaiF8KVF2 dXR6Wl55OHFMbi1sVFhFTzhvPylPb0sKeip6TERleEloPkskMSg8Xz9UVSEmO0N+VHdMKHB7IVB+ KVooODBtJGIodm99TiEzJjNDQDliSityNipFakIxYXxqCno9JHttY19qWHBgcF9lfCFQY05IPk9M TE8mez8yTClqSEw9ckVqfXF1OGZZRCF7UUZ7alNqRE09JXZmQ2UobFg2Mgp6VjA1R2RzVHBiYj0h VGdYIUJxb3MpWjgxcUhTfGFONDBIYXEzIW5ZJDV+UzE/PEQmYU5MTCswekAxJnF7X0xMI0cKej4l eV5Fe1FncVJkd2VOZ3hPRVFaUDhpRzsyTlZxVWw7UFBJLW9wKV9SQTU0Q2JvMkNzRzVaR2xYN0Aq RF9TazY3CnpjSGVhXjhXfnU+NXhxJU1sbVpsYnEpRGVTX1d3eXdLYUN+N3szUnkrO2E8YnwmMiVR KWx+WjZabWZ5TiY5aH0pRwp6NyZKUFplbClDeks8MXltamM4SyVVNjAoMj9iclNxNWlANnkoS2NZ dTlzaH1AKmEyfEdNSWkyeVRoYUkxYkNIc3MKek58Xy03YiRmU1Z7V0RMWDtaSntyWFVydVNkKFcq WC09MnIpdFB4MWY+YyNxQT57Xy1NK2tXdkk/cDdHak9eRyg1Cno7cm4tRXs4Ymtzc2R0aWplPkww SVY4PX5BTHxJYHlsMyh+SUNRVGE7ND1wLSVyM0Z+PyM5dlQqfDZfPDZIXnVaKAp6ZjJkXlojVCRs aXVLQnh0SSUlKioreSUhRD1lciVPOU5EOGNoUm5RPFhQVihUZWhPRS1nSSYrZkw2Nmp2Q300MGIK enhURGNuezBadUorKUlIM3NQdkQ1Wl4mJkpiTEFnN2hhYihNOz5PLXJBM3tuTEh4ZVJHR1ZlbjA9 K0hRJVJfXmpICnpycGlBOC1jTyV8QlloS008Q0VadSV0aG0jSmR+JlgzUnlFUkxYVVVgWTtMU1dA eWh1cVRZNFctQmtOSUBkTW5iOwp6elplTmdebHhCdV4kYmh3VUcrU2lgVHZWQFokQVZreUBYKy1Q QTJZWWFqTSpmOXE7fjshcyVMTVVpbG9LS19NPGAKejFjdis8dHA7VndRVE9pVTk4UihUNy1ALWMx KTBBOUs3ZDQyOVF2ZGVzcFdsUW1OSnthXjIjZmFTXmUyKHBUKyQ3CnpeTnFSNUhxez9ZWCFQOCE5 e1EqUj4pZzM+aylOTkJPRFRjTjw2aiNFNjtTZWFpWkpubWpBRUUkZypyQmFySVhLNQp6K3dCa1Bn VzJuRlRWVl93MXNLcGJXMylZc2tsUnxZPUlXbz5TYzt0YDZeMVU8SCM4IVZQSX1qVj1YQ3RebnNi b1IKenIjRl9aLUErYjkyRkV9IWk3fWk0c05vemt3ZTEpKDclJVVVRypZQVY7KXxfeF5nfWY2YHtn fFJjIVVjcDNhUjFwCno4PVQ1JWcqdDh9PzJMPj5aZ3dWaVl9JGRCN3BfOHFIditUSG4yQ0ZHcXBf byQhVWNWTkYzT0Y/N2o9eSY7KnsmVwp6QHE+fWZsPzV3VFpwWHRub3NEbCM5ZnBFIUpNcUgxdEkh YWdnNnBxNDJYfkxgZnpQVE41ZzliZ24oeTV2KHJzUmcKek1WbDt8cHgqJjE5P255elYleldVS2Bt KmVvY0AlUW1ve1c1JmllWl5vVlZ8OXR8YzBZQG1HO1g/WSFyQWFHZkB0CnptVHlgYGN0MjI2MT1w O2hoIyMxUkstb3I9SnBEKHc9WH1jdU00UytaWXZmZFRoR2ZKNDwjSSZ6OWYwKUlvflp0Swp6NXNL ZV83dHVYNEZ5PyNUTWBWQVJ1OEYmdEp7am1nYDd8Vz5fdDB8aTReKFhfTWM7fDFXNioheWZDZzwy YkxFZFEKejtiKyQoQ0REITIxI2hHNWkmYiNmKX1VX24yVDEreExsfHwmRGUhSWw1ezBrTHJ7PGw4 QGp0bEBKdWpJQ1VvbWF7CnpLPjwlTlRleFR1M1UlRkh2Vj16Rm5TQTFtPUpSMy04P0h6KWFhdWd3 bz1CdlJJfEhAdTtiaXk9JG9MYjg1V1lOYAp6KUxwVVgoeT8kUGwxSlF0b0tyNntqOT1eZ2xseVUj cHV4WVRnWFA7NHd5Zno5WWRsKWtERVUocVpyX2M5P2VDJFcKekBqVW9yZGgrPylSPTlRJWR9JSpL JmlVVmBIZVpXfEZKRlA5dFFlVyZFPG96VT4kIV8jSlRsTGBma0clbigzU3Q5CnoxPzN+ZSg1V3lr bm9+MDZuLU13YmUmbjFxMzcqbX4oZVR4TER3d0A3PSk5bDktNnNkRyh0SklGNi0kOUZwOGBlZQp6 KzJ1cSZtIV5NP0N4YjZiZ3B+UT9mS3M8PHsoe2EodyoyX0MxK1AqaD1aYlhDZSRoR35PZC1HXnNE blhkME87VjQKemMwSDFucUNZPTBJVlFAP3xNSlQoPDBmdTBGP0gleEVMeVkoenhjJjNralg3NFJh VkxGTGtDU1otfGxSPTxfaDUtCnpWR0pDRDdfZi1BRyMzJjRtaFZVTHxGTnFJU0tLPXZ5PDw1KTk1 ZUB1ektLXzhFYENGfjdaYyhZOys1Z3ZISjVCdQp6NyVoOH5BaTxANFQ9c1dUc3N9JisqQWZnJWle YzVHSXJ6aGBhJlN3KlBSdzdoN35nd21IJTZ4PmspRXpjPytaVFIKel5FajhpeCgzdGtJfih1K1hj e2Q2aVRMP2pEezxiNFgqaExLZjhlN2Y3JnxOekNrOytQPjkkU3lSan4oVXJ3JkJQCnojYFZhKF8t U0NCN3ZLOExTJE9ASDg5NDJmWX5ZaCthUHtaeEdFTGcjSFhZTGpidilRVmc5TzZ3O0N6MD1tTXpH Pwp6eyNwJEZeQ082K1E9ZkttNkR4RmFPNDZudXZJdGFmKm5zc3tVdUY5MzxnVFZvcSphc3tzMkZu WXhoSCs4cUIhNFAKelJLdDh+em9iKWlOd2w4RmBEeFZFIVpxYEJsLStZUEAtTjlWR3YjRUY4MlpN Pzc7KUFxaCNRPVh2YjxeO0Y1b043CnohfEpJK1Bge0pCYm98OF94JWU2TSRlQDxZQCk+OCg7WXhX d0h2UmYwNnk1ektiI1hVYmVjQTdjSHpSdy03fVZxfgp6IU5URHVnSEpAdFpJNUJiLVBhKFVmPUtA VGNOKFVwZSg1bSV3KzRkNiVzTFI1dGE4P1M3TyFZKis9YUI2NDxqLXIKem9fRz5PNGt+TE5CdSVe cV8zeXJsczdUOGlWd2lRSGxLdT9vWHZuKHs0Y1Vfcyhae2x8PTwkNntKfEJCYHowU0B1CnpXVWht QXtET3RPa3djJTgtdT08RDd3fm51aylBeW9KP1kkMF9yK1VgdU1mbn17MSNWRmMoTCloZDhsMFRE SUFIfQp6JGk5OUo1XzMqTCszSk9HKCs4IWxVPm54SUc3az4yaWo+UiojS3JXMkJrZE5YajJJMj9q d1Ele15rbipMUCl0NFgKelE0R0hES008Y2kzZ3ZJa0s9TUdzUD8/OXkqWGEtJEtaMyQpWl5DOHE4 dyt7RiEjN0NYIXU8NzsjN3QjUXp3eVEhCnpqbjszeHtvQjBZZ1VSQFhsTEtZYEhhQEdYPjQ/RCg/ QHhkRjZZamR9RT0tIz80SWd+KTBxKGZ0NHFTV2Z3V2dUegp6eTheZlVAIUhQX3BUaWg5ZWxURmp5 d3pRNEZKd29DI2AySGlsYmU2S0w2aUsoa318d1VyI3s7TWdYTUslbytKUD0Kekg4RC1kaUgqKXhF I0gpLUlaQ2pnVj9UeUIpblUmNnluJm1pPGw+ejFJWEhQbDdYSVVeaTs8aFQ1WXdKb2kkU3JHCnpj PjBEQGFtd2d7TmF7aH45ZFNBKUMjTHxHZjBVMDYtPHlKdyEleDV7Kk4yI1VWaClsPkUjRncwJEpH WEBoQC0mSwp6bCN6diExd1c8SjdINkt4Nz9nVVkjOEloZk03YGlNe1MpKFZwR2UjRU56QzAhRUd6 QXdPTiN2IWx+fkRueyshMzMKekt5cjM9RF9TT2NRX018b3dwPlBNRyV8ZSRnI3hZSFooI0BvJmQt Zi0qc1NQTnBrYzRZVTxIJSN0QWtve2ZLMHZPCnpxPFA0QTs3Umx5b05lTUVJTypfYkkxI041U3s+ bkZ4OVdGcGdNVE1xJWVpTmg7Wi14NigreV49SX1ucGhiOVRpfQp6bCl3S1dCSWVBYz83XlVJMTxU O2glO29lQSo9T0hqbjZiTio/WFloRllhX0dobHIqeHtFZTBsR1QkbUN9QH5zZVAKejFlI15kVUZF YishbGZ6MVYqV1o+XmFtcCR0Kj0jdmMjLUZTLUt5NlNUfkJYP1VleHItSm1KKTRibkBHOWFidXx9 CnozTSZyT0UmVTUzJmlWclo8UVFVI05sWmdTK0d6TCstaGQrX2dMbXsheFQxb1ZCdis0QV5jeXtp SUoxPTJeM1UlPgp6O308YE1Cakg/Ykl3VGlEU3t1JiY3eTZ0fW9EdWRZYEEmZDc1QkBFdiR6TSlF WTgqIVlzdHpVak9IczcrTVErRlkKekFkLWcrRygrMnlJdCkyS3JncEQhLWxScENkYHd+blMwM2lA N1phRUpJalFoRkJENDhrPFFyIz1RM0dFUDUyb0EhCnp7SU4jdDBhUUdZRGwoVTZhSk1GVF9lJlQh KVhEejE0Jip1ZFhrXnh4IT1EKWNtQCM3djxBMzNXN2pYWGg9YkpiTQp6QCgpbS1UOFBqN3BWWERJ YClANT1COC04ZjI/STlhNjgkRHxIdzBiYCtkNkZDamBBOEBHJHxBUFgzO2JxV0NBVFUKelJaWVJT b0cyfT8jOytGYlhoREUhTSt9N1J2N1ZnS1d+OHxBQCtiTkRwOU8wJWQpeF9sXm9CRVY+WGRQcXtx aCN2CnpjRlREPGJ6bXxJYnsxajklRlBTe2xZOzM5djZlOHV4ZEk9MndGOX0rYHMzPjk9QD5SVmle UjdNRlRifTFJYXdwZwp6N0p4RllTWCNIRTY0Q1R2U0ZvSzhXSW1mVj5fOHR7RUNPVTIxX2w5NmMt bCl3cWdTNWJXZFg4QjFHX2U5c1ZEc0AKenVCZ0JYQSQzaHQhRz9yYDAmV2VTTnVNY34+YSlDMkxl ITl4N0woZEM4VVB2KkxxV3dHblRBTHojVihxZzx6KGxlCno+QSRKRzBLUmRUVkVuemVCUihNbCl2 SCNaVnRYTj9obTF5NEhuJX5pSC1DV01paDU9djlWNWpHOWQjOX5QaUlHNAp6QWsjaG0zczVgdSQ4 Yjc5MHMqeWRTNF5DLVBEQFUhLT9JeGZufkxjJSZ1MEB5VWYhKHZZQUtxPzVHfTZITXdyWmEKelAo Szh9SXFPRnxOZD1Ub2gjWmI2UEhgLU5jazQzNTRDOGptV2M7PDt6Q2d2b3Z1UCNpTG8zUSltTCle d2JIKEBACnp5cnJtIW9QYm5VOE42SG01M1YmYzVqV0NgM0RCQD45c0RKcTUmamVvRnczO0E2JEIx PEIpJDUtIXJtN34hPEdGdgp6QiVYZExvSnBmbUxzX2U1d0JWcTF6KCo1NlE2M15HTkdLcHZwcU0p b2RQfmVXWlRSPkhzNEJWfGtwcmk1PlNoWCQKemxQTkk5IWRGU180Nz1DSmQ0NHlpM2JaV0tPbDF8 KG5vK292aD9TT2FqUn1uaDRuQUctUTIodl9NNXI8aklDVUhJCnoqVDlzdnVWNlgwd3JwTl81Y0pV QjJpJSlCNiU3JEVxcDN8c0NvV1oyYTdPVEBUeXhEZUNhfS1FZEdqITUmS3kpIwp6UlQqPT9kO3ZO T3g1XjB6b2h7ITk1V197bjcmeXU+VjVwZFpTKD16UmJWV3ZPRi1wLTBLUEhTISNUYEhUdUpOXnoK elBmYzVBU2BrM3FRKFM8PWdvUmpKUClfMWJRbVN1TzFkKWRiPmwhamdadm9BP2VkM1c1OE5sMU9l fVoqJCQwSVk+CnpnR2AjISRDTDRJVUh1Z1hvY2otOFF6XzFWX2A4QHNCQXFtdFpEY2d6aDBwVkck K1o1TUdqayQoXzNNZXZkM2t0aAp6VE1lZUJkeVFYI3gzbWI7Q3E0YGVxXjRMdiEqJmcpNTY7Y1Rp NWN8eEMtYXdwQVZgaG9GTSElNChFPnZjY3ZqTTEKejJRfjcjIWQ9K1NXcEducHtpa3Y2R25ONXlR WFJvTWVURU9tcTw3eE1DK0Qxdkc7MDV6by19KWxgNFY7cW0oPTxHCnp7VkRkWS1HSTJzTHlfXip8 SGM+UlVXV3VuSmVRcVMmOz9TPTFMJHwqJiZse0J2RX0qdWtwSkJ1Z1AyMEAhWWA0Swp6b28/RSl3 UXFxWip2eSVYKVgqfXZBbEIyVT9QVUEqTFZZWnErZ15XNWg4V0UjQVNKaHF4dHlqYypANiRKYjE5 djwKekdPUE5hYTVeIWslP21iWSpxUU5PWitUdTJGVHB5a1BRaGAqS3w/c2BYemQ9NHgpbCMwRHJZ aG9jTGRnZEBEIUBOCnpYVGp3b19SRHZaazU/bSYwJG1EQ14lZWQ7PXpaJC0qeiloY3oqe2pFNWcr Xj0qLT9Fc1E5Kn5nVyVuOGppTmhfWQp6S310JklJaX1aRT1nQkQ+XlkxfDJwZWc4P2RtNUBYfENE fFdfYUlJJjFMIUJQZWZ8YDxjR0N0eExxSDh6OT1ob2sKemtlbzNFV3U9XzItfU5iQ20rO2tPe3Nn SnR7eWtGMSZPX098JnpOYDZTaVN8RHw4eGY4I3BAfGgpRFU7Xm5WYlRNCno9UUlLUk1qRV5nc0E5 WUIjM0RwJCtnfGV+XypkXmxmNClLTEhzJnV0clNYZkluaUstSm41ZCN5WClVT2NVY1coeQp6TGFY WVQtdm1MTCYpMjtFPChGUz5vUjUwKUJhXm5UYmY2bWxILVJVI1p7Z296Mz4/KU11JjVXaSgzJH5D VzZ0ZngKejwjbntFLVMqJT1AI1U1Pl55RTVnWH1VX3tmMFBHfFNeZTREemt7NjJXR3ZaQz5kMGkr MitLdjFhRFVTMSN3JDA/CnpMc3J1c0VUIWhUaHBPN30+eE4qfiZ9OGkxeCZjZHpFNyU1JnZ3YyRW YHlVTFZzZUtsJUphPnZ8TUAkVnBCQyZBSQp6SFowJGA3Z0p+d20qKHtuMH15Yz83OGQ3aSNeU1lR SUFoZFV0WF9VUzx9Y3c9dGkqVm5HJDtkMEtVOyR2S1E2JnwKekU9QlplRFZ2Z0Q3cUBNamM7Qz4y VkJiaG80Q2shcmxhOSVNeyZPcUZGUzswQHdOeDZTcD0oNWZSc2w/KWZVeHFhCnpFMExecV9lTUEl UXpSMntqZl9PYFUhT3Roc05aMH5Jb0JkYGBFWUViRk1AKzFhOG1+alZTcGJsLWBoaGojU31NIQp6 LXNaUjVpVUhIbCFIXmxGYyF4Qk88JipAci1pN0lqOzhhJjZYdncjTHNnKFdAc2t2dWolbWM0dDwl QyExMzc/SSQKejZifndYXyVqcipWMD9tY3IoQCEwMyRjMGVHSSZ4bEZsYWJFPGxsVDh5Wl8xbkwh MihyM3ZGckp7NCk0NTAqYHFACnorZHE2ZTI0NTttVmFGWDB8RE80JVUldj5BaVR5Qz4/RWdrWSZ0 eWhGPG4lO0NvemEobHRLVVRCO19vNXF2eyNXYgp6VT0tcjd5cTliMXQpMmR5XiFFNGZUOFpsRlJt MlY3R1gpQkVqJVBpR0tlZSglYyVfS29XS191N0M2NkwxPnJWOFYKemQ/TzBpKGxJbWRKdyl7VzRo Q0djNW5EZiprN19eVEtWK1BVbzw1RzFiI0VpX3lrKTReeGVCYHJSPkglMWBgKDxmCnpZU0o0MnE2 Ymo3e1pfO2NKUk47KlNjc0IhXmI/OEFLdGZoN1Z6eGQzLX1WaEckZyFNMDVfUUF3Oy1JZlZXV18/ Qgp6SEZaTTNqNjxtenNrfWIwKUdmP2tnSDtTKGZxaTV+bWp5dH4tb1pKeFRKR0R0Yz0yTUtjO2Jt PipgRmYqOVZgTEIKemQ/YVJ8YlI5WDtgbkJkPyVscG5jPm56aU5taWF5WCpRWXRCJDJtND5CeFg9 X3U1SSY/diM1UlVUJi19YUZiMGxJCno0QWAyIz1eZWpPPiQ/ejkoPyh5Rz5BdGs4OWBCYWFhT29i YHpYIzMjO3lhRH15QFE5Mzx5NXhXM1RAaXF3VE5TKgp6NTN2Yko3JmtadjwwZ3VBbE9naWh2MntF Q19pckVMdEFZeD14K291NE9kb18+ZXt7TGcobD4xMDMwR1EqNzByIXMKenE7cE9DPnF8RmFMZTYr cDZ6c3lebWxSP01tJmR1TzYjVkZzY2t0TUNHY2NKIXo9clk9cFVeemBzJTBlbFQhIWQwCnoldFBX eFExZHEoWlQtaEVJUTJgMV8jaGQzIXZ+OG49Rj9BK0kkJUthUWF7bXwzUilkRC18LXZkLWdQKFB4 Vy1Aagp6bEF4NSVXcXdVfXt1V3pLS09MVWFYUTdFOWYybDZRa3VuZ0M/PiZnTXxMc1FxQUFCRl9W PCh4ekpjfGdjX0VjaWsKemwkJWc4X2NaaHhJVDxzNWUrcjNIOW0qTTBDQHdSZDI7PSZCd2pXPitC WXkrZXlBeU9oUXgwJWB0fTFadzVJKi1sCnpiVDc4MF4rZVh9JHZFWF9UIXV6dzhROHJNJWhOVnQ+ KEIzb2A8fGE1PEshOTA3KGRQQXB8S1dRLWt+N0ZEVHgzQgp6RzBgUjd3OVVyIzAzTzBvQFY5PXBO ckooSV9xOEEqb1Y5U3FGbjw1JV5wWmRFKk5EbS1WRlZVZTlLSE0qTU5wfVYKenVeJUcpJk8hMnR2 KDJASzhuZ35PKXZrU3dydSFOU0JPIXRYTDIkXmtvPGYzUjduckY0UGsjaThlIz1uN3YoYVBwCnpX VGMrQElJMCQxZ3Z1VUN5cTwrWVhaP14oU3xpUHVNP1ZQMDhBJDNvbG8xI2lSZ2Z6VldGY3MoLWlG SDBwUWYpJAp6NV42clU2T1FUc2gxNE40Y3VacW0zTDNPUilhPiNRUDRBKDAlfGk0WEh3JU4ke1RU dlBkRCMyWCVXTmxBZlUlczgKenFsRWN1YEo5JUBYPXpfcC16LXxFZ2UwUGgxNUVlJihoUWY3a1lL SiYjekZYRjJDRHx0MFZLUHcmUHN+cnImUzZ2CnpQMSQpfVkxVkdYSzZqO1Z4Tkh+JCN+Y08+cCUt KHN6OShDPTdlbilzQXQpS3xaOEQqTnBBNXk2QyozMkhIMEVKMwp6T2VXMj5ZdVRScE9sN0wme2FQ TndCTGNZZzU2QCNQeXttXzBGcDM/Xm1oUnF6aGdLSFJIdFdIN3RfSGFKRks9UE4Kek1fPHh2QUNH ZUdDaXM2VjNUZWBoTStCOVYhM2khI3w4d0tqX20/QVkjVHQwSTNDKFdLZnFPSzYlJjJ2YSUzQDZV CnojcStweVkkZ1YhYWJFJE57SitkRSFrU3RpTXNjSHA4VlVlKkdCaVZVeS1nQT11JWc8ckZYfDMw cFc+KUJkRnl9KQp6NlBsTyRSZFA5Qi1XOFhsYW4odyE8STFDPGpQNGhrbTFVVG1JJGxHOzAxNGNs bVQoKX51JkV8NT1halFmZzc/amIKenZHJURLNVBRfHhpMCkwI0YqMzVjP2QjI3ErWGpxXyFHYGxM Sztpa2I1UzE4Pnk3Z2I2YHNLeGxuMCo/V2lwZisxCnp0TUxgMTNwUTJMZDJZZil3eThjPFZCS3xC a1pFJXp6JHB3cj81eEYoR3BBd3FsfipHIXIkNVY3cD1LRXNKbDdPcAp6X2hSSWFgV0pUSWNyang3 KHV1TEU5NXFYc1M1XmkwMzZXVFA/ZDVFVE9hM05LVjcqfE5LUiUldUM7WXVubDI5ZTQKelhVQHRj O3V1eFdVJHFMNndkRUYwPmBGb18kQlR+PDA2azMlJlAwdXlUO0l5b2ZaPEBPLT98al84LUwzUHpj YmpaCnpDUGI5PDNgUSpzRndvUGhncG9vSzt9NFRyUm5tYE8wX3ZDazFQIWFRZEVkKkcwT0xecSQ/ MGZWZGoma2I3YFRVPwp6fEd2Rj5eYl5QQHZ2Kj84R2pyaFRlRzJfOHhDYUNNMERPaDdeRjQ5V0Ry eXYpZUdnVHl7UyZvKT0odzR7N3olViEKel5jNjNtXkpXIz5vcndDK0ZVT3VPN3IrKFlpQHR2T3dF UXE0QjRhcE1nSXltMmB8dTQ/d2BsJjdUKmMoSWlJMTNRCnpDPER9UVpKNDdGeTAkPkA0ZkBrdVJx Y2l6VUQ0OWppMFZxYTdzSD0xVitQe214cUJFVFpuYX4jK3gpT2p7N0BhRwp6MUY3NEk9RUZ0ODcm eGpoVjB7Tjd2aWNAeVcjZF4rU3JKWWpkVT5kQUYodFhgRmcybkFAeTYwLWVMd3BDXmohe1MKelJj WldARVQ4Sjg3RF9eXnNrbk1HQyhVVUBlczRYZkEkYDJMMWgxXnkjbnhEdVg0fXlUUTR8RW9GbGpN M2t3SGB6Cnp0dU1zJER8YXhAaldMfTZFfjJ3eGZET20rUF58Yl4qOEgtaGwyeDZFPHZxYkk5diNW YEVHSCFjXkgqPWgtQGhPKgp6JStGKipvaDE0cCpuKjd1QWtFKW1SUW5RWW4tPUo3bEM8Zm0pM0Vj WnRHVWBOMHt0MUBTREpYPEJeT2hsYmloNkoKelJNZDAqfEMrMD0zSkwmeXZGV2tMUTFydGUhWlVx M2Q2RHFPPUxKKGgwemw/NHhIMXtPYz5lUktFfkI/TiZEX3FVCnpSNHlHO1h4IylkSndLe21kPHZC ZVYmdSYxNTcqZFhATkxORnFfWjMhPihNQWRnYnNvWjs+UXYhKiNBdztyJkZPcgp6UEpCJlYrQmJi Tjg2cjBoZGhIKXZpTlRHQygpKkFmKD54dU0zZkh0MClWfT45c3RZKFpsYjhmMjFHK2gpKiZnM2gK ek9GTHE7OFZrZyltXm5HTmREZ3h0KF9tPm5sJiMpMihHay1UZUtKa3wmJXg3b0ckUFYwM3h0QHZi fjFFdmpNTm89CnppMGJBNEsjeGlQS195OzYqfD9gZldnJSlsZX43cHElSThhZkc7ZDF+U25VZCRT XylQaUYlQm80QnN0QiVFdGhsYAp6TypMUWVLOXtPPFVqUnFjc1Q3YnROQiFRdkBnNyVTeE0oQHlx YHpzNj5qOGIrQUUmajdKYGZIJUF4MlBXO34wVVQKem1JaH1aSGp4SEBAZUE8bkRyNyNGMEo+UzEh aUBVcUBaYGA1QGw2VTBNUW4zYFg7V2ojZnsqeUojfEB1KUFnU0EhCnp6ZkFxfF51UEokbis9bE4w O31FcnY7dl4zT3VCNzVxMVhGLVQlbm8hYDdKb1NielkxZkpzTktebjF6eXZqJn1MOAp6cnpWO3wr V29ZcFlgZCZ8P25JU3ZrdVYwMVQ/fE5iNk9rdCtWe318Pll3KTl9djt0PkxwTWRGO1BiNHBQO2h4 KkIKejNLQlN4XzxmVXlXb0F2QVYyJkMoTXdMfDVCRiF1Kikza3dBS0FqOVhHbHM7UW10eDkzU3Ik az48O1NpJGA4NExJCnpHaGdLIURHKUBmSzdVJmJvQypOVEMzfnpuWiREd1NvRFhHa215UVNZPWFq Pz1eayZvSnZAJF8pKzRXRTViUzVRZAp6ZHR6KkRsWC19aDd0QS16TElTeylEY0V1MjRKY2MlMFFL d0V2SjcqbWQ8NG9YeE99WV84ajZkc24jJXdeMHx1Yj4Keil0NHowT3RzQVlxKjtWSzxVeGRpUXZs PkxvUXY8ejwjKXtJVzNBfjFJX31YPUt6WXUtQyh1ZzN2SiN4TVdINlE7CnpHQ354fiRNc01Kc31C MlE4bFg0N2trbVhjUG02I2ZrcjR0QGRSekMyVzBSLWQ9JW5UTD0/OGE0fEs+YX5kVmB6aAp6Ynxf N21CeiZuRGF9Nz9jWWplfE5De3lwJmJpJi1XT1VUbmR6K0w/K1VxNkZGJjE1bzgzT1YkP2I0MiF9 KjFWQysKejw7S0pOKWgmcH5XYkE+alVQR1hpRC1MfEwweD0jeDxtNS1AWiRCZFJPY2s3JGY9NGp3 byRAU3Zhe1puOXBtNHhzCnoyejw+SFlAI0x3JWp6QlFwOERYUms2VDE4TjVNYy1ve3xjMHZ5UEdw WkFoSERgJXsrNlc8SyQjZUQjdDQ8aDxjPAp6USgqOD1BVGFsdFhWdjZpejAxJmQtSkg/c0FLaytJ MSZ4QGc5TyZkSkFEVlB1Rkg7YDIyYjF5WjhQKmB1MyRoT1QKelMpRHpyNExTSHBhOFdYRmFeUn1J Sj9GMWBVMT85eyF6cWtgO35OOXw5ITExMEVtQDIqbFV0WUd7QEF9VVpCIyRRCnpWJnZzN1pRZmpU ZkdvfVQ+KVVoRnBKP0AjVmt8NHppeGRWYEB2KkwqODFKWHVXUVokcytVRENuZFVocTFRX0tLNgp6 KzRielI+WFRqV2xrOXZrPEJxPDAhezleQG5yVEF0TDhPemVrKXUkJVkkPUBkO3p0flZgXmVFKXlx Q2coUSZ2KXoKekB2Wm0qdTVwWjsmcENPTW4lbDkjM0FRSzNDMSE1bDRuNFA8WFhCNEdofnQoTlko YzlFU3wjNCtHPjc9JHpLTUJeCnprUWMxa0kod2dYZzR0cWZgfThGPVp7S3t3Z3FAbmwmIXg3YD15 PXI5e1E8dDJyZGwlNEcrSmh1PWcmYVJDLStsRwp6OzQtfTBeQGckMTkjN25tQHBCeHQzdUxRSzEk IVl6K15RJE1HN1AoJmtzJG4xNU5LVUt3NmZ+OTtIUHl0ancwaUwKejcrVCk/RWtWSUJ8SkRgdUUl LUhleHtka1VGaTJ9fEZYPHliKmh3RnFlYntaPUE3Vz9ESGpAe2xaPHsoKFV2KVl2CnoqUzVYemJy PUszNjl6MV51MF9OKEopWHEpXylFN2xsSUUlY2VsKX1jUDMlO156YUF3akJQUE42NWp7S0BPZjZp RAp6fEtMLVN1THRBbmEqYTBNOXdRXno3N3B9NzJVYCl+PTFqViE3JFdxNkdHKE5WK2olTT9wOWwm QCN1XllAZWJsPFgKei1Pa1pASHJwYjFgMGopRkc5NzBCTFglPEM5MUtRVnIkfFpKKGZsI21JVDx8 bkJHOChCbmdjQkp5M3gqcXtIVlFtCno2eCNMP147PFpRKCMqYm9nVlooVmUtT1ReTCY0LXR8SiM5 MGpNcU1GOUNnSHUrcS1ZeTZVX1E7cFZnTH5jYzVuKgp6cDcxJTBmI1ZWYk0hUzxxVC09Vmo1bW9M NCZkSyo7SU5xKSVlZm1CIWktdz8oWm5mQ2VSdHtaeDUkUyElbGM2Y1IKelBxKzwoKlcrISNnWGQ9 UmFBPStscmNDUT9eezYpVytxUVN+VCNJZyN2OShuUWk5fn0tIX1MMDBkfkp8bzxIWD1sCnpMWEBs bnRsTlBgWktMPGRLZUo7NzQram91bXpjbChwJnQwLTRxZVVtVkFEUE9GaSNlfl5hWFZDKyZwakIk QDJTYwp6bXE0QCE9Yl4oJnhhQllnanR+cys4d3dAbilee2wpdFBDczMhZCV4OE99N2dqVyM8a3hm QSp1OUhpPUkwU15gNCYKek9lQk5+TTcoVEhXfmYrVyM9PTswUDhXVyhKMiVtVmBiUzFsMmRCeGIo UEZgNGdpQ3d5YlB+aWFGQEliMEohSU5ACnpDeExFVE9kbkJ1Rm9uKmB0QnlUajQlYjtRdl5SeUlg ezVNRXpfRS0wRXhENHJsIy1TfXh5QFg3UTFpRW0pLWlhZAp6VFo4R1Z5dzByQCNETyRfK05GJiQ1 RU91e29FRE9QSllKaFZPQm05JE15VGVtd2U0bXFOSGBQWUpJMThNO09PWT0Kek5xQ2FhajIrfWMq UC1hQE9ncnw3KzszVUUybkZocSkxSD5wOTRTZSMycXdXTTgxKnNmbyhgPWJYZj1RaUd0aCFYCnpG eGx7IzVDMVUzNm49YWQxS29pRVgoajxgYlA8c2U3QDZIMG82RCpaJDBiaUI8O1YwOSRDVSE9dE5O X0klZHkkVAp6VV9NYj9eNCExeFZoLSpmQkVkK31gTkRfTVV1bF8tSG48VXZnZXcjOGZtYCk5QzZB PFllamJIS08kYH5POWJhYy0Kejg/eVE+OTBaNjk7UklZM1lFMSFIYDBNUVYrJEdJbFl1PmZnTy14 SW5kSml7YTYmemxBenNlaDVwP0I+aDx7SGMwCnptSVNMKDZ0fkdkNXxae2NQKCh3KURpe3dweypE Qmtna2Q8b0Z5TnNFZUJzUW9jeE8ha0p9VzNnSHNoezBAO2gheAp6QjQ5PzNJbDlrZTx7dEtBXzNq RmM+SyRZSHRpRWVHcHApX1lRQEpfVncpZnZoLVF2YVlGaU18VUY0bHNDPE0kVnAKenhjY1NHZiRg JUZqKVdfJVJCJHFgZk4lSChYZUBhYmo7ZkVpdFpwRU9pUHFmKk1+aXFPaFlpdHc/NEtENCUzdHs8 Cno4bHVMYWk4djgleGM7b21XNSUmKikyOE14UHQzSHVvS2NkOSE5SU4kc0RUVkJIMGl6PXQtWUlG WHhgIWFFaTx+cAp6QEc2MyF0eDQtRklIaElWOHdualFfKEdwKzNua2h1UTFGSkNlPCpnc3ptRXFE U1d8SnApfTYpcCQyKHRPKXolVV4KenU2M1BvOVN5aldzZWVUT1Vpa0tgdkZNLUsrYnx7MzBJaC1k bGFeTCkrbEpqUXlAWXlOMEJxVzIzTE9vZEpKPkxhCnpZY3EpXk1zbX1sKUMoPl5QWDwtZmopaTcj MHBoSFlDWCZYfHQjR1Y8NXpha34jWk4pMW5mbzdYYyNnI09mfDU9WAp6ciN9S280Mzs8aUxoaEgp QTBBR0wydUY2KEgmJDMhWHZVUEg9NyNiYXtnJE8ldjFfYC17TyFnPTg/KX5uJlU1cEoKejY5Uit+ cGs7KjswKDcpakNaelp3fDAkZV87cDtGUDhISyM4TDttcGExSHU/TWYtcW8kV0QlWnYyS0RscSg3 YTspCno3Vik/QXhGWlBJMHxMZE8oaDU4aU1OQHlJT3hKOGotQFRtXyMjalA/azR5QyRYfXZ0JF52 UTxuYUd5bWRKKyMhaQp6c25DaD5KS055UU0qK2FjNVhBdW5GSmtfMm5UUjdOcWJ8QlI3MitvMjU1 PHgyKE9Lci1DOX1WY1hmPUskclNebW8KeitwTW0kcllIe2ckMFpuYipsLTw1X3pTfWwjejEjc0t1 bDBITF8yKXkoNj8hYHtfY2UxUChEaitzaEtZRXlFZyVnCnpMTE1sQj9IfkBjT1Bffl8jbUo1fEVR RUJwUSRNQjJZbUY4QypteVdYN3s5NnVYQ0M2cl95S1U5YCM1RiYyMHVpVAp6QCUze3NCPSYpKDR3 PThydGxERm0mNGM8dHBXMDNKMVpTd1UtQSNgVEtQSFRVRmI0TDYwU1VvTU10TEo0SkojNXEKelZO NGI7Pmt0eiUpZiY9bVlwfGx8JDgraWc5LTQ5MSU9KFd2b1leOHpgfjl+MGM0dmxCaHNAdkI/JVFN am9vUDUrCnpDWDloRjJFcktWNmI0QW9ZPzlXZ0A8JmwybzFiK0c8U3JITlJFdE12cClUUiFTUkZi MGR2KSNpVGc+MCktVFB9ewp6QUxjS2tpeippdGFucGx2M1MlSVFmaU1RYjd6a3FeakRlI0gxTEVP TTZXX1JGdT1pI0ReZHhpIWcyNSpgdHsyVjsKelY8MyF5RmIyWEgyeEIwT2ZnPXpEI3s5M0tOTURt JEZASUdFVGAmSk5efTw8VTQxX1RkI3l9VllWR00qWmEwRnNOCnopQWpvXnxGPmZQPlZwSjthMCs3 fWpEYXUpIVdhbCtBZEc+ZDY5ZU1vYH01YXBpNDFVYl9Bdn1+N3oxR3BnZlM0dApsS298cEk0MXsx e2V+ZSM2e352VXlwQl5rKkt3JHM/MDAyb3ZQREhMa1YxZyU0NUlnXz8KCmxpdGVyYWwgMzk2NzgK emNtY2UtV21wfFMoPUVEajJfZCl5eDhSLXhtKkRPZSt6SWFQN0JzajdDdW5kOT9nViN0Y1gjKFFC O0BfeGJNTiMwCnp4aiR+NjMyZ1JzUGpePiFTRkt1QTZDQClnezJLbChKT343T0VoLWApMkxnY3VB SGtWbnBAQ2x4YVgpVEFBVFNTTwp6ZXRzRUlldHRxMzglc2xER1hvSGFWbnxQMEo3MHVgcUZZQnRU ZjJMSm5pQWZ8UTcka3JSOEc2T3QhMUY0amomejIKemdEfn5HeTgxRX0oc0cqQHMjfD8kM3YzNGNv PT85Q2QjOzF5dTJBYz9wMjw+cSFHWEZoKS1sOWslPW9INEdfKCpSCnpBcVFEREQ7czd2XnY7TWw5 UihGd2A0KHVWWmk1VnBARGlJKUVlbSM9bSslZk9GYT1TXjZSYSR7I3ExcW9YPGBKUwp6NXVxQSVI LT9CJHNYZ3okOXFiJSp5VlJoRjFYJWZ9JDVIUFpGb1lUKDRLIyMtKktZUUIqZ3MjeypveF5tYz0z Z2gKemYxclBsQ0dyWmE0MXU0KV9td1pXRk9lXnNGUEphQUZDRTEyWTFEV3lOYCZzI3ktI21PfDlM MTFsKDY9ODRpKVJ4Cno3RGh+NTdSQztSKDxhJjg0aDByQSk/MlN9QDczNDNfZ2pSZXVTMGRXa2Fh JnRWYElAUUdCN1lHNlNkMzVGKkJIegp6OEVHVEU1ZW0jM2ZAYV8wZkBsam5fRyEtJHM5RDJxRTw7 K3klKkRwfUd8ZWY2ZktZaCNgMURsUiswdyF0PGhecCMKentgQk5ZZkJXPXdxP2BXV2g9cWw/NGd5 dDtvNE9BIzFkOzteZndMMCVZenFQKndtPCZ8aT17QHkwbzBSWHRlfDQyCnpBfVBWSFhLN0JTcWk/ QmVLPDh2YDErKWYlSUd4eW1rTEN0O0kpcU48VylgO1dQRiUhKVRDZkEzcFRETGpDajhVSAp6Jlhr Sy1NTik+NC1fcGlfQEJgZ0BJdEY1SGN0UyEjUDgpcWdifnlvfG0rcnR7VCpQMU8/NXg9Nz1eWSYl PV5VQnEKekVOelZGOFFJdl89b3kma25WNHZTN1BQamA3SXIjTHY9KzdgZTtATWlJUlhaQGROIyZa Y0UqKyNnd01+XyhZM1U8Cno8MDItMDlfVDsrez82MEQkQHFVcHZhbyR3N08rNzI9UjVSX2JQVitX Y3tiM01eWjhxTDhEbDJ7R1pnYDJhe34pbwp6VTx+ZExqNyokPStXKWBxe0xoSTApJHtYel81OF5F LSMhMjkmUHp7RGBzVzR3Kk1qfl4+KDk0PHhWWWd0Pkhpfm8Kelp1ciZEVmZHK1V5dH1CdENqfT9Y Z0FeRHlnXnRAUlBhK35IekFyeEBgSG49OyFTWE9sV2ZZS05UK3hkTykwTSMqCnpGJm1ZXiZ9RGh1 T0lveDlPNW92eDJgT01IMVdWQXNjMUZlZFVlVyNfdEI4bjVaOCs9U0c7P1ZDeCZadkpJS3wtKAp6 NylXS19OSHxMN0lfcWExPk9Ubno0ZWJZcWZRdGJBeHA+UW5XaW5KSTskcTNiUHplOEEhO244ZyQz bE5VNk1FfjQKemMpe35CbiVPQk9LI0YpaFUlKlpMfE1qTlpzVldxTTxzenE+YX4+MzI8bGhsTWE4 OHQ5U19JNDB2SUZLfih5elNZCnpLVD50UGAjWUdvNF5sZH40M2RrNEk1O1dxXlE5QH4xcklkOXth K2o0T1NIZl5UVjlIal5TLWZRNEhvKi1Pe01+Tgp6VWlLcSlRNkplNDduISRpPyNYak9KUzJURWpH fDteY1ZiQTBvaUt8aUdOT3V8QzdFVSU9VlJiOTZeRkV3VTtpd28KemcmKXFZenk+Y3x2SG9qZndw X35MZVlReWtzfGJGJFYpSXZ2KnBqOTREaWRWaFJCc0g+bj9faipqSzkodkF0RUk0CnorX0Apdloh d1JoR3gyK1FaKk5abGlrWFNZPlRzWCFyQD1rQEw7M2V8WEkxY2ZhczhGfSRPO2ZFUkFTSXl2NUJP bwp6TG10dk53dkZHZzc+NkZlVTZGRXBvQ1F4dWdYIVQlZ00leVRCV0VNUyZqbHNfP2lCYmQyLTBP JVo8OXx1Pl4zU1kKei1gOWZuK3V4dCY9aUl8MyElMGE0cm1PeUE9WUBHI2E0WG5nT28ldWY8QFhB Rzl0O2J2OVItKG4jNGsjO0J4MCFRCnpmdWMzSmZ+bClsU2Y2TXZuIUokPWA+RCZVUlZATEFtVVZf bkRRRiRSaVM7cndGRyU8X3VRM2QtQDZ4d1AqXi1peQp6OWM2bDVnbFUoMlY+eXk1TUBOPW5PNzg2 JG9ZRDd7ZFUlfFpJbmVwQlorXiRORTB9K3tIaCpHc3RHQEFUKWFCZzAKejRRKUxiV31wJTF2dHVK ZF9yekBxI0N+RkN2dDs8WSRJI3J0MSQpN0BYVmd0NjN0S1B0clhyKUZiZ3Y/NiFYUzZ2CnpeU0lU JHU2dGhgK0dfd1lsNDBufklpQiZCe1hebHAkZjtXZ3ZZXzV2Sj1hLW09U1Zsc3E2QDcxK0AhJDNA YVMjQwp6RSQ4SUJgSH1UZDtsSHteZk5nSllVdFZ4cj5OcntKOG1RIVFJd3BLNG5kbnpqISY7NFdq S15sUEszOFM0KnpDI1UKekt0N1d5QTh9b0JaZWspOzwkUHhOLWdGWWReWUpEWnFyI3ZzP3gkdVdK MEN5NENBLTduZTJgTCtZUW1WNWhWeXBMCnpZUylFdlNoSWF6SytQVHs3UHN2eSY2SHxYZihJMXVA cEZsV01rbzVMSGpuZWN4Nj9tYE1wM0g4R3BVWWdTQTMoYgp6Z0tEWnAoSyNwYmlnJipoWjEyVWpp allyKlVmVm5qR3w+KGgzYjhAUG9tWXhFN0J0YCp6b3RCKiQxfkJ9M0tIS3cKenpvYSlBX3IkNm5V K1NWR1UyYUp6KnJYQlNwMmt7OEArV0gwSDlvdFV3fDcmVyRoJTVlNWZQQ1p5TGopRFd2KXoqCnpI VyF7YGZ1IWIpZUckUWFyOEk5N3phZ1Q1NzRVYWdKQS1SYkM4VztUP0BkJURebjdSM0xxYlJRciZY JjtjUnQlPgp6Yi1rb25ebjd2OylJfnhAX0orWkNZQjZMTkNER0FTRkNFeEJ7bitBdFYwTmBabWpK RihAZGYjP2JfLXdNeitpYGoKelZmYj1Uen1WUk1gciZHNnF9Zy11K2BFVnBnI0JUdkt1Klo8ek4t Sj5tRFg8WDs1UkNnK3RiJjYkYHNrdXZeUmtoCno+QkBVbipMTWpSRVA+IUJyJkR0JHVJKjQqI3Qz e0Y1fV9KM0lQUW59S2hEWSNFPkNVRkYoUmJZMyRaZGxvVlAxPQp6Tmx+SSpfcFMyZ3txXztDO3R0 ODMtRTRDTXI+Y3soI2NHPm1KNnFyT2VmVVJ8OEk1LXlJblBrWWJ+PDMqZW09UTkKenVXbjwxe253 T3YtTjgqS2ZrJH1RdF5EPl5qVHBAcUMqazdLUCNZJmh6Kyo+eSEqZ0ZNTm57eTxueDBMMUZrOUt5 CnpgQXpNMyZKdzUwPCReJF4kKnBvZ3VrR3RWTTlybm9fal41c0VlcCV5WDB5RGc/e35zelM8S09j R1ZEKnhAaEZ3Ngp6Z2o7LWxrbEo9dCp9NitSKU9FSjhyYm8wSz45S3l6NHUjKnEjI3B4NW9jVih5 MkE0RTdGVnxVJEwrPDZtS2lYNjYKelFiTytwKHpkPEltJmJxLStDNHJHe2xAQ0NRZGpJdGZoYmcz bjVrfjVuYn5rTiVkRH10KD02QyhPLWZIR2pzPT99CnpTekFhRkhXX3NDX2hfbjFeRm50QGJEc0RP dk5BR2AlLV83aFcrRUxMWSkrU30oSUBjWWRFKSQ8RE5JaiY9REFCNwp6JlRORC1AeEdPQG8rJSFW IytXNWNLOz9EfHlXdyR4and8WTVzVlZNb0piSHwmVmxDWSs9MHchXnJ8TChNRWkmdG0KemN0TF9H VnkhT2leY2JLdSl4K1FXOHdTeyhgKzVXUlUzNlc/Y1IySDtTSXR7VDxNMldvNXhpWFJPTHZiWHZs OD9fCnozfX5aNkVCU3AtdGA1SWQ/OF5ueiNvOWArI280MmcyXkJYI08+eC1ZYT5WTGRZZT5TMEVh M0t0N3NCWGpMfGtYUQp6ZjNYNWloK3gpSCkkQDFeZ29MMVBaJEg+MWRDfCMmS0FLSGA+JSFqKSZY RnxUJVR6ODIhe1YmVDlwR1BgZVpeI2cKekQwNm1sYFArV05gUiRMV1UyVT4/V0tBaUsqJmJ2UjEo YjxqeHYoQk1WO1ZfbyFrcDh2TUpEa3EoeH1yXlpKTF5LCnojK3B2KUtNdG9pTl54cyh0Z3x4RnNv TnJrS0pKV0VjazVIWVhLWiZuQEBxekZfXkApbVo3bU5RYnEta18mMmZPegp6aCpNIyRxUjFCVkEj bzxsSGt7X34tVFB+UnRHISNpQXo7cHZvNlhLbEFycnY2NTNzaHlNJHxKdmtrRmVuZCQjXm8KelF4 O2pmZ1M2RT5fZSMhN0I4JiYrcT9faTlZaWpzUngpJUJEJUdnMURIPVFMa18xV0w2ZCNOM05LUnI0 SyM4WSteCno8PEpOcU08Q3UkLSNCVG96Pk93Xmx0LSYrJTNfX3VNYGBYN2s3MSViPUVlIUtDJmcz RzIwT25QJmcyJGgwKFg2Ygp6JWojckE7MmFDSnpBQkNNNjt9ZXclRmdCJng+UFBFQ0gjMXFwTlBv biVqRnVqWGxKKElnNTxiMzExcCloLWZ1bXAKejNLZng+OzE0cXEpZmB0ek1PZGhncSVTfmNfJmAy IT0oezB5bFdBUjk/anBKbl9FVVRzJVEmJV85KF81JEhBIWhBCnpeP1k/ZXQ5TUJgWDx9fmImQlVa JW9RVlNNeVc/MF9VNTJ9eHUtUDZOcCgqQW15YmVeOFRpKC1YI0x1R3xxMCY5Zgp6XnFISyMqQGY+ VFk7RUAwdCFMb056VGQqdz1ZX2IkX0k7c3VtbGRlWE1+NXhYWjhhKGdQZ25idXwwUWN6UEJgSHsK ekl0SDhzfEpMKHA1dms4MW05YkMldnY1eUNWU2NqO0xWaGZMd21ZPXUmODQpKVgzPVJCKF9EVG1j eTZwYGR4bS1MCnp5YlRHWHsyemVnLTJnWU8xfD9JaCZlbHk7K3YqRkdYKjg1dHZsaG0meXRke2BB e0A0U3Z5fj1YWCk8QUVzMlFPTQp6cUFMU2NTWkdNb3N7SVVReEEoRGhlczc4cWpFSSp3LTYqVjJO PXZkRWJCP2chOWxXQ3t1XihQPWFVT1RKN0tiZ0cKemgrZHowcD8+JGhFN0FES050QWw/VHVVTEJv Kkc9QXRJMTU4R315PVBRWWdhTjtsPzdYVVF5Ryp6ZERjKihUKGBtCnpJYHN6UHVEYkcrQCNidE1g e1ghIUttYD08WUc0RDNeZCk8WlYjSTRke1k1UkdZZT1sdGdvYWFqJSs5fF4lWms5ZQp6U2ZnSXxh SzUoZ2pLeE88dG0qT0FibCFlUyEtOF59dFBpdmBsb2sjeztEKGZ0a1J6cHRpKXJTTSEoeVFnSUFu KS0KekZ4OHdgVj1wRj9SQ1M+fVN4blQ1MWRZdlJMMVpOOSVsU2RHJkpVdWY/bUooZHlTUHNGa0Z0 YFYqNiRiUGJIZTFTCnpOSXA4T044N0U2a1opbDF0KTJFI15VJiVmMVE7d2pQbUtKR0NiNiVtMz59 SiFrQnBhZl53c2lNSCZYdkFXKl5ragp6WUp9ayM2IT56NFZLUjhIRkJEZ2N0fGdqbF5ncTw5RWh5 eDNMSS1ZWEgwc2NYSUx8X0ZXe2F4ODlXWT9XVUkzcEwKeklyNmFwUjEyOXJYa30layNfZmlRLVNN I1MmNTMjcDkrKWpiZDU2d00/X3w9VWxOXkxCI3RZKUtnN0ZUZXNVJUItCnprSkVnRnE5eH4tcSFi cSE4c3VvY3NUQmJHdmVlWjBAdmlSPFdNTG1lQTxMJSpeQUVNOHZtJiE1dD4rZkY5d3ItYQp6IzhM WjFQUik+WlRATG5XPGN6XzRINiNxZHd6anNLSmIyMUNiflFKKW9sMUplSW9FKGdwUz5WZ0Zsb30j eT9vPWoKeit3TVJTZndVbUgycn1NNiplR0hCdGV2OXJgallQLTh+UUEqVz97NndSSEltbUVvfjEo d2o/NDNKeDhNK1JCQTQ9CnpuMHBmYiFiZE8yaEc1PW1zO1FCdC0+PjYpOHhHX3MzdjBqM1pBcm5P KG50RGgzMDBNVGV4OGNCWC1vZTwyI0FHTAp6bFdFNEo4WlhYd2teY1ZyUi1hOCM/fVIqMSozYzlD aDlJPjE7Z3BMK2p8d0QzV0p2clhtfTNqQFlCXkJ5Q0ReZUEKelgtdykxMDFzdlhxWEtvKktZVnVt dDAtTG5HeElXPEoxSGdvWF5gJU9UOWJ7Y3ktO1QjIWgkI1h1VCNUIVVQQzFlCnpjS2lKPXpvNHJ0 SyFLamJaPHY8M1QzbyVaS3UySlU1UjEtbD1FV1JxdiFTJVJCWnhFJHVWbjBBVzxhcUJzWHZ6OQp6 UChfZ1FoV0RoMk1kZzFUNlR0QmViN19fMmUqaD4mNCYqazNSbWooP2l3blY4bisrczFHYH1kYTZ4 VFU5Iz5TSFYKejJgT3BtdTVVT2pSdXtWeTtFbmVnSE1hVD5xQ2paVGYoP0VTWDYySjtfbyQ8ejB9 QlZJdnZtWj9MbFRzaG1TI3ZuCno8NF5oRz04Y2UrKFJsRj4wMkNmfXRLaz84RlJzKTNDdnFUTiNz KSVAXiUyQnV2NHE4aXskK00+cnI2KkFfWns2agp6TG5+U15SUiM2Rj0tVEo0JUtIZ2MyODtyaEU5 WVA2THI9eUYpZ3ExKXJXXmVkOH51TjFBUU90X0J8K05XTmtUTHgKenRgQEI4TzZFUTg9Y0ZEY2VU Z19UN0c9ZiN2NlZ3Vkl8Z3R1UTE2eUdZfVVLMCV7UihEcEZBb283R15FTF4yI3VlCno/KzhZJlBw QG9Nc2BpS3gxdl5NNnhnYl4pI285NzItTm93eXk/K2dYZWkpMm9XSVVMPV9yPXAmUnYheGFwe2dt Wgp6NzdUSD4jMClpZVRCPT09NUxJJSVlR2woak8rKDZnYiVxMCpWMXIpNUd1blFAKUVDIXMkXlRD M2h7T0FIS31PbH4KelB7PWZASiRsfH0/d0BLaTYpZ09HY0pEbkA/QlJiXlh8QHZ9JDQ1a2J8OWJx XlVeJmVoc3QrU2dOTnhmaV9TST5iCnpSX0hJclFNIzE/TEdubk1HVGgmTl5TNSs3V3B2O31faT12 Ql5CTjwrSmw9ZlZPPzRyTGY1NmFjKlB0IVBoPFpwMQp6e0J7MDQze29UPTJAWEojcEFnbDRATTN0 S2FVbE5LWU9yO3BDd15WQDdHfHlOKjFLZ3dwclFIX1VoWSt5NDxkVEQKeiVVVjhGTXppPnh6a2Fg YGwpVkk9c304TWRycStfajdtWXtHUkY4QWlXTn1CNHs1ZDRpcDhJdSV7VkxvVFh5X2tDCnoqfU9q fCZqUEoodVk4PnhpciV1cHp+c0E5IU00SlFJJDRKN3E+NkRsQmUtTDk9cn1+dHlTenVfOH1tWU5Z ZEFvbQp6JWdxYSsldV8qNkAjQnd8cEh+Z3tCUHFNU1NFdVNjc0xgJipfMCttUkorc31CR14mPSFD QWtoX2tfVWczR0hVU3kKeilWMyhsO3RXTiZMYkpHLWgyTFoxU1olM2c1PVBFR157THR3WEV8MTxz UHJ+bDJ6RjRBPW1SQm9VTnVBVyh5Mj9MCnpTVytDcG9PQDAlSihyS1lSaSZKYmVJTDEjJVI3ZWlC el9lfVc2MEZvSiRiQj9PYDJAOzBZMUZHbTFhNVVzT1c/NQp6LWVie2BacShUO04+Y3x9bH5mI0Qt fl45V2h+NX5keyMqPUZKeGdjckd9JSpyRnxqPlJpKnoxQlY5VF8qT1lBUTMKekYzNFhubnZ+WSVl d349WTh7MjdQOEdySXRWWHZXZHVgM1NHeTxfUnheP1daWmlDdHptKXpnVGwhdTBYNStvSkMkCnpI TExyWElrYk14ciRaeVcpNDNiKlMrI3x8PlJafXY4Kn0mPWt8RHsxMz1pdGxJZmJvPCN0IXxCXlR2 K25eflhVYgp6RH1raCpvWi02MHpwVV5gdit6eUsqUSQ2KCpMYTJWRWN2RlUzMUA3YmJBOFhxZnRN aDlaTXUyVDdCZUJNRy1ZSTIKemAtTW1nZTNFODE7NHRsSE1jUkhfXnNEZHtuPHsqKCtpK2ozRTdT SzVQanYoZlBuS2AkaEp4aFlsIyFhPFR9MGVBCnpOcTZ4NDxXYWBePHxyUlJ1RDROTjA/eEltKTB6 SXhJUyU+YzREQ0FSZThkdiV7Rz1CMyVufERYTXZCSDZxSCFATAp6e08wSVYmZXtobFl4VG1fa3Fr a3hiPHk2eUxZOFNndEk+QWVPfSVvdnZfejtfZlFLTntqRyY/SDN4cD1FR3I1QnYKelN6Pjs8bzcq aUJBRypXZ21oI0hrZUU2bksoUCpCTlcmZVZDYWhpTEF4fGY+JENjMnc+YztiVVdNODByLUhLbHIo CnplPEUjYiMzaip9YURAQlBye0d3XnR0Jmppc353biZoZWh8IVB4bj81bCs1fHVjX1hzQjlgb1N+ YW4qWGkqJjREQQp6N1prfihDbmBGekJAKGdeXitYRX1GUFpeaTJPTTdzYzlyKDhSdihYTXBtcnd8 RGEqZjhRKmY/UnVSWGZibWFOI0oKejZKeTJwWnwqeiN2PnNWYjxNQWYxWXtaSEZQRjREWCV8SmQl WT12d3hjeTljakNKcihmMSZrY3M+cGt3Yk5MZmAxCnopaCt5OHdiN28yRVBSdSMobFR8fUNpZzF0 clVNTyh4bDBPdj9SWldvPTdALXhBVnJ1fVdIJSRNSUJxUzF2N14oagp6MjZMbWJjUz1IeDNEY31j U2NARC0wWHE9OHg7dFp2IS04eFNUc0x8WmQ0QjU+Vys4IVgmNFc7QHpyYTJtQTdvQzkKeiFeKDBz eElMVnRhYVdjcWU4WU1nPnhZcTdPOCZpYmtNIyFFZUJzPTd4KVQxe2lmQFFoYSUqYytsNWIye3RE fj9vCnpBUkAqTnNAYEtpQWFfbyY/T3RUOGpnNClFUT5wM1ZKeDA3TWx1LSUhJTZAVCZoKGBoRDtg S314PjIhVVFnUHJyYQp6PkxfeWtwbjdZcFpUK3oyIzJDZlhxTWBpaiE0a29uY2EyXjxyZEEmPjtT dFRYZF81ZWkraS0tWmUpYUBVc0BSP3YKemlrKj1xYns3c3p6JUNFJWh0WTZvK3xXLWgyWHxNdjwx ME5MTlMpdEZieSlNaDZGJTklcWVtKmp4bWk2T2RGNkM4CnpDQ3s0SD1VckB+dyplRTg4ZmRoSSpZ VSZGfEVTYyNFV3FraUkyX1ViPE9eMSpOeDxvKz9xWjRFVDIhbz5rSGB5Jgp6aWJffHVCeUpOVVp3 bDVrTXdSY3xgcW1pamhsWjNxbjFvb0gkcUBxLUc+YzUzYE91T1FGWmRecHZYSjh0VkZkKmgKenQw fE0jJTh4RChhNl49T3R6PHNDYVRGcHE5aVY1UjEpRSt3Xl53V1Q5fGdEbm51fXUwbEUtUiNRaFAw Tl5mczctCnpEKnRQdjg/PHt8WEopSTA7YCEwYXVna35YRDxwc08zXyt0I28hJG80IWFUSVh2LT45 TCYkd0s8OSVCZj04U1ZKJAp6NiVGc1QrYzA1VT5jS2xHTGk2R0Z5REAyVHhHIXJDRy17cXYkKX00 KnRrSEw5dHZkO0Aja2ZBWHZBO3xBdz9DazIKekoxPGhtQTRPQ3RCSF5OaT1IVCY8REJ5cFk4Zlct O3p+bTdHSEN2cUBuMyUxbzMxJT17PnJGK15qPXdjOXVvaTkhCnohQH5QZTh2SWxCbFZLXnVOUno5 M01LTWFDZzI3bSElSURENSZtdloxRn5eRnJ1Qyt8ZzFJZ3JpMylHaEI3dn55Uwp6RT9USU4mfmZ+ R08+M3BzYU18emc0UjxCTGJ8a3BsPDEtSjF6Yjc2Y25tKHxtOSljQmVRTEBkfHJoMCYlPD51YEsK enVuLThOJUtpcjVPVyU0RzRxO2ozYH0yKmlHdzxII0A4ciRfYXMxSSRTREUlc2d1TjRwekteLXdl VHVZMyl8cDl+Cno8OWI8MWpRMVdmczBwKiZ7XiZmMjlwVGRFZ0g9ZT0oWTRGWERUIUIkLVgoUj1Z d0dSajI9YComKVEjfGRBRjQhOwp6dGBsZXlofkZzLSsrXyhnV0NgXiE8IWpvSHlQIz1XIUpUJTBx TzltNld8RDBkYnlrcChKKjwmbV8kfkBKamJTPjwKekZtek8zVCFALXxCNmVsNj53KEJPej01TF5D NUxrRWoraE9xSVBEO3Mqd0xDU0xvTUFNTEt3SHFJbj1uSUs3VWktCnpPQDY0akdhN3F9Z0F8ejRp fGFgX1FxR1Vxek9HcCpeTU1zczVvZiRiRlRkNzczJlUyTHNwPiQ2clQhTD10SD90Ygp6b2t+R3Fq SDY5ZlFHPSZaezRnYGhzbjhodiFuSXBxOyYkV3ckbj5yVUdBcCZvPVI+YSMlUnxwQ2B3KURrPX1P eigKejAqQ1d6bTRpK3Z1cF58OXQ+bk9ELXExYE87ZmVQK15XR0B1ZzwwTWVNQXAzQlA/bk1BPFhT M2JjWlpYWTZKRDlRCnprPTtJPHolRzslLTdOPyooQm9jfDMqckB1R3AzV3Y5cUA4Vil9MmUrSV5K aUlidm1Vc2MrSHlONTVMPFFtIUhjUAp6dEU/QiU/MTY7eURlMWl0MT1SWGs4YGorI29XIUN3bFgy WnZTektaTFFOZmZZVnw3VWJWakZsN3k1RlFiTEQlNi0KemVMMDdHWT9ifFlmMmhfTjw/bjFndzhh SV5vfEkzMFR9Y15oNF9FdzN2PE1uZXBfNSF1NUBSMy0mZkMqZDdGZEs+Cnp7NjJRUzU2eE9CdGxy Y3ZGMEhCa1FWUmpLRDZ1anJ4I2g0QW5YeSYoMihwZUgmNnt7I0gpaTVlUiEqO0BPTHxJRwp6dkUt RSh3MGU3Z1o2KzdoU31KIShNR09CdlZKI1pRNTI7QjxVKk0pangjJUZNR1U5K1JhaTU7YCEmZWVh PkJsSkEKeilJZ3RqTkRUZnFsMjUhZnNGeGMyOzhzdHlgfUY9cHRVK1M9PyU5Qi17WlZSJVNxSi04 bGoycEszIUNEZzxKZUp3CnpQZS0hKlNWWTYmPkhHVktCKXdnaz00T0EpJG8kYykjZmI1RFkhOT9L cTQoNl4oRn56YzIpJFE3d1RNRlRDS3c7ZAp6cGVEJjtQRWU1SSMzWiZBemJ6Skd3aW47Qj4pcHUt PXM4QyZJKGB0alhpPDd8SzlzODU8Ozh4PHYwPThBTjdSVXUKekgwSlQtX1I4KGFPK0xDVTk8c3A1 PEx5VH1gRjhgJE5RRSZyVXE1c2l4JEEkfiZ3KXdRTFBmd3NZYERHV3tEN0x+CnoqcXZ+fihoO09g TVdYdHFjMS1paD9DRyUyPDljWDEtY09fNlZhRVchVWE0NTdPVz1LXnNlPkNMWjM+OT9tM1VZbQp6 WlB7K1lXcj9FZlp6TWFNPGFRcnd8Q09DWGxkUGhjLWxYSV4tQGVTYk92TTwhSmZTNXg0NmVAfWN0 YHRWbFBxJXwKejZHJSRYRzdlaWlScX1IeDtfYD1mT2NYciN3Kyota1ZvY2g2SlNaMn1BPTNHKzZo cmVOLTVNQHBZKUJQc0F2U3RmCnohO250aXU9OyFFI2xGfE9XbD9JNSNRNHIjaF4+aCVJN0wofChk PkpNKE9WTnFxZXdaPFl5OUFQdCUrQUtWUl83Swp6LSFSSWlLc2kwcnszXyg1PE9CeFBFcj5OWjx3 VEBxNHZzWXNecG5pfnBrVCNWQHlecno3WXErWVM1QERNczdSbzYKeiVncXtHRldXSE17aHBGbmBJ an1hNF9kQWcxNTR5VEMxc0B1SURQcUQhal9+Y3UhRzZSK2lXZ1JHcEMoU2dUKUY/Cnp4dCVmUVBU eWJNNjQhK0clNzRiQUJkNXJ2c15uP2lNYHJAdFlsMlo3cyNjPWwqY1hYOFZ1TVF9OE9wMFlGSk5f fgp6MFoqejk0QnxuJGROM3QrO0YlZzx6cz9vZipWUjFBUihjKH1vbUBTWiZQQjdpQ2tCUm5CQ1Z8 LTV+KShxRDx2Z2sKekFiaSs0eU80dn0oQnNZQFl0fE02djFGKk94T2xHfGUkYVdTcihCNkVCanJX U2t9Nnx0Rl5RNlI/b1AoQlY5YGptCnpWelJDcD5VSi1GZXhFX28lU05PQWk4ejFjbjRsfUJ1dmVr QEZ0QEpediY8fGh3OENBTWhfYD1WUl5gX2JfQEl7Mwp6bUhhKXJuSHBhMVFGVlQ2UE8zeV9YX3U1 ez1nbF4yR1Brb1ZMNDBoOXM1Z0pac2lANGdrYlFubXBeUF55QkFrKzsKemhlNXQyS3xVSk4jJkV2 ZFhPbCZ1TT54MV53PzMkaXJLciN8O24pYyh2NT9lLWdtflVOREtTZEx2biRsYG49S0NJCno1MHQ7 bDY9ZU1WT29NdCFjO0xGS2E5aCFgTzw0X1Y8JDllOHFIMXR8VCZfJUc9NmFGP29LRHh5d1M8OVNC IUt8Jgp6eUZodz5San54QzgrZUIhY0hndHp0dTN2QkxMMSV3X0d0dDFAZWVuUiQhJUxXNT84KSQh TlQ0QG0+X143RyQtMCgKejM8VjxWKSQxMHdrQTw3V090WSpAbXBCaUk0U0s/WUUpRXAtdypoOzFy WExqU3ZAdHtGTF8+emBzZl82RVprVShuCnp3TTRnfmUpJmJ2KWxRQWc/ayt1SmMkbE9IVyYyYikq MyR7JjlTdjlaWG5zU3lYOFlgYG5LcWdyeX5AdmBhMjFDTgp6NyM5LXxSP0NHVj1keVJHcX5uT0Fu ZiZxJDh3Vz9kQlJXcGZxJHg5Zyk9bSY5aTMoJGUqQ3d3TUdzZk9lSU9tdUQKektFdyZvU1BDNXJe SVlBYU5BelpYI1B0N0JCemJ3bSVYNSpKMTZTeWlJPmVHdj1KQGRWPE9taEEjMT4kWXpueypPCnp6 eUhvckh+Vy1nPmNgXzZZclFrWjxZTihQWl42eT4+RmRNeGMzTHF1U1RpNXgjaG9ES3FtcUpBeVlW fFBsfmAwNAp6bz8/b3c9RX5qXlgoaDU0JVRZLVY2Z3FzMVMrdzMlaUNVQWpAdXxMQ2w7ZV8oNXRy R205JXJNSTZVQnxgOCN7aDMKejw8eHclZnZkXlhIZVEzdCE/T3Y+UD56VCYqKkR7UyllS187Z2Ne JjlUcWF8PWYrSjIySkQ9U1BnREdvSnlMVTkwCnpSIXs9ekRzMmFmQW9EMUx0K1deRUhjRTV2UUpZ SyVleGsrTVpmNzxlIVc0YEEqNHc9ellUZlJDRnJga3p3NjJ5aAp6VWxLZzlQQX5DU1k7IV9DVDNa XlZ1ellCe3pINjAwQ2AlNWktTypHd3J0I3FUemBAZSluSGJhRld0dz8kdl82QmIKem47YEQqbmF6 SCEkJWRlYnE4MHBrX3YrP2JgRnBjSzdXLW98WVEwZEtgLTFjczxndWQtQGNYXipJcGdLX2wpMUJF CnomelpHYDA1NTVNe1ZZa0duK0U0STJLe2NORSkoTHRhUW9jRFM1S2V8IW0xeGkrWlIxemwqalp0 P0hHQ3tsRmM0cAp6WmgmWjJCVVcob0wmMD0hV1V0NDNMeEZPeDZrZ1leTVl+KzQqXll9bk92MFEz LTV1eT5XYzdnUTRSd2N1U3pxTz8KemF8fHRCU25RMH1gaFl1fkB9VWE+aHtPN25gWXtOVjk5TnYh eSFmNzF6aF9ERURzPHhrVzQtLWh7WDY3Zjd0Xnt0CnoyNiZneSQmNnNuK2IyNmtFdSVlc2hXZWV3 XyQ5eTZpaV45eCRIdCF5bXNoK29nRGx8a1E2TTsyQDZiPkxfaTE+Qwp6ZGllbVBJMnBXT29jcnNv dkJGX0MxOV5qNWtUUFB2U0B3bmUke1l6bkd7dCFkezFhMT1Gfjc5WlM/Xn5PJCg2VEcKejgjYk5i b1YjTH16TDdXPD93NEM4bz8kdjReelZmOVUjYH5oeGd8TV54UWNWayUzO3dTdX5mcyFjIWo+Y0la WURtCnoqPFhfSjd7ZmshWk9GMjRjYmUzX2NOUEVPM2F+OVNfQmtZQUMxZih3M3QzWT44T3MxfWMp bnl9bz4+eUhxTW97IQp6aklvejVLKHcmSjI5Tnc+d0o0QVFAK1U/JCtNZWhvYHY/T2sxNz9NVW1p Zlg1XjIhcVBMWndxd3pUNHliXkYmXjcKek0za0JoWnFRTX5TKHh0KCFgcHdVWG47NDJwanxiMTxG KGNtSzhGXjkwZ15WTT9mdXVxVWpTZ2FoYGJGTVUjN0p6CnozZTNWdSZRI19maUFYXlR0Xms2RWRt cip8N1NoMHxFenpwSjx1Q0sqQzM+RXhOY3Z9bG1qUnRuMDN0MVF7QjRaPwp6MyRxM3YxVlo9WDEw TWkjLWhWU2AoWGR0fGd3aUlqPV9BTzloYD5maE1ydkZ4c0Y7fFU4K21udU1We0JQRDRzNDUKemdo SFdRakI3SWYoO0xWLVo1MHEtZWd3fHxrRHlRUDszJjZ5Z2g5bVIxJFp2bTkwfjAxWiNeJTM2Z04y MmFHbDJrCnp5Uk5TOGFOJWNXTkVqRm5idTRzSGZHbEdNN2tGZjNxJDxTZypSVENjTzZjOSgtMWY7 PD9FbXQ3OzdBUFlDcVExNAp6XnhlQSo+JE9oQUVnYDVEOWZpO0A7VnFMelk5a3FmdU9Kfkl6WTlN cGZiWXcke3BuJkE9NEgyeChoZVZ5b0UtWGEKemNlUXB7ZjhAWio+PFNNdXVSK1l6N3BSNE14V0Jq Q3FRflJtQExXV0Y3VjkhTWMmRHZXWUF1O35vTCVoX0l5Jmc4CnpRWHtmfFg4UyV3ZT94YHhjXjFk SztEPkxtV1drUEdJJih4YEdAJmlwZmBfM0AxIzBOfXc7YH1sMDZgPCpxJHN8bQp6YE42NndLcW5f QnRoU3A3YSZtR08jQlI2ZSNfZ1MqUUpudVktKHBVPml+KiYrSEpHd0pRR2lMT1VTbE9jO1I1OEMK ellIaGRidlUpUWxfVUVkSCRlYkJifEI7ZVhrbjxUSkc+akkoNURYbmF5OGVvfGVKQCh+Q2d4d1Jx NlJUWjlzfTlSCnp3UyglViQqeTJAPmNTakV7Z3xoWGNyRCVXcFIoVVNua1ItKSVmcjZIcS0jJVJ2 bkA1fiEqS1Z3SW8lTTxreVN4ewp6OE5ySWhkb0NYJnZofW9FUEA9b3E5dDY7bEJWOWxXPTZLUWRY dlphbHpMbVA5IURwZX5hcVVMe3pSJGkxc2tIJCkKemB3WnIxQTJUVnZ7a1V9dG1IeERVV0d5XmNI NUdfeWlDKFFzNitkcUlhKH43YiRiam9AXzl0TCp4bTBqLS0pQHVLCnpVJDJGYFNaRlA+SSRqXl5B aVJBSzh4Xm08UkhoZjhndGwlOG0lP3M4PmUqKXhLKnlKfSlkZ0ZsMiFfUkNrJGdCegp6YCRvSj5E d1EqQHh5b3tCKFhDRTA+RW8+PjxBWlhaOUYrVXJXeWtTS1RWO1kpM14/YCFeVURETSFKJm5Fc2lB dXoKejs7fUNgLTV2ZzdyfEowNmU7djFfWiU0bSFleyl2JWktNXpTUD5KeUlkaEhEWUV+XlpYUCp2 NGJWTCpfT2ReeG9wCnpBd1h9Q0U1JTBSRFQ7cGE2MEMzLT91aDRQZndIdGBGYmJocWApV3RYeiEq ZGxpKUJeKGhtc2N0NiRDZiQoXypkJgp6WVVkLT0qJldaRHtpUExsYkdFZi0lWTt0MkcqelQjdzg7 OFhBeTRpJEBuazBiNkdTcXJISj0ofU8pYilxP0xSZG4KektYKjJuRURXLTJlbyozZ3UtfWBNQnNn dS1WPFZSYjZCUU04eTRpQG9hSkQ4eigqbThxZVZORlFFbmV4NEIma0h6CnpuWDU5bCROZ2BhVD8r XmE4T3tXPTFFbmJxWE0tR0o4JlRBOC1fSlhJd1VWIUdJMVlrcndQYStGczEpPHtyTn5ZVQp6MkRT Sm1AKWhtM0VGbm9zWV98cjlYbE17Si1tNUBrLXZ8b3wmTk9Wczk4MUtJZ0MpMmFQWmlfYy1gfFNf e2JrKmUKejtJZVhhXzNrYll3eGBRNytwPkY2WlVDYz4laX1SYF9fa1VGbG0hdFZIWEdOfmx3N0Br Rkd2LSVSSTA9OHVIeF9yCno8WkRRJXA9PXg8WjhUMU1fWSZKO3VwPEJNOHw+I3AoLUJIa0BTb0Jj VlcyYy0+SHt7XmVgO3E/Zm0zR253Y3E9dAp6T0c2azQ5YUxoPDFUWFFURkRQPXI+QEZpRHtIeWhH IVVPRGA9OUU2I19tPns8UWgtZnUjYiR6ZTUlKTFXYyF3TlYKeiNETVEkR1RXTWhVWFBHYUlyUkBT Kjx8STJxSGtufnw5SzNSd3s5THQ7eVZLdmYhbmNuWmRGaU11VlJKKFR3PyorCnoteGo8cEM9b15f b1cyXl4+UGJufFdWWjV9T2dfTVpBKXNIc1VDJSlZd3k0X1pqY3Y7b2swK2NIWFpwSnsoR2JDJAp6 SCt6MzZyP3dVJlNVNiswR2BaaUU4VjxafEclRExDcG0pOUtkKnoxamVsQzBWdjFKdGI+Mmw3fVB+ SHY1Z3E9KzUKemcocDxNIUM8YTRkK29PSjgpfD4lUzZBfDVaIUVQK25YZGw7Q3NoQ0dNeFhXaHd5 YikrZ0pkKTVQdUh0TUJ7ZFghCnpeJXx0O2NhcHllSm53JjA8NWlJZEc9d1klNU9Ac1IjTD1vQG9J P0t3RHFuViRRVHQ0VCQ7e0BlQiZYemlWX2F9Swp6b3NoKWlYdVBjPWNBJVlXQk80MDhiY053djFH ZU9OR3Mkdzc1X35OJkU0dHpDViRXI3RQXkNBdkNJQXN7KUJ2ekQKejVFXnhNQk43TnJ6Ymg+az5U Y0IhVUZ1SFhGYGtOdmgmLXAyV2VTdk43czhzRm52UEZTdGM3TCFxbntOTCVtdD1MCnpAM30pUW1C UXxDSUZMeGgkfnZ0PmNld30hU1ZyRT50X0BsYjZ6RGhqZyZlYXhXNFVYb3U3fEIlMWZHUk07PT1j VQp6cTAxQnckQiE3YTBNcklwMjMlK2F0bj9CYitpZjdpbkBELWVTMWhRd1NwJSVXP0tpSmNCQyp0 UG89NFYyazJ+YGUKekEkSEg1V1pEdi1yVTNIa2V2OVlBLXI0KlpuQjIpUXt+TWpAUVhQajRoRT8k ZGBve0FwQ0dhZjBjeD8paGtPdTdyCno4a0ImSy1GU3hmYFFkX15YRlRodVBNQFJtJmRCZiZ7Plgl Y0puWDxJa35wfEwtLWF7b2B8RmRzVSskK3A8a2s8agp6XzhPalNtez9lV2p9TGN5Pzc9PUhWKlgj Z0c4Xl89VUZUNFUyKmBxR1dNKkZVcjN5SF9vWXlQbDJvR3RZJEktMT0Kekl0X0wkczJPPD5wKFI5 eHtaSDledXwwS19kSXhpKnYoMTVEUlRjey1nVWVmS298OVgybmhpZ1BAPz1YQ0ghVH00CnpsO1Rf KE9LeV9lQGZkYWVadGZOdlVGfm43VVNXSjY+UkdhKFZgS1pnbHs5NmFETTlrKT1LYiVZYikqfEk+ QXF7Qgp6MVVYP2lGfGV7SWBQMW40SFg8XnJOc25yfjxUaGAwMDJfVlZBbG5vdkg3RmlvYHBhO2pU JGdtYGIoSyZHc2dGVV4KelU/ckNQVXZ6YF4wbylgYUU7Y1VDQEs8PWUkNUloRD09NF5UMVM/VG9Q QT0qdWBUSmw4SmNJZXtkLUdrKld7PHtMCnoyYS0kITUtZU1TU1pke3VZMFFzdCNeQkJ4ckc5fmR1 cWtQe3h8e0xaPlN+UUhsXjw3Rk92YnpPbE47OGpuPzBNdQp6akNNd3I+Zy1LelJUPXhiemkzSFoy X2N5VmdidnlVeEU/aTVuTmFady00bDFrWWtBfXUjN2VgNyU/empNekRBflEKemB6ZjF3al4/WEV2 VklWKDNtKFBaOXBoN3FgcFVQY25yPjVFUWVYZWlZNF9GQFpZaEhJRHc/ezIqViRxMXhhVkBhCnp3 bGJIWmxnfmxPU0lEekxiP1kwUClhKG55UmAoZlE/aVU4VSZeZWtQcSthNERpQ3YpcFZgKVV1WHBU VSpNY0JDQgp6UHleMHtwJmA4OGkyQF5ndkhrfkx6VW1sZGVlP3ZmWmlUPlcjQlRjKVFoN3xgbEsj ZV9SNHo0WVNYNlNVQGlEanoKeipxNGZzMndzbjhYVnh1X2dndyZSUH1sRG1qP2JrISlUTGFnIXBM S0BIUFo/Pk9aaEVoPVdiWHs4VkQ0MnlLUVlMCnpRKXh1JlYmKWhhbDFMck5oQC1FZzhUfV9wcilJ TWlKcil7U3p2NjNDPUY1OD5OZG83WXNfQiNjcnNpdkhGVVpRNgp6MCh9VjJvPnIzeGdTfU0xfEsq TmJXV2xRaSE1REhOdlkyQ0t0NWA+fDJrcGIpUSNuJVlJIz4wdFJzc2wyZWxAVn0Kel9ZaEctbFp0 Rm5QU0Y7alQmXj1uSmU5LXEzTjROSF4hfVdPKWZKNWhRJiZQNE5rOT9hKW54QCslJV4qSClHMmtM CnppPzJVLTcjezsoaCZfUS1STWtSPmJQUV9yTD4hazVWYjNvKThwd21MKTM1XnxgJmsxTlVtLTAq ej12fXJhayM+MQp6YX1FWW1JUUd5WHN4fUFDI18maDZMKmc0S3o/c09HM1k2KkhMJFI1SzlRJD1g cyo/LWk4eERHaWRWTHIlPjFfe24KekVpamBTMz9kI052KkBDIythdjEmR2ohLUhFU0s9MyQpelZW OXI9fFEmJGA7JXgzZS03eH05YkR2ZVhta0FgR0lLCnpDV3ViX2tfeTJpJldTVDZVakl7clMwPzBx SWY5SChabjtGaU9AKD1LR0A+Zklza0tTOHtrTDlVeWhfdWwkeTMjdwp6JGRNfTZNe0UtSEFvQFgl eEdrRzROQHVLLV9CeHArSHxJdH1qWH17eHBfdz08S3d7UXstVnFObGBqMSs+RzRXPHsKem40Y0dv SzRiRlpzfk08bSgleXVPV3NYRnVQNFh2Ryh2SVByaWE2VlJPS0h4bT0yLWlhaWFqQUJnaXhDS2Ji TmlYCnpfTDJHazExa01gKitCOStFQnVAb1dgPilWMlUreD9jXlBHN0Q3PklmOE1vKUtneGg9fDVz MDlrLUgyQkw7UWtoJAp6YFMwZ1QxXzZqY0Q4N0NocjIyPE1mU1ZCaWY4VyVDWmcoWnJmPCE/PExC aGk7U31MWH1wKW1YbDxiZGlBNmYme3gKej5nN3FtUlJHUiNRMkVvUENiUiQpcCUhYjFxeUVuUTgo ZFp8OzgwfnNCcnJ3Yk1FYGExRSQpIXw+R3BzPDF1N29YCnpLbVJnPk1NUUx7VlcwdmJYNmcjS0xL MmdaUjZAVWZgeGFoSE9ZOGRqZFJxTVZPQz1LJnB8Oyhzd1k5Wn5nb01DYQp6PVFxNTtafTQ3aUtl MHlleV5HWVVHWE13OzNrJUIteytJX2pvIVItUCVRN3o1UDc3SGVJdzJieV9UQU17N2ZAVnoKelV9 Ym9UMkFafFA2WTJASExBfH1YKiV7UGdfaSVWQEFwZkh2Y2dXREtMUVklMlA0M3Q8USZXS3NQM3dz aGV2UkI8CnpfVmt2P0pxdng9OCo9YGBhdDhSYV9jekpObW9UOXYlOFBAaFNPTWV8e3g0MWhWbXFq R3RkSHlre303Q1lFTkZGWQp6JjNkeVJgd1NUZU18fGB9ZjR0IU0weGgpZ0V4PyU+MFp6IS1OUmIq Iz0tVXRRMFEjYn5udmhROEs4U0xJci01YnUKemhuZVokMFkwPjRuYkNHcmY8fihlX3RnMXZ8MSpH YWsjekFXTTRuMz5sfWE9PEI1MXpIeX0lO0M1ZClZVkNfPyE4CnpgUGFNSVlSaG4tdmVhfU04NSFB ZGR2Q0krdC1eUyQhaFg0cnpQVW1VdjBhc0xEaCF0YGdEMV50NnxPKD0hejxnKAp6eyNGMT5vVV9U JlZSOEVMM1VMeFVtfntiZVhyU3d8UThzWD5sdlpvTF48Y1YmcTwyQD5PIzx5PkAjbW59NU18d3EK enhXSl4qOVFCfno0cl9Ie052bE1QeG1iVXNfNj40QUEyYmIpZmAqblFFcEdJOStERT9eLSNlWnM0 QDBlNyt6dlMxCnowa0laZj89Wk10bnc9amxYPzUpa3xBNWVeN0p3QCFgY31wdCNsbEEpI2d2PWU2 OE5LeTttYWBMOEtjPVNMdnJiZQp6Y3k2KzAoQV5VfDAhZ1FaVWtgcWFQYntpeHhAfFomKjImUCsk JTt7bC11VzVDYVAwK196eWlhX0VWbkQ8P0JXPHEKeit4U0p2I19jZm9tJUEyKF9WcGp5WHJpNWtY d1JwdkNnTTR1MDhwfkFGZmFCJV5XOTxubSpJM1VsZDBtQCo2XypQCno/KENXX0o3bXZENWRiS1lC KTRxPVp9YjNZdHV6ND9HYk9WUD92KnFibSlQJSlpe3xidSlLfFpmV2huNEw1KCUyfAp6V3FzY3xG TF9zTFMjNGI/KmU2JE9gPmkhKkZ+PnBSMV9aZ3kxM3JBYzI8UE5eTmFiRXFfK1U9cEskOHxNUWBq PTQKenJmVX5Fb0poLWY+Z3p4S3FuS1Z7PlBoOUUraUstaVZJYStQak5HVCl7KSN7SDlDKCV8MHMq JT0yWUJ6aVhEcFNYCno5WFNDQzNiLXIrRGQrWEZ1Yn41ejsmNyNAYXNlZkhFZF99dXY/VT4tTWxE YVROV2hWKV4qVzBDLVQ1YUtGSEowdAp6akY1QGd4fnBAK3B9MntHRSU1dilMOSE0bWArQlpgRXRt SF9OPzJZSWI+QndoM0pfbG0oSUFwbDBrfTNSU2ctbTYKelY4PChYeWRXOG09SFApaVdgZHJoNmhZ eyU1bW5jRmVeRmt1MmNrZVdCPTNWPk96cGVZcV48Mz5FMDFxRnpnOEpeCnpYNkNrMEBgVm5TJkhD YlBORCR9Wkp6ayQrNyVRQGo4KW42Zk1OU3UjJFVzcl9EO2EoVVJ3byRuOUckaG5GKnVUSQp6bWd4 I2clNH1ZS2ktP05LemBKajY3K1E5UlRuITgyVWxJeiVkSmslZ3A+SFd8JlMkJkQmP313VlVZRX5j RmRSbUUKemYzdX4yVVdEb3U2RW1KZmg1Zi1aIWVkVCp1S3VYMjZpeXVKY0YzUm9hRFdKIUlaYntI UiM3TnAzUXF5bGFBZmhMCno5VCt5MTdsMEFHbiZAV1pLTy0rO2tlYTshUmh4NyoxNFkkNCtkelFh T29sMXl4WWBhaztocHRHM21rZmdQXlBnOQp6YSV7ZGlGKkFORysoMTU3eENJYDtNSnZ2WGlvQ2h7 UiRGaGE+XnF3UCFXOStkXiVBTW1oNDVuNlhvcTsyKWdpZjQKend3OEZpQiN1eylzUlRFT2pSOz57 PSVOSl5HZntpO1lLVzJ0PjsqWCohT2pDdmQ2RTJTI3dnOSReM21ocl82TSp0Cnp6cTQ4c3ptclph NiF4bHkya0hhY1ohaCpucz82MjhxNF5ROzEkWnxmZkFOYz85NkhebE5xVDg4MjZFSXZtVntWdAp6 I2VUY3FlQ1lYcHxMN0UmbVgyX1o4TWt+ZSl2MCUzSlNPTXUjV1cjWHtZbTQhQGVJXlpYaitLJEUh WnBXcjd2YWsKeigoRiV6U2syc01eNntSJjRqV3VRNTdHWHhOKTE1N2pwcF55ZTBLWjg/ZG87Qkc3 Iz5mWSEwUUJ0aHdKRVJJQl9sCnp7MSZVKzk0VU53ZXpvQTM3R2A+bD40YmZ4T0tKZzZKWFBAN1pE WiQxRTEmTGheb1pXK0ZtaVhNP34kaGVHVyhRaQp6QzNtP19eQ0JVdDI9c0lDPkJHKV96NHFqNzwr ZiZZJlhjWWtiNkd5MTZBUXYrUkJZQDcxTGBIOTxhO0g+YW5ZSlQKenZWVCshJlRPIyg4Pm9Od08t c2AlcmxMVDd5MGF2eUdTey1wUWA3aS1DMTJgejs/JSV4Tzg8Q3pxWiljKF8zTVlgCno9R3xUWXAr OD5wMH5BOzxrTWAqcV5OND04KV5ORUwxKXJPST42UnhtcXN1SjNUfHh5fjhieWNCZyYjZ3ZCUCR+ OQp6NkJ+TlRCRFBQPXtzWSlEWDBVXyNvKHJ7SD87aXBJNW1eTU5gP0BAczghNktoNHA8Y0BvdU1a dUElVy0kQyNYKjcKenF7UlJRV2Izc1BeQWxGTWFwdjZIVmdYaEQ1TTFNNXhsNHdgSTtoOXVYN30m eXZteTltPjxRfntKLX5peWxFSlNECnpRKVpfLXpMX3I+NE50OWxKdFVkdnBCTWd9e2krNXZNPjcz VjNhOUFmVFJFdyhMcS1JZjFBZjU+Vm9IOWB3akpJZAp6TDx7b3dzcmBaJFJTaVgwP302UWBwNE5E IyNoYVMqcGpJa1ZmMTkwRWZIMG1iellfdiZJTys0OyFHZjZnNzA0MlAKej0tcU9HIT0qZjReSEBy PzRLVyZ3WjA/eHJNP0E0Vlp5P3xjZGRZK0VDdmVnSilkYSFeMDNfbj9tNDNOQFpZfm81CnpEI3Ql Sig7MSNrJkAoaCkxKC1gVE01RE5XKUYkdTxjclcxKEYjaThJdGx2YXtBR0JoezQzWk96cTQ+Y1B0 TnF1Sgp6UUsqQlQ/I0NMSFF1fl9QK0dnd2JfcFFPa1AlQkZ7X2tNUFcqTGBWJTN4MylrYCMxWGoz OTUtUUw+ezglPGl5UkQKelBVezRDN29zRk44RHhzcCpNcXgmJERMT0tLTWpwRkQmbi09bXtIM1Yw eEI1V1FhfkVQenFYQ3l6SkN2N0hYMis4CnpAVy11cipvekBNQnE0aypReHhDUXM8WWQxTClTbWow NGFiQHtpN3JRZml3PFMwSG09KEUjbj1DUTJ6VGE4KDMpIwp6OGFlWXsjN2hXdkw8bXJfOUo0YGt8 MWdfNCslUVpfSGZ4QjdBc2lmQlV8M2lWc2BpTWIkeiVpb2BYRkczO2Y1akoKemRKfV8yWndPZWVL b2JTWiFVOz9VPlA/aFQqbmNzZDNUbmlKKG9+Ni11IUlDYztzP3tPJWdmcFUkVFBPIVNwWThACno2 Ti1oNm9mclNaQDlXcCFRJlg3Uyt9d1ZEI2wwKjlFPH0heGkzIyloPnEzcFNVVndOZV8lWntQUD0m Qkk7TT4yOQp6V0kleX5nWkYyOFFoe0NtSllqISFhamUyRShgSiV8cHFgIXtBUmdtNllgVWB1VkUm YTAwJWl3e0xjI0lfQ3tQNjYKejk5bEVsOGdsKSFZMzdBbm9DYlREdE16LUw9JDcwN3V5cj9FRVY1 fjRfYjZDeV5WZSVTNXJSM3N0XnckNFo5UkY/Cno3dylCJGJRdiooOFVVJCF8Ris1aDZUdjxrbEl2 QHlodDhWbVhfWHtEY3sjYXJkcDZ3SDBOMiZXJXAtaUomSDNecQp6TE5MXjQ/dWYoalBAcUohYVR2 ZnhmbEx0YDA2aWtDNzJnJn49blZLalQpLX5jbGglY2k5NyEhIVRjKSswVkU+MUEKemBxTVdLQiM3 T09jUkNnK0p7dTglKVN0fFQ+ST9uYXJwNnFEUkBEI0MwfCN5ekB7NVhyRCVfWDFZXloyKDVhJTcy CnorQDtEYG9saStVWlo8R2VLMmxQYGFrKlo7LXkkSjcxRkRDST9qUVV5SEhTVT5DX0hEJTRYJjQt OXNfXyl4ZHl+KAp6Sylte08oT0smRSlza204en5FJHgjWnRORyhfOEN7Jkh9RylTanBlfXpydEt5 MytJX009KGBNeHJfPG5UYH0qM1IKejg+b1BNPTV+KCg3X3FBblljaTNhSnlxM2IqTVhfIXJXM29o KGlSe0tjdExsT2hgYlA+KT5MPEFHYHBeVWV2MGhxCnpuWTBCRSlhfnQyXkhXI3xDVmQ5ckNoOERL IVUwQXx3eSk5WUx7fiQpbU0mPXppeigxN0QlYEFBdDsrMGs/cmFOUQp6a2JiWF9LRlo8Q1ZlbDhg ejBgPyhsKF9BPGhuenYhMkIhUW15NT5UWit2IS1sUF4oIXBZMzx1SHROZFdKKVp8X1MKemlJU31Z RnZ2KGNmST5wVXhvPV5nKDtqUjlSYnkpPk8hdFchczlyRDFnKENJbmk9IT1DZU1KZmYtYWpxY3Z3 YVY2CnpPYSlye3NRQ0N7akMhNVJXNzBlbSlgRmlJUEdrMD53dCQmPjE1YD48RX41YjBHWHJZeDYz S1hWMGt9NXAoSmF3eAp6ZlV2ZkVsJmN5U01UNT5mXlNxYyl6Rj9ifkVDVj5EeD1oU2gwVGpJU1Ax aE5OQH11fVg5PU1JSlM1Pjw0WCtyY2kKeikrTkZedCpnTW53TCNiT2Yze284QUNZRDU+V3lhRDd2 MFZ6Q2prMHB2UkVUJjAhWG5IMC1iaDswN18qJGJYQDd7Cno9WTBOJnJDZj1HajF1Zm0jWFVOSFhg WVh0d1ZFOWM2MW1BZCNoWHc8PzxYY0pTVVF3UkVOdEI8K2hBPUw8dUtVagp6Wk14Wk5iQSUzVkVr OF9YT0p4ZE8tekZRZGVkUj55c2lDYHcoSGAlS18lenNmRnt4SEpoKGIheEJmVDVQQXlPTjYKejVv PUA5WERncTwkNmFQVG1Rej8hUU5jJHlwYGdCaFI2Pm4hVFcpaDBGLUh2aj5iWiM1ZHliRGN3ZWJ7 VFArRz1VCnpgPU5pWkFrREQ9RHFYJFMjJVUpentge3drKDJ5PXVkP3RTWTs+UVdSK0lPMmJ6fClM VDh6SGdIeDZwdDh7QG91Ugp6bmdAPkVHWTdBMDUpWnJ7XzJWcF9VdVheYCliIU1gKGREQVEyTGJ9 KFZ1ezZLbyp8OUheTnx6Q3gjVyg4Qnh3MlEKekJycCZ3PH0zOHpZRHJ3bihabEkoTDx8R2BXcygz fFNHVWwmdzx8IUxGeighITN6QEF4VF5PRjVCRWVQJDJfZlh9CnpKOzVfSGVEbz99JkV0WT13PU8m RE0xeypXXnV7SEd5aTBGd0N6O1YqdGx5eUA+ak5TQUxvYFhMejlwe2k8ZEJTVwp6a3FveHZyI1lC STtTaVdrNjBzPUNmKT5vb0B2SHEpWGFzen1QdHk0fFQ1NVRSKWZBeiFIPG1uZ2MrbkdWTDEhMUEK enFXTWtrTTwlZE55bXIoPkZkI35gTHdhO2NpUmlJOHpwLXBRSX4jOHc2YWJ6UXtzd300c1htSTde blBjQGdJVitzCnpyanIjPllCM05ldWRyQ0gyIVo1NnZFLUk2ZWxAMWVtVGtlYzVJTDxnUEN5TE43 K1BHYjk5VlpzK0JIVVpqTXE1LQp6RFUhVlZWRlUrSC0oS2dxVSQmMzdJemFqUUlge3NMa1VxOFhe V35FQXg4ZFN+TGU5XmA9Yns1WV41bisrI2h2UTQKenlYJUBKI2YpVU10NkZ3aUlmJXQmNGtoSGxA SmhUbiQkdnxYd2wjM2t5b19EUTxxV001bip+OGp7WSNNYUNTQ2hICnpKeHtDRkE/em4hNSR1P31G e3FNclNWZTBXbyEjey1NJD1RfnBaRjB6V1NPX3hMaSYjVnMhYlJMT3xBcndeX1JNcQp6ZENDbFgq QExoJEgtZkArdCkoN3FOWS0xQjUtRkc1cyl9JFJVOE19JD04QGd4O0h3NG8yQStPYD0oSG5tQ3s/ eUAKendYYnxTLUYoa3kwak9UQyhFeTgoUlJVfmExP0UhfW5mUCN0UiYhRTV4cz5mSDdXdnNEPk58 Oys/VUJwQERjNTNNCno5bFFQMjIjT211ZUIjVlRMYXxeS3JZIWtYTXQqeGNzeURLUnI+Rj9SMCYz elVXTG5uNmVZOG4jUzJAUSR2KG0lQQp6X3tBJmdiTGtDZlFffV5NbUFvX2FlWnl4MHI8QjF3Wj03 Z1RfZUsheWtHPSMlK0E0a0d7QTVUTUtBdkooaHxwZTgKeiFCLXpBSWIzZHokO3RBX2J6WD8tNl9I M2dsNUpwYkZYPilvOXNyOyY7JDxPSGpEN0liQnU8bkFsZGw7LTVnRnNrCnojaypkMClPMXtRe3tD KiZNX2FuaHJiV3ohYFVgPStWVVN0IU1QMDhFWGBJSX4hdEJCYjNZUykqemo4aChkVEwlMwp6K1Jf QX5TTF8rS2dkdGhnZ0E/KmAtbUZLQFYkMUwpZUtmYS0+U0wlMyFFQ1MjVGl0bE5uOXx9UF9Ecj1G KmtRRl4Kel4tRmIkYTVLMkB2WVJJR3hGIW4yPVEzRmc2dkBIR2c8SCswfEZqOz5rTlglKDJAKU9e JEtAYVMmVGdNeT5vJjcyCnohan4oUlFWfWJsI0RTR1czSXt7azw7c1daN3VPczRrPUs1bkhyckhN QD44JGsmTyViVXZLbj58JkpUOGMwXzVQcAp6NTZKbTxaJDRkM3I5bihLaGdIIVljQ0Y3KStlIzgt c3A/VW49YnRAViRKQD08OEkoU0ZCSil6cGJCSVF1RXBWdGMKemFkMUV9bDheVmk+U2ExdjJoQmdW ZkRvTEBYPi0oTndtY1J5WkEhXn51UFB3UHs9NSQwM0pFVT1SYGN8RFNCYm0mCnpoN2tYIyo3eTZW ZnVmZ0ZTQlBWeTFrYCk7KzQwbzw+VzFQdDdMKTh1XlNMUyllJlVATDBMengzZ08lfU47VU0+agp6 ZnJRKUVkIWozfGBTZkcqSyNVVng8UlYtaHkrcURmOCt+SFhhSTJWdkg/SlZwNjBJMD1VWjJXYGsj fTdUa3RIe0sKemhCWFVaU2RmKElKOypnWXhqNTIlenBQOC17XkN0R2I5VHV4bUIqZlhiSXNRNyZQ M3glKlViRnhOTngtIStKKStACnpTeH19b0tvUTk/ajNjZWgmJEd6fiZOOCZVOCMhJGBJLUlBcUBR cktVQXdoUTxMYUliIWA3X0RsZyRJNzkwITRfdwp6enA3fXRHZU4mWiVlRFBfJFc9VUNEMk9FVylK QWV0YnlGdXt2M3JUQnNFQ09TdSlkPmpUZjNEOUxvbDAoXmJTdSsKem8yPT1vPWl7N0pkJnhGRjds UkA9JV9pZ3JNUTNiT0hxRzFQJiE3WURvIXNnOzR2VW4pTkN8R0ZOPnJ6ak9vPS0zCnomfk45SEEk bEVvOURFPHwmYlY/RUBwNiFvRjNRLWE/aTxaTjNXTl9QVykmfTcmRVVIcVRzTSZhTzV7MDduVnxD OAp6ajx3OT1UPFQ+PCElSVRQRi08Nld6eGJuJis8cW8qRUJjcEdzS1NRNXF1bUdaTmAlQUJ6V1pr Z0xQIXM7YDN2QT4Kelo8dUMzXmx4VlBjMDJac0dfKEhSYTlFOCNWblReQ2poYlk3KHwwY1A3KzNm MCZ6Z3FIYVk/azs9eHRCR2hTdjUpCnpIKy18TC1LZ3B4bGNTQGd1bDd3VmFfTUVHUjEySE9Ld2U5 MVpKbTJSalo4MXF4ajFHVyRXZXkzN0xiNEFAUyQoMQp6dkZ2U2hLdmxhUmhjfndHU0d8b3p0amFm aFhpN355ZTlve1MpWjNqUGFJQHFHRDViK2R6V0c/RWNIRDFYNV5vaHcKemhwTW4rV2FWTGNeREdC aXU/KjBJI19xdGYpUHYtbmdtdT5AemZJUzhlNDhjTCZPV19tc2x9WnwxbHp0R1JydnRMCnowTDcp TDxgcDxiUldjPyFVMnw8KCRnTmB8KDIkTD1JRWZWI3wwZ3YwKUZNbStzd3k1elZpX19hIUl2WlQ5 IU8lQAp6UV5lfm17dShEQjdlPmNCPVJ0anB4dl5IT1R+PW1TX0tOJVMyWHV7bUJiKkkrLVF4PjJV an5FTjVtQT1iPjdtP0oKemRifTlsdl9oMmMhd0BDKGdGN3chTjZ0e1R2QTtDIVBwRTZrbTEqfkl7 THE9U081RVQhRXhyZVQoe1RMKW05ZGVNCnohSjk+RnNPK2F7ZUxUTnElNkt9Y2Y/JmJ7WVEjOGQo UiE7UTJ+VEwpMXM7bWVqQF8kQSRsPHM4VXtEYSNNcjEoPwp6VmZseWt1OTFXczlVSHIjc3R2PkFW NWpqZWVAOTN7IWYjMXFMPTlBb1YzQ29xWE1rdUg3JX1ZP2paJmsyJmBAOT8Kekl4QyZXPTtmJG0y NXt7YWU/SXJ4SCpNT1RtQmdJYnolamB4cmZWPDZfMlhYSyl0I2BZb0ZBVSo9N00/XkJmb15YCnp1 Jkh9K21WcXxVelRLY3VCUHp3Z0d+RXxKXn1KVkZDTHJnM2ZZNT9iKCtmVF5ASk4kSW5Dd21+IWxX MiZtQUk7cAp6KzJjSTg0dF98Jmx1V1ZydmIlUWlCfm5jRjU3KVhNYEtGU0EwaXs0TS0kfSZGUE9s fndPcihYKyMyVWohXjUtfU8KejA0ZG56bURsU1pSPG5EQipwWGQhRzw1dngtaH1hQzdWQFVtZjVV ckYtRzEkJT5sKWZvMGNRVi1BMlJPS3Ztdz0jCnoxZm80PG1iNUtjMC0wUCk0M0JFflo/dTxTUnQw dUg0dnVAOEBLaD96QH45ayVGejdVY0UwWXx3NGA0aCR7ZDUqPAp6RE1EZlJsTjNLVDBqZ1hZPlRX bml1SGAwMSoyOHdJMjV2MS08cXZMXmJCbjJ9O1MlNWYzPmp2c241bHBMZmY+algKelFga0kqbnpp bz97KCFuPzVwYTkrJCVFRWt5T2c2SjAocnkoQGVLaDQ1Pk42ZENiO0tOMmV7QlUhMk5TVD4reXlB Cnp6RElOaE05dCs0TytqN19nKDh6Tnw4bGktVjl1QWwlK3M7MG05QDFwT2Z4ViVCP0dWMlJTPHNs IWckK2teblRKVAp6cGgqJmMkdD9WTFVia3NDbzZUfnIqWHJyPHEye1JSRX0yZVQ9dCNAYDBeUUBg TFV8IWx0SH0tZmJoQUQ7KWRlMTQKemp3VWtpMDl0d19IX2hXV2ZZSzJ3ZEFONntPMlByc0BFSGhx cTtrMU4jS2RHUk1KVShWODkkJjlsKS1vN1QoM3UqCnpuVXJ7cD1WZXd8JUM3KStfYz1qKDleJTxf dnglY285R1AyWW82XnU+YDRWO0hwMFBSfUp7UmwmMnJxKWVHcU0oVgp6PEtKYkEhP19eNjtmS3Vu TFpmVC1XYyU7N3d2XjRhWiphYW9LSWNoantzSCN+WWlwVHJVV2xlQ1IwZkNCPXE4QzwKejNGcDN8 PH0kODItd3NpSDx6bj9SPl5XS3Z1OzZxNkJUeFJtKyNjYX4re0YyNEhWaDdzJmd3QDQlfm1VWDU0 Jm8kCnpiYS1hfl8tQyt+WFlFZGNGeld5QTRWMnEjUGhBMGs2N2F7NFE7IWcqVXdQbnc+flpWPVk0 MHRnc19OYztWTnlWcAp6UnpNXnExZiZGezh6fSl2PkYkeVNrPX1xeGNacWEmTmNUb2JOb2ZmST5G KE8obmNFeGc9WHU4YWomc0tPQFAyczUKemAxYD82PzdpMlRZcHlHUGFtfGlVNjZjZ3p1aysmT3It Qkc5KDJNZUJjIVAwQz88eG8rOHQoeXEpSk5LPXsmM0xeCnpDfTNERWhOITA8Mkx3KW1tZ0xDRlck Q3s2ek4pQ0oteUM/JERtIVMocjZSYTZmQEpxNFViXmEoVU5HNG5HWHo4fQp6Pll1eTVzY2RUIyk0 NDhHRTJVJi1BST56K3swbVZpakclWXZEfSN7ZnJ5e3Z3WnApeHd5ST42Z2MpKkNRU0IxeSQKej8q THE/TCFOfmBrR2Zna2xRQXRAbFlBXilERWd+O3NjQkZ8WUJteDVVPCstYG0hREA7RkI5Jkp0Z1Jh K1QzT3QzCnohPW55ZUJEdzIqMXY5SGlsRjtze2ZmM3M7Xj81e3t6PTgzN0RiSllpRW95MnZCbWhK YlByPEt9KEtUM0tfcCh2VAp6MHw3am5Ze2BpQCtqe3JZS21OOCNuI1IoP01GQGNZWiV1I2NVan0r TnQhSkV1cFctOTA7MmRaITI2YkNvN3ZGK3wKekQ3O3xUM3hQNSViZDd1aUopJTxyK2lNQ0RpSGcy MjlLI1BXNkdVK20rSlghaz1Ab0phc2YjbyFCeXl0e3pKSjdZCnpkbjgmIWMqYEhuUztIa3BVSHRh amBuP3JCRndrK3MyTUdXR1RoaHR0TVIjNylsdTZqTnM+dCQ2dyZUTy0jJlZRMgp6JV8+WEklJTE3 V1Z2Nm9venw1ajBBVnFMSjMkJHE0QzY3NFdlPjV7dVZZWG9yMDJHN2teIUY0fHNFT2A9JFlLb3gK ekl2akh2JCRnVnNuIT1YcUZWI09OcFR1cEB7KFVHQFB2Vk5yP1YmZWhGakxZOTVifUJJVSswLTdt fjxQfSErKkJCCnokYDJpYDRSQE0pJGU1d288SGFaeHlySXZ0Sz5hSHZuKF9NbjBmUlVFKHxyPW5y NiYpQTVzfmsjIW5fa1UyKnJnTgp6NWRxXmZ3Zy1lNVM7SEQrOFFsTDhmSGs7dyFBTiNITygmTCkm N1VfK0RwPy0tZmFzN29Le1NUMl9uaT5HejcwUUAKem14P0khRyV0X05RK2h1bDdDOT1zRXEtVkkh aSlqMXRLJi0lUD97R09MbnVCektGZntOKms5PWEpUyRTRjRVYSMpCnpuKkgzMnFoYWhPe0dCJHtC Wkc4cTVsMkhUKCV8M1FySmpwWktgP3huJUl7alBsRkxrWEliWCQrPjl1RzZuOVZwfgp6VFAmMTk2 PEhBfTNxUzY7XlpKe3ViYH14WUV5RX42N0VoYEc0aGx2Xyo7MmQrKyZWaGtQbzIjcyVebEFXVXp4 cSUKelV0dn1AIz40I2hISz9WUWNeSl9VSC1mPzthSCltT0hkM2JoaElGR3FsJjh8U2VFQChJMVoz YU8xTVQtZiptMiMkCnpwJGxfbDgpeFp2Jlkldl4mQENBKyhiMXlDSFJJUXlHKjhlaUxLKnJJb1Vi RlhHOU4qaz44Zz14OCF7R1o2X3AhZgp6bHUoKlltOWZhY00obnlBX3AwYSkrZVpxdkshP2J3TXdY PyhrUE9CRXp4Mz4pbChGM3llfFZ+dmY/SUx7TldMZEEKekZuUG05d3JvLTklT2x6YVc0Q00tR1J4 ZWA8blppMTAxaWA8anVxPVI4bmMzRUFFZlNBJlUqdDImN2xKY1BuZCQ/Cno7flQ3cCZKWjVwenVx eCV6Q3t+eCE2elE0d3toUjFOTnNTTSliTWB5YGFraEswenc1byE3VW5TZkFmS34wSnRpJAp6P05R OT10IWAyaGU4VFBuLW9uaVhnbUl8PThYM1NyU05RVFRkPGt5X0stTlIyPjl+YX1ESjVFcFpJS3hi aV99VFEKekRnTXoobylyZnFCcVNMQjMlU3VxI3xYb1h6eVF5Zm8xNjI5SFFxNTFoUW8meT88TTI8 dVl1fFdLN3BrPmg5MD8mCnptSDN8dm8wYiY1cXhvT3BVS3xTek5TbylBKn1zK142QjdyKj1YPDwo TEdYYCloV18wPmJwIVo8KDg+T1Q/ZkhZUwp6MV90IX1gWkolOHojUzVWeU1fQyEta0N3TyglYzZF S3shfVZtNCptZEhwOz44clhTMj4mPDV1RnNPYWRnej1re1IKemRHWl59JXYyc1I/ZiZAeDhRZVEq MEVBfDlIQTU1K053UmxqKFBJWDJfKmFyaXdkZiEtS1NMbjxeXjQjaVo1UlpGCno1dT4oc1VLJG0w TFVqOUpVJjBAKEwxc253P1NwLVlOK0Jwblg0YW8xQX0hdGhgVTQ7X0xxWDdxYG9+V1Y/eVZNWgp6 ZmYpIyEoez1iRHd0Ozl4WGo3b01HdDxRQ3ZPUFZlWnUwT31xWCpZZkxleWAtSVMyfVdCNGhgTTVv Vzd0R1R3NkEKeiYzY35qJnxMbkFycmlVbSM5ViVFaVlVbTQjcnZsXy1xKm4oJlZxPUY8cmJ0NUlB Wm1CQ3dqbkFnb0FqdSFMZU12CnpeN1I4eTZze2RXdWcpMDQkYzRmSGd8aE01b0VweGghWm08WFIz TTN1dDJlJTlidnhiKyV2YTdgem1FXl9xRntLPwp6PDZtK0kkX09XM0VmZHV1YnpCRGAqIUR+bDNE OEo9SCVzLSo4U2RmR0shKW1uTHZsPXN2KUtIeFA5VE9ZT0ZoaDYKemUqYnc1IWZ7SlNJJFU4WXtz blI8R0JpN3lyJTB1RDZ3P1BPKFhLT09AM1hFI3hCeUQ5elhISkt7Ylc5dXZFKVdOCnpZYGlRLWZF MT8qKCUkX0JBVVJnMlJmUCZZQThvaipRNFl8MnpKUWxxY0xEX007N1MmTHlrbkdaYjE8NiQ5bTJr agp6dHxedHQpbXx0MD5NVF5LJkdzOWUzJjdGVFl3Z2xgbnpYKDUrNm50eXJOMDJadHd3ZlRZIVM/ b04jYSgyQ3JWKWwKejIpREppOVdXPmRGNTUpRGJGVCQoZF9ReUwkI3UyPllMe2o7VVVEe0ZYMyta Rj4qQnFAcXVDMHhAQ1JgfiRNX0lWCnpoVDRadnRtT2RVWX5WLWtocG5sYTRTQl9mUzsobys0U2Jt b25vZWVoU01JbUJjRCpiQGl9S29Fe0JpYU1GcUprQAp6T0YqTHVpPmt0emoyNkZybXRVZ1Q2ZTln PmEoOThGal5UJHVJZz42cVZtS2NeMERmWTwqZmpUYlZoJFlHOTVqXz0KemF2eHM3MDw8SENgfnhF OEowMGtIXlV8RzdIb3RrM09KIU41WU1zYGlSNSZ4fWkwPUElTlQqMGRzSWcxcUlMZGslCnpKTGlj TC1FUUgjSn11VVkycUZDe3l0V0JGZ3goMG1kJT5AQ1dzZUx+O3djO25KRHltO3dQfnt3VysqVGwy NEg2QQp6bTNLMG5CI2RyOHkoY3lFM0Y+M3crcWhwOW8xYTwhUCprZk57VSZ6VmVURH5PZHhCX3Zy PzV7aSVGIVNuS3FacmEKejNLRFYtPWJ2Qj1VRCpARWB3QDxLWjVqJEM4ZjRgbUtQTT0jQVokPDso bmVWKHNiKGNwNSNJKTVyVTJRME1+NUF3CnoqTlArTnNUNGtaXnVpbmhhQT52ZylwbURuKil2ZE4j PlY5V3h4fEByQDI8bmx1amYpVD4/fns0amZYPXJwOC1RJQp6WjlONns7UytCe1dCZXlRWVk0MnJn Unk7Q1FUNEckaWMxPF5qYD89QXskLTg8WktFRiF6dVl4KjZFQl58RTU+M2gKemlBWEBtRC1aMmFQ ZFd6NShYMXNyY343Mk1LckM4YyNrK2RoQTRnTSFgTEhSRzN3cVNidkdgdmskSFcreSVHRVM3Cnol WHVuPSNRXm5jJDlXdVBSUX5fR2dCcj5rK1VgMzVUNmc+VGJfZkRlTE4tbWZnY0kpS2JuKztvaGJZ IVlld0RAUwp6SSU7VlZlcDlUZTs9WlBKWFE0aStQXlkwOVImUmp1Sk8tb1pCOCMhZGdFfkFkamlP QHlpQTgyYzJGfUJXSWtfWkAKel5ecU5fJjJfXmhOOThKRXRYbF4zUno0Sk4zaUZfMiVtZ0NBLUdo U3ppaFIxZWY5cm93cV93cCpIeDRaVEskRGdmCnotTG5JOyU/PSZqWWtkUCt1fnNGdjNealB7ZjZ5 b1AxY2FDJUt4NUQkKmQhcClgRUZ7XistNCp0Y3QqLSFIYTVBPAp6TmJucj9jJWU9R0Nla1RuITg0 TGwtO2VJd1UyRnU7TkY5TStaIT9rPEpSQGEmaUheT15OUypNRTZvUE1iUXo4bVMKejAlZD1pNmJD S0N6Wm5VOVZ2ZE5tTGtSXj1uN1BFPnZTSSZFIW1Na282QSVhdktoRSpfT0JASVM7T1V0XjJKJmB8 CnpWTDtkUVA2SGVHOWh5R002ZzRvUT0rR1UlS1VEfk9CNXZwYmlfKXxDRV9ESTs5b2xfP0BFYXtA RmJydF8oKl5uTAp6QWMwUjlNeU1HWVdfV1FfRyM9OGl2c1Z5fWR7JnxVM3I5LXxfZz1CPiRNLXs+ KWBubnNBNlNzUDM3UCo1QVE+VnAKekRNJjUha2NgM3BCR2pBMnVvdyozTHl0ZCh8QV9RSk5fenhm JmRfKHBPZ0YwbzxWMzN8cElOaitrfEg3P3RFPVhgCnppMkpKV2lwb2NuTFlUSGk2dyp0JWk2OE9i UXxpTTBZeCslQG1jTjEkZyt9eCklZmdORVFtVXM8P3xAP1hySlk/Xwp6RTVhclo7dChMZ3EkTlRe TFBtTk56I3owZzh5bEc5PG05Nk5KT0RjPyM3ejl+Ozl4KC1SLTVWQ3VkVWdOcGpVckQKekhBeitH eXJFaVlLOFM+ZmhgMmxgNnBQP0tAOyh7OXFEZlR4Wj55aUdMS1lXfEgpbztiO0FPMDdPI25qOVJn X2ltCnpEPX4+YjJMfExfdTc+dDE0cHMjSV9RY3klYHV0YH4zMG1kR3VpfForZnY+XlNUOC1Mfmxs UGlaZ0dWKiE/P1p9IQp6R35DZ0NnVFA8KmxeKllBdDw+QEN7TSUjaUJKOGw8PyE4YSYjY0d1PmlA aXlKS3FNc1c7bkM9Mmx3PVM1MWBqUVUKemx5bGBxWFpIUnJAfHBmeVBHdXRwQlU5a1kkdWlxbkxF QXJ+SlU4RXdDV1F9KlZ8fD1OOT49Rn5FUDdabGVsU0RyCno0JVREenVVTlBCR2F5clNrKHZQbTwx clA3VWpDO0FSMXFzTlBQRm5WWko9eE8xdEx7NDBJNz87ZjZ4OHBnQHJHTwp6JEdEYHRQQ3NZaURn TTg7eHdtQUxUZTdSUF5qJUp5PT5RPEBGfSU4ZmFlSkpXPkFFd29pVFM4a3phe29Ne2V6YWcKejRQ PGd8TXFsOGZjLXQ1Uzs5cHtAUCQhfGJaViE1Sl5oNntrQCZTWFlJV2N2U1IhelRsMmU0MiQhSl5j KjRgKTNOCno/emk9X0BFZy1NMD0jbDwteTFhRU9mfEMzVUNnZDVqa35fZWpnMiZzQmcpbD9hbi1r VUdlMSV9Y0pOeT8/TSNWSwp6anxhflo1cTBWdStEKlRSZFBrdzVxRlJWbHpuJDt9SUBXYkwwY3ZV I3hVd18oPmolKVItaUo0O0dxJWx1VlhUaVAKeiVvaEN+TCQ2IzBJXlNYaURhe3tMZmJkc1RSTWg8 VHs1eDw5dW1hdUUraDFraEpadl85ZVNRODs2Pnp3NSVuTntaCnoqMGhONV89SDdqUypAVTVAQU44 blhCRysjcW11VGNMKDZ5cDd3X34/RjlrQ0t0PVNKWHp2cFo+ZHR1ckokd21kaQp6X3poRjAxYWF0 cCg7KmRhT2xMfUJPVko5dntxO1BBT3lDalI4M0NSXmRNT3dVaDtsT1JoeioqZDUxPldUPys3N1kK ejluS0FKZXd1NnojSHZUR3VOWWlrU2RPM3J7XyopKHNhYDNjOVohZ3loUXUwUCtkTUAmKmhNKEda RXppU2NEeWNWCnp3KHktYHBkJWZRYD1uQitzIXtjJClfJFNhVVE3e0pxeUY3aWZsIylHQkhxOGMo PCEqJUg2cFR7OH5JaiQjRV9oYQp6K1pKO0xNQkV6KGFQMnMwP1Q3OCg0STVDSjxqPFNnRlMlcTdo TXNzSTRvWGh1RC04OEdgRGsxSERvZEFSaChsYEMKenFfRUZjQ2oyTld2NUJgblIqYjFBYDtVWjQh Py18e19aVFJPM3Byb3BVQG02U1ZGNzhsSU1uTzEqRkgteXF3I2pmCnpMYnp+bWJWPF88QSltOU9J ZTMqPVlsM3wjY0gjKD9wPipnSDVqNChHNjE9bVppZG5UbEZoY2JTeGlEJGdsWjhkOwp6Iy1PWnl3 Z09hWnY8dzx4eCF6ZUBLUUZxfDtJaX1TdXx0VmN3bHZOYEdpWlEpUDZnSFB5Zm8jQjJUNn16MmI3 cGkKemBGLT5aSHhDTX43NkxPWnctMV40NmIrY0VUITw1N1hqenRCU2hHcE8rJDBqRTlAUlleTXEq PSY1MVVhRSFUQmdVCnpCcUlubSh4QHJ+NEVvd1FISnRHVml0XihBejY1czMpTSkofThwbUA5OTJ3 dVhOUDZFIS19SjEyZztiTVlsQHxFNgp6eDRDSGQ4R0tYaFEkOSZLI0FfcDlTQHlJcXMmTEFSLVUw bGNvUTd8c3gzMHR2VWZZYDcjb1o3ZjUkPm9JMXF5KF4KelZmNmhQbChuQ3NgS2IxZlY8O0BCaDR5 NDM5NzFBSTliVl48QDhBNnQxeEgkdjxydUwpNzNxJHk2Wnw2P08jNmpqCnozbkM1Uk00WnFWcEwo JEYxYW1ibkB6O1krSTs5RGBZaUlURVByfUtDYmgrWjNuJjtJaGhFZEA3UF5xTkg9R1ZAewp6RHht YVZsbTlXYml9OVMtbGdFfnVMUiNfKSRkfWVDTDdES1I1QztnQy1udkslKn5gWFUmP0xYTHFiPzhy PT0tblYKekJNPWc8Mn45RFBuWSZmXzZmbT04SlVwb1grPFNrZVhgMS1RPko9Y20tTHskc1MhRXM+ KWVBUXNGUythTVF4dkVjCnpUYXFvdylDMnBJYEckYHk+bXV7WnAmdj53NkU/VmZ6YW1rYnkhajly QTRCRDtrO0EkayE1Nnd7ayVkMVkmV1JDTQp6JldHQkVpRCYoZmZOMHBBO30rb35eRW9fcCtMfDRN WWtEdnI9PCNTZ3dkTVl7QkRWX2ttSWlBP2dNfWItPy1uZCkKemwpKT9jMDA8dWVXUXEreztsdHp5 bUR9ODIzTilXQjQyaHdsSD1WS1lIK1hxS0IkUlg4NiNzd3IyVDtTPGRTS3BqCnpRPXxVfSo3TnlK TC05YClQfEx9c0NmKDc8OXxyR1A0K34+VisrV0BQJHJGbHlHeWghKGdUPSRXTXR+R1AqLV95Sgp6 bCg0YXVeZk0mISMlfiYrUXQrOVE3RWJ4UFVsZU9yIXRjSUJ5eEhDMmYoWWF8dFgmS0A0ZjJ4WUtC eEUlb19LPGIKelF2blVSdSk0Sm5RWihQQSkyaylBb3d5cngyTjlVfGF1ST9nXyRuVVdSOGJLdXBz TCNjNzw/PGdOaSZCfSh0Ui0qCnpTcF9jITtQcnE5c0VIeSNvcDd0QTc1NCpgTWFFIyp8NWQzMENU ZHw0UXIkazlLX0s1ckdxMHF3YGtTPURtQjJ0RAp6TSk1emReY2pNOUNhREpJTy1Ba18xYjdBUGR3 YlZ5QCVRM3kwMzBXQG5YMH1JWiszeWhhZ2J2OVROVTV8cE1lSjUKekFucz1yNmZPQW1qa25ZVzhM XzRqaTxeYDRBck1WcWZqRGZkbEFYWUFtSTAhOFA1UEppT2VzWUs7TGA4fCo+dykrCnpLSDdsanF3 Zks5Q0I9T2dYIXQyOUN8V0Z0X01ncHB4fVdeJThsLXxaSWVpfF9SRXEqVy1HN3VKLXQhUEhwUlEr bwp6M05PP15va2ZKYFpqMDtgalAlQFVqOFFnS2tROSEpZFdHOU5JSXNiSXVQPk8/TUBkYmNyTyNv dyZXfU5LN3clQV4KenUlPjdQa151WWRYJiQodWhUUVdJN1pAeEJiMXtKNU1AN3A0PXV0bDJlZW1w OD8rV2xDYVhZV2Eqc0xfe0cqN0xTCnplK0o/dkkzfWUzU04+bkJDKi1zfmYmdSFxWVdnTjhPNmJL dENVQXdxQyRAcnl7TGkyeUluYUdyeiU2QzUqfV4ldgp6b1ZHSXx6Jj99I0xNPDN2JF4pM3lBa2J1 e2dCWV9xKTZ+IXhTP3UoST9OUXZ0ZUplM2d6JlooYk5VOFRPTE5BWEsKelEqdDdIUiQzX1lBT0E4 c2JDWkAxVnMtJkpQUDR6PmRFPCktYD99cmcmbkwtcGAmJmNWbkQySUc/aTE1dmxrJmJ2CnpDQTEw e2QxZF5aU01NY3JyWFl4bj9EMD9iUWg+XzJCRXpfQzMlRTJ2S2NCdD9JfjxuaEs9VFc+IT5QazI7 fH5CeAp6dyghcyo3OH1SemtQSGpsTD9rej5EMEghbCshalMpYXQ8YDx5Xj1RRWA0eml5WmEzaiRu aFhpWiU0PCMkNGdweDYKem4zMyZRe3MwJm4wfDhEZGBlOT9idTdXSX5KSTJSfShmZVowZkJRTDhF OE5sSG50MT5rZGQzcG5ybDgkanlUOUl1CnpmTkl+KmA5TWIjM05UO3xtcGxoNDRTLX4oQFNLNXV6 c3pBdEl5cWpPdXI3e1NyPVQ/MGtpdyFUaENYd04tfEs9fgp6Pj5ZLTNqX2Z4OHIzX31oIWNTSisk QzI/enA+TiVGI2tvVzJtbUxCP0B2KVVHS3tsbSR3ayR5KVFYWWZfP0NXUTcKenReYjYyZHowbkBx KHFZa0goTnlGaCUhMmNyQ2Umb21MY0ZmYnZrSUtRMHA7PWhsZ3dAVV4yQFlMe2QlRSVyfHJFCnoo Q2BEbS0wZ0RiTSVaIzxmJWlMUloyKl44d0ZUZzZmRl43fWlCeFREdmRYSUImNUMpeT57YSF9KXht KCFNeSh9dgp6cVI5bzV0NWslMS1QNHMmQz9UVnxlIXQ5Qis9aGdRT2tsUWxVQTQ9Tz90I1RaKGlp Z2FsYFBxd1R7c3ZZYGp8JjQKelJWbGdnaW16dFY7cXxec2EqY3srQVQzTlkmY2QhTk0pNkFaM1RP R09ZZ1ImRyopZSUwRllgJk1OaXhrZzVMVDZkCnpuZSojVSkpdmR8LUFTRVpPU2FKWEs/TWlfOD5Q VTdwIzlCPFpScjJKeXteRjVYUm9SR3JCNmB6JW9DVXpqWnheUgp6alAxX35tOW00I3tzaCVjSW5Z NDNeOCNQRlBnWXUtMHpFKWc1SCohe0xRUHk2dVZBNChwajs+TENAQ3FPY3pOMmAKekQ4QUwyJThj VSlwLV96Z192a2hLRnQkWDU7dSNRc2xeKTxuSD8hKGNDfVp4fGJUTzkpVTM4M20xSiVAX2xzOW5I CnpPJTZSNzI1RVM/XkZBQG42K3BLcz59ak88NkM1SmFjcjdiPnU/MGBsR356JTdYP2FJVXZJazVE cXpWWXMkcV9hIwp6WGglMH1UQWl2WFJlM35qMSNxNEUzc0NJKzV7KWkoYldPT2xIaT01RGgyaTwk MVd8MksmQFZ1d28raFdpelptJDsKemBqUD1APSNMQzcxOE1mPnhvcVglJjdLVkBjV3tQWHchX3s2 di1NZF9SJUY7flVoZFdkP0k5eG5FSz5nV3lHI1pzCnpzSGhXLSUldTZCcmBsdTRmWl5seVdrd20x JFp9dTEyUSREfklKI2F5U2ZSfE0xK3BwdWtITkBTRCVoKGdhYX4yKAp6NVY/ITFeUFRZKHV8ZUdF Q1hfd2V1QVhTIWxDND9qdGhBfSh5JTBjazhDTTdiUW1sJkNIZkFaUGYwbzlEZyNEbDcKenhsNHAo cW0wMDRXektqUmpyO1h8eiV8QFJlOF9MYDljN0NTeW44UGhEQT52JGQ9eSEoVnY/LXlTWnhBdDJ5 Z098CnpMRVYpQSpLZ24tXyQoaDdEPFliJmx6a1lXLTVue1h5TmAjKXF0UmhYb1Y1XlpISSZ9ZHJP b1JtZ0RPSnNfIVNFKgp6cHcjeVJBVGB2cXUqNV9uVUtyeENfUF9jYT5Me1Z7Tmo2SEFmTzs8I2hx ZkREZjh8K1Y3dCg8dXNRaXElQGROdjwKelUzQnJVYENfJVV5K1JqQEhDNHZeY1lUI14rKjEqV28o IUM+ZkhOVDh0Qnh2RSUjPTg1XypfYXVHQEhFOy1MRWBXCno1b3tSMmNpczVLMSsraSl7NSlDNmFU TlhUcGRBfFg/bTZgN3E2fkE2M3Y9NG4wYXZYZFlIbSZrMEgzdCRJTm5ETAp6WCFuUmlYfkk1YlAp Zko3VmhhXjVhOU5HWGRVeHxeRnpJSlNVZCh1Jj07KHhYbUEjIXteWlotTzhKZ2V9YHRMP00KekRZ M2olP1JvS0NiLW1+SD1ZNnBzbkRFVzZARD5CME5mQllNQj0qWGtVYzt+M3BRZE5kU2QzfWVabSpn IXg7YFkmCnoxUzhRVDA7flRzU0c+SEBqRSoyJmBxNmgtY0t9dHY0Qn19NUJUfjtJdW9OWWhoY3Mj fGg5ejg5NFpqbT13NWZlXwp6QWsmRkVlOHAyZnFFSTVFTnc0UVNxUFlHdiZMNk5+Rkx8XzltO0NV dXp7VHNVMyRAK1ZLampNOGU8SEdlQE5YQHMKejRLRD8mR0U8QXw/Pn5BVzc1YCl7T1A4YEM1e2x+ JGZFdnZ8V3RHbmY3VWttVUBpWkxGUyk/OFpfV1VDP29+cn1TCnpGNUhMXmZFVSFKQHNTYmwjazEo P0NWcGVgPEllbGhyTTI5VSVecjY7XnB6eUpETVhXfGlGPGN4aFFGJnpaJUFmbAp6ez1KISVLT2dZ fW5OQio9YlhrRWV3azhtcnczY1hISEZXV2J2JGMpLWJyeFQmRF5eKm1JQkxvZTFMYShpYVhpMkEK ejgpbkMmSUxEST9vKnAtOFo1aUZEY3AzJmpLTkc8X2wycGtmR1I4ZWo0S2NMbWd0ZTlAP1p7fFky cFlvZ0wrdXVpCnp4dDwkR14kVlRKUiUmOEBIYWdtIW89U35eZ0ZNMjZHISVsQyNLZ3A9dmxZYEUm Y1I0P154WEdSVGdFIUxReiRkSgp6ZW11RHclS2ZsPXEhUiNlKTxNaXYtViszYGF6eXFXbmgkZSRs fnYpe2R7LTR6TT1fez9Ge3Fob2pgP1JVWUt6OEEKenVIan1WRGpXYHNaKSYzUEVuJHZeLVNVb0hJ Q01qSUE+NkE9TX1rUFU9OHdEbyZVWE5OVlZoRFI+ajhwYGgqOSVSCno0S3VkfFA9QCNKbWBZd1pN VUlePlV+T3BBU1pfSj5fazV0fW5WSXA4eGc3JEsxZVpOeW45SlNAekdyfiU4ZDZoMwp6djI9Xj4p NH5CUnEoey1XaColOT1TRnB0LTEtciNERnU/c0pLe319YT5rQCh2ZG14UVhfV1gpaEEzbVVuTmxJ PlQKelFGbUt+ezdhc3wkNU5hWCpYfkRFe1QpZ3s7bDZfZUY5LWhfTzBoMnUqTEpfMElpdXh6ZFh0 e2MoWXU2WVd8fC0yCno8Tk11c2tOPG9Kc043JWoxU0dESk45TiF+XllIWml2Iz87cWZebFEtQ3hB YygxM1ROPnBSbHN4MCtIPUlabXdIMQp6OG5FWnliXldGIUVEVWl5bCY1SlM8SXcka3QxSVlJWHZg eDJGSXd0UDh+PGx1PXYpV2pQSV4taGVrNnRWTCMwJjEKelYqZWc/Zks1R0RmPUt1UDBzSE9TQWg4 PlFEaF80WnomO3pQI1hhUDJzUmZZQUMqWDsrbWtueHwrJjsya0JwaDtiCnpGZzNram9mSWExMzFr SHA7ZkA7RFVIYGxgO1F1KklCdyMqKzl8eGVAPGZjSWlYMFczRz4leGxXU15+KlVCTzN1eAp6aE5E TUJRRSspUSY/NVZMc0RqQjBVfmh9UGVPc2pMJVpCXiEtKStFYVVVVz4lbWpIMWFaMSF9QUwoaUop Zko/MTcKejFvWClfOzNzPS1JWU17b2RVbSpgSDczaTVqPCpCbVImOz0zMXx6fXAyOCNpRXg9UlN8 TntnSENWd1MrYGolTyhxCnpzPEVFPjFhIWEpMDFMYGYmSkRaVHtOMkRNTXFsPHx1fjhqfFN7STtB c3dMV2lmWVlJKnBgcDMxR1FFM3E+dllSLQp6Nkk5cE9TR2JvQXVBY0B+WVgrenklPmw5P2FkbXcp ZHAhKTdeIWZ0VWQxQztlQlhnaVdzR2d1VT5JZk8hZ1IyemAKelQwYT44Y1EtKCNwMkgyZ3lAP1R7 SHswMGYwdn5gMSYrWF5NOFpZKkhCS2pMWmx+Zi1jUG15eUQlRyhTKnNGJDBiCnpFNTwkJDVYdWB+ byppKzh1N3txTTxOQ0BYY0l8PG1TY2xfZnoyM3pNZT5MPT1MSnMxQS18c3ZFLU43KiZ2O21UZAp6 VWVibX1uSGtrUT9ZZVJlaytNZGN3cz1Ba0IxdEpKYmloMyU/Vkx+JTl2cXQ8LU1sZnZASnJFdTkj YGp2Rjwob1kKejRrVzs1MkxOKFg/YnwpeWZvfCpvTFp6SVNDRn16cDtPKDw+RiZWTTxOZERWT2xs ekQmIWJkaSFBWEp6UWpMQ1UqCnp0YV5nZDBtdlJARlpTejxmOGQzWGFQXnpzckBqT1h5ZmVSMV5i PVRPJil0TFp4c1kyRFBCY3d7MEQpZD1gUSQjVwp6KEIzcFR1JWYzdEFgPGxBaFI/d2tZUntTbDN7 Zkh6Sk1pUnI+ZFhALS11cDJOVz84Jl9iQE9+Yz1aM2NuS2NsNVEKeiledylQXzVEaCslWUgmS2VT T0hQJCY0PU5IRVl0dlZxP2Z5YzU1fDFpYDZ3dmk3WH5qaiNuVlYzVXctWXJDWjB4CnojfkotYF8y Zm5YaUxIZkNibDFPU3hpNHxCTTJHSmIyNzRncSF9IW1uOCk1d2FacDhAPDd8QG9HX0BwYW4lVFV7 bgp6TTNHJFh2PmNaVkMxNz91dU4meGJuSyttJktadmpXQiZ0NkY+djUlTyZIe3NpYzBGNEhaWCVK c0lIO0tyWlZWWTkKemU3KXhjWig3UTQhNUE/MTdqIXVnbHhhfkE+JEorKWx5N2N0X2JtdXp7MCpM VHEmTSRKP01EempZeEdUV1plIWE3CnpKaU5YO1NLeiZVUzI0aj8rSTtKbHkkeXlIen1tYUpkN1NR YWAtejkoRTJuKnsldU99X0gqK1lBYmpjKXotPGRVbgp6SHFlWGFyYUJTK2dBKU83Jl9sVl8+ST5k SExueHV0eFZNamlqU2E+XnokYz0oPX4rSFFZRUspfjVRakpQNjkyUUkKenBOb3F9dFd5JFJVZWRW cl92KCRzQnFYZTlkez13fnpqOHAkd3s1YWVUfGVUbU9vT0JVMTw2aEVoPkQwXmdtU2s4CnowSTxV VjV4XlYpI0hFcmRgPTIoSDB4PSVVJlk0cTY+Yih0SmppN0J1KmZGUC1lc3ZTdm5CaGFKdiQrJDla YFNXVQp6OGEmJCElRWQoOHRoaEcoMz5fSkpIdWw+VSN7JGRLbjMrc1JiR3phKDs0OTxqalpKVVlq fSpTKmw2O0VOdzx9SCQKenpMTDU5JEwtd203Q3R6UDZaUzQ2PUpwZHg7NDhJKnE3IWJEcndnMUdC SGFARXpqNk02bHQoWFRgcCokUVYzTHZ1Cnp4TjRWNXtRb1MoZS1gNE9VR3w/SGFyNElpWENlTng1 ZFI2NUBaSmFfMURgRFRwUkRvIS0tWTtSNUY2ZVI9dF5mNAp6a15lMWZzM1R+N0tyYkBjQzt8TXxm NkZJJDFAI0dLUXhnRlVsaEM+TXdkYE1eKzswXjQlc1UyUU9vJlNqUnJZTk0KejlnaGQ8c1EtUEAw fnI9WDBOTkojNyEqeS1OOUU7am5XXnBhKGB2ZVZKM0crO2E0aU5icUpMSWFUJEQjKlZoR3dnCnpK QW4rMmd6U2tHMExYQkZiX0BjNmgjSXh8TzEwbyloJFlvU3VDKkY1JmNoX0ExZ0tpXiNUbTxGeV8l Y04yUHF6Mwp6dWEwQjl3cDZMM2htdTc0K2sxN0dOJlR1SipJMkw5b2MwVE1gLUUyV0htcmNeRG9p UHE8bzU/RWhHVSR2T1JCakcKekc3OSRNKUE/dExjektnfCV9Pn1vb15lJERfP0NoVlFOOWF0eD43 NkU2JGhOJWgwR2JVVWBeZnFuNSlQeWFYfjs8CnowZXMqNihpam5yZ2U8eVojaE8oTGJxKiVyYlI0 OU49Syhfd2UxYWMhdzZ6fis4SGtZP2ZRR2dgdkwhdXdnPn5fQQp6Mk56RzNGdCVWNjt1TnpraUUq Xj5MT3xKQVRNP3g+SCNlSz1fPTMxQ0hUWmtkYyMycmBxKUswM0c3KWF6IWElNVMKel9QUE9gOXtY YiZrNHV7IyRGKzk/KncoUiQzNld0OHh0WHttaiN4KntyenFLcEZFfGduOHtndnkzU21ucUViKmV9 Cnp5K0lRayF1WWEteUQmcGZtWn44UWRsZXwpbE5DJUdha00mNFhZZGpPdH5CMTc8VHghTEZOOHda RjloaGFhJmpuTgp6aEVqSU5GJUBQPENDY3o+dChoMFRzbmEtVVBSYEopd0cmfUBueDNBMWhCZzUx Qm9LMUpkM302RW5Jd04tXmhkYyQKeiNPRWxWa2x0UigzRH1SKTIzZHR5Uz1ze3JtV1YlMiYjSkRM LTZaYU48N1ZUUFAtU1VyN31FekFZfnplVjhJSn52CnprUlIwUzJ3Rnl7KSlVTitRWEVKbTtFWV8o ND0wX149WUIoSGo2fUpQUEB2RyFhMCpAKFNjbmtLeGxeJnJATndqbgp6bzd5Wl5iZDBMUGMzb3pa OXpoTzw1SE8oXmVqJmdaQVdOQnUlUW81PDNDc3hiIXNyVX15a2J1eSFGVmsmPFhie2AKemA8eURi fDloI2RjLXlSJDNLWkdvRG44T1g/bzVFLXQ5LXVJTUpUfjNze2owTXpUQCgyVzBFfC0yTVJjPHNI QFJTCnpNQDQ3ZCk9ZSUhQFE1encpS2c5U2dUTExZNVByalUyOEx+JTMle054M2BfTkYqQ1p6KWZv bEN0JUNnT2NYUDlWeAp6Ukw1emBvYEdQbUc+WnQ+fDE0azw7PCo5QF9DKihISiVwR1M4ZE9uaTRv PmktZG1jPkspTGVfJVpAZ0Y2OD0lbT8KemN4Ylo3Zl45P21WQDx2b2Z1TGBQPnh+WTM/OGwrZ3pL eFgjNUJZaUArMjRiT1ZlJiVwQmVZTms9MnVTekNrQzg2CnpaS1pOa1EoYDx6aUlTVmBjTDtgZXpR MnE/cjFqV0tRYk9RZ3pANHVwSVAtc2NUXlZQdGd2YkE8VlN6KG03TFY9PQp6TitvTFZpOypnX1p4 Nm9oT20tVmtzZlMpMUlkJlRePkxvIX1PaGB2cE1oT0M4Jjgpd0wrSz01NGlATXErNVB4UGAKelhY fWApRH1NVUhYNGUyRT8zM2lSNT1Wa2o9IWN4JHdeQ1FVd3ZqPm5gN25Id3pXWGdFMHlNRnhsSm1q U1JfUUR6CnpxPSV9UitPd3MheHFzJT9IbkBwQU54ek9PO293Rj9VWWcweVFmMSlWVTBMb2s0SlJe VXh2dU9lanZ3cXJTQT1OMwp6Qnx3bj5hP05GSVUqN2pRMVNKUnkoUCg/anVxYHpiJE4lc1lRd3NW e212a2J2eTE3JE4lKyRnNmhsOVFlPithbDYKendmaFQoWWlnc0oqXjh2RUNGbVJObDA/fWpvRSRs dUpsP0dpIz1Xbz1rOWZxSHJMKyQ3JWtUJjBKUCEwOGs0X3xtCnpwKUE1Wmlha0ZhK0xUXis4e2w0 aSFFT3NCc007TCpLMHJBb19Maj4jZE8mMW1pU1cjc0hXZ2l0Mnt8TSpsKjRfSgp6UGxMSGN5Vjtq WHQ3ZXIldVRlTCMjeWt2a2tsY3lNSmpxMjBWMHVXQDZ8PkFYN0AwUSskaCN6dXFhbiYqTHp7JlkK elU+dT8xPWJ2N2xLfUVndT9WZVBOQTRacExNUWJwNUU3VDJCY19uJTRLJG52MHs8VHtjZVN1bmpu eHROaSl4QHwtCnpSbWd0d3BoJmBTdzlAZTJSOU5lJmlGfUFkUyMoWUUoeFREVnUlRFV6eGdERkdh cV5PRHZ5SVFXZV52Mlc9RnZkegp6UmJ3UDYke19DaUQmdEw1ZCpvcU9CUG4lc0hjPzAmR0skQ0xv JHtLX1hWUTw1R0EkfDRJITtzYnYlP2BGM2dAPTwKekFmZlN9cEsxZHdEQHJIQHNefWs1RWV3QWRL OUhEIXhvYjlfZW0zZU5EITxIV1pldUQkKDYrRFcwNEk1Wkw1MTg3CnppfEFQN0pSdHhmUSF9Plch IzBgYGFeSWZhTTJpVUQkeHd0RipTKXRkQFcmVG9KNEAxSUgrc3UyQDlzeVl2U1gySwp6QmV4fkpu dE8tKSt5ZzsybTErRz0rYnNEODFTbGFaaX1kYj9KSDBJazwyJWVQTjxCSGk3OEJPVGFkUj5FZWZR ZSgKeiZ3PCp4KGY0N30kZGFOdklrKllWVWR1WlBeaikmQSM3ciVIZDZpLVlEVz80Uk9IWGIxWT1i TVpiRF4qUHUmTj5qCnp1JjEkRlRhZXt6WVJlQyhNbWVacnNwb1BEbjNXJHl0MCtwWjE8MT57YXZV V2o4OH5vT0c3ZGF6V0BXM1U4I28kZwp6eDZAP3VZeTR2SE5PN2hBYFhUbHF6dkxSMTYxemhFbVl3 NUBaOHNHckBqM0ttY1lZc18jPFAjKnJzM25iUzNqK0cKejhIaztONmB9SnZrR2NFJnlNPnRDK2Rw LXhCUEx6SVd+JThDQ0x+K2Y3TyVGQUo+TmJaN05Xb2B5fXN+PiZ2eDVzCnpKalpmN1Q9anZ3c0ho fURUS3VwRDBzP3BCK0xuNmF0NWAoNV9BNWVteF9RfUhAT0d0PENMQ3doQzl8NGxGRmp2fQp6WEwl M0kxVVMzUHRFO1JQPllkRUJVemZCeHJXU3BSLUZTNnNJTGFKeTtVUkUhezhRKWk/aTw+eUspZVZC QXlgVSsKejgqMC13SUNgaF5ATFEwKj1rc2d3PGxTUnxTbE9QT3d7Mld+VFZFRktWWSM2YVkoazBV MEB0QkNLZX5+eFlBNUZ5CnpySlolVE0kcEk5aVNAT2lZNDVsTjZvJn1TWjFSQGNHIT51IWMqXzlJ c3gpcEJ5dHchTSVKJEowa0R+YCl5IU8yRgp6JlByRHpHYE4xN2RUaH07MlZaRXZZdWVJIXw5KiNn OHM+SkEqeGxuODVvNlVKUCkocHdMP0tkbG1OKVo8bz8oZEkKejlWKkB0T1A2JjhPQmpYQ1Mtd2A+ cFR3PDdWeERQNHFIKnlgaCgtSWgoaXx3ZiFaa014ZG1YY1NjbjZQeD5zJFQ/CnpvMlVMaGUlWjZ4 X0Y0UnJUKnwoM3VqK2w1e1o4KkcwKkdkblJYVSpGJXg0PHcxYzcjTS11U15MdD5lMlp5PXQ3Ugp6 Nlg8bSkoQWxqZlZ+MHs7aGI9TTA4M0JyTmRGeHtgZVFXYiNoek9FK0dRXl9JTSlOOU96O18mKDZL MTMxR1RmVnQKekQ/Zzc9XylnK2FIajd2MUVMayg9NCp6ZUIoRVpVZnlUWGcxPWZ8PD5wSUxZMW9H Yn1Hbkk1KE4lcntaS05BP1NvCnp5c0dDYmskUDtaN0ZvTyh2YChPUzw/UXZDODFhTiYwWVErem11 XnJCdl93PyZAPVF1ZThlKn18Z0dtX3NBaFl9RAp6bGhwPDwobDRJUmlDMnM8NFZjV3JJRUdHQlFn bGZTNCU4TiFfZ1ptZyhuLTUjMlpAJW5zPlI8IU1hKV5aUlZwfngKek9BbzZUZCVraXtZd0xPflNX JVllWWNzPFJzLXJZfVZQO3ktamJYOzAlRlUmfE1FcVBBKjMyTXdhPVlOaytEPDhjCnprWCpZO20h LXBKKSpTY2w0XklFcURYdGtheT8rYjtAe3RVdTgmUGNISklTVEVyYkZDPHVySHA/ViM2WlFjMnM/ Ugp6VUlAZlpJRU4hIz10YmA8UXZHNVo8cGlKRkJxSEh0eW5EWXNSbEA+fDEtYXA2MT4xPmU/QyQ0 VT88WTBHQ0oqWWIKenlzdUJaZX1SRj4jTVokMnBpciNJYXAwMUdjTTliSGo7aT5KP0IyOWZBd1Eo anheU000VTZXQUpSamt6ZihLa15YCnpXP1VrVk5LZCtBaSZtajZeP00mPVgxSjdeZmx7T19FdiQ4 RHB+YWA9YHJPc2w+fDslPC1qe2c5NjFeNnZmNGBgOwp6XldtM3I7QFAqcSFWeyotUGU+SF94PXIj biU4TTw3Q1JJNUU2Z2lnXiRBfERFLTFkQU94Vm5oe3RSMWB9akghQ14KekV5aTBTTlNlZyYmOHh6 JkwrVWxEcTZJQ2xubyt5QCk/UXN5MH1zO300MmtobCh+TEt4MS1tVERjWFdpVi0hTEZACnp5XiQ+ Q3lFZ01ybitXekVwUEN6Y3psLT83KWhhMlVZOUthVCo3PHtNPlplRWRNRzU/PFlJald+SD8zemUr JFRmNwp6ZjZWUnlpZ0lqYy1VO2M7Iz53IXhoKUt2dzhydSYmKzFLbyRUe0pATm1yZjRQQFA9WUpE OV9LKk5xKkVtOFE9QHYKemp+WDVNWm4xRTdCLVdPbGNwN3ZzSntzUy1JcUpJb01WMENBQnN0VUpa MkN8WW9FKjk3bkVxPH52P1QkZlAyeFdiCno4e3IzQjdpQnhMY3ZseW1Ka3wxUks4d2dnPih4QGZf cjBaYE5HV1lvKGNydk8oPSQkPDImaW9CaUZBMCY2bjRwdgp6T01MJDxQNHQ4LUIyRCRhYG5ISGND Q1Q5aXV+SX4xR3dIbUxSZEN5QUQqZWdgTERpOXMlYlFoPysmR29fcj9sQXgKenAoJUp9PVpuc3Bi ckhUfEQmQURrdFRxQyVXVGxtKEJlQTZCZl9LRm42OHE5JGdCelMpPmFnbndTKmJySDd8N2QyCnpR IUo2anJgQzwkMigwfVFTMFZXYyoxVFZCMHZSdlNlSk4mKWEmPlZhZkFGTj1lZndeSU5JeStxI2Vp VGktKilYdwp6K2ZwISFLI1duaGtxQUM1Jmt0TUJ7R2xfTEZtOElFN3JJbmkqeFZiQigpYkMmeH5g TmVYdnpTfGU7SSpSWkRPdW0KeiUwXzBSaXFXTGBHMkpOKkl5MldwZ2p6Z31gIVJNM0R8N3QhYFYj QWU+LXZRK0ApTyZzK0lQcCk1NClKdCpDJkI4CnphYz9aQ25FU0tOT3RpY31QX29gTj0xTj5zYUsk P0o2LT0zRWlXZkVjJmVhM2ZvfndeTFdReGhUOHFHS3RDI35MMwp6bVYyTlhAXk1PMWxhO01Hckwh WXopUiNXNVBTVHB6ODZEP1dMWiZQRUllamYmU1UtQTJMVFhVPWc9NXN+QikwRlgKek9vN2ZgejFO LXxeXjNlKmlLfkdPU084Jj5MJjQtUmJLJjlnI2lLQj5KfWs/cj42bUVsVmU5QXBteGlaPW57OVBK CnpxSCR8cEgqKlB9KHFoYHI5X3lUTGR9fSkwQE0pP3c4fXo1a2V+YCk7PDg/JUdJTmdZRilVNTU+ SlRaUDxaXlVHSQp6YnQjeC08fSRzdT04U1c7PUNXI3tFbVRXRkRueWRhKkFmaUVkM0I9OGg2bH1j M0ZjRXU0UExoNSNVJkk1cCp4eyUKeilrcVFkV2YmbSEjaU0yek08R31uJE1RfUl3YjtxQ3p4X0Ng RkhwQG15Kl8/R204WkNEKF5UZkthYDlTay1pZiZBCnpecDI9Snd0anJNck9hX0hibXhmTjZXUEd9 b0p1Z3V3T1c9M19HTnpuaSl+VkVtT2FjZkBQan4oUHI1d2g5KHFOTAp6U05nak9rMy10WldEZ3Zq Qzg3cEkjTWhiPjhabjxrIyYkZyZjcitpNEtpJW1ockdtYXhwb3lmJVVudkxedVRuY24KejlMbXB9 WCp0MTNqNmo/e1BFQjg7K0gmVEpPXnd8K1NLTGJSRkl1LUFuVnB6RHhCaU15cSpMPHt1eXs0UmpG T1o2CnpzIXZPdUk/UlFqc28+bkQ3QkQlOSl2VylxKTZTUjxSQj1+bm54PTNLVk5hKmF3JUloN09p ZThZNzczfXI/TWomJQp6JCtXMXpQKSlKZF9+bWQpc1dmNmZoPD4/a3tnRmxZb1o7JHhKLVB0LU1A dEVReWV3N0c9N09hdHAwRDNVLT5rRDIKem54V21CcWpNOUlzJjdGQ2VTPnN6T2laJD5lN3ktaEp6 fCRgPjIhJCtBTnNWeTRjRVJncHJoeDFTVjd8dGN1bTRHCnp8N0hLYT9RbkBrNz9wME9Ye31IJUh2 S3dKKl41bykkMyVtN0lGT2FnOTlJO0pgMFBuZHRiWTVIKCQxUjJMWjlnQQp6S0RDeT8lKDU2c3s8 eUs7MlUmcmg0aSN7U1c3Si02T21JMTA1d0RYWChSTWFRU19pKCE8YFJtd1JRYlRhN3xxRWQKem5r MU9JUUdaMWlHU0BNeEZoNmdndCtVNWFMYXNkM0dxJllCc1oySiRjUkJLS3FkOXYkTCVLJntgcXdU KU56cWh6CnpGOWhkfWAhUlhtN1hlTXwlWE1ocFIwJVVxPyFJfnJGO35CPz0tNVltc1h7S0tsZzho Sy0/QkBuPzA9V216RlRGeQp6QWFReSp3Yk5OPmZmZGI8SD1AVjZTWDJDKip4SUh9OyMkSXhBMV91 IyFsaXJ0cXFMV1ppOSR9X1l7Y1ctcUBMcEEKenhhVVJlOHMtO209WEE9TWJxViZOeyspQTV6ODFR KFpsVGF1OVV+UE13TyYtT1ZYMFlqTzJwQ2FePHRXcEw4KndUCnpsM1c+PHp3TH41Q1cwJWV5ZVdv aFE2Nmt4cWxoQE9EYT56c1FAa2xZP2hnNSMmV0skWTtsKE99a15ma2MjZ3RORAp6ayFFRCRvRXp6 fmwhfmdgc2pzdmZJZ2ZvOyRDejQtYT4xZEluTzB5S0oxYmNgSU9LckFkYVFGSV4lOGlhLXR0XykK elYoZXlUelFhZnBOY05XNk1QR0cpJVZ9bjczS1c3YzxgWiN4NVA/WkxIcHs7JiU7WXJAbEE2eEoh SSkwRHNSRV84CnpNSndZMXpIRDFOK0BCO2AlYChSM3RfdjJ9RkUja2lFN303bHhabSNeOS1HaFpW cz89Z1liP2gqcW0rN2o2QS1kcgp6e0F7IWB5RXEjcmRZZntKYjRIJl5XO0VrSF5nJCE8ZE5jUl57 SSNiKXVDMiFoQD1PKDRnfEEzPWt8clV9Z2hSTVEKenkyeiFiaUg/I15oM1FPcDZSJUg2c2ppMW1P aCN1SmE9anB1dzlHOW5ZSnd2YyRXfCl0dno3Nis7IVBvTGxqaW10CnprKyVKSkFyK3x1WkZMRF8o aCVEYyFtP0tALWYhRF9xKy0tQ3dBNjkjJCV5N3BqIzZ4b0JeM0RlN0E2JUgzRXtmeAp6bkhCOUVz VEZ4fCY3UkkwTWNjbiMpNStlKj5zUkRHZVZiNF47REhxaDR6UXh0QkBJKlZrPFk2eiE4d2hucFJw cS0KenM4TGRsRClnVDNkZz1YZ3ElYWN+Q003U3tjIVhiWW01SGBrJSp1TWI5eF9VJCpTYUd3NyFz e1d6aWEmeT18TVJZCnpgTlNnI0lMK2tMXzQ5LUYjfmFkYGNCRjRNeFZ4VC0jQnpHdHdXPX1FUl5q U1JLM3hqT0V9RDxXdk8+OWo+Uy1IUgp6WUpeSEw9Zml7VT5WV2wzQEJuVDd3fXlQXnJhWG5TLSNS OW5vXlhPJiFJZkheKFNXM1BkJio4cVhLSURGPmEqN2YKejdhSVo/dmxQUTVkZUxFQztsRjE9WStw SCV4WSt6QXJFR2wzY2s8PzBqYFowfV9zIUlVWFVFPT9JISlBYXVVWHokCnpXMkV7RytidlcmeWoy Oy13KHQlVTlxTHcjXnF8SnBMIWVFaTI0a24rWFByPSlQZ05Ka2M1UW81cjdWP2JoVkA+cQp6Z3Io Knp4NX1tUmdhWSp7N09oLVlERTF8MTg9PnhkI0JsIW9mSENkWTJkWD9AWUpUc3lfUyo3SGd2bS1F PkFxX0QKemJ3MTAjJkwmJU9jOUohTkxubXtoR3x+dj1XaClQI29+OztDRjZZeHlkPmooUyl5Wlp6 PVk5UWgkfUlsUiFzfWVTCno8JEJGQ2xeV2F9VztmaTBNP0tueV9iV0dNNUUrQ1hge2FFeiFtVWBm PHxpdjVgJSE9X3RENC1fbzRrKn0+X150Ugp6a3lqaExZbHBjY0FNclN0PHRtcEVaQWxqVUlFNXUj ZD9iVlEqKEhqeVd7aE5LZ0pVPD4hMDMkTy1JZj10V3hzSHIKenBQeF8yM3c3PWRHP3pfTyYtPmZX P05DS1Z7RHdfUT5yd3RYOUk3ck5uMWMxTkdZQypVcHlgd3FuWDF+QD4rMFdICnp0PVNRWFFQSzIh YlpzbSZNVUJSUiozM3RfcUxDWjE7anVLSyM7bmRqOU8ldlhHR21YaUglX1E1Vj9KQi09JWkqTAp6 KHNTeX4pd3gyMDRKMWhmPUttcDVrejtDcXFOdyZgX3tWUzY5QGU3PGFhfGYzYXJSNyl4S3l1QFY7 e1ppWVVYbHkKemNOcVBtOTh0bG83YzErcnJscEc1JDIqKyFXfVdESEx3OExJWTkjRFRNa2pLfko3 ZVh+RE9IUnVecChtTG56PU5hCnp6TEhwWFppek0rZ3EhIXMycnREK0BtMT9VemY7c01jPm1uNGF6 PGFmZEtSVzV0dnBQZHUqKDFyRXppMXFtJEB8Ngp6QGE3RXQ9dmVhKWVwdCgkZ28wR28yaXk0T095 MiFGP1okKDRvTTF8Nk9LRGNCWVh6QVo+VlExJnBuKVU1QEBxI0sKeiprdj0mcmN1KX1wcGlkVldL ei1kelRgLThUXyM+U2pvZl9XPD8zRiRvTkYyKWdRUDEqUUwwJFp5T1dwXzs3KzJWCnprWmtqcndf cThqIUpzYW5iMG0yRjM1Y1h0JitsQ3d6eT88Tj1iYFQlZHJZI3cjZWNnQFBOWE9fKTRTTk1zVyNX bQp6clZiK3V7eCVmcVpgV2UlSmxmc25nWChZaCNeaVVKdE0hWWZMZ0Z1bFNCSmdkVWpBYUZrfEwh aU1XWnc8PEMqN3cKek07NnZtfDlrTFA8Mm19Nl47ZyFqMGdlP0FxJkhvaWg5VFVZKnV1QDcmc0d9 NmcxTTVHWk1Ge2JlXkAkMCoySkd6Cno0fFZTRihRaURSbj1NMChkYmBON3E7aHRzUl9SdkdBYm4y SGVwJjR0cGpFOUpEKSpZWmM9PUNrVTI2bzNCb150Ygp6PW81T3k8KV5VTU9pe2ljTkctMnBOWTVp eyYqaW5KKHluSDlGLXdaZWAtTiZRVHBKTGlOKyNUfCZCQ3xZPCUoRX4KejVoNUFaYil+ZUE/eXx7 UWkoMG5IS2g2RzBjfTJxa1AwPy1zPmc2S2Jvcy18NEtRYn5HI2t8b3F6fTMkNkJiXntFCnpSZGFy bG1UQll9KCYpWmRfdztOXzwtVnh6dVR1Nj5hZipmQmNVaEBaIUE/dSZwRyZVZmYrejFKckcjdTts WVNiPgp6K3Y/aVN7fTVwK3BWPzxNbzA7V2BsUDdWP0l1KGdxS31mdnY8X3pEVk5WcT1hSUNSY1BY TGtCJXoqQ1I9PzZSNTsKeiFCQkhOclJwTz0oZWNIPVNiNShMaXJ1Y2VjMldxNnRVKEl8Ril1Jksk JWVYSHRJP3JKblN5KjRHeWpiNzZBRkprCnpnbXdSY3hVam87cUY1fT9BM3x+cXwya1hqWkBzTEBO MzBDej4/YkZCSWlWaypzZn5BRUBEO1p8V3slMCFiKGBsZgp6JlU0PD9ENF48LW1oVnV6PTBqQ25H UHd9Xm4hRzlhPHJBdUh6d2toeWtseyNmYUhLWEhOcXBRMmclP2tlVlNNU3cKej4lLXp+PH1DZktz M3h+Y3ZlSFpaYT1YUUkrdWZRVXZxbWs4PGgjOVMyZktAQ0p6cmIyUSNUYHZfa0smcjVGUEF5Cnpw d0ZDPTYqZ1lCcmpVbXslI2BAYFIlaT08Y1MpOS0oPXRzSkVkV25uQWlNLXhgWCpDKlIxZTByPEcw PXZKI3Q1dwp6U1c1OW9TfjBjIWlHdD5gUFRxKzBSPy0pfGtDIUw+eko2NGxoQzdMNzwlKGE1ekRS SHhiSTlBS3pjbiQ8VWRNVnEKejduVVAhQEkkenVVeCtrdEtTXkUlRUFtO0oqQjwzRHt8UEA8cDMh WEFwST9IOGp9NUNEQ3Nab1JBZkdQQF9JR1YrCnpzP2ZhMExLJm5jSUpDXih4dDx0cXsmcW9kbSFx OCpLRF9AcHF8UyRHTWI/WUZlbihPRm4qUEJUcW5pNVdsYGY2UAp6bWxrO1FTUW5xSHB2fiNMR3RQ QygqUmRmSUktXypqVEcoVTczVDgrT2Ywe289KU0lS1IzPUM2ayhTPFI7Q3NRTDcKejNUQnVVM1NZ SEZUVWFMIzl1PiR7d1B+fk1oKW9AViQjMXREO1k8SFAmLTBKNntJSFlCbkhPYmVhJTg3e2BiUkBz Cno9TEwjPUZkRWdGenFpJGZAMXs4MmxPPF9oQzYmYTRHcDFxTl9LUmclK1hAN048S2VEdXczY3FN U1dteDFqQD9GUgp6UFk/dlMmSkBWWT1Aa208enVzcXVSPUB+MyhjJmJMUVkyYSR1TFJ2PW8rZ0w5 TGhjZVpHMH5pOXloZ0ZheH1YfnsKellUPzZGO0g1KnpNczdQU3YzOCNyTSN4ZHI4elZoMj0tREpK SjB3M0BAUHAwLVZ6ankkXmd5KlhgbWNLQEZuQFdBCnpqME1NdzBheEdkeWtGbm1afHwjKjRJPz5y UUpsaEJjaUh6K29wYXlSa2JoWF9AUXJZfHFNcVRtY3hFKHpMT1RrSgp6ZGhjO2pjeHQyVy1uZjY3 ZDxxQEVXQjVEcUJ2Q1Q1Wm9AM3ZgfW0tZnh9SldBcSMoMjRfKyh7ZD00ZFAjSSsqP2wKelc9PG9f TD9+LUJ7cXFJaGZMdi10eGp1YkFRfX47fm1rS010aDN2PEJUQD5zYCUtXmA0QVhqU2dxakJ1YWxz dFo8CnpMUTl9UHM/dCZMYHlocUh8RDlJSztLNlpAPjJ2Iy12XihqYDdtayVrJkpJMGp3R05fdjh7 X010P29mQk1adiojVQp6UnQrP05DKjhxclV0ODtiQXtTWjI/bncyaD5FTiFmV1RARHdfZSRudmR9 I3NgKzYydlNNc01BeDJycUxzPm1OfkYKelJRe2dMcWUpbmFIUzxFUnI/V2xsLXd7dnllTSh3O1A8 M1IhfEp8XlVnT2RpR2daeHFHUyROWSZfcDRifUNtMDNaCnp7ZDBLPF45cjslbSN4fi1DWmtpViNy TEA7dnMkXmNxVSZxd2dZT21vcSQ1Zi1hQVIwfXdWVis9UkQ0MFNQWk8yYwp6MWdZJWJwPmtUS0w+ WDYqaSVFdXhoOHBObTdMSGNiajt4OXMkMmBQYHZXZSFPKGImJFVVRUxMNEdPTnghNmUjXjgKenZF aU4zbU1ONHJzbj1ubFE5ZzFRcUsjZEQ/bTRYaCVrZWtxKFJXUTxHMHx8Qz4tNXJNTThOZkBFSGZK Klc3cT91Cnplb1U5TlMwSX5NbEpzNDRJJGo3LVVmeyV+X3dXZ3oyMzV5Rz1rQEhXY2w7VEVhNypE MCM7VCV6em5qSXViS1M9OAp6JlMoX1ViP3J5ZmQhaGNSV1cpKSkmbyhZUmFNYklPd2teR0JRYGA+ OD8kdHB0RVlCRTlGUlFGcl8xOTF0d1l+MzIKemp2XyFzSHJ+Q3pPeFJ4NFc8b35tJiU7dHxhdWs7 NmJ9TWxuUFd8UG8hZzhuNmhwQnNfcEJyalJsY00ycFo9QjhWCnpDK3RlQFJQeCQ9X3g7OXQtWF9h ZmZjNm52Xk9VKXkoZCRPOW0tK21NcWg9ckRgZlMlUGhWayltUyZnfDN1Zz5kSwp6bUBgbkVWQ0ct ZT8mblVkOVhUP2J5SDhLYXwyY2lUQiVYbz9EUigpTSRUV35vX2V3PW1OSEA/cW1DNE8zTFJsazUK eiU7VE5nRiY4SyZtdTZWMCZTSlJoR3I3PWBDMXZkNTZZc2RzckpJLUcoeGJOWSohPlc+RW1oVDA+ MHJpT0BONmU8CnpJR15MJE5iI3FsejZIQyppbUxTe3Y/cUMhRUElaE8xO3VvJWUxJThSekFVbVl5 JTl+SWNqIXFTN2VyOGZkcWtqZwp6PzFnTj5Xb0hEVkxzMyFlaiN5bU4hbFJMaVJudE9KXllmbDQ7 TUhBbm1yT1RhK2MpKFJxYDljdjUjRW95ZXpOZjAKekNyUG50dXBfRXdgJEtrWEtlMDNJPHRaYFND PT4zbDN5bTF1IWp7SUIkYW5OKVVNaFNQQWppSjN5M1g1d2ZHJnY8CnpJWTVpeDZVJiNqLWpxMyop YD1kWT8wNysoeVJ5KD41SWRYaW9vXjk4OClOPjJacmx7ZGEpJDMtRVhqO2RsO0tBdQp6aSh4T2xF RHlhSClaRFNteSFgIypVJFJMQU94d2txWE1FQEhZbmZQKHFtQjsySU95aEElZkxrUjJleSp4UXE5 YnAKelRwVykkVDNpXkh5WlkrY0NCT2FwMGtDZyQwPyg1WkYqckFfKTNHKHhAZm1yfmV4e3Qqb3sy RTNyUztRZVJpdXN7Cnpoe3d6Q1BMZUR2REE1QkFCJnpNJHduQ3Z9MUt2VUw9aEdpUXtZZlg8b3Im VnRgI0dlendPd08ocD1eRk1PP3pySwp6VGItdlRLO1ozcXk/aEY2RkN3MEtnVSRQfHc4fitKdVZL I1g+ZE13Sm5UX1dzITcjcFNtSmUkcVVvbmhGdWk3Z2oKemVgUFZFTk8oR1VufDdvXipHejtUak59 TG40U3BlKXd8dzFUVFVUIVdfMDtgVHQ+NWN3ZzJPNF8jWUojIXZrUD00CnpLSTtyfmZhOzw+JDtA UFBwYSsqQGBTdExFeFh3VXc+Unl4VjAyejkxTEVMST0mdiU7OXlfR2lHNTlJPSprRlIxawp6WU1Z UGpRcjVQWF5hQF5MJDAjbDM4Vyo9NkYtP1J8eT47eV9DPG8pYGBPPXJLc2Zzb2Q7flYyK2hvYTkt Z3Vqe2UKeiUkQTR4YFdOfT1YO2hKPGlBeXpTNj4mUn5mQVhHTSE1dnY2OX1eLU80Yik5Tk1gdlNe PFFZOXl3YnNyVHhNMFpSCnpsbkR9X1QoZj0lPE04cE9zJld3aUN8aVhRSVhTJFM8RE8tbERKZ3I+ dmI1QmxxM2AqLU0kIUcwVDFVOzV0a1R0JQp6TSFSOE5mQ2MmUGVIOVlyVSs1MVF4PUVVfSQmPmJu Iz1rZylzWEA3fmgoIW48SDBXTns0TlYyQG9QQS1GI01AOz8KejhhdjxXJCh3eUtETz1+RCtMdjVs IU80THEpOHVyQUszPVlIVjBhPnhYTGNCR1I2JTg0UGkzensodnMpPWd5Yk13Cno7fT4pWEN2SDw5 a2o5YipRb05CazAoLXJGX0lpSTZyYUpydjt5Tj9oYXE+RngmNlc0I3dqQkpMRnh4YHMtaUNQLQp6 QUApVzBGSyR9dj5FQipQeTZIQXlYPjZxcz9qQH5Yb05UaTl7VjNjcDZOSXMzMiZ0Uzs3UVRyMCko VHkpWkFAbVQKenV+MHsxKy1KfEJGSjttVHtQbFZZciRMa19PRzc4VGd+TkchXjZCMjswTkw3PGx4 PlZ7JTVtbE5lVDg9VVUoflNECnptYTR2cXUoNX5ack5zKjRaKCFxQ0pTb3Q9aDYkbzB2em94c1hQ OSsqb0wtUDM2M2NNKDtKTXNtKjljRDhpOU9Wegp6Z3xMS0RXQk5qb3tXMFJNVEJuaWVqPUY9TUBl fEMlJGNIZHxyQk5DRzVjaUlsRCtId19rMldeciNWMWc/Kz4rZUYKek9UPUU/dEJKVVBMI2YhRWVC fFg1dGl8VC0mQzt1Q2JwJW1TKFppYGAybWNwS1N5VXspPSV2YWA1YzZ+ai1edXh6CnpTP1A5UXlx dX56WTRYKTFkYHg3bmNecXZnQVl5eCRgckZgUF59ZGtuSXlEbWxzPlIhIUJUYn1Gc0EqemxBJkdx ewp6LWoqbk94RW5jRyZoQCVOKT9xQ0hZdShYUGhZS1RHT1BiNXg0TiRZRTlXJXk9YlpYQzVHfFkr VT9qcn55QkdSU24Kemt9X153X05rT197KDJUOFMrRGZhQSUldFBweFFCVWY0TDtKWC05MlRrZGFG UlZUNXgoWFlHbWQpRlowaCNPN2RFCnpwfHBGX0N+P3MrZ3dZPmBKWUVsR09FcFBPTjE2I093MWt2 TUUhfTNvWDVTR1IkMW15UkdlSEZZV3ltbnAxYFRnZwp6M0JodS0kYmAqO0lFTkoqN1NufEtlSDJT Xi1eVDZeOS1TT1k/X0pAd3BOVT9II1VxJlItKFU3RFBkIWV8ZEEhMCYKeiZMNFcoVyptTkFPZm1w Y2h6LW8/JkdHcnh1emlgOE9OPEloYCladz9KP1YzeSsqNihVNkQhTCNYQipWQyVJWGVZCnpwN19N JXt1KUVpWUA3Z15HPTEyNlh9MVlmUi0+LXQjNTI1IU1tYlU0dV9NRURncG5lfTtSNkIkPVk/Yiok NF9eSwp6P2JuYWcpen1kJGtRNTM7YD5CNGRxSikwYyFNI1h7YiVIJWJyNFp3djUwVmdDKzs/bEUm SGJmLUFpYUB+VTRiOT4KeiVKSkZRRVBpYjEybGwleSkqN2VeelhuOEY4JThuKD4rdG1yWDc0WiNB WT1UfTkhXyEoYjtMY2hEYTRRIWw8cmBMCnpUdlJSXjlLPG4rcDc8NFJkeipQcnd1PlRgWTM4em9G X0FmTlBucFh+QjhoKjNFTlIrb0omdFlhKllKTSRaSE16dwp6ZWA5ZCFzTjtfcHEhRXE7KDQ4RWBy cXs3USZJRUF9MCsmM01BNEI8SSFna1YjS2hLWD5NbWdvfiZQTiRmOGs9NyMKekolUVFpPlJBPnwp U01hK15DM01Gc3tEUyYldk5gQmlOXmZyaHBiZGZEMmk8OTBtcWlVKnxGdT0xfXUycDw7YipGCnp5 T2NYbGpjZy0lcn5IS1ZkOHp1bSVNdyVTZEY7PmlpSVFXcD1SMitYTUx5dEFpUEcyKCEoKkw7dmlJ MWNVUzgjTAp6XmF3UGclJjdVNjtnPDU0bCtqKEwjN0hyT1RmblotYD0jO35QdyF4bj9ZSytpRGBP KWRUYVpvQHhuRzR1KFJ6M2AKek4rfEBVbWRLNylySEBRZHFIcT9LPklQZCk7eihZeHpoaGY7SWZf R1Y3ZTdgMVIxXzNDa3xVbVRFXlpyYmdgYHBoCnomRnlLUmM9cDAhb3BuQTJOZFoyYShlVXZFKTtK WC1WIUBeT0wrfSZxejlENU1lT2BeNGwjdm02R2p1c05jfmVfeAp6NnorPCYxdkNRUyFYeXxWJHxw P3R0fmBpIVVAfk16XmR6UV56KVE5ZnZkZUN+MnFWLWtUXkhOeEpNWWgzaEhWQEsKeipQQnI0YHpL VlRWTVR9Z1FrVjB8RkkraV5IQDEoPV9BWiRwMUp3a3NVfGdmcFJDQj5gbzB7JE83fCVWJiZfaFM5 CnpKMyhoSWBBfEQ0NzJabGFgeTNXfiVMZnBDX3FKZClVTigmZStxZDZiOCZYfj0qfjFTd3UmdjlJ VGZ+RElTMkFecgp6MVdub3U7VHkrQkxPMUN0P24xaEBXTHRrVGsxQHVoWHA2TCpUOWJ3RjJGcldU XyNvNXZ1bFp7ei10K1FtSGRtIysKeiQwOWlTJn1BZ3deczB+S1VJfT9mJVRqX0ttPHt+b2F7bHU/ bmE5WUtxMkVhRyQ3bFJwMVNWZk4+aktyelY5MnwoCno9WCQ1USk0QWgmPyVzOXxmPXl6dGpOalAh akh0NC1sdUVORmRJb0M2QS1kdClNYU5+JFRveiMmOWVWUkUjck53agp6QlpAMFZRa144dFpOLUZ8 TDw8fD4/Ti1qX0defjNTJlUpQXpNMzdmNkUpZytGbzwkaiFCQWBxNjVFXmxSOGYqRioKekBAYilL d2thdjBWRm15MVVrQ2hOPWhEK0FUSiZkZjwmbyZvKWV9VytWR1JyVUpILXIwYUsoY2wwO256WXZA TWs0Cnowa0AtZ2Q8Pi1raklHYVZ7UWRTXkUjYiV+NSN0UkE9N0BBYHVYfUBUNE5NQ3RgO2BkWERY MnlfMlIjNXwwNDNzdAp6ZGs2Myo8ZHwwP3lmK00xZTBuUTNYTlN4Q0BBUGlvJUtQISpeOFBsfWJs Rj82eGhZKVVmQTkwZWpTVT9fM3p4X1QKejdLPGtRPDFtbkZLfUU1dFN8fCNpe0c8ZDg2YyNqd1VW dml+Zk00VmVGeSlQPj8oNmpiKjghO1NYJVJJckN8RU0wCmo8Q2xLfnVsb0E+P3BgQXZROEt4K2hC QFJRZlBiJlY8LXwldl4/bTtyWUdqYVQKCmRpZmYgLS1naXQgYS9kb2NzL2VuX1VTL3NlcnZlcl9k aWFsb2cucnN0IGIvZG9jcy9lbl9VUy9zZXJ2ZXJfZGlhbG9nLnJzdAppbmRleCAyNGE3MjZiLi5i MTE1OWM1IDEwMDY0NAotLS0gYS9kb2NzL2VuX1VTL3NlcnZlcl9kaWFsb2cucnN0CisrKyBiL2Rv Y3MvZW5fVVMvc2VydmVyX2RpYWxvZy5yc3QKQEAgLTMyLDYgKzMyLDcgQEAgVXNlIHRoZSBmaWVs ZHMgaW4gdGhlICpDb25uZWN0aW9uKiB0YWIgdG8gY29uZmlndXJlIGEgY29ubmVjdGlvbjoKICog VXNlIHRoZSAqUGFzc3dvcmQqIGZpZWxkIHRvIHByb3ZpZGUgYSBwYXNzd29yZCB0aGF0IHdpbGwg YmUgc3VwcGxpZWQgd2hlbiBhdXRoZW50aWNhdGluZyB3aXRoIHRoZSBzZXJ2ZXIuCiAqIENoZWNr IHRoZSBib3ggbmV4dCB0byAqU2F2ZSBwYXNzd29yZD8qIHRvIGluc3RydWN0IHBnQWRtaW4gdG8g c2F2ZSB0aGUgcGFzc3dvcmQgZm9yIGZ1dHVyZSB1c2UuCiAqIFVzZSB0aGUgKlJvbGUqIGZpZWxk IHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgYSByb2xlIHRoYXQgaGFzIHByaXZpbGVnZXMgdGhhdCB3 aWxsIGJlIGNvbnZleWVkIHRvIHRoZSBjbGllbnQgYWZ0ZXIgYXV0aGVudGljYXRpb24gd2l0aCB0 aGUgc2VydmVyLiBUaGlzIHNlbGVjdGlvbiBhbGxvd3MgeW91IHRvIGNvbm5lY3QgYXMgb25lIHJv bGUsIGFuZCB0aGVuIGFzc3VtZSB0aGUgcGVybWlzc2lvbnMgb2YgdGhpcyBzcGVjaWZpZWQgcm9s ZSBhZnRlciB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4gTm90ZSB0aGF0IHRoZSBjb25u ZWN0aW5nIHJvbGUgbXVzdCBiZSBhIG1lbWJlciBvZiB0aGUgcm9sZSBzcGVjaWZpZWQuCisqIFVz ZSB0aGUgKlNlcnZpY2UqIGZpZWxkIHRvIHNwZWNpZnkgdGhlIHNlcnZpY2UgbmFtZS4gRm9yIG1v cmUgaW5mb3JtYXRpb24sIHNlZSBgU2VjdGlvbiAzMy4xNiBvZiB0aGUgUG9zdGdyZXMgZG9jdW1l bnRhdGlvbiA8aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvZG9jcy8xMC9zdGF0aWMvbGlicHEt cGdzZXJ2aWNlLmh0bWw+YF8uCiAKIENsaWNrIHRoZSAqU1NMKiB0YWIgdG8gY29udGludWUuCiAK ZGlmZiAtLWdpdCBhL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zLzUwYWFkNjhmOTljMl8ucHkgYi93 ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy81MGFhZDY4Zjk5YzJfLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjRjZGE1NmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvbWlncmF0 aW9ucy92ZXJzaW9ucy81MGFhZDY4Zjk5YzJfLnB5CkBAIC0wLDAgKzEsODIgQEAKKworIiIiQWRk ZWQgc2VydmljZSBmaWVsZCBvcHRpb24gaW4gc2VydmVyIHRhYmxlIChSTSMzMTQwKQorCitSZXZp c2lvbiBJRDogNTBhYWQ2OGY5OWMyCitSZXZpc2VzOiAwMmI5ZGNjZGNmY2IKK0NyZWF0ZSBEYXRl OiAyMDE4LTAzLTA3IDExOjUzOjU3LjU4NDI4MAorCisiIiIKK2Zyb20gcGdhZG1pbi5tb2RlbCBp bXBvcnQgZGIKKworCisjIHJldmlzaW9uIGlkZW50aWZpZXJzLCB1c2VkIGJ5IEFsZW1iaWMuCity ZXZpc2lvbiA9ICc1MGFhZDY4Zjk5YzInCitkb3duX3JldmlzaW9uID0gJzAyYjlkY2NkY2ZjYicK K2JyYW5jaF9sYWJlbHMgPSBOb25lCitkZXBlbmRzX29uID0gTm9uZQorCisKK2RlZiB1cGdyYWRl KCk6CisgICAgICAgICMgVG8gU2F2ZSBwcmV2aW91cyBkYXRhCisgICAgICAgIGRiLmVuZ2luZS5l eGVjdXRlKCJBTFRFUiBUQUJMRSBzZXJ2ZXIgUkVOQU1FIFRPIHNlcnZlcl9vbGQiKQorCisgICAg ICAgICMgV2l0aCBzZXJ2aWNlIGZpbGUgc29tZSBmaWVsZHMgd29uJ3QgYmUgbWFuZGF0b3J5IGFz IHVzZXIgY2FuIHByb3ZpZGUKKyAgICAgICAgIyB0aGVtIHVzaW5nIHNlcnZpY2UgZmlsZS4gUmVt b3ZlZCBOT1QgTlVMTCBjb25zdHJhaW50IGZyb20gZmV3IGNvbHVtbnMKKyAgICAgICAgZGIuZW5n aW5lLmV4ZWN1dGUoIiIiCisgICAgICAgICAgICBDUkVBVEUgVEFCTEUgc2VydmVyICgKKyAgICAg ICAgICAgICAgICBpZAlJTlRFR0VSIE5PVCBOVUxMLAorICAgICAgICAgICAgICAgIHVzZXJfaWQJ SU5URUdFUiBOT1QgTlVMTCwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJncm91cF9pZAlJTlRFR0VS IE5PVCBOVUxMLAorICAgICAgICAgICAgICAgIG5hbWUJVkFSQ0hBUigxMjgpIE5PVCBOVUxMLAor ICAgICAgICAgICAgICAgIGhvc3QJVkFSQ0hBUigxMjgpLAorICAgICAgICAgICAgICAgIHBvcnQJ SU5URUdFUiBOT1QgTlVMTCBDSEVDSyhwb3J0ID49IDEwMjQgQU5EIHBvcnQgPD0gNjU1MzQpLAor ICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlX2RiCVZBUkNIQVIoNjQpLAorICAgICAgICAgICAg ICAgIHVzZXJuYW1lCVZBUkNIQVIoNjQpIE5PVCBOVUxMLAorICAgICAgICAgICAgICAgIHBhc3N3 b3JkCVZBUkNIQVIoNjQpLAorICAgICAgICAgICAgICAgIHJvbGUJVkFSQ0hBUig2NCksCisgICAg ICAgICAgICAgICAgc3NsX21vZGUJVkFSQ0hBUigxNikgTk9UIE5VTEwgQ0hFQ0soc3NsX21vZGUg SU4KKyAgICAgICAgICAgICAgICAgICAgKCAnYWxsb3cnICwgJ3ByZWZlcicgLCAncmVxdWlyZScg LCAnZGlzYWJsZScgLAorICAgICAgICAgICAgICAgICAgICAgICd2ZXJpZnktY2EnICwgJ3Zlcmlm eS1mdWxsJyApCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBjb21tZW50CVZB UkNIQVIoMTAyNCksCisgICAgICAgICAgICAgICAgZGlzY292ZXJ5X2lkCVZBUkNIQVIoMTI4KSwK KyAgICAgICAgICAgICAgICBob3N0YWRkcglURVhUKDEwMjQpLAorICAgICAgICAgICAgICAgIGRi X3JlcwlURVhULAorICAgICAgICAgICAgICAgIHBhc3NmaWxlCVRFWFQsCisgICAgICAgICAgICAg ICAgc3NsY2VydAlURVhULAorICAgICAgICAgICAgICAgIHNzbGtleQlURVhULAorICAgICAgICAg ICAgICAgIHNzbHJvb3RjZXJ0CVRFWFQsCisgICAgICAgICAgICAgICAgc3NsY3JsCVRFWFQsCisg ICAgICAgICAgICAgICAgc3NsY29tcHJlc3Npb24JSU5URUdFUiBERUZBVUxUIDAsCisgICAgICAg ICAgICAgICAgYmdjb2xvciBURVhUKDEwKSwKKyAgICAgICAgICAgICAgICBmZ2NvbG9yIFRFWFQo MTApLAorICAgICAgICAgICAgICAgIFBSSU1BUlkgS0VZKGlkKSwKKyAgICAgICAgICAgICAgICBG T1JFSUdOIEtFWSh1c2VyX2lkKSBSRUZFUkVOQ0VTIHVzZXIoaWQpLAorICAgICAgICAgICAgICAg IEZPUkVJR04gS0VZKHNlcnZlcmdyb3VwX2lkKSBSRUZFUkVOQ0VTIHNlcnZlcmdyb3VwKGlkKQor ICAgICAgICAgICAgKQorICAgICAgICAiIiIpCisKKyAgICAgICAgIyBDb3B5IG9sZCBkYXRhIGFn YWluIGludG8gdGFibGUKKyAgICAgICAgZGIuZW5naW5lLmV4ZWN1dGUoIiIiCisgICAgICAgIElO U0VSVCBJTlRPIHNlcnZlciAoCisgICAgICAgICAgICBpZCx1c2VyX2lkLCBzZXJ2ZXJncm91cF9p ZCwgbmFtZSwgaG9zdCwgcG9ydCwgbWFpbnRlbmFuY2VfZGIsCisgICAgICAgICAgICB1c2VybmFt ZSwgc3NsX21vZGUsIGNvbW1lbnQsIHBhc3N3b3JkLCByb2xlLCBkaXNjb3ZlcnlfaWQsCisgICAg ICAgICAgICBob3N0YWRkciwgZGJfcmVzLCBwYXNzZmlsZSwgc3NsY2VydCwgc3Nsa2V5LCBzc2xy b290Y2VydCwgc3NsY3JsLAorICAgICAgICAgICAgYmdjb2xvciwgZmdjb2xvcgorICAgICAgICAp IFNFTEVDVAorICAgICAgICAgICAgaWQsdXNlcl9pZCwgc2VydmVyZ3JvdXBfaWQsIG5hbWUsIGhv c3QsIHBvcnQsIG1haW50ZW5hbmNlX2RiLAorICAgICAgICAgICAgdXNlcm5hbWUsIHNzbF9tb2Rl LCBjb21tZW50LCBwYXNzd29yZCwgcm9sZSwgZGlzY292ZXJ5X2lkLAorICAgICAgICAgICAgaG9z dGFkZHIsIGRiX3JlcywgcGFzc2ZpbGUsIHNzbGNlcnQsIHNzbGtleSwgc3Nscm9vdGNlcnQsIHNz bGNybCwKKyAgICAgICAgICAgIGJnY29sb3IsIGZnY29sb3IKKyAgICAgICAgRlJPTSBzZXJ2ZXJf b2xkIiIiKQorCisgICAgICAgICMgUmVtb3ZlIG9sZCBkYXRhCisgICAgICAgIGRiLmVuZ2luZS5l eGVjdXRlKCJEUk9QIFRBQkxFIHNlcnZlcl9vbGQiKQorCisgICAgICAgICMgQWRkIGNvbHVtbiBm b3IgU2VydmljZQorICAgICAgICBkYi5lbmdpbmUuZXhlY3V0ZSgKKyAgICAgICAgICAgICdBTFRF UiBUQUJMRSBzZXJ2ZXIgQUREIENPTFVNTiBzZXJ2aWNlIFRFWFQnCisgICAgICAgICkKKworZGVm IGRvd25ncmFkZSgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvX19pbml0X18ucHkKaW5kZXggZGZhOWQ2Mi4uZmVjYjY2ZCAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvX19p bml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv X19pbml0X18ucHkKQEAgLTQ3OCw3ICs0NzgsOCBAQCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGRO b2RlVmlldyk6CiAgICAgICAgICAgICAnc3NsY3JsJzogJ3NzbGNybCcsCiAgICAgICAgICAgICAn c3NsY29tcHJlc3Npb24nOiAnc3NsY29tcHJlc3Npb24nLAogICAgICAgICAgICAgJ2JnY29sb3In OiAnYmdjb2xvcicsCi0gICAgICAgICAgICAnZmdjb2xvcic6ICdmZ2NvbG9yJworICAgICAgICAg ICAgJ2ZnY29sb3InOiAnZmdjb2xvcicsCisgICAgICAgICAgICAnc2VydmljZSc6ICdzZXJ2aWNl JwogICAgICAgICB9CiAKICAgICAgICAgZGlzcF9sYmwgPSB7CkBAIC01MTUsNyArNTE2LDcgQEAg Y2xhc3MgU2VydmVyTm9kZShQR0NoaWxkTm9kZVZpZXcpOgogICAgICAgICBpZiBjb25uZWN0ZWQ6 CiAgICAgICAgICAgICBmb3IgYXJnIGluICgKICAgICAgICAgICAgICAgICAgICAgJ2hvc3QnLCAn aG9zdGFkZHInLCAncG9ydCcsICdkYicsICd1c2VybmFtZScsICdzc2xtb2RlJywKLSAgICAgICAg ICAgICAgICAgICAgJ3JvbGUnCisgICAgICAgICAgICAgICAgICAgICdyb2xlJywgJ3NlcnZpY2Un CiAgICAgICAgICAgICApOgogICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBkYXRhOgogICAgICAg ICAgICAgICAgICAgICByZXR1cm4gZm9yYmlkZGVuKApAQCAtNjYzLDcgKzY2NCw4IEBAIGNsYXNz IFNlcnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAnc3Nscm9vdGNl cnQnOiBzZXJ2ZXIuc3Nscm9vdGNlcnQgaWYgaXNfc3NsIGVsc2UgTm9uZSwKICAgICAgICAgICAg ICAgICAnc3NsY3JsJzogc2VydmVyLnNzbGNybCBpZiBpc19zc2wgZWxzZSBOb25lLAogICAgICAg ICAgICAgICAgICdzc2xjb21wcmVzc2lvbic6IFRydWUgaWYgaXNfc3NsIGFuZCBzZXJ2ZXIuc3Ns Y29tcHJlc3Npb24KLSAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCisgICAgICAgICAgICAgICAg ZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICAnc2VydmljZSc6IHNlcnZlci5zZXJ2aWNlIGlm IHNlcnZlci5zZXJ2aWNlIGVsc2UgTm9uZQogICAgICAgICAgICAgfQogICAgICAgICApCiAKQEAg LTY3MiwxOCArNjc0LDIyIEBAIGNsYXNzIFNlcnZlck5vZGUoUEdDaGlsZE5vZGVWaWV3KToKICAg ICAgICAgIiIiQWRkIGEgc2VydmVyIG5vZGUgdG8gdGhlIHNldHRpbmdzIGRhdGFiYXNlIiIiCiAg ICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCiAgICAgICAgICAgICB1J25hbWUnLAotICAgICAgICAg ICAgdSdob3N0JywKICAgICAgICAgICAgIHUncG9ydCcsCi0gICAgICAgICAgICB1J2RiJywKLSAg ICAgICAgICAgIHUndXNlcm5hbWUnLAogICAgICAgICAgICAgdSdzc2xtb2RlJywKLSAgICAgICAg ICAgIHUncm9sZScKKyAgICAgICAgICAgIHUndXNlcm5hbWUnCiAgICAgICAgIF0KIAogICAgICAg ICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMoCiAg ICAgICAgICAgICByZXF1ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcKICAgICAgICAgKQogCisg ICAgICAgICMgU29tZSBmaWVsZHMgY2FuIGJlIHByb3ZpZGVkIHdpdGggc2VydmljZSBmaWxlIHNv IHRoZXkgYXJlIG9wdGlvbmFsCisgICAgICAgIGlmICdzZXJ2aWNlJyBpbiBkYXRhIGFuZCBub3Qg ZGF0YVsnc2VydmljZSddOgorICAgICAgICAgICAgcmVxdWlyZWRfYXJncy5leHRlbmQoWworICAg ICAgICAgICAgICAgIHUnaG9zdCcsCisgICAgICAgICAgICAgICAgdSdkYicsCisgICAgICAgICAg ICAgICAgdSdyb2xlJworICAgICAgICAgICAgXSkKICAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJl ZF9hcmdzOgogICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBkYXRhOgogICAgICAgICAgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCkBAIC03MTEsMjkgKzcxNywyNiBAQCBjbGFzcyBT ZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNl cnZlciA9IFNlcnZlcigKICAgICAgICAgICAgICAgICB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZCwK LSAgICAgICAgICAgICAgICBzZXJ2ZXJncm91cF9pZD1kYXRhW3UnZ2lkJ10gaWYgdSdnaWQnIGlu IGRhdGEgZWxzZSBnaWQsCi0gICAgICAgICAgICAgICAgbmFtZT1kYXRhW3UnbmFtZSddLAotICAg ICAgICAgICAgICAgIGhvc3Q9ZGF0YVt1J2hvc3QnXSwKLSAgICAgICAgICAgICAgICBob3N0YWRk cj1kYXRhW3UnaG9zdGFkZHInXSBpZiB1J2hvc3RhZGRyJyBpbiBkYXRhIGVsc2UgTm9uZSwKLSAg ICAgICAgICAgICAgICBwb3J0PWRhdGFbdSdwb3J0J10sCi0gICAgICAgICAgICAgICAgbWFpbnRl bmFuY2VfZGI9ZGF0YVt1J2RiJ10sCi0gICAgICAgICAgICAgICAgdXNlcm5hbWU9ZGF0YVt1J3Vz ZXJuYW1lJ10sCi0gICAgICAgICAgICAgICAgc3NsX21vZGU9ZGF0YVt1J3NzbG1vZGUnXSwKLSAg ICAgICAgICAgICAgICBjb21tZW50PWRhdGFbdSdjb21tZW50J10gaWYgdSdjb21tZW50JyBpbiBk YXRhIGVsc2UgTm9uZSwKLSAgICAgICAgICAgICAgICByb2xlPWRhdGFbdSdyb2xlJ10gaWYgdSdy b2xlJyBpbiBkYXRhIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICBzZXJ2ZXJncm91cF9pZD1k YXRhLmdldCgnZ2lkJywgZ2lkKSwKKyAgICAgICAgICAgICAgICBuYW1lPWRhdGEuZ2V0KCduYW1l JyksCisgICAgICAgICAgICAgICAgaG9zdD1kYXRhLmdldCgnaG9zdCcsIE5vbmUpLAorICAgICAg ICAgICAgICAgIGhvc3RhZGRyPWRhdGEuZ2V0KCdob3N0YWRkcicsIE5vbmUpLAorICAgICAgICAg ICAgICAgIHBvcnQ9ZGF0YS5nZXQoJ3BvcnQnKSwKKyAgICAgICAgICAgICAgICBtYWludGVuYW5j ZV9kYj1kYXRhLmdldCgnZGInLCBOb25lKSwKKyAgICAgICAgICAgICAgICB1c2VybmFtZT1kYXRh LmdldCgndXNlcm5hbWUnKSwKKyAgICAgICAgICAgICAgICBzc2xfbW9kZT1kYXRhLmdldCgnc3Ns bW9kZScpLAorICAgICAgICAgICAgICAgIGNvbW1lbnQ9ZGF0YS5nZXQoJ2NvbW1lbnQnLCBOb25l KSwKKyAgICAgICAgICAgICAgICByb2xlPWRhdGEuZ2V0KCdyb2xlJywgTm9uZSksCiAgICAgICAg ICAgICAgICAgZGJfcmVzPScsJy5qb2luKGRhdGFbdSdkYl9yZXMnXSkKLSAgICAgICAgICAgICAg ICBpZiB1J2RiX3JlcycgaW4gZGF0YQotICAgICAgICAgICAgICAgIGVsc2UgTm9uZSwKLSAgICAg ICAgICAgICAgICBzc2xjZXJ0PWRhdGFbJ3NzbGNlcnQnXSBpZiBpc19zc2wgZWxzZSBOb25lLAot ICAgICAgICAgICAgICAgIHNzbGtleT1kYXRhWydzc2xrZXknXSBpZiBpc19zc2wgZWxzZSBOb25l LAotICAgICAgICAgICAgICAgIHNzbHJvb3RjZXJ0PWRhdGFbJ3NzbHJvb3RjZXJ0J10gaWYgaXNf c3NsIGVsc2UgTm9uZSwKLSAgICAgICAgICAgICAgICBzc2xjcmw9ZGF0YVsnc3NsY3JsJ10gaWYg aXNfc3NsIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICAgICBpZiB1J2RiX3JlcycgaW4gZGF0YSBl bHNlIE5vbmUsCisgICAgICAgICAgICAgICAgc3NsY2VydD1kYXRhLmdldCgnc3NsY2VydCcsIE5v bmUpLAorICAgICAgICAgICAgICAgIHNzbGtleT1kYXRhLmdldCgnc3Nsa2V5JywgTm9uZSksCisg ICAgICAgICAgICAgICAgc3Nscm9vdGNlcnQ9ZGF0YS5nZXQoJ3NzbHJvb3RjZXJ0JywgTm9uZSks CisgICAgICAgICAgICAgICAgc3NsY3JsPWRhdGEuZ2V0KCdzc2xjcmwnLCBOb25lKSwKICAgICAg ICAgICAgICAgICBzc2xjb21wcmVzc2lvbj0xIGlmIGlzX3NzbCBhbmQgZGF0YVsnc3NsY29tcHJl c3Npb24nXSBlbHNlIDAsCi0gICAgICAgICAgICAgICAgYmdjb2xvcj1kYXRhWydiZ2NvbG9yJ10g aWYgdSdiZ2NvbG9yJyBpbiBkYXRhCi0gICAgICAgICAgICAgICAgZWxzZSBOb25lLAotICAgICAg ICAgICAgICAgIGZnY29sb3I9ZGF0YVsnZmdjb2xvciddIGlmIHUnZmdjb2xvcicgaW4gZGF0YQot ICAgICAgICAgICAgICAgIGVsc2UgTm9uZQotCisgICAgICAgICAgICAgICAgYmdjb2xvcj1kYXRh LmdldCgnYmdjb2xvcicsIE5vbmUpLAorICAgICAgICAgICAgICAgIGZnY29sb3I9ZGF0YS5nZXQo J2ZnY29sb3InLCBOb25lKSwKKyAgICAgICAgICAgICAgICBzZXJ2aWNlPWRhdGEuZ2V0KCdzZXJ2 aWNlJywgTm9uZSkKICAgICAgICAgICAgICkKICAgICAgICAgICAgIGRiLnNlc3Npb24uYWRkKHNl cnZlcikKICAgICAgICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKQEAgLTkzMCw3ICs5MzMsNyBA QCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmlldyk6CiAgICAgICAgIGlmICdwYXNzd29y ZCcgbm90IGluIGRhdGE6CiAgICAgICAgICAgICBjb25uX3Bhc3N3ZCA9IGdldGF0dHIoY29ubiwg J3Bhc3N3b3JkJywgTm9uZSkKICAgICAgICAgICAgIGlmIGNvbm5fcGFzc3dkIGlzIE5vbmUgYW5k IHNlcnZlci5wYXNzd29yZCBpcyBOb25lIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgIHNlcnZl ci5wYXNzZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucGFzc2ZpbGUg aXMgTm9uZSBhbmQgc2VydmVyLnNlcnZpY2UgaXMgTm9uZToKICAgICAgICAgICAgICAgICAjIFJl dHVybiB0aGUgcGFzc3dvcmQgdGVtcGxhdGUgaW4gY2FzZSBwYXNzd29yZCBpcyBub3QKICAgICAg ICAgICAgICAgICAjIHByb3ZpZGVkLCBvciBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2F2ZWQgZWFy bGllci4KICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pz L3NlcnZlci5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3N0 YXRpYy9qcy9zZXJ2ZXIuanMKaW5kZXggOTkzMjgwOC4uNTNiZTIyNSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9zdGF0aWMv anMvc2VydmVyLmpzCkBAIC02NjUsNiArNjY1LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2Vy dmVyJywgWwogICAgICAgICAgIHNzbGtleTogdW5kZWZpbmVkLAogICAgICAgICAgIHNzbHJvb3Rj ZXJ0OiB1bmRlZmluZWQsCiAgICAgICAgICAgc3NsY3JsOiB1bmRlZmluZWQsCisgICAgICAgICAg c2VydmljZTogdW5kZWZpbmVkLAogICAgICAgICB9LAogICAgICAgICAvLyBEZWZhdWx0IHZhbHVl cyEKICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKQEAgLTg0MSwx MiArODQyLDE4IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcnZlcicsIFsKICAgICAgICAgICAg IHZhciBwYXNzZmlsZSA9IG0uZ2V0KCdwYXNzZmlsZScpOwogICAgICAgICAgICAgcmV0dXJuICFf LmlzVW5kZWZpbmVkKHBhc3NmaWxlKSAmJiAhXy5pc051bGwocGFzc2ZpbGUpOwogICAgICAgICAg IH0sCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnc2VydmljZScsIGxhYmVsOiBnZXR0ZXh0 KCdTZXJ2aWNlJyksIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnZWRpdCcsICdjcmVhdGUnXSwgZGlzYWJsZWQ6ICdpc0Nvbm5lY3RlZCcsCisgICAgICAgICAg Z3JvdXA6IGdldHRleHQoJ0Nvbm5lY3Rpb24nKSwKICAgICAgICAgfV0sCiAgICAgICAgIHZhbGlk YXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICB2YXIgZXJyID0ge30sCiAgICAgICAgICAgICBl cnJtc2csCiAgICAgICAgICAgICBzZWxmID0gdGhpczsKIAorICAgICAgICAgIHZhciBzZXJ2aWNl X2lkID0gdGhpcy5nZXQoJ3NlcnZpY2UnKTsKKwogICAgICAgICAgIHZhciBjaGVja19mb3JfZW1w dHkgPSBmdW5jdGlvbihpZCwgbXNnKSB7CiAgICAgICAgICAgICB2YXIgdiA9IHNlbGYuZ2V0KGlk KTsKICAgICAgICAgICAgIGlmICgKQEAgLTkwMywyNiArOTEwLDQxIEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnNlcnZlcicsIFsKICAgICAgICAgICB9CiAgICAgICAgICAgY2hlY2tfZm9yX2VtcHR5 KCduYW1lJywgZ2V0dGV4dCgnTmFtZSBtdXN0IGJlIHNwZWNpZmllZC4nKSk7CiAKLSAgICAgICAg ICBpZiAoY2hlY2tfZm9yX2VtcHR5KAotICAgICAgICAgICAgJ2hvc3QnLCBnZXR0ZXh0KCdFaXRo ZXIgSG9zdCBuYW1lIG9yIEhvc3QgYWRkcmVzcyBtdXN0IGJlIHNwZWNpZmllZC4nKQotICAgICAg ICAgICkgJiYgY2hlY2tfZm9yX2VtcHR5KCdob3N0YWRkcicsIGdldHRleHQoJ0VpdGhlciBIb3N0 IG5hbWUgb3IgSG9zdCBhZGRyZXNzIG11c3QgYmUgc3BlY2lmaWVkLicpKSl7Ci0gICAgICAgICAg ICBlcnJtc2cgPSBlcnJtc2cgfHwgZ2V0dGV4dCgnRWl0aGVyIEhvc3QgbmFtZSBvciBIb3N0IGFk ZHJlc3MgbXVzdCBiZSBzcGVjaWZpZWQnKTsKKyAgICAgICAgICAvLyBJZiBubyBzZXJ2aWNlIGlk IHRoZW4gb25seSBjaGVjaworICAgICAgICAgIGlmICgKKyAgICAgICAgICAgICAgXy5pc1VuZGVm aW5lZChzZXJ2aWNlX2lkKSB8fCBfLmlzTnVsbChzZXJ2aWNlX2lkKSB8fAorICAgICAgICAgICAg ICBTdHJpbmcoc2VydmljZV9pZCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJworICAg ICAgICAgICAgKSB7CisgICAgICAgICAgICBpZiAoY2hlY2tfZm9yX2VtcHR5KAorICAgICAgICAg ICAgICAnaG9zdCcsIGdldHRleHQoJ0VpdGhlciBIb3N0IG5hbWUgb3IgSG9zdCBhZGRyZXNzIG11 c3QgYmUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICApICYmIGNoZWNrX2Zvcl9lbXB0eSgnaG9z dGFkZHInLCBnZXR0ZXh0KCdFaXRoZXIgSG9zdCBuYW1lIG9yIEhvc3QgYWRkcmVzcyBtdXN0IGJl IHNwZWNpZmllZC4nKSkpeworICAgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZ2V0dGV4 dCgnRWl0aGVyIEhvc3QgbmFtZSBvciBIb3N0IGFkZHJlc3MgbXVzdCBiZSBzcGVjaWZpZWQnKTsK KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGVycm1zZyA9IHVuZGVmaW5lZDsK KyAgICAgICAgICAgICAgZGVsZXRlIGVyclsnaG9zdCddOworICAgICAgICAgICAgICBkZWxldGUg ZXJyWydob3N0YWRkciddOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjaGVja19mb3Jf ZW1wdHkoCisgICAgICAgICAgICAgICdkYicsIGdldHRleHQoJ01haW50ZW5hbmNlIGRhdGFiYXNl IG11c3QgYmUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICApOworICAgICAgICAgICAgY2hlY2tf Zm9yX3ZhbGlkX2lwKAorICAgICAgICAgICAgICAnaG9zdGFkZHInLCBnZXR0ZXh0KCdIb3N0IGFk ZHJlc3MgbXVzdCBiZSB2YWxpZCBJUHY0IG9yIElQdjYgYWRkcmVzcy4nKQorICAgICAgICAgICAg KTsKKyAgICAgICAgICAgIGNoZWNrX2Zvcl92YWxpZF9pcCgKKyAgICAgICAgICAgICAgJ2hvc3Rh ZGRyJywgZ2V0dGV4dCgnSG9zdCBhZGRyZXNzIG11c3QgYmUgdmFsaWQgSVB2NCBvciBJUHY2IGFk ZHJlc3MuJykKKyAgICAgICAgICAgICk7CiAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IGVycm1zZyA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIGRlbGV0ZSBlcnJbJ2hvc3QnXTsKLSAg ICAgICAgICAgIGRlbGV0ZSBlcnJbJ2hvc3RhZGRyJ107CisgICAgICAgICAgICBfLmVhY2goWydo b3N0JywgJ2hvc3RhZGRyJywgJ2RiJ10sIChpdGVtKSA9PiB7CisgICAgICAgICAgICAgIHNlbGYu ZXJyb3JNb2RlbC51bnNldChpdGVtKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAgIH0KIAog ICAgICAgICAgIGNoZWNrX2Zvcl9lbXB0eSgKLSAgICAgICAgICAgICdkYicsIGdldHRleHQoJ01h aW50ZW5hbmNlIGRhdGFiYXNlIG11c3QgYmUgc3BlY2lmaWVkLicpCi0gICAgICAgICAgKTsKLSAg ICAgICAgICBjaGVja19mb3JfZW1wdHkoCiAgICAgICAgICAgICAndXNlcm5hbWUnLCBnZXR0ZXh0 KCdVc2VybmFtZSBtdXN0IGJlIHNwZWNpZmllZC4nKQogICAgICAgICAgICk7CiAgICAgICAgICAg Y2hlY2tfZm9yX2VtcHR5KCdwb3J0JywgZ2V0dGV4dCgnUG9ydCBtdXN0IGJlIHNwZWNpZmllZC4n KSk7Ci0gICAgICAgICAgY2hlY2tfZm9yX3ZhbGlkX2lwKAotICAgICAgICAgICAgJ2hvc3RhZGRy JywgZ2V0dGV4dCgnSG9zdCBhZGRyZXNzIG11c3QgYmUgdmFsaWQgSVB2NCBvciBJUHY2IGFkZHJl c3MuJykKLSAgICAgICAgICApOworCiAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldChlcnIp OwogCiAgICAgICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X2FkZF9zZXJ2ZXJfd2l0 aF9zZXJ2aWNlX2lkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvdGVzdHMvdGVzdF9hZGRfc2VydmVyX3dpdGhfc2VydmljZV9pZC5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjAzZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9hZGRfc2VydmVy X3dpdGhfc2VydmljZV9pZC5weQpAQCAtMCwwICsxLDQ3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKKworCitjbGFzcyBTZXJ2ZXJzV2l0aFNlcnZpY2VJREFkZFRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGFkZCB0 aGUgc2VydmVycyB1bmRlciBkZWZhdWx0IHNlcnZlciBncm91cC4gIiIiCisKKyAgICBzY2VuYXJp b3MgPSBbCisgICAgICAgICMgRmV0Y2ggdGhlIGRlZmF1bHQgdXJsIGZvciBzZXJ2ZXIgb2JqZWN0 CisgICAgICAgICgKKyAgICAgICAgICAgICdEZWZhdWx0IFNlcnZlciBOb2RlIHVybCcsIGRpY3Qo CisgICAgICAgICAgICAgICAgdXJsPScvYnJvd3Nlci9zZXJ2ZXIvb2JqLycKKyAgICAgICAgICAg ICkKKyAgICAgICAgKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGFz cworCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgYWRkIHRoZSBzZXJ2ZXIgdW5kZXIgZGVmYXVsdCBzZXJ2ZXIgZ3JvdXAuIiIiCisgICAgICAg IHVybCA9ICJ7MH17MX0vIi5mb3JtYXQoc2VsZi51cmwsIHV0aWxzLlNFUlZFUl9HUk9VUCkKKyAg ICAgICAgIyBBZGQgc2VydmljZSBuYW1lIGluIHRoZSBjb25maWcKKyAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3NlcnZpY2UnXSA9ICJUZXN0REIiCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIu cG9zdCgKKyAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxm LnNlcnZlciksCisgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicKKyAgICAgICAg KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQor ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgn dXRmLTgnKSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11b J19pZCddCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rp b24gZGVsZXRlIHRoZSBzZXJ2ZXIgZnJvbSBTUUxpdGUgIiIiCisgICAgICAgIHV0aWxzLmRlbGV0 ZV9zZXJ2ZXJfd2l0aF9hcGkoc2VsZi50ZXN0ZXIsIHNlbGYuc2VydmVyX2lkKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vbW9kZWwvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9tb2RlbC9fX2lu aXRfXy5weQppbmRleCA2NzRmOTQ1Li4xMWJjOWYwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9t b2RlbC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weQpAQCAt MTA3LDEzICsxMDcsMTMgQEAgY2xhc3MgU2VydmVyKGRiLk1vZGVsKToKICAgICAgICAgbnVsbGFi bGU9RmFsc2UKICAgICApCiAgICAgbmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMTI4KSwgbnVs bGFibGU9RmFsc2UpCi0gICAgaG9zdCA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMTI4KSwgbnVsbGFi bGU9RmFsc2UpCisgICAgaG9zdCA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMTI4KSwgbnVsbGFibGU9 VHJ1ZSkKICAgICBob3N0YWRkciA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMTI4KSwgbnVsbGFibGU9 VHJ1ZSkKICAgICBwb3J0ID0gZGIuQ29sdW1uKAogICAgICAgICBkYi5JbnRlZ2VyKCksCiAgICAg ICAgIGRiLkNoZWNrQ29uc3RyYWludCgncG9ydCA+PSAxMDI0IEFORCBwb3J0IDw9IDY1NTM0Jyks CiAgICAgICAgIG51bGxhYmxlPUZhbHNlKQotICAgIG1haW50ZW5hbmNlX2RiID0gZGIuQ29sdW1u KGRiLlN0cmluZyg2NCksIG51bGxhYmxlPUZhbHNlKQorICAgIG1haW50ZW5hbmNlX2RiID0gZGIu Q29sdW1uKGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCiAgICAgdXNlcm5hbWUgPSBkYi5D b2x1bW4oZGIuU3RyaW5nKDY0KSwgbnVsbGFibGU9RmFsc2UpCiAgICAgcGFzc3dvcmQgPSBkYi5D b2x1bW4oZGIuU3RyaW5nKDY0KSwgbnVsbGFibGU9VHJ1ZSkKICAgICByb2xlID0gZGIuQ29sdW1u KGRiLlN0cmluZyg2NCksIG51bGxhYmxlPVRydWUpCkBAIC0xNDQsNiArMTQ0LDcgQEAgY2xhc3Mg U2VydmVyKGRiLk1vZGVsKToKICAgICApCiAgICAgYmdjb2xvciA9IGRiLkNvbHVtbihkYi5UZXh0 KDEwKSwgbnVsbGFibGU9VHJ1ZSkKICAgICBmZ2NvbG9yID0gZGIuQ29sdW1uKGRiLlRleHQoMTAp LCBudWxsYWJsZT1UcnVlKQorICAgIHNlcnZpY2UgPSBkYi5Db2x1bW4oZGIuVGV4dCgpLCBudWxs YWJsZT1UcnVlKQogCiAKIGNsYXNzIE1vZHVsZVByZWZlcmVuY2UoZGIuTW9kZWwpOgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcyL19faW5pdF9fLnB5CmluZGV4IDk0MWE2OTQu Ljk1YTQ5ZmIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9wc3ljb3BnMi9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5Y29wZzIvX19pbml0 X18ucHkKQEAgLTgsMTk4NSArOCwyMyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIiIiCi1JbXBs ZW1lbnRhdGlvbiBvZiBDb25uZWN0aW9uLCBTZXJ2ZXJNYW5hZ2VyIGFuZCBEcml2ZXIgY2xhc3Nl cyB1c2luZyB0aGUKLXBzeWNvcGcyLiBJdCBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBhY3R1YWwg cHN5Y29wZzIgZHJpdmVyLCBhbmQgY29ubmVjdGlvbgorSW1wbGVtZW50YXRpb24gb2YgRHJpdmVy IGNsYXNzCitJdCBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBhY3R1YWwgcHN5Y29wZzIgZHJpdmVy LCBhbmQgY29ubmVjdGlvbgogb2JqZWN0LgotIiIiCiAKKyIiIgogaW1wb3J0IGRhdGV0aW1lCi1p bXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9ydCBzZWxlY3QKLWltcG9ydCBzeXMKLQotaW1w b3J0IHNpbXBsZWpzb24gYXMganNvbgotaW1wb3J0IHBzeWNvcGcyCi1mcm9tIGZsYXNrIGltcG9y dCBnLCBjdXJyZW50X2FwcCwgc2Vzc2lvbgorZnJvbSBmbGFzayBpbXBvcnQgc2Vzc2lvbgogZnJv bSBmbGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAotZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQg Y3VycmVudF91c2VyCi1mcm9tIHBnYWRtaW4udXRpbHMuY3J5cHRvIGltcG9ydCBkZWNyeXB0Ci1m cm9tIHBzeWNvcGcyLmV4dGVuc2lvbnMgaW1wb3J0IGFkYXB0LCBlbmNvZGluZ3MKK2ltcG9ydCBw c3ljb3BnMgorZnJvbSBwc3ljb3BnMi5leHRlbnNpb25zIGltcG9ydCBhZGFwdAogCiBpbXBvcnQg Y29uZmlnCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFNlcnZlciwgVXNlcgotZnJvbSBwZ2Fk bWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgQ29ubmVjdGlvbkxvc3QKLWZyb20gcGdhZG1pbi51 dGlscyBpbXBvcnQgZ2V0X2NvbXBsZXRlX2ZpbGVfcGF0aAogZnJvbSAua2V5d29yZHMgaW1wb3J0 IFNjYW5LZXl3b3JkCi1mcm9tIC4uYWJzdHJhY3QgaW1wb3J0IEJhc2VEcml2ZXIsIEJhc2VDb25u ZWN0aW9uCi1mcm9tIC5jdXJzb3IgaW1wb3J0IERpY3RDdXJzb3IKLWZyb20gLnR5cGVjYXN0IGlt cG9ydCByZWdpc3Rlcl9nbG9iYWxfdHlwZWNhc3RlcnMsIFwKLSAgICByZWdpc3Rlcl9zdHJpbmdf dHlwZWNhc3RlcnMsIHJlZ2lzdGVyX2JpbmFyeV90eXBlY2FzdGVycywgXAotICAgIHJlZ2lzdGVy X2FycmF5X3RvX3N0cmluZ190eXBlY2FzdGVycywgQUxMX0pTT05fVFlQRVMKLWZyb20gY29sbGVj dGlvbnMgaW1wb3J0IGRlcXVlCi0KLQotaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Ci0gICAg IyBQeXRob24yIGluLWJ1aWx0IGNzdiBtb2R1bGUgZG8gbm90IGhhbmRsZSB1bmljb2RlCi0gICAg IyBiYWNrcG9ydHMuY3N2IG1vZHVsZSBwb3J0ZWQgZnJvbSBQWTMgY3N2IG1vZHVsZSBmb3IgdW5p Y29kZSBoYW5kbGluZwotICAgIGZyb20gYmFja3BvcnRzIGltcG9ydCBjc3YKLSAgICBmcm9tIFN0 cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotICAgIElTX1BZMiA9IFRydWUKLWVsc2U6Ci0gICAgZnJv bSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICBpbXBvcnQgY3N2Ci0gICAgSVNfUFkyID0gRmFsc2UK LQotXyA9IGdldHRleHQKLQotCi0jIFJlZ2lzdGVyIGdsb2JhbCB0eXBlIGNhc3RlciB3aGljaCB3 aWxsIGJlIGFwcGxpY2FibGUgdG8gYWxsIGNvbm5lY3Rpb25zLgotcmVnaXN0ZXJfZ2xvYmFsX3R5 cGVjYXN0ZXJzKCkKLQotCi1jbGFzcyBDb25uZWN0aW9uKEJhc2VDb25uZWN0aW9uKToKLSAgICAi IiIKLSAgICBjbGFzcyBDb25uZWN0aW9uKG9iamVjdCkKLQotICAgICAgICBBIHdyYXBwZXIgY2xh c3MsIHdoaWNoIHdyYXBzIHRoZSBwc3ljb3BnMiBjb25uZWN0aW9uIG9iamVjdCwgYW5kCi0gICAg ICAgIGRlbGVnYXRlIHRoZSBleGVjdXRpb24gdG8gdGhlIGFjdHVhbCBjb25uZWN0aW9uIG9iamVj dCwgd2hlbiByZXF1aXJlZC4KLQotICAgIE1ldGhvZHM6Ci0gICAgLS0tLS0tLQotICAgICogY29u bmVjdCgqKmt3YXJncykKLSAgICAgIC0gQ29ubmVjdCB0aGUgUG9zdGdyZVNRTC9FREIgUG9zdGdy ZXMgQWR2YW5jZWQgU2VydmVyIHVzaW5nIHRoZSBwc3ljb3BnMgotICAgICAgZHJpdmVyCi0KLSAg ICAqIGV4ZWN1dGVfc2NhbGFyKHF1ZXJ5LCBwYXJhbXMsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNn KQotICAgICAgLSBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSBhbmQgcmV0dXJucyBzaW5nbGUgZGF0 dW0gcmVzdWx0Ci0KLSAgICAqIGV4ZWN1dGVfYXN5bmMocXVlcnksIHBhcmFtcywgZm9ybWF0dGVk X2V4Y2VwdGlvbl9tc2cpCi0gICAgICAtIEV4ZWN1dGUgdGhlIGdpdmVuIHF1ZXJ5IGFzeW5jaHJv bm91c2x5IGFuZCByZXR1cm5zIHJlc3VsdC4KLQotICAgICogZXhlY3V0ZV92b2lkKHF1ZXJ5LCBw YXJhbXMsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQotICAgICAgLSBFeGVjdXRlIHRoZSBnaXZl biBxdWVyeSB3aXRoIG5vIHJlc3VsdC4KLQotICAgICogZXhlY3V0ZV8yZGFycmF5KHF1ZXJ5LCBw YXJhbXMsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQotICAgICAgLSBFeGVjdXRlIHRoZSBnaXZl biBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgMiBkaW1lbnNpb25hbAotICAgICAg ICBhcnJheS4KLQotICAgICogZXhlY3V0ZV9kaWN0KHF1ZXJ5LCBwYXJhbXMsIGZvcm1hdHRlZF9l eGNlcHRpb25fbXNnKQotICAgICAgLSBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSBhbmQgcmV0dXJu cyB0aGUgcmVzdWx0IGFzIGFuIGFycmF5IG9mIGRpY3QKLSAgICAgICAgKGNvbHVtbiBuYW1lIC0+ IHZhbHVlKSBmb3JtYXQuCi0KLSAgICAqIGNvbm5lY3RlZCgpCi0gICAgICAtIEdldCB0aGUgc3Rh dHVzIG9mIHRoZSBjb25uZWN0aW9uLgotICAgICAgICBSZXR1cm5zIFRydWUgaWYgY29ubmVjdGVk LCBvdGhlcndpc2UgRmFsc2UuCi0KLSAgICAqIHJlc2V0KCkKLSAgICAgIC0gUmVjb25uZWN0IHRo ZSBkYXRhYmFzZSBzZXJ2ZXIgKGlmIHBvc3NpYmxlKQotCi0gICAgKiB0cmFuc2FjdGlvbl9zdGF0 dXMoKQotICAgICAgLSBUcmFuc2FjdGlvbiBTdGF0dXMKLQotICAgICogcGluZygpCi0gICAgICAt IFBpbmcgdGhlIHNlcnZlci4KLQotICAgICogX3JlbGVhc2UoKQotICAgICAgLSBSZWxlYXNlIHRo ZSBjb25uZWN0aW9uIG9iamVjdCBvZiBwc3ljb3BnMgotCi0gICAgKiBfcmVjb25uZWN0KCkKLSAg ICAgIC0gQXR0ZW1wdCB0byByZWNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlCi0KLSAgICAqIF93YWl0 KGNvbm4pCi0gICAgICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gd2FpdCBmb3IgYXN5bmNocm9u b3VzIGNvbm5lY3Rpb24uIFRoaXMgaXMgYQotICAgICAgICBibG9ja2luZyBjYWxsLgotCi0gICAg KiBfd2FpdF90aW1lb3V0KGNvbm4pCi0gICAgICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gd2Fp dCBmb3IgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gd2l0aCB0aW1lb3V0LgotICAgICAgICBUaGlz IGlzIGEgbm9uIGJsb2NraW5nIGNhbGwuCi0KLSAgICAqIHBvbGwoZm9ybWF0dGVkX2V4Y2VwdGlv bl9tc2cpCi0gICAgICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcG9sbCB0aGUgZGF0YSBvZiBx dWVyeSBydW5uaW5nIG9uIGFzeW5jaHJvbm91cwotICAgICAgICBjb25uZWN0aW9uLgotCi0gICAg KiBzdGF0dXNfbWVzc2FnZSgpCi0gICAgICAtIFJldHVybnMgdGhlIHN0YXR1cyBtZXNzYWdlIHJl dHVybmVkIGJ5IHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQgb24KLSAgICAgIHRoZSBzZXJ2ZXIu Ci0KLSAgICAqIHJvd3NfYWZmZWN0ZWQoKQotICAgICAgLSBSZXR1cm5zIHRoZSBubyBvZiByb3dz IGFmZmVjdGVkIGJ5IHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQgb24KLSAgICAgIHRoZSBzZXJ2 ZXIuCi0KLSAgICAqIGNhbmNlbF90cmFuc2FjdGlvbihjb25uX2lkLCBkaWQ9Tm9uZSkKLSAgICAg IC0gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjYW5jZWwgdGhlIHRyYW5zYWN0aW9uIGZvciB0aGUK LSAgICAgICAgc3BlY2lmaWVkIGNvbm5lY3Rpb24gaWQgYW5kIGRhdGFiYXNlIGlkLgotCi0gICAg KiBtZXNzYWdlcygpCi0gICAgICAtIFJldHVybnMgdGhlIGxpc3Qgb2YgbWVzc2FnZXMvbm90aWNl cyBzZW5kcyBmcm9tIHRoZSBQb3N0Z3JlU1FMIGRhdGFiYXNlCi0gICAgICAgIHNlcnZlci4KLQot ICAgICogX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKGV4Y2VwdGlvbl9vYmosIGZvcm1hdHRlZF9t c2cpCi0gICAgICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcGFyc2UgdGhlIHBzeWNvcGcyLkVy cm9yIG9iamVjdCBhbmQgcmV0dXJucyB0aGUKLSAgICAgICAgZm9ybWF0dGVkIGVycm9yIG1lc3Nh Z2UgaWYgZmxhZyBpcyBzZXQgdG8gdHJ1ZSBlbHNlIHJldHVybgotICAgICAgICBub3JtYWwgZXJy b3IgbWVzc2FnZS4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmFnZXIs IGNvbm5faWQsIGRiLCBhdXRvX3JlY29ubmVjdD1UcnVlLCBhc3luYz0wLAotICAgICAgICAgICAg ICAgICB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPUZhbHNlLCBhcnJheV90b19zdHJpbmc9RmFsc2Up OgotICAgICAgICBhc3NlcnQgKG1hbmFnZXIgaXMgbm90IE5vbmUpCi0gICAgICAgIGFzc2VydCAo Y29ubl9pZCBpcyBub3QgTm9uZSkKLQotICAgICAgICBzZWxmLmNvbm5faWQgPSBjb25uX2lkCi0g ICAgICAgIHNlbGYubWFuYWdlciA9IG1hbmFnZXIKLSAgICAgICAgc2VsZi5kYiA9IGRiIGlmIGRi IGlzIG5vdCBOb25lIGVsc2UgbWFuYWdlci5kYgotICAgICAgICBzZWxmLmNvbm4gPSBOb25lCi0g ICAgICAgIHNlbGYuYXV0b19yZWNvbm5lY3QgPSBhdXRvX3JlY29ubmVjdAotICAgICAgICBzZWxm LmFzeW5jID0gYXN5bmMKLSAgICAgICAgc2VsZi5fX2FzeW5jX2N1cnNvciA9IE5vbmUKLSAgICAg ICAgc2VsZi5fX2FzeW5jX3F1ZXJ5X2lkID0gTm9uZQotICAgICAgICBzZWxmLl9fYmFja2VuZF9w aWQgPSBOb25lCi0gICAgICAgIHNlbGYuZXhlY3V0aW9uX2Fib3J0ZWQgPSBGYWxzZQotICAgICAg ICBzZWxmLnJvd19jb3VudCA9IDAKLSAgICAgICAgc2VsZi5fX25vdGljZXMgPSBOb25lCi0gICAg ICAgIHNlbGYucGFzc3dvcmQgPSBOb25lCi0gICAgICAgICMgVGhpcyBmbGFnIGluZGljYXRlcyB0 aGUgY29ubmVjdGlvbiBzdGF0dXMgKGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQpLgotICAgICAgICBz ZWxmLndhc0Nvbm5lY3RlZCA9IEZhbHNlCi0gICAgICAgICMgVGhpcyBmbGFnIGluZGljYXRlcyB0 aGUgY29ubmVjdGlvbiByZWNvbm5lY3Rpbmcgc3RhdHVzLgotICAgICAgICBzZWxmLnJlY29ubmVj dGluZyA9IEZhbHNlCi0gICAgICAgIHNlbGYudXNlX2JpbmFyeV9wbGFjZWhvbGRlciA9IHVzZV9i aW5hcnlfcGxhY2Vob2xkZXIKLSAgICAgICAgc2VsZi5hcnJheV90b19zdHJpbmcgPSBhcnJheV90 b19zdHJpbmcKLQotICAgICAgICBzdXBlcihDb25uZWN0aW9uLCBzZWxmKS5fX2luaXRfXygpCi0K LSAgICBkZWYgYXNfZGljdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgdGhl IGRpY3Rpb25hcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGlzIG9iamVjdC4KLSAgICAgICAgIiIi Ci0gICAgICAgICMgSW4gY2FzZSwgaXQgY2Fubm90IGJlIGF1dG8gcmVjb25uZWN0YWJsZSwgb3Ig YWxyZWFkeSBiZWVuIHJlbGVhc2VkLAotICAgICAgICAjIHRoZW4gd2Ugd2lsbCByZXR1cm4gTm9u ZS4KLSAgICAgICAgaWYgbm90IHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIG5vdCBzZWxmLmNvbm46 Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJlcyA9IGRpY3QoKQotICAgICAg ICByZXNbJ2Nvbm5faWQnXSA9IHNlbGYuY29ubl9pZAotICAgICAgICByZXNbJ2RhdGFiYXNlJ10g PSBzZWxmLmRiCi0gICAgICAgIHJlc1snYXN5bmMnXSA9IHNlbGYuYXN5bmMKLSAgICAgICAgcmVz Wyd3YXNDb25uZWN0ZWQnXSA9IHNlbGYud2FzQ29ubmVjdGVkCi0gICAgICAgIHJlc1snYXV0b19y ZWNvbm5lY3QnXSA9IHNlbGYuYXV0b19yZWNvbm5lY3QKLSAgICAgICAgcmVzWyd1c2VfYmluYXJ5 X3BsYWNlaG9sZGVyJ10gPSBzZWxmLnVzZV9iaW5hcnlfcGxhY2Vob2xkZXIKLSAgICAgICAgcmVz WydhcnJheV90b19zdHJpbmcnXSA9IHNlbGYuYXJyYXlfdG9fc3RyaW5nCi0KLSAgICAgICAgcmV0 dXJuIHJlcwotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIlBHIENv bm5lY3Rpb246IHswfSAoezF9KSAtPiB7Mn0gKGFqYXg6ezN9KSIuZm9ybWF0KAotICAgICAgICAg ICAgc2VsZi5jb25uX2lkLCBzZWxmLmRiLAotICAgICAgICAgICAgJ0Nvbm5lY3RlZCcgaWYgc2Vs Zi5jb25uIGFuZCBub3Qgc2VsZi5jb25uLmNsb3NlZCBlbHNlCi0gICAgICAgICAgICAiRGlzY29u bmVjdGVkIiwKLSAgICAgICAgICAgIHNlbGYuYXN5bmMKLSAgICAgICAgKQotCi0gICAgZGVmIF9f c3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiUEcgQ29ubmVjdGlvbjogezB9ICh7MX0pIC0+ IHsyfSAoYWpheDp7M30pIi5mb3JtYXQoCi0gICAgICAgICAgICBzZWxmLmNvbm5faWQsIHNlbGYu ZGIsCi0gICAgICAgICAgICAnQ29ubmVjdGVkJyBpZiBzZWxmLmNvbm4gYW5kIG5vdCBzZWxmLmNv bm4uY2xvc2VkIGVsc2UKLSAgICAgICAgICAgICJEaXNjb25uZWN0ZWQiLAotICAgICAgICAgICAg c2VsZi5hc3luYwotICAgICAgICApCi0KLSAgICBkZWYgY29ubmVjdChzZWxmLCAqKmt3YXJncyk6 Ci0gICAgICAgIGlmIHNlbGYuY29ubjoKLSAgICAgICAgICAgIGlmIHNlbGYuY29ubi5jbG9zZWQ6 Ci0gICAgICAgICAgICAgICAgc2VsZi5jb25uID0gTm9uZQotICAgICAgICAgICAgZWxzZToKLSAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQotCi0gICAgICAgIHBnX2Nvbm4gPSBOb25l Ci0gICAgICAgIHBhc3N3b3JkID0gTm9uZQotICAgICAgICBwYXNzZmlsZSA9IE5vbmUKLSAgICAg ICAgbWdyID0gc2VsZi5tYW5hZ2VyCi0KLSAgICAgICAgZW5jcGFzcyA9IGt3YXJnc1sncGFzc3dv cmQnXSBpZiAncGFzc3dvcmQnIGluIGt3YXJncyBlbHNlIE5vbmUKLSAgICAgICAgcGFzc2ZpbGUg PSBrd2FyZ3NbJ3Bhc3NmaWxlJ10gaWYgJ3Bhc3NmaWxlJyBpbiBrd2FyZ3MgZWxzZSBOb25lCi0K LSAgICAgICAgaWYgZW5jcGFzcyBpcyBOb25lOgotICAgICAgICAgICAgZW5jcGFzcyA9IHNlbGYu cGFzc3dvcmQgb3IgZ2V0YXR0cihtZ3IsICdwYXNzd29yZCcsIE5vbmUpCi0KLSAgICAgICAgIyBS ZXNldCB0aGUgZXhpc3RpbmcgY29ubmVjdGlvbiBwYXNzd29yZAotICAgICAgICBpZiBzZWxmLnJl Y29ubmVjdGluZyBpcyBub3QgRmFsc2U6Ci0gICAgICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9u ZQotCi0gICAgICAgIGlmIGVuY3Bhc3M6Ci0gICAgICAgICAgICAjIEZldGNoIExvZ2dlZCBpbiBV c2VyIERldGFpbHMuCi0gICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnkoaWQ9 Y3VycmVudF91c2VyLmlkKS5maXJzdCgpCi0KLSAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToK LSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoIlVuYXV0aG9yaXplZCByZXF1 ZXN0LiIpCi0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYXNzd29yZCA9IGRl Y3J5cHQoZW5jcGFzcywgdXNlci5wYXNzd29yZCkKLSAgICAgICAgICAgICAgICAjIEhhbmRsaW5n IG9mIG5vbiBhc2NpaSBwYXNzd29yZCAoUHl0aG9uMikKLSAgICAgICAgICAgICAgICBpZiBoYXNh dHRyKHN0ciwgJ2RlY29kZScpOgotICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCA9IHBhc3N3 b3JkLmRlY29kZSgndXRmLTgnKS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgICAgICAjIHBh c3N3b3JkIGlzIGluIGJ5dGVzLCBmb3IgcHl0aG9uMyB3ZSBuZWVkIGl0IGluIHN0cmluZwotICAg ICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShwYXNzd29yZCwgYnl0ZXMpOgotICAgICAgICAg ICAgICAgICAgICBwYXNzd29yZCA9IHBhc3N3b3JkLmRlY29kZSgpCi0KLSAgICAgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu ZXhjZXB0aW9uKGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBcCi0gICAgICAgICAg ICAgICAgICAgIF8oCi0gICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGRlY3J5cHQg dGhlIHNhdmVkIHBhc3N3b3JkLlxuRXJyb3I6IHswfSIKLSAgICAgICAgICAgICAgICAgICAgKS5m b3JtYXQoc3RyKGUpKQotCi0gICAgICAgICMgSWYgbm8gcGFzc3dvcmQgY3JlZGVudGlhbCBpcyBm b3VuZCB0aGVuIGNvbm5lY3QgcmVxdWVzdCBtaWdodAotICAgICAgICAjIGNvbWUgZnJvbSBRdWVy eSB0b29sLCBWaWV3RGF0YSBncmlkLCBkZWJ1Z2dlciBldGMgdG9vbHMuCi0gICAgICAgICMgd2Ug d2lsbCBjaGVjayBmb3IgcGdwYXNzIGZpbGUgYXZhaWxhYmlsaXR5IGZyb20gY29ubmVjdGlvbiBt YW5hZ2VyCi0gICAgICAgICMgaWYgaXQncyBwcmVzZW50IHRoZW4gd2Ugd2lsbCB1c2UgaXQKLSAg ICAgICAgaWYgbm90IHBhc3N3b3JkIGFuZCBub3QgZW5jcGFzcyBhbmQgbm90IHBhc3NmaWxlOgot ICAgICAgICAgICAgcGFzc2ZpbGUgPSBtZ3IucGFzc2ZpbGUgaWYgbWdyLnBhc3NmaWxlIGVsc2Ug Tm9uZQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc3RyLCAnZGVjb2Rl Jyk6Ci0gICAgICAgICAgICAgICAgZGF0YWJhc2UgPSBzZWxmLmRiLmVuY29kZSgndXRmLTgnKQot ICAgICAgICAgICAgICAgIHVzZXIgPSBtZ3IudXNlci5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAg ICAgICAgICBjb25uX2lkID0gc2VsZi5jb25uX2lkLmVuY29kZSgndXRmLTgnKQotICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhYmFzZSA9IHNlbGYuZGIKLSAgICAgICAgICAg ICAgICB1c2VyID0gbWdyLnVzZXIKLSAgICAgICAgICAgICAgICBjb25uX2lkID0gc2VsZi5jb25u X2lkCi0KLSAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAgICAgICAgb3MuZW52aXJvblsnUEdB UFBOQU1FJ10gPSAnezB9IC0gezF9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgY29uZmlnLkFQ UF9OQU1FLCBjb25uX2lkKQotCi0gICAgICAgICAgICBwZ19jb25uID0gcHN5Y29wZzIuY29ubmVj dCgKLSAgICAgICAgICAgICAgICBob3N0PW1nci5ob3N0LAotICAgICAgICAgICAgICAgIGhvc3Rh ZGRyPW1nci5ob3N0YWRkciwKLSAgICAgICAgICAgICAgICBwb3J0PW1nci5wb3J0LAotICAgICAg ICAgICAgICAgIGRhdGFiYXNlPWRhdGFiYXNlLAotICAgICAgICAgICAgICAgIHVzZXI9dXNlciwK LSAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZCwKLSAgICAgICAgICAgICAgICBhc3lu Yz1zZWxmLmFzeW5jLAotICAgICAgICAgICAgICAgIHBhc3NmaWxlPWdldF9jb21wbGV0ZV9maWxl X3BhdGgocGFzc2ZpbGUpLAotICAgICAgICAgICAgICAgIHNzbG1vZGU9bWdyLnNzbF9tb2RlLAot ICAgICAgICAgICAgICAgIHNzbGNlcnQ9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChtZ3Iuc3NsY2Vy dCksCi0gICAgICAgICAgICAgICAgc3Nsa2V5PWdldF9jb21wbGV0ZV9maWxlX3BhdGgobWdyLnNz bGtleSksCi0gICAgICAgICAgICAgICAgc3Nscm9vdGNlcnQ9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0 aChtZ3Iuc3Nscm9vdGNlcnQpLAotICAgICAgICAgICAgICAgIHNzbGNybD1nZXRfY29tcGxldGVf ZmlsZV9wYXRoKG1nci5zc2xjcmwpLAotICAgICAgICAgICAgICAgIHNzbGNvbXByZXNzaW9uPVRy dWUgaWYgbWdyLnNzbGNvbXByZXNzaW9uIGVsc2UgRmFsc2UKLSAgICAgICAgICAgICkKLQotICAg ICAgICAgICAgIyBJZiBjb25uZWN0aW9uIGlzIGFzeW5jaHJvbm91cyB0aGVuIHdlIHdpbGwgaGF2 ZSB0byB3YWl0Ci0gICAgICAgICAgICAjIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRv IHVzZS4KLSAgICAgICAgICAgIGlmIHNlbGYuYXN5bmMgPT0gMToKLSAgICAgICAgICAgICAgICBz ZWxmLl93YWl0KHBnX2Nvbm4pCi0KLSAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIGU6 Ci0gICAgICAgICAgICBpZiBlLnBnZXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gZS5wZ2Vy cm9yCi0gICAgICAgICAgICBlbGlmIGUuZGlhZy5tZXNzYWdlX2RldGFpbDoKLSAgICAgICAgICAg ICAgICBtc2cgPSBlLmRpYWcubWVzc2FnZV9kZXRhaWwKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICAgICAgbXNnID0gc3RyKGUpCi0gICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu aW5mbygKLSAgICAgICAgICAgICAgICB1IkZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBkYXRhYmFz ZSBzZXJ2ZXIoI3tzZXJ2ZXJfaWR9KSBmb3IgIgotICAgICAgICAgICAgICAgIHUiY29ubmVjdGlv biAoe2Nvbm5faWR9KSB3aXRoIGVycm9yIG1lc3NhZ2UgYXMgYmVsb3ciCi0gICAgICAgICAgICAg ICAgdSI6e21zZ30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYu bWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAgICAgIGNvbm5faWQ9Y29ubl9pZCwKLSAgICAg ICAgICAgICAgICAgICAgbXNnPW1zZy5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0cihzdHIsICdk ZWNvZGUnKSBlbHNlIG1zZwotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgbXNnCi0KLSAgICAgICAgIyBPdmVyd3JpdGUgY29ubmVjdGlv biBub3RpY2UgYXR0ciB0byBzdXBwb3J0Ci0gICAgICAgICMgbW9yZSB0aGFuIDUwIG5vdGljZXMg YXQgYSB0aW1lCi0gICAgICAgIHBnX2Nvbm4ubm90aWNlcyA9IGRlcXVlKFtdLCBzZWxmLkFTWU5D X05PVElDRV9NQVhMRU5HVEgpCi0gICAgICAgIHNlbGYuY29ubiA9IHBnX2Nvbm4KLSAgICAgICAg c2VsZi53YXNDb25uZWN0ZWQgPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN0YXR1 cywgbXNnID0gc2VsZi5faW5pdGlhbGl6ZShjb25uX2lkLCAqKmt3YXJncykKLSAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2Vw dGlvbihlKQotICAgICAgICAgICAgc2VsZi5jb25uID0gTm9uZQotICAgICAgICAgICAgaWYgbm90 IHNlbGYucmVjb25uZWN0aW5nOgotICAgICAgICAgICAgICAgIHNlbGYud2FzQ29ubmVjdGVkID0g RmFsc2UKLSAgICAgICAgICAgIHJhaXNlIGUKLQotICAgICAgICBpZiBzdGF0dXM6Ci0gICAgICAg ICAgICBtZ3IuX3VwZGF0ZV9wYXNzd29yZChlbmNwYXNzKQotICAgICAgICBlbHNlOgotICAgICAg ICAgICAgaWYgbm90IHNlbGYucmVjb25uZWN0aW5nOgotICAgICAgICAgICAgICAgIHNlbGYud2Fz Q29ubmVjdGVkID0gRmFsc2UKLQotICAgICAgICByZXR1cm4gc3RhdHVzLCBtc2cKLQotICAgIGRl ZiBfaW5pdGlhbGl6ZShzZWxmLCBjb25uX2lkLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYuZXhl Y3V0aW9uX2Fib3J0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9fYmFja2VuZF9waWQgPSBzZWxm LmNvbm4uZ2V0X2JhY2tlbmRfcGlkKCkKLQotICAgICAgICBzZXRhdHRyKGcsICJ7MH0jezF9Ii5m b3JtYXQoCi0gICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgc2VsZi5j b25uX2lkLmVuY29kZSgndXRmLTgnKQotICAgICAgICApLCBOb25lKQotCi0gICAgICAgIHN0YXR1 cywgY3VyID0gc2VsZi5fX2N1cnNvcigpCi0gICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25fbXNn ID0gc2VsZi5fZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cKLSAgICAgICAgbWdyID0gc2VsZi5tYW5h Z2VyCi0KLSAgICAgICAgZGVmIF9leGVjdXRlKGN1ciwgcXVlcnksIHBhcmFtcz1Ob25lKToKLSAg ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWxfYmxvY2tpbmdf ZXhlY3V0ZShjdXIsIHF1ZXJ5LCBwYXJhbXMpCi0gICAgICAgICAgICBleGNlcHQgcHN5Y29wZzIu RXJyb3IgYXMgcGU6Ci0gICAgICAgICAgICAgICAgY3VyLmNsb3NlKCkKLSAgICAgICAgICAgICAg ICByZXR1cm4gZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cocGUsIEZhbHNlKQotICAgICAgICAgICAg cmV0dXJuIE5vbmUKLQotICAgICAgICAjIGF1dG9jb21taXQgZmxhZyBkb2VzIG5vdCB3b3JrIHdp dGggYXN5bmNocm9ub3VzIGNvbm5lY3Rpb25zLgotICAgICAgICAjIEJ5IGRlZmF1bHQgYXN5bmNo cm9ub3VzIGNvbm5lY3Rpb24gcnVucyBpbiBhdXRvY29tbWl0IG1vZGUuCi0gICAgICAgIGlmIHNl bGYuYXN5bmMgPT0gMDoKLSAgICAgICAgICAgIGlmICdhdXRvY29tbWl0JyBpbiBrd2FyZ3MgYW5k IGt3YXJnc1snYXV0b2NvbW1pdCddIGlzIEZhbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuY29u bi5hdXRvY29tbWl0ID0gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg c2VsZi5jb25uLmF1dG9jb21taXQgPSBUcnVlCi0KLSAgICAgICAgcmVnaXN0ZXJfc3RyaW5nX3R5 cGVjYXN0ZXJzKHNlbGYuY29ubikKLQotICAgICAgICBpZiBzZWxmLmFycmF5X3RvX3N0cmluZzoK LSAgICAgICAgICAgIHJlZ2lzdGVyX2FycmF5X3RvX3N0cmluZ190eXBlY2FzdGVycyhzZWxmLmNv bm4pCi0KLSAgICAgICAgIyBSZWdpc3RlciB0eXBlIGNhc3RlcnMgZm9yIGJpbmFyeSBkYXRhIG9u bHkgYWZ0ZXIgcmVnaXN0ZXJpbmcgYXJyYXkgdG8KLSAgICAgICAgIyBzdHJpbmcgdHlwZSBjYXN0 ZXJzLgotICAgICAgICBpZiBzZWxmLnVzZV9iaW5hcnlfcGxhY2Vob2xkZXI6Ci0gICAgICAgICAg ICByZWdpc3Rlcl9iaW5hcnlfdHlwZWNhc3RlcnMoc2VsZi5jb25uKQotCi0gICAgICAgIHN0YXR1 cyA9IF9leGVjdXRlKGN1ciwgIlNFVCBEYXRlU3R5bGU9SVNPOyIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiU0VUIGNsaWVudF9taW5fbWVzc2FnZXM9bm90aWNlOyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiU0VUIGJ5dGVhX291dHB1dD1lc2NhcGU7IgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJTRVQgY2xpZW50X2VuY29kaW5nPSdVTklDT0RFJzsi KQotCi0gICAgICAgIGlmIHN0YXR1cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuY29u bi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmNvbm4gPSBOb25lCi0KLSAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgc3RhdHVzCi0KLSAgICAgICAgaWYgbWdyLnJvbGU6Ci0gICAgICAgICAgICBz dGF0dXMgPSBfZXhlY3V0ZShjdXIsIHUiU0VUIFJPTEUgVE8gJXMiLCBbbWdyLnJvbGVdKQotCi0g ICAgICAgICAgICBpZiBzdGF0dXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5j b25uLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmNvbm4gPSBOb25lCi0gICAgICAgICAg ICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgICAgICAgICAiQ29u bmVjdCB0byB0aGUgZGF0YWJhc2Ugc2VydmVyICgje3NlcnZlcl9pZH0pIGZvciAiCi0gICAgICAg ICAgICAgICAgICAgICJjb25uZWN0aW9uICh7Y29ubl9pZH0pLCBidXQgLSBmYWlsZWQgdG8gc2V0 dXAgdGhlIHJvbGUgIgotICAgICAgICAgICAgICAgICAgICAid2l0aCBlcnJvciBtZXNzYWdlIGFz IGJlbG93Onttc2d9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9 c2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5faWQ9Y29ubl9p ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz1zdGF0dXMKLSAgICAgICAgICAgICAgICAg ICAgKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIFwK LSAgICAgICAgICAgICAgICAgICAgXygKLSAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQg dG8gc2V0dXAgdGhlIHJvbGUgd2l0aCBlcnJvciBtZXNzYWdlOlxuezB9IgotICAgICAgICAgICAg ICAgICAgICApLmZvcm1hdChzdGF0dXMpCi0KLSAgICAgICAgaWYgbWdyLnZlciBpcyBOb25lOgot ICAgICAgICAgICAgc3RhdHVzID0gX2V4ZWN1dGUoY3VyLCAiU0VMRUNUIHZlcnNpb24oKSIpCi0K LSAgICAgICAgICAgIGlmIHN0YXR1cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxm LmNvbm4uY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKLSAgICAgICAg ICAgICAgICBzZWxmLndhc0Nvbm5lY3RlZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGZldGNo IHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIG9uIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICJl c3RhYmxpc2hlZCBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgIgotICAgICAgICAg ICAgICAgICAgICAiKCN7c2VydmVyX2lkfSkgZm9yICd7Y29ubl9pZH0nIHdpdGggYmVsb3cgZXJy b3IgIgotICAgICAgICAgICAgICAgICAgICAibWVzc2FnZTp7bXNnfSIuZm9ybWF0KAotICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICBjb25uX2lkPWNvbm5faWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBt c2c9c3RhdHVzKQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs c2UsIHN0YXR1cwotCi0gICAgICAgICAgICBpZiBjdXIucm93Y291bnQgPiAwOgotICAgICAgICAg ICAgICAgIHJvdyA9IGN1ci5mZXRjaG1hbnkoMSlbMF0KLSAgICAgICAgICAgICAgICBtZ3IudmVy ID0gcm93Wyd2ZXJzaW9uJ10KLSAgICAgICAgICAgICAgICBtZ3Iuc3ZlcnNpb24gPSBzZWxmLmNv bm4uc2VydmVyX3ZlcnNpb24KLQotICAgICAgICBzdGF0dXMgPSBfZXhlY3V0ZShjdXIsICIiIgot U0VMRUNUCi0gICAgZGIub2lkIGFzIGRpZCwgZGIuZGF0bmFtZSwgZGIuZGF0YWxsb3djb25uLAot ICAgIHBnX2VuY29kaW5nX3RvX2NoYXIoZGIuZW5jb2RpbmcpIEFTIHNlcnZlcmVuY29kaW5nLAot ICAgIGhhc19kYXRhYmFzZV9wcml2aWxlZ2UoZGIub2lkLCAnQ1JFQVRFJykgYXMgY2FuY3JlYXRl LCBkYXRsYXN0c3lzb2lkCi1GUk9NCi0gICAgcGdfZGF0YWJhc2UgZGIKLVdIRVJFIGRiLmRhdG5h bWUgPSBjdXJyZW50X2RhdGFiYXNlKCkiIiIpCi0KLSAgICAgICAgaWYgc3RhdHVzIGlzIE5vbmU6 Ci0gICAgICAgICAgICBtZ3IuZGJfaW5mbyA9IG1nci5kYl9pbmZvIG9yIGRpY3QoKQotICAgICAg ICAgICAgaWYgY3VyLnJvd2NvdW50ID4gMDoKLSAgICAgICAgICAgICAgICByZXMgPSBjdXIuZmV0 Y2htYW55KDEpWzBdCi0gICAgICAgICAgICAgICAgbWdyLmRiX2luZm9bcmVzWydkaWQnXV0gPSBy ZXMuY29weSgpCi0KLSAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCBoYXZlIGRhdGFiYXNlIG9p ZCBmb3IgdGhlIG1haW50ZW5hbmNlIGRhdGFiYXNlLgotICAgICAgICAgICAgICAgIGlmIGxlbiht Z3IuZGJfaW5mbykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWdyLmRpZCA9IHJlc1snZGlk J10KLQotICAgICAgICBzdGF0dXMgPSBfZXhlY3V0ZShjdXIsICIiIgotU0VMRUNUCi0gICAgb2lk IGFzIGlkLCByb2xuYW1lIGFzIG5hbWUsIHJvbHN1cGVyIGFzIGlzX3N1cGVydXNlciwKLSAgICBy b2xjcmVhdGVyb2xlIGFzIGNhbl9jcmVhdGVfcm9sZSwgcm9sY3JlYXRlZGIgYXMgY2FuX2NyZWF0 ZV9kYgotRlJPTQotICAgIHBnX2NhdGFsb2cucGdfcm9sZXMKLVdIRVJFCi0gICAgcm9sbmFtZSA9 IGN1cnJlbnRfdXNlciIiIikKLQotICAgICAgICBpZiBzdGF0dXMgaXMgTm9uZToKLSAgICAgICAg ICAgIG1nci51c2VyX2luZm8gPSBkaWN0KCkKLSAgICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+ IDA6Ci0gICAgICAgICAgICAgICAgbWdyLnVzZXJfaW5mbyA9IGN1ci5mZXRjaG1hbnkoMSlbMF0K LQotICAgICAgICBpZiAncGFzc3dvcmQnIGluIGt3YXJnczoKLSAgICAgICAgICAgIG1nci5wYXNz d29yZCA9IGt3YXJnc1sncGFzc3dvcmQnXQotCi0gICAgICAgIHNlcnZlcl90eXBlcyA9IE5vbmUK LSAgICAgICAgaWYgJ3NlcnZlcl90eXBlcycgaW4ga3dhcmdzIGFuZCBpc2luc3RhbmNlKAotICAg ICAgICAgICAgICAgIGt3YXJnc1snc2VydmVyX3R5cGVzJ10sIGxpc3QpOgotICAgICAgICAgICAg c2VydmVyX3R5cGVzID0gbWdyLnNlcnZlcl90eXBlcyA9IGt3YXJnc1snc2VydmVyX3R5cGVzJ10K LQotICAgICAgICBpZiBzZXJ2ZXJfdHlwZXMgaXMgTm9uZToKLSAgICAgICAgICAgIGZyb20gcGdh ZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50eXBlcyBpbXBvcnQgU2VydmVyVHlw ZQotICAgICAgICAgICAgc2VydmVyX3R5cGVzID0gU2VydmVyVHlwZS50eXBlcygpCi0KLSAgICAg ICAgZm9yIHN0IGluIHNlcnZlcl90eXBlczoKLSAgICAgICAgICAgIGlmIHN0Lmluc3RhbmNlT2Yo bWdyLnZlcik6Ci0gICAgICAgICAgICAgICAgbWdyLnNlcnZlcl90eXBlID0gc3Quc3R5cGUKLSAg ICAgICAgICAgICAgICBtZ3Iuc2VydmVyX2NscyA9IHN0Ci0gICAgICAgICAgICAgICAgYnJlYWsK LQotICAgICAgICBtZ3IudXBkYXRlX3Nlc3Npb24oKQotCi0gICAgICAgIHJldHVybiBUcnVlLCBO b25lCi0KLSAgICBkZWYgX19jdXJzb3Ioc2VsZiwgc2VydmVyX2N1cnNvcj1GYWxzZSk6Ci0gICAg ICAgIGlmIHNlbGYud2FzQ29ubmVjdGVkIGlzIEZhbHNlOgotICAgICAgICAgICAgcmFpc2UgQ29u bmVjdGlvbkxvc3QoCi0gICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAg ICAgICAgICBzZWxmLmRiLAotICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6 M10gPT0gdSdEQjonIGVsc2Ugc2VsZi5jb25uX2lkWzU6XQotICAgICAgICAgICAgKQotICAgICAg ICBjdXIgPSBnZXRhdHRyKGcsICJ7MH0jezF9Ii5mb3JtYXQoCi0gICAgICAgICAgICBzZWxmLm1h bmFnZXIuc2lkLAotICAgICAgICAgICAgc2VsZi5jb25uX2lkLmVuY29kZSgndXRmLTgnKQotICAg ICAgICApLCBOb25lKQotCi0gICAgICAgIGlmIHNlbGYuY29ubmVjdGVkKCkgYW5kIGN1ciBhbmQg bm90IGN1ci5jbG9zZWQ6Ci0gICAgICAgICAgICBpZiBub3Qgc2VydmVyX2N1cnNvciBvciAoc2Vy dmVyX2N1cnNvciBhbmQgY3VyLm5hbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlLCBj dXIKLQotICAgICAgICBpZiBub3Qgc2VsZi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIGVycm1z ZyA9ICIiCi0KLSAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci53YXJuaW5nKAotICAgICAg ICAgICAgICAgICJDb25uZWN0aW9uIHRvIGRhdGFiYXNlIHNlcnZlciAoI3tzZXJ2ZXJfaWR9KSBm b3IgdGhlICIKLSAgICAgICAgICAgICAgICAiY29ubmVjdGlvbiAtICd7Y29ubl9pZH0nIGhhcyBi ZWVuIGxvc3QuIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1h bmFnZXIuc2lkLAotICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9pZAotICAg ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgaWYgc2VsZi5hdXRv X3JlY29ubmVjdCBhbmQgbm90IHNlbGYucmVjb25uZWN0aW5nOgotICAgICAgICAgICAgICAgIHNl bGYuX19hdHRlbXB0X2V4ZWN1dGlvbl9yZWNvbm5lY3QoTm9uZSkKLSAgICAgICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvbkxvc3QoCi0gICAgICAgICAgICAgICAg ICAgIHNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZGIsCi0gICAg ICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6M10gPT0gdSdEQjonIGVsc2Ug c2VsZi5jb25uX2lkWzU6XQotICAgICAgICAgICAgICAgICkKLQotICAgICAgICB0cnk6Ci0gICAg ICAgICAgICBpZiBzZXJ2ZXJfY3Vyc29yOgotICAgICAgICAgICAgICAgICMgUHJvdmlkaW5nIG5h bWUgdG8gY3Vyc29yIHdpbGwgY3JlYXRlIHNlcnZlciBzaWRlIGN1cnNvci4KLSAgICAgICAgICAg ICAgICBjdXJzb3JfbmFtZSA9ICJDVVJTT1I6ezB9Ii5mb3JtYXQoc2VsZi5jb25uX2lkKQotICAg ICAgICAgICAgICAgIGN1ciA9IHNlbGYuY29ubi5jdXJzb3IoCi0gICAgICAgICAgICAgICAgICAg IG5hbWU9Y3Vyc29yX25hbWUsIGN1cnNvcl9mYWN0b3J5PURpY3RDdXJzb3IKLSAgICAgICAgICAg ICAgICApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGN1ciA9IHNlbGYuY29u bi5jdXJzb3IoY3Vyc29yX2ZhY3Rvcnk9RGljdEN1cnNvcikKLSAgICAgICAgZXhjZXB0IHBzeWNv cGcyLkVycm9yIGFzIHBlOgotICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlv bihwZSkKLSAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoCi0gICAgICAgICAgICAgICAgIkZh aWxlZCB0byBjcmVhdGUgY3Vyc29yIGZvciBwc3ljb3BnMiBjb25uZWN0aW9uIHdpdGggZXJyb3Ig IgotICAgICAgICAgICAgICAgICJtZXNzYWdlIGZvciB0aGUgc2VydmVyI3sxfTp7Mn06XG57MH0i Ci0gICAgICAgICAgICApLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBzdHIocGUpLCBzZWxmLm1h bmFnZXIuc2lkLCBzZWxmLmRiCi0gICAgICAgICAgICApCi0KLSAgICAgICAgICAgIGN1cnJlbnRf YXBwLmxvZ2dlci5lcnJvcihlcnJtc2cpCi0gICAgICAgICAgICBpZiBzZWxmLmNvbm4uY2xvc2Vk OgotICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBz ZWxmLmF1dG9fcmVjb25uZWN0IGFuZCBub3Qgc2VsZi5yZWNvbm5lY3Rpbmc6Ci0gICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5pbmZvKAotICAgICAgICAgICAgICAgICAgICAg ICAgZ2V0dGV4dCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBy ZWNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZlciAiCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIigje3NlcnZlcl9pZH0pIGZvciB0aGUgY29ubmVjdGlvbiAtICd7Y29ubl9pZH0nLiIK LSAgICAgICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0g ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19h dHRlbXB0X2V4ZWN1dGlvbl9yZWNvbm5lY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fY3Vyc29yLCBzZXJ2ZXJfY3Vyc29yCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAg ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uTG9zdCgK LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmRiLAotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSBpZiBzZWxm LmNvbm5faWRbMDozXSA9PSB1J0RCOicKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2Vs Zi5jb25uX2lkWzU6XQotICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgc2V0YXR0cigK LSAgICAgICAgICAgIGcsICJ7MH0jezF9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc2VsZi5t YW5hZ2VyLnNpZCwgc2VsZi5jb25uX2lkLmVuY29kZSgndXRmLTgnKQotICAgICAgICAgICAgKSwg Y3VyCi0gICAgICAgICkKLQotICAgICAgICByZXR1cm4gVHJ1ZSwgY3VyCi0KLSAgICBkZWYgX19p bnRlcm5hbF9ibG9ja2luZ19leGVjdXRlKHNlbGYsIGN1ciwgcXVlcnksIHBhcmFtcyk6Ci0gICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGV4ZWN1dGVzIHRoZSBxdWVyeSB1c2luZyBj dXJzb3IncyBleGVjdXRlIGZ1bmN0aW9uLAotICAgICAgICBidXQgaW4gY2FzZSBvZiBhc3luY2hy b25vdXMgY29ubmVjdGlvbiB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZQotICAgICAgICB0cmFuc2Fj dGlvbiB0byBiZSBjb21wbGV0ZWQuIElmIHNlbGYuYXN5bmMgaXMgMSB0aGVuIGl0IGlzIGEKLSAg ICAgICAgYmxvY2tpbmcgY2FsbC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY3VyOiBD dXJzb3Igb2JqZWN0Ci0gICAgICAgICAgICBxdWVyeTogU1FMIHF1ZXJ5IHRvIHJ1bi4KLSAgICAg ICAgICAgIHBhcmFtczogRXh0cmEgcGFyYW1ldGVycwotICAgICAgICAiIiIKLQotICAgICAgICBp ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKToKLSAgICAgICAgICAgIGlmIHR5cGUocXVlcnkpID09 IHVuaWNvZGU6Ci0gICAgICAgICAgICAgICAgcXVlcnkgPSBxdWVyeS5lbmNvZGUoJ3V0Zi04JykK LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuZW5jb2RlKCd1dGYtOCcp Ci0KLSAgICAgICAgY3VyLmV4ZWN1dGUocXVlcnksIHBhcmFtcykKLSAgICAgICAgaWYgc2VsZi5h c3luYyA9PSAxOgotICAgICAgICAgICAgc2VsZi5fd2FpdChjdXIuY29ubmVjdGlvbikKLQotICAg IGRlZiBleGVjdXRlX29uX3NlcnZlcl9hc19jc3Yoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHF1ZXJ5LCBwYXJhbXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPUZhbHNlLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVjb3Jkcz0yMDAwKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRv IGZldGNoIHF1ZXJ5IHJlc3VsdCBhbmQgZ2VuZXJhdGUgQ1NWIG91dHB1dAotCi0gICAgICAgIEFy Z3M6Ci0gICAgICAgICAgICBxdWVyeTogU1FMCi0gICAgICAgICAgICBwYXJhbXM6IEFkZGl0aW9u YWwgcGFyYW1ldGVycwotICAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6IEZvciBl eGNlcHRpb24KLSAgICAgICAgICAgIHJlY29yZHM6IE51bWJlciBvZiBpbml0aWFsIHJlY29yZHMK LSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIEdlbmVyYXRvciByZXNwb25zZQotICAgICAg ICAiIiIKLSAgICAgICAgc3RhdHVzLCBjdXIgPSBzZWxmLl9fY3Vyc29yKHNlcnZlcl9jdXJzb3I9 VHJ1ZSkKLSAgICAgICAgc2VsZi5yb3dfY291bnQgPSAwCi0KLSAgICAgICAgaWYgbm90IHN0YXR1 czoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgc3RyKGN1cikKLSAgICAgICAgcXVlcnlfaWQg PSByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KQotCi0gICAgICAgIGlmIElTX1BZMiBhbmQgdHlw ZShxdWVyeSkgPT0gdW5pY29kZToKLSAgICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuZW5jb2RlKCd1 dGYtOCcpCi0KLSAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmxvZygKLSAgICAgICAgICAgIDI1 LAotICAgICAgICAgICAgdSJFeGVjdXRlICh3aXRoIHNlcnZlciBjdXJzb3IpIGZvciBzZXJ2ZXIg I3tzZXJ2ZXJfaWR9IC0gIgotICAgICAgICAgICAgdSJ7Y29ubl9pZH0gKFF1ZXJ5LWlkOiB7cXVl cnlfaWR9KTpcbntxdWVyeX0iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2Vs Zi5tYW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9pZCwKLSAg ICAgICAgICAgICAgICBxdWVyeT1xdWVyeS5kZWNvZGUoJ3V0Zi04JykgaWYKLSAgICAgICAgICAg ICAgICBzeXMudmVyc2lvbl9pbmZvIDwgKDMsKSBlbHNlIHF1ZXJ5LAotICAgICAgICAgICAgICAg IHF1ZXJ5X2lkPXF1ZXJ5X2lkCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgdHJ5 OgotICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsX2Jsb2NraW5nX2V4ZWN1dGUoY3VyLCBxdWVy eSwgcGFyYW1zKQotICAgICAgICBleGNlcHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6Ci0gICAgICAg ICAgICBjdXIuY2xvc2UoKQotICAgICAgICAgICAgZXJybXNnID0gc2VsZi5fZm9ybWF0dGVkX2V4 Y2VwdGlvbl9tc2cocGUsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQotICAgICAgICAgICAgY3Vy cmVudF9hcHAubG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgICAgIHUiZmFpbGVkIHRvIGV4ZWN1 dGUgcXVlcnkgKCh3aXRoIHNlcnZlciBjdXJzb3IpICIKLSAgICAgICAgICAgICAgICB1ImZvciB0 aGUgc2VydmVyICN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAiCi0gICAgICAgICAgICAgICAgdSIo cXVlcnktaWQ6IHtxdWVyeV9pZH0pOlxuZXJyb3IgbWVzc2FnZTp7ZXJybXNnfSIuZm9ybWF0KAot ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAg ICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5faWQsCi0gICAgICAgICAgICAgICAgICAgIHF1 ZXJ5PXF1ZXJ5LAotICAgICAgICAgICAgICAgICAgICBlcnJtc2c9ZXJybXNnLAotICAgICAgICAg ICAgICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAotICAgICAgICAgICAgICAgICkKLSAgICAgICAg ICAgICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZXJybXNnCi0KLSAgICAgICAgZGVmIGhh bmRsZV9qc29uX2RhdGEoanNvbl9jb2x1bW5zLCByZXN1bHRzKToKLSAgICAgICAgICAgICIiIgot ICAgICAgICAgICAgWyBUaGlzIGlzIG9ubHkgZm9yIFB5dGhvbjIueF0KLSAgICAgICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBiZSB1c2VmdWwgdG8gaGFuZGxlIGpzb24gZGF0YSB0eXBlcy4KLSAg ICAgICAgICAgIFdlIHdpbGwgZHVtcCBqc29uIGRhdGEgYXMgcHJvcGVyIGpzb24gaW5zdGVhZCBv ZiB1bmljb2RlIHZhbHVlcwotCi0gICAgICAgICAgICBBcmdzOgotICAgICAgICAgICAgICAgIGpz b25fY29sdW1uczogQ29sdW1ucyB3aGljaCBjb250YWlucyBqc29uIGRhdGEKLSAgICAgICAgICAg ICAgICByZXN1bHRzOiBRdWVyeSByZXN1bHQKLQotICAgICAgICAgICAgUmV0dXJuczoKLSAgICAg ICAgICAgICAgICByZXN1bHRzCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICMgT25seSBp ZiBQeXRob24yIGFuZCB0aGVyZSBhcmUgY29sdW1ucyB3aXRoIEpTT04gdHlwZQotICAgICAgICAg ICAgaWYgSVNfUFkyIGFuZCBsZW4oanNvbl9jb2x1bW5zKSA+IDA6Ci0gICAgICAgICAgICAgICAg dGVtcF9yZXN1bHRzID0gW10KLSAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJlc3VsdHM6Ci0g ICAgICAgICAgICAgICAgICAgIHJlcyA9IGRpY3QoKQotICAgICAgICAgICAgICAgICAgICBmb3Ig aywgdiBpbiByb3cuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgaW4ganNv bl9jb2x1bW5zOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc1trXSA9IGpzb24uZHVt cHModikKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzW2tdID0gdgotICAgICAgICAgICAgICAgICAgICB0ZW1wX3Jlc3VsdHMuYXBw ZW5kKHJlcykKLSAgICAgICAgICAgICAgICByZXN1bHRzID0gdGVtcF9yZXN1bHRzCi0gICAgICAg ICAgICByZXR1cm4gcmVzdWx0cwotCi0gICAgICAgIGRlZiBjb252ZXJ0X2tleXNfdG9fdW5pY29k ZShyZXN1bHRzLCBjb25uX2VuY29kaW5nKToKLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAg WyBUaGlzIGlzIG9ubHkgZm9yIFB5dGhvbjIueF0KLSAgICAgICAgICAgIFdlIG5lZWQgdG8gY29u dmVydCBhbGwga2V5cyB0byB1bmljb2RlIGFzIHBzeWNvcGcyCi0gICAgICAgICAgICBzZW5kcyB0 aGVtIGFzIHN0cmluZwotCi0gICAgICAgICAgICBBcmdzOgotICAgICAgICAgICAgICAgIHJlczog UXVlcnkgcmVzdWx0IHNldCBmcm9tIHBzeWNvcGcyCi0gICAgICAgICAgICAgICAgY29ubl9lbmNv ZGluZzogQ29ubmVjdGlvbiBlbmNvZGluZwotCi0gICAgICAgICAgICBSZXR1cm5zOgotICAgICAg ICAgICAgICAgIFJlc3VsdCBzZXQgKFdpdGggYWxsIHRoZSBrZXlzIGNvbnZlcnRlZCB0byB1bmlj b2RlKQotICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBuZXdfcmVzdWx0cyA9IFtdCi0gICAg ICAgICAgICBmb3Igcm93IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgbmV3X3Jlc3VsdHMu YXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBkaWN0KFsoay5kZWNvZGUoY29ubl9lbmNvZGlu ZyksIHYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHJvdy5pdGVtcygp XSkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICByZXR1cm4gbmV3X3Jlc3VsdHMKLQot ICAgICAgICBkZWYgZ2VuKHF1b3RlPSdzdHJpbmdzJywgcXVvdGVfY2hhcj0iJyIsIGZpZWxkX3Nl cGFyYXRvcj0nLCcpOgotCi0gICAgICAgICAgICByZXN1bHRzID0gY3VyLmZldGNobWFueShyZWNv cmRzKQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgbm90 IGN1ci5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGN1ci5jbG9zZSgpCi0gICAgICAgICAg ICAgICAgeWllbGQgZ2V0dGV4dCgnVGhlIHF1ZXJ5IGV4ZWN1dGVkIGRpZCBub3QgcmV0dXJuIGFu eSBkYXRhLicpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIGhlYWRlciA9 IFtdCi0gICAgICAgICAgICBqc29uX2NvbHVtbnMgPSBbXQotICAgICAgICAgICAgY29ubl9lbmNv ZGluZyA9IGN1ci5jb25uZWN0aW9uLmVuY29kaW5nCi0KLSAgICAgICAgICAgIGZvciBjIGluIGN1 ci5vcmRlcmVkX2Rlc2NyaXB0aW9uKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRvIGhh bmRsZSB0aGUgY2FzZSBpbiB3aGljaCBjb2x1bW4gbmFtZSBpcyBub24tYXNjaWkKLSAgICAgICAg ICAgICAgICBjb2x1bW5fbmFtZSA9IGMudG9fZGljdCgpWyduYW1lJ10KLSAgICAgICAgICAgICAg ICBpZiBJU19QWTI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbHVtbl9uYW1lID0gY29sdW1uX25h bWUuZGVjb2RlKGNvbm5fZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgaGVhZGVyLmFwcGVuZChj b2x1bW5fbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBjLnRvX2RpY3QoKVsndHlwZV9jb2RlJ10g aW4gQUxMX0pTT05fVFlQRVM6Ci0gICAgICAgICAgICAgICAgICAgIGpzb25fY29sdW1ucy5hcHBl bmQoY29sdW1uX25hbWUpCi0KLSAgICAgICAgICAgIGlmIElTX1BZMjoKLSAgICAgICAgICAgICAg ICByZXN1bHRzID0gY29udmVydF9rZXlzX3RvX3VuaWNvZGUocmVzdWx0cywgY29ubl9lbmNvZGlu ZykKLQotICAgICAgICAgICAgcmVzX2lvID0gU3RyaW5nSU8oKQotCi0gICAgICAgICAgICBpZiBx dW90ZSA9PSAnc3RyaW5ncyc6Ci0gICAgICAgICAgICAgICAgcXVvdGUgPSBjc3YuUVVPVEVfTk9O TlVNRVJJQwotICAgICAgICAgICAgZWxpZiBxdW90ZSA9PSAnYWxsJzoKLSAgICAgICAgICAgICAg ICBxdW90ZSA9IGNzdi5RVU9URV9BTEwKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg ICAgcXVvdGUgPSBjc3YuUVVPVEVfTk9ORQotCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHN0ciwg J2RlY29kZScpOgotICAgICAgICAgICAgICAgICMgRGVjb2RlIHRoZSBmaWVsZF9zZXBhcmF0b3IK LSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkX3NlcGFyYXRv ciA9IGZpZWxkX3NlcGFyYXRvci5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dl ci5lcnJvcihlKQotCi0gICAgICAgICAgICAgICAgIyBEZWNvZGUgdGhlIHF1b3RlX2NoYXIKLSAg ICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSBxdW90 ZV9jaGFyLmRlY29kZSgndXRmLTgnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9yKGUpCi0K LSAgICAgICAgICAgIGNzdl93cml0ZXIgPSBjc3YuRGljdFdyaXRlcigKLSAgICAgICAgICAgICAg ICByZXNfaW8sIGZpZWxkbmFtZXM9aGVhZGVyLCBkZWxpbWl0ZXI9ZmllbGRfc2VwYXJhdG9yLAot ICAgICAgICAgICAgICAgIHF1b3Rpbmc9cXVvdGUsCi0gICAgICAgICAgICAgICAgcXVvdGVjaGFy PXF1b3RlX2NoYXIKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgY3N2X3dyaXRlci53cml0 ZWhlYWRlcigpCi0gICAgICAgICAgICByZXN1bHRzID0gaGFuZGxlX2pzb25fZGF0YShqc29uX2Nv bHVtbnMsIHJlc3VsdHMpCi0gICAgICAgICAgICBjc3Zfd3JpdGVyLndyaXRlcm93cyhyZXN1bHRz KQotCi0gICAgICAgICAgICB5aWVsZCByZXNfaW8uZ2V0dmFsdWUoKQotCi0gICAgICAgICAgICB3 aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBjdXIuZmV0Y2htYW55KHJlY29y ZHMpCi0KLSAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0czoKLSAgICAgICAgICAgICAgICAg ICAgaWYgbm90IGN1ci5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXIuY2xvc2Uo KQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlc19pbyA9IFN0 cmluZ0lPKCkKLQotICAgICAgICAgICAgICAgIGNzdl93cml0ZXIgPSBjc3YuRGljdFdyaXRlcigK LSAgICAgICAgICAgICAgICAgICAgcmVzX2lvLCBmaWVsZG5hbWVzPWhlYWRlciwgZGVsaW1pdGVy PWZpZWxkX3NlcGFyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgcXVvdGluZz1xdW90ZSwKLSAg ICAgICAgICAgICAgICAgICAgcXVvdGVjaGFyPXF1b3RlX2NoYXIKLSAgICAgICAgICAgICAgICAp Ci0KLSAgICAgICAgICAgICAgICBpZiBJU19QWTI6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3Vs dHMgPSBjb252ZXJ0X2tleXNfdG9fdW5pY29kZShyZXN1bHRzLCBjb25uX2VuY29kaW5nKQotCi0g ICAgICAgICAgICAgICAgcmVzdWx0cyA9IGhhbmRsZV9qc29uX2RhdGEoanNvbl9jb2x1bW5zLCBy ZXN1bHRzKQotICAgICAgICAgICAgICAgIGNzdl93cml0ZXIud3JpdGVyb3dzKHJlc3VsdHMpCi0g ICAgICAgICAgICAgICAgeWllbGQgcmVzX2lvLmdldHZhbHVlKCkKLQotICAgICAgICByZXR1cm4g VHJ1ZSwgZ2VuCi0KLSAgICBkZWYgZXhlY3V0ZV9zY2FsYXIoc2VsZiwgcXVlcnksIHBhcmFtcz1O b25lLAotICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxz ZSk6Ci0gICAgICAgIHN0YXR1cywgY3VyID0gc2VsZi5fX2N1cnNvcigpCi0gICAgICAgIHNlbGYu cm93X2NvdW50ID0gMAotCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICByZXR1 cm4gRmFsc2UsIHN0cihjdXIpCi0gICAgICAgIHF1ZXJ5X2lkID0gcmFuZG9tLnJhbmRpbnQoMSwg OTk5OTk5OSkKLQotICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKAotICAgICAgICAgICAg MjUsCi0gICAgICAgICAgICB1IkV4ZWN1dGUgKHNjYWxhcikgZm9yIHNlcnZlciAje3NlcnZlcl9p ZH0gLSB7Y29ubl9pZH0gKFF1ZXJ5LWlkOiAiCi0gICAgICAgICAgICB1IntxdWVyeV9pZH0pOlxu e3F1ZXJ5fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIu c2lkLAotICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAotICAgICAgICAgICAg ICAgIHF1ZXJ5PXF1ZXJ5LAotICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCi0gICAg ICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fX2lu dGVybmFsX2Jsb2NraW5nX2V4ZWN1dGUoY3VyLCBxdWVyeSwgcGFyYW1zKQotICAgICAgICBleGNl cHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6Ci0gICAgICAgICAgICBjdXIuY2xvc2UoKQotICAgICAg ICAgICAgaWYgbm90IHNlbGYuY29ubmVjdGVkKCk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5h dXRvX3JlY29ubmVjdCBhbmQgbm90IHNlbGYucmVjb25uZWN0aW5nOgotICAgICAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5fX2F0dGVtcHRfZXhlY3V0aW9uX3JlY29ubmVjdCgKLSAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0ZV9kaWN0LCBxdWVyeSwgcGFyYW1zLAotICAgICAg ICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cKLSAgICAgICAgICAgICAg ICAgICAgKQotICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25Mb3N0KAotICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgICAgICAgICBzZWxmLmRi LAotICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHNlbGYuY29ubl9pZFswOjNdID09IHUnREI6 JyBlbHNlIHNlbGYuY29ubl9pZFs1Ol0KLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBl cnJtc2cgPSBzZWxmLl9mb3JtYXR0ZWRfZXhjZXB0aW9uX21zZyhwZSwgZm9ybWF0dGVkX2V4Y2Vw dGlvbl9tc2cpCi0gICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCi0gICAgICAg ICAgICAgICAgdSJGYWlsZWQgdG8gZXhlY3V0ZSBxdWVyeSAoZXhlY3V0ZV9zY2FsYXIpIGZvciB0 aGUgc2VydmVyICIKLSAgICAgICAgICAgICAgICB1IiN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAo UXVlcnktaWQ6IHtxdWVyeV9pZH0pOlxuIgotICAgICAgICAgICAgICAgIHUiRXJyb3IgTWVzc2Fn ZTp7ZXJybXNnfSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5t YW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5faWQsCi0g ICAgICAgICAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5LAotICAgICAgICAgICAgICAgICAgICBlcnJt c2c9ZXJybXNnLAotICAgICAgICAgICAgICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAotICAgICAg ICAgICAgICAgICkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZXJy bXNnCi0KLSAgICAgICAgc2VsZi5yb3dfY291bnQgPSBjdXIucm93Y291bnQKLSAgICAgICAgaWYg Y3VyLnJvd2NvdW50ID4gMDoKLSAgICAgICAgICAgIHJlcyA9IGN1ci5mZXRjaG9uZSgpCi0gICAg ICAgICAgICBpZiBsZW4ocmVzKSA+IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIHJl c1swXQotCi0gICAgICAgIHJldHVybiBUcnVlLCBOb25lCi0KLSAgICBkZWYgZXhlY3V0ZV9hc3lu YyhzZWxmLCBxdWVyeSwgcGFyYW1zPU5vbmUsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnPVRydWUp OgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBleGVjdXRlcyB0aGUgZ2l2ZW4g cXVlcnkgYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybnMKLSAgICAgICAgcmVzdWx0LgotCi0gICAg ICAgIEFyZ3M6Ci0gICAgICAgICAgICBxdWVyeTogU1FMIHF1ZXJ5IHRvIHJ1bi4KLSAgICAgICAg ICAgIHBhcmFtczogZXh0cmEgcGFyYW1ldGVycyB0byB0aGUgZnVuY3Rpb24KLSAgICAgICAgICAg IGZvcm1hdHRlZF9leGNlcHRpb25fbXNnOiBpZiBUcnVlIHRoZW4gZnVuY3Rpb24gcmV0dXJuIHRo ZQotICAgICAgICAgICAgZm9ybWF0dGVkIGV4Y2VwdGlvbiBtZXNzYWdlCi0gICAgICAgICIiIgot Ci0gICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywpOgotICAgICAgICAgICAgaWYgdHlw ZShxdWVyeSkgPT0gdW5pY29kZToKLSAgICAgICAgICAgICAgICBxdWVyeSA9IHF1ZXJ5LmVuY29k ZSgndXRmLTgnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcXVlcnkgPSBxdWVyeS5lbmNv ZGUoJ3V0Zi04JykKLQotICAgICAgICBzZWxmLl9fYXN5bmNfY3Vyc29yID0gTm9uZQotICAgICAg ICBzdGF0dXMsIGN1ciA9IHNlbGYuX19jdXJzb3IoKQotCi0gICAgICAgIGlmIG5vdCBzdGF0dXM6 Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihjdXIpCi0gICAgICAgIHF1ZXJ5X2lkID0g cmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkKLQotICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu bG9nKAotICAgICAgICAgICAgMjUsCi0gICAgICAgICAgICB1IkV4ZWN1dGUgKGFzeW5jKSBmb3Ig c2VydmVyICN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAoUXVlcnktaWQ6ICIKLSAgICAgICAgICAg IHUie3F1ZXJ5X2lkfSk6XG57cXVlcnl9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc2VydmVy X2lkPXNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5f aWQsCi0gICAgICAgICAgICAgICAgcXVlcnk9cXVlcnkuZGVjb2RlKCd1dGYtOCcpLAotICAgICAg ICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCi0gICAgICAgICAgICApCi0gICAgICAgICkKLQot ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9fbm90aWNlcyA9IFtdCi0gICAgICAgICAg ICBzZWxmLmV4ZWN1dGlvbl9hYm9ydGVkID0gRmFsc2UKLSAgICAgICAgICAgIGN1ci5leGVjdXRl KHF1ZXJ5LCBwYXJhbXMpCi0gICAgICAgICAgICByZXMgPSBzZWxmLl93YWl0X3RpbWVvdXQoY3Vy LmNvbm5lY3Rpb24pCi0gICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBwZToKLSAgICAg ICAgICAgIGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKHBlLCBmb3JtYXR0 ZWRfZXhjZXB0aW9uX21zZykKLSAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigK LSAgICAgICAgICAgICAgICB1IkZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5IChleGVjdXRlX2FzeW5j KSBmb3IgdGhlIHNlcnZlciAiCi0gICAgICAgICAgICAgICAgdSIje3NlcnZlcl9pZH0gLSB7Y29u bl9pZH0oUXVlcnktaWQ6IHtxdWVyeV9pZH0pOlxuIgotICAgICAgICAgICAgICAgIHUiRXJyb3Ig TWVzc2FnZTp7ZXJybXNnfSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9 c2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5f aWQsCi0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5LmRlY29kZSgndXRmLTgnKSwKLSAg ICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywKLSAgICAgICAgICAgICAgICAgICAgcXVl cnlfaWQ9cXVlcnlfaWQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0KLSAgICAg ICAgICAgIGlmIHNlbGYuaXNfZGlzY29ubmVjdGVkKHBlKToKLSAgICAgICAgICAgICAgICByYWlz ZSBDb25uZWN0aW9uTG9zdCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwK LSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYiwKLSAgICAgICAgICAgICAgICAgICAgTm9uZSBp ZiBzZWxmLmNvbm5faWRbMDozXSA9PSB1J0RCOicgZWxzZSBzZWxmLmNvbm5faWRbNTpdCi0gICAg ICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBlcnJtc2cKLQotICAgICAg ICBzZWxmLl9fYXN5bmNfY3Vyc29yID0gY3VyCi0gICAgICAgIHNlbGYuX19hc3luY19xdWVyeV9p ZCA9IHF1ZXJ5X2lkCi0KLSAgICAgICAgcmV0dXJuIFRydWUsIHJlcwotCi0gICAgZGVmIGV4ZWN1 dGVfdm9pZChzZWxmLCBxdWVyeSwgcGFyYW1zPU5vbmUsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNn PUZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gZXhlY3V0ZXMgdGhl IGdpdmVuIHF1ZXJ5IHdpdGggbm8gcmVzdWx0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg ICBxdWVyeTogU1FMIHF1ZXJ5IHRvIHJ1bi4KLSAgICAgICAgICAgIHBhcmFtczogZXh0cmEgcGFy YW1ldGVycyB0byB0aGUgZnVuY3Rpb24KLSAgICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25f bXNnOiBpZiBUcnVlIHRoZW4gZnVuY3Rpb24gcmV0dXJuIHRoZQotICAgICAgICAgICAgZm9ybWF0 dGVkIGV4Y2VwdGlvbiBtZXNzYWdlCi0gICAgICAgICIiIgotICAgICAgICBzdGF0dXMsIGN1ciA9 IHNlbGYuX19jdXJzb3IoKQotICAgICAgICBzZWxmLnJvd19jb3VudCA9IDAKLQotICAgICAgICBp ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzdHIoY3VyKQotICAgICAg ICBxdWVyeV9pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpCi0KLSAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmxvZygKLSAgICAgICAgICAgIDI1LAotICAgICAgICAgICAgdSJFeGVjdXRl ICh2b2lkKSBmb3Igc2VydmVyICN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAoUXVlcnktaWQ6ICIK LSAgICAgICAgICAgIHUie3F1ZXJ5X2lkfSk6XG57cXVlcnl9Ii5mb3JtYXQoCi0gICAgICAgICAg ICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAgY29ubl9p ZD1zZWxmLmNvbm5faWQsCi0gICAgICAgICAgICAgICAgcXVlcnk9cXVlcnksCi0gICAgICAgICAg ICAgICAgcXVlcnlfaWQ9cXVlcnlfaWQKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotCi0gICAg ICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbF9ibG9ja2luZ19leGVjdXRlKGN1 ciwgcXVlcnksIHBhcmFtcykKLSAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIHBlOgot ICAgICAgICAgICAgY3VyLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3Rl ZCgpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIG5vdCBzZWxm LnJlY29ubmVjdGluZzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19hdHRlbXB0 X2V4ZWN1dGlvbl9yZWNvbm5lY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1 dGVfdm9pZCwgcXVlcnksIHBhcmFtcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRl ZF9leGNlcHRpb25fbXNnCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICBy YWlzZSBDb25uZWN0aW9uTG9zdCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNp ZCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYiwKLSAgICAgICAgICAgICAgICAgICAgTm9u ZSBpZiBzZWxmLmNvbm5faWRbMDozXSA9PSB1J0RCOicgZWxzZSBzZWxmLmNvbm5faWRbNTpdCi0g ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgZXJybXNnID0gc2VsZi5fZm9ybWF0dGVkX2V4 Y2VwdGlvbl9tc2cocGUsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQotICAgICAgICAgICAgY3Vy cmVudF9hcHAubG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgICAgIHUiRmFpbGVkIHRvIGV4ZWN1 dGUgcXVlcnkgKGV4ZWN1dGVfdm9pZCkgZm9yIHRoZSBzZXJ2ZXIgIgotICAgICAgICAgICAgICAg IHUiI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9KFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbiIKLSAg ICAgICAgICAgICAgICB1IkVycm9yIE1lc3NhZ2U6e2Vycm1zZ30iLmZvcm1hdCgKLSAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAg ICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAotICAgICAgICAgICAgICAgICAgICBxdWVyeT1xdWVy eSwKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywKLSAgICAgICAgICAgICAgICAg ICAgcXVlcnlfaWQ9cXVlcnlfaWQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0g ICAgICAgICAgICByZXR1cm4gRmFsc2UsIGVycm1zZwotCi0gICAgICAgIHNlbGYucm93X2NvdW50 ID0gY3VyLnJvd2NvdW50Ci0KLSAgICAgICAgcmV0dXJuIFRydWUsIE5vbmUKLQotICAgIGRlZiBf X2F0dGVtcHRfZXhlY3V0aW9uX3JlY29ubmVjdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToK LSAgICAgICAgc2VsZi5yZWNvbm5lY3RpbmcgPSBUcnVlCi0gICAgICAgIHNldGF0dHIoZywgInsw fSN7MX0iLmZvcm1hdCgKLSAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAg ICBzZWxmLmNvbm5faWQuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICksIE5vbmUpCi0gICAgICAg IHRyeToKLSAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uZWN0KCkKLSAgICAgICAg ICAgIGlmIHN0YXR1czoKLSAgICAgICAgICAgICAgICBpZiBmbjoKLSAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBmbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgICAg IHNlbGYucmVjb25uZWN0aW5nID0gRmFsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVz LCByZXMKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQotICAgICAgICAgICAgc2VsZi5yZWNvbm5lY3Rpbmcg PSBGYWxzZQotCi0gICAgICAgICAgICBjdXJyZW50X2FwcC53YXJuaW5nKAotICAgICAgICAgICAg ICAgICJGYWlsZWQgdG8gcmVjb25uZWN0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgIgotICAgICAgICAg ICAgICAgICIoI3tzZXJ2ZXJfaWR9KSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKLSAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1zZWxm LmNvbm5faWQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgIHNlbGYu cmVjb25uZWN0aW5nID0gRmFsc2UKLSAgICAgICAgcmFpc2UgQ29ubmVjdGlvbkxvc3QoCi0gICAg ICAgICAgICBzZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgc2VsZi5kYiwKLSAgICAgICAg ICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6M10gPT0gdSdEQjonIGVsc2Ugc2VsZi5jb25uX2lk WzU6XQotICAgICAgICApCi0KLSAgICBkZWYgZXhlY3V0ZV8yZGFycmF5KHNlbGYsIHF1ZXJ5LCBw YXJhbXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25f bXNnPUZhbHNlKToKLSAgICAgICAgc3RhdHVzLCBjdXIgPSBzZWxmLl9fY3Vyc29yKCkKLSAgICAg ICAgc2VsZi5yb3dfY291bnQgPSAwCi0KLSAgICAgICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAg ICAgIHJldHVybiBGYWxzZSwgc3RyKGN1cikKLQotICAgICAgICBxdWVyeV9pZCA9IHJhbmRvbS5y YW5kaW50KDEsIDk5OTk5OTkpCi0gICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5sb2coCi0gICAg ICAgICAgICAyNSwKLSAgICAgICAgICAgIHUiRXhlY3V0ZSAoMmRhcnJheSkgZm9yIHNlcnZlciAj e3NlcnZlcl9pZH0gLSB7Y29ubl9pZH0gIgotICAgICAgICAgICAgdSIoUXVlcnktaWQ6IHtxdWVy eV9pZH0pOlxue3F1ZXJ5fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxm Lm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAotICAg ICAgICAgICAgICAgIHF1ZXJ5PXF1ZXJ5LAotICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5 X2lkCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg c2VsZi5fX2ludGVybmFsX2Jsb2NraW5nX2V4ZWN1dGUoY3VyLCBxdWVyeSwgcGFyYW1zKQotICAg ICAgICBleGNlcHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6Ci0gICAgICAgICAgICBjdXIuY2xvc2Uo KQotICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubmVjdGVkKCk6Ci0gICAgICAgICAgICAgICAg aWYgc2VsZi5hdXRvX3JlY29ubmVjdCBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgbm90 IHNlbGYucmVjb25uZWN0aW5nOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2F0 dGVtcHRfZXhlY3V0aW9uX3JlY29ubmVjdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZXhlY3V0ZV8yZGFycmF5LCBxdWVyeSwgcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAg Zm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg ICAgZXJybXNnID0gc2VsZi5fZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cocGUsIGZvcm1hdHRlZF9l eGNlcHRpb25fbXNnKQotICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9yKAotICAg ICAgICAgICAgICAgIHUiRmFpbGVkIHRvIGV4ZWN1dGUgcXVlcnkgKGV4ZWN1dGVfMmRhcnJheSkg Zm9yIHRoZSBzZXJ2ZXIgIgotICAgICAgICAgICAgICAgIHUiI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5f aWR9IChRdWVyeS1pZDoge3F1ZXJ5X2lkfSk6XG4iCi0gICAgICAgICAgICAgICAgdSJFcnJvciBN ZXNzYWdlOntlcnJtc2d9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1z ZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9p ZCwKLSAgICAgICAgICAgICAgICAgICAgcXVlcnk9cXVlcnksCi0gICAgICAgICAgICAgICAgICAg IGVycm1zZz1lcnJtc2csCi0gICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCi0g ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBlcnJtc2cKLQotICAgICAgICAjIEdldCBSZXN1bHRzZXQgQ29sdW1uIE5hbWUsIFR5cGUgYW5k IHNpemUKLSAgICAgICAgY29sdW1ucyA9IGN1ci5kZXNjcmlwdGlvbiBhbmQgWwotICAgICAgICAg ICAgZGVzYy50b19kaWN0KCkgZm9yIGRlc2MgaW4gY3VyLm9yZGVyZWRfZGVzY3JpcHRpb24oKQot ICAgICAgICBdIG9yIFtdCi0KLSAgICAgICAgcm93cyA9IFtdCi0gICAgICAgIHNlbGYucm93X2Nv dW50ID0gY3VyLnJvd2NvdW50Ci0gICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6Ci0gICAgICAg ICAgICBmb3Igcm93IGluIGN1cjoKLSAgICAgICAgICAgICAgICByb3dzLmFwcGVuZChyb3cpCi0K LSAgICAgICAgcmV0dXJuIFRydWUsIHsnY29sdW1ucyc6IGNvbHVtbnMsICdyb3dzJzogcm93c30K LQotICAgIGRlZiBleGVjdXRlX2RpY3Qoc2VsZiwgcXVlcnksIHBhcmFtcz1Ob25lLCBmb3JtYXR0 ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSk6Ci0gICAgICAgIHN0YXR1cywgY3VyID0gc2VsZi5fX2N1 cnNvcigpCi0gICAgICAgIHNlbGYucm93X2NvdW50ID0gMAotCi0gICAgICAgIGlmIG5vdCBzdGF0 dXM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihjdXIpCi0gICAgICAgIHF1ZXJ5X2lk ID0gcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkKLSAgICAgICAgY3VycmVudF9hcHAubG9nZ2Vy LmxvZygKLSAgICAgICAgICAgIDI1LAotICAgICAgICAgICAgdSJFeGVjdXRlIChkaWN0KSBmb3Ig c2VydmVyICN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAoUXVlcnktaWQ6ICIKLSAgICAgICAgICAg IHUie3F1ZXJ5X2lkfSk6XG57cXVlcnl9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgc2VydmVy X2lkPXNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5f aWQsCi0gICAgICAgICAgICAgICAgcXVlcnk9cXVlcnksCi0gICAgICAgICAgICAgICAgcXVlcnlf aWQ9cXVlcnlfaWQKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICAgICB0cnk6Ci0gICAg ICAgICAgICBzZWxmLl9faW50ZXJuYWxfYmxvY2tpbmdfZXhlY3V0ZShjdXIsIHF1ZXJ5LCBwYXJh bXMpCi0gICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBwZToKLSAgICAgICAgICAgIGN1 ci5jbG9zZSgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uZWN0ZWQoKToKLSAgICAgICAg ICAgICAgICBpZiBzZWxmLmF1dG9fcmVjb25uZWN0IGFuZCBub3Qgc2VsZi5yZWNvbm5lY3Rpbmc6 Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fYXR0ZW1wdF9leGVjdXRpb25fcmVj b25uZWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRlX2RpY3QsIHF1ZXJ5 LCBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21z ZwotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv bkxvc3QoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsCi0gICAgICAgICAg ICAgICAgICAgIHNlbGYuZGIsCi0gICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25u X2lkWzA6M10gPT0gdSdEQjonIGVsc2Ugc2VsZi5jb25uX2lkWzU6XQotICAgICAgICAgICAgICAg ICkKLSAgICAgICAgICAgIGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKHBl LCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZykKLSAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dl ci5lcnJvcigKLSAgICAgICAgICAgICAgICB1IkZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5IChleGVj dXRlX2RpY3QpIGZvciB0aGUgc2VydmVyICIKLSAgICAgICAgICAgICAgICB1IiN7c2VydmVyX2lk fS0ge2Nvbm5faWR9IChRdWVyeS1pZDoge3F1ZXJ5X2lkfSk6XG4iCi0gICAgICAgICAgICAgICAg dSJFcnJvciBNZXNzYWdlOntlcnJtc2d9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHNl cnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAotICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXNl bGYuY29ubl9pZCwKLSAgICAgICAgICAgICAgICAgICAgcXVlcnlfaWQ9cXVlcnlfaWQsCi0gICAg ICAgICAgICAgICAgICAgIGVycm1zZz1lcnJtc2cKLSAgICAgICAgICAgICAgICApCi0gICAgICAg ICAgICApCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIGVycm1zZwotCi0gICAgICAgICMgR2V0 IFJlc3VsdHNldCBDb2x1bW4gTmFtZSwgVHlwZSBhbmQgc2l6ZQotICAgICAgICBjb2x1bW5zID0g Y3VyLmRlc2NyaXB0aW9uIGFuZCBbCi0gICAgICAgICAgICBkZXNjLnRvX2RpY3QoKSBmb3IgZGVz YyBpbiBjdXIub3JkZXJlZF9kZXNjcmlwdGlvbigpCi0gICAgICAgIF0gb3IgW10KLQotICAgICAg ICByb3dzID0gW10KLSAgICAgICAgc2VsZi5yb3dfY291bnQgPSBjdXIucm93Y291bnQKLSAgICAg ICAgaWYgY3VyLnJvd2NvdW50ID4gMDoKLSAgICAgICAgICAgIGZvciByb3cgaW4gY3VyOgotICAg ICAgICAgICAgICAgIHJvd3MuYXBwZW5kKGRpY3Qocm93KSkKLQotICAgICAgICByZXR1cm4gVHJ1 ZSwgeydjb2x1bW5zJzogY29sdW1ucywgJ3Jvd3MnOiByb3dzfQotCi0gICAgZGVmIGFzeW5jX2Zl dGNobWFueV8yZGFycmF5KHNlbGYsIHJlY29yZHM9MjAwMCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2UpOgotICAgICAgICAiIiIK LSAgICAgICAgVXNlciBzaG91bGQgcG9sbCBhbmQgY2hlY2sgaWYgc3RhdHVzIGlzIEFTWU5DX09L IGJlZm9yZSBjYWxsaW5nIHRoaXMKLSAgICAgICAgZnVuY3Rpb24KLSAgICAgICAgQXJnczoKLSAg ICAgICAgICByZWNvcmRzOiBubyBvZiByZWNvcmRzIHRvIGZldGNoLiB1c2UgLTEgdG8gZmV0Y2hh bGwuCi0gICAgICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6Ci0KLSAgICAgICAgUmV0dXJu czoKLQotICAgICAgICAiIiIKLSAgICAgICAgY3VyID0gc2VsZi5fX2FzeW5jX2N1cnNvcgotICAg ICAgICBpZiBub3QgY3VyOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBnZXR0ZXh0KAotICAg ICAgICAgICAgICAgICJDdXJzb3IgY291bGQgbm90IGJlIGZvdW5kIGZvciB0aGUgYXN5bmMgY29u bmVjdGlvbi4iCi0gICAgICAgICAgICApCi0KLSAgICAgICAgaWYgc2VsZi5jb25uLmlzZXhlY3V0 aW5nKCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoCi0gICAgICAgICAgICAg ICAgIkFzeW5jaHJvbm91cyBxdWVyeSBleGVjdXRpb24vb3BlcmF0aW9uIHVuZGVyd2F5LiIKLSAg ICAgICAgICAgICkKLQotICAgICAgICBpZiBzZWxmLnJvd19jb3VudCA+IDA6Ci0gICAgICAgICAg ICByZXN1bHQgPSBbXQotICAgICAgICAgICAgIyBGb3IgRERMIG9wZXJhdGlvbiwgd2UgbWF5IG5v dCBoYXZlIHJlc3VsdC4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgQmVjYXVzZSAtIHRo ZXJlIGlzIG5vdCBkaXJlY3Qgd2F5IHRvIGRpZmZlcmVudGlhdGUgRE1MIGFuZAotICAgICAgICAg ICAgIyBEREwgb3BlcmF0aW9ucywgd2UgbmVlZCB0byByZWx5IG9uIGV4Y2VwdGlvbiB0byBmaWd1 cmUKLSAgICAgICAgICAgICMgdGhhdCBvdXQgYXQgdGhlIG1vbWVudC4KLSAgICAgICAgICAgIHRy eToKLSAgICAgICAgICAgICAgICBpZiByZWNvcmRzID09IC0xOgotICAgICAgICAgICAgICAgICAg ICByZXMgPSBjdXIuZmV0Y2hhbGwoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICAgICAgICAgIHJlcyA9IGN1ci5mZXRjaG1hbnkocmVjb3JkcykKLSAgICAgICAgICAgICAgICBm b3Igcm93IGluIHJlczoKLSAgICAgICAgICAgICAgICAgICAgbmV3X3JvdyA9IFtdCi0gICAgICAg ICAgICAgICAgICAgIGZvciBjb2wgaW4gc2VsZi5jb2x1bW5faW5mbzoKLSAgICAgICAgICAgICAg ICAgICAgICAgIG5ld19yb3cuYXBwZW5kKHJvd1tjb2xbJ25hbWUnXV0pCi0gICAgICAgICAgICAg ICAgICAgIHJlc3VsdC5hcHBlbmQobmV3X3JvdykKLSAgICAgICAgICAgIGV4Y2VwdCBwc3ljb3Bn Mi5Qcm9ncmFtbWluZ0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQot ICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBVc2VyIHBlcmZvcm1lZCBvcGVyYXRpb24gd2hp Y2ggZG9zZSBub3QgcHJvZHVjZSByZWNvcmQvcyBhcwotICAgICAgICAgICAgIyByZXN1bHQuCi0g ICAgICAgICAgICAjIGZvciBlZy4gRERMIG9wZXJhdGlvbnMuCi0gICAgICAgICAgICByZXR1cm4g VHJ1ZSwgTm9uZQotCi0gICAgICAgIHJldHVybiBUcnVlLCByZXN1bHQKLQotICAgIGRlZiBjb25u ZWN0ZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY29ubjoKLSAgICAgICAgICAgIGlmIG5vdCBz ZWxmLmNvbm4uY2xvc2VkOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAg ICBzZWxmLmNvbm4gPSBOb25lCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIHJlc2V0 KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNvbm46Ci0gICAgICAgICAgICBpZiBzZWxmLmNvbm4u Y2xvc2VkOgotICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKLSAgICAgICAgcGdfY29u biA9IE5vbmUKLSAgICAgICAgbWdyID0gc2VsZi5tYW5hZ2VyCi0KLSAgICAgICAgcGFzc3dvcmQg PSBnZXRhdHRyKG1nciwgJ3Bhc3N3b3JkJywgTm9uZSkKLQotICAgICAgICBpZiBwYXNzd29yZDoK LSAgICAgICAgICAgICMgRmV0Y2ggTG9nZ2VkIGluIFVzZXIgRGV0YWlscy4KLSAgICAgICAgICAg IHVzZXIgPSBVc2VyLnF1ZXJ5LmZpbHRlcl9ieShpZD1jdXJyZW50X3VzZXIuaWQpLmZpcnN0KCkK LQotICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZ2V0dGV4dCgiVW5hdXRob3JpemVkIHJlcXVlc3QuIikKLQotICAgICAgICAgICAgcGFz c3dvcmQgPSBkZWNyeXB0KHBhc3N3b3JkLCB1c2VyLnBhc3N3b3JkKS5kZWNvZGUoKQotCi0gICAg ICAgIHRyeToKLSAgICAgICAgICAgIHBnX2Nvbm4gPSBwc3ljb3BnMi5jb25uZWN0KAotICAgICAg ICAgICAgICAgIGhvc3Q9bWdyLmhvc3QsCi0gICAgICAgICAgICAgICAgaG9zdGFkZHI9bWdyLmhv c3RhZGRyLAotICAgICAgICAgICAgICAgIHBvcnQ9bWdyLnBvcnQsCi0gICAgICAgICAgICAgICAg ZGF0YWJhc2U9c2VsZi5kYiwKLSAgICAgICAgICAgICAgICB1c2VyPW1nci51c2VyLAotICAgICAg ICAgICAgICAgIHBhc3N3b3JkPXBhc3N3b3JkLAotICAgICAgICAgICAgICAgIHBhc3NmaWxlPWdl dF9jb21wbGV0ZV9maWxlX3BhdGgobWdyLnBhc3NmaWxlKSwKLSAgICAgICAgICAgICAgICBzc2xt b2RlPW1nci5zc2xfbW9kZSwKLSAgICAgICAgICAgICAgICBzc2xjZXJ0PWdldF9jb21wbGV0ZV9m aWxlX3BhdGgobWdyLnNzbGNlcnQpLAotICAgICAgICAgICAgICAgIHNzbGtleT1nZXRfY29tcGxl dGVfZmlsZV9wYXRoKG1nci5zc2xrZXkpLAotICAgICAgICAgICAgICAgIHNzbHJvb3RjZXJ0PWdl dF9jb21wbGV0ZV9maWxlX3BhdGgobWdyLnNzbHJvb3RjZXJ0KSwKLSAgICAgICAgICAgICAgICBz c2xjcmw9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChtZ3Iuc3NsY3JsKSwKLSAgICAgICAgICAgICAg ICBzc2xjb21wcmVzc2lvbj1UcnVlIGlmIG1nci5zc2xjb21wcmVzc2lvbiBlbHNlIEZhbHNlCi0g ICAgICAgICAgICApCi0KLSAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIGU6Ci0gICAg ICAgICAgICBtc2cgPSBlLnBnZXJyb3IgaWYgZS5wZ2Vycm9yIGVsc2UgZS5tZXNzYWdlIFwKLSAg ICAgICAgICAgICAgICBpZiBlLm1lc3NhZ2UgZWxzZSBlLmRpYWcubWVzc2FnZV9kZXRhaWwgXAot ICAgICAgICAgICAgICAgIGlmIGUuZGlhZy5tZXNzYWdlX2RldGFpbCBlbHNlIHN0cihlKQotCi0g ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCi0gICAgICAgICAgICAgICAgZ2V0 dGV4dCgKLSAgICAgICAgICAgICAgICAgICAgIiIiCi1GYWlsZWQgdG8gcmVzZXQgdGhlIGNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBkdWUgdG8gZm9sbG93aW5nIGVycm9yOgotezB9IiIiCi0gICAg ICAgICAgICAgICAgKS5Gb3JtYXQobXNnKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgcmV0 dXJuIEZhbHNlLCBtc2cKLQotICAgICAgICBwZ19jb25uLm5vdGljZXMgPSBkZXF1ZShbXSwgc2Vs Zi5BU1lOQ19OT1RJQ0VfTUFYTEVOR1RIKQotICAgICAgICBzZWxmLmNvbm4gPSBwZ19jb25uCi0g ICAgICAgIHNlbGYuX19iYWNrZW5kX3BpZCA9IHBnX2Nvbm4uZ2V0X2JhY2tlbmRfcGlkKCkKLQot ICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQotCi0gICAgZGVmIHRyYW5zYWN0aW9uX3N0YXR1cyhz ZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25uOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29u bi5nZXRfdHJhbnNhY3Rpb25fc3RhdHVzKCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRl ZiBwaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRlX3NjYWxhcignU0VMRUNU IDEnKQotCi0gICAgZGVmIF9yZWxlYXNlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLndhc0Nvbm5l Y3RlZDoKLSAgICAgICAgICAgIGlmIHNlbGYuY29ubjoKLSAgICAgICAgICAgICAgICBzZWxmLmNv bm4uY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKLSAgICAgICAgICAg IHNlbGYucGFzc3dvcmQgPSBOb25lCi0gICAgICAgICAgICBzZWxmLndhc0Nvbm5lY3RlZCA9IEZh bHNlCi0KLSAgICBkZWYgX3dhaXQoc2VsZiwgY29ubik6Ci0gICAgICAgICIiIgotICAgICAgICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRoZSBhc3luY2hyb25vdXMgY29ubmVjdGlvbiwKLSAg ICAgICAgaXQgd2lsbCBjYWxsIHBvbGwgbWV0aG9kIGluIGEgaW5maW5pdGUgbG9vcCB0aWxsIHBv bGwKLSAgICAgICAgcmV0dXJucyBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfT0suIFRoaXMgaXMg YSBibG9ja2luZwotICAgICAgICBjYWxsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBj b25uOiBjb25uZWN0aW9uIG9iamVjdAotICAgICAgICAiIiIKLQotICAgICAgICB3aGlsZSAxOgot ICAgICAgICAgICAgc3RhdGUgPSBjb25uLnBvbGwoKQotICAgICAgICAgICAgaWYgc3RhdGUgPT0g cHN5Y29wZzIuZXh0ZW5zaW9ucy5QT0xMX09LOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg ICAgICAgICBlbGlmIHN0YXRlID09IHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9XUklURToKLSAg ICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbY29ubi5maWxlbm8oKV0sIFtdKQotICAg ICAgICAgICAgZWxpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfUkVBRDoKLSAg ICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtjb25uLmZpbGVubygpXSwgW10sIFtdKQotICAg ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBwc3ljb3BnMi5PcGVyYXRpb25h bEVycm9yKAotICAgICAgICAgICAgICAgICAgICAicG9sbCgpIHJldHVybmVkICVzIGZyb20gX3dh aXQgZnVuY3Rpb24iICUgc3RhdGUpCi0KLSAgICBkZWYgX3dhaXRfdGltZW91dChzZWxmLCBjb25u KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgdGhlIGFz eW5jaHJvbm91cyBjb25uZWN0aW9uLAotICAgICAgICBpdCB3aWxsIGNhbGwgcG9sbCBtZXRob2Qg YW5kIHJldHVybiB0aGUgc3RhdHVzLiBJZiBzdGF0ZSBpcwotICAgICAgICBwc3ljb3BnMi5leHRl bnNpb25zLlBPTExfV1JJVEUgYW5kIHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9SRUFECi0gICAg ICAgIGZ1bmN0aW9uIHdpbGwgd2FpdCBmb3IgdGhlIGdpdmVuIHRpbWVvdXQuVGhpcyBpcyBub3Qg YSBibG9ja2luZyBjYWxsLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjb25uOiBjb25u ZWN0aW9uIG9iamVjdAotICAgICAgICAiIiIKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAg IHN0YXRlID0gY29ubi5wb2xsKCkKLSAgICAgICAgICAgIGlmIHN0YXRlID09IHBzeWNvcGcyLmV4 dGVuc2lvbnMuUE9MTF9PSzoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5BU1lOQ19PSwot ICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfV1JJVEU6 Ci0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlbiBjaGVj ayB0aGUgcmV0dXJuIHN0YXR1cwotICAgICAgICAgICAgICAgICMgSWYgdGhyZWUgZW1wdHkgbGlz dHMgYXJlIHJldHVybmVkIHRoZW4gdGhlIHRpbWUtb3V0IGlzCi0gICAgICAgICAgICAgICAgIyBy ZWFjaGVkLgotICAgICAgICAgICAgICAgIHRpbWVvdXRfc3RhdHVzID0gc2VsZWN0LnNlbGVjdChb XSwgW2Nvbm4uZmlsZW5vKCldLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5BU1lOQ19USU1FT1VUKQotICAgICAgICAgICAgICAgIGlmIHRp bWVvdXRfc3RhdHVzID09IChbXSwgW10sIFtdKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuQVNZTkNfV1JJVEVfVElNRU9VVAotICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSBwc3lj b3BnMi5leHRlbnNpb25zLlBPTExfUkVBRDoKLSAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIHRo ZSBnaXZlbiB0aW1lIGFuZCB0aGVuIGNoZWNrIHRoZSByZXR1cm4gc3RhdHVzCi0gICAgICAgICAg ICAgICAgIyBJZiB0aHJlZSBlbXB0eSBsaXN0cyBhcmUgcmV0dXJuZWQgdGhlbiB0aGUgdGltZS1v dXQgaXMKLSAgICAgICAgICAgICAgICAjIHJlYWNoZWQuCi0gICAgICAgICAgICAgICAgdGltZW91 dF9zdGF0dXMgPSBzZWxlY3Quc2VsZWN0KFtjb25uLmZpbGVubygpXSwgW10sIFtdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkFTWU5DX1RJTUVP VVQpCi0gICAgICAgICAgICAgICAgaWYgdGltZW91dF9zdGF0dXMgPT0gKFtdLCBbXSwgW10pOgot ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5BU1lOQ19SRUFEX1RJTUVPVVQKLSAgICAg ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgcHN5Y29wZzIuT3BlcmF0aW9uYWxF cnJvcigKLSAgICAgICAgICAgICAgICAgICAgInBvbGwoKSByZXR1cm5lZCAlcyBmcm9tIF93YWl0 X3RpbWVvdXQgZnVuY3Rpb24iICUgc3RhdGUKLSAgICAgICAgICAgICAgICApCi0KLSAgICBkZWYg cG9sbChzZWxmLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSwgbm9fcmVzdWx0PUZhbHNl KToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3Vu ZCBjb25uZWN0aW9uJ3MgcG9sbCBmdW5jdGlvbi4KLSAgICAgICAgSXQgaW50ZXJuYWxseSB1c2Vz IHRoZSBfd2FpdF90aW1lb3V0IG1ldGhvZCB0byBwb2xsIHRoZQotICAgICAgICByZXN1bHQgb24g dGhlIGNvbm5lY3Rpb24gb2JqZWN0LiBJbiBjYXNlIG9mIHN1Y2Nlc3MgaXQKLSAgICAgICAgcmV0 dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBxdWVyeS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg ICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c6IGlmIFRydWUgdGhlbiBmdW5jdGlvbiByZXR1cm4g dGhlIGZvcm1hdHRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw dGlvbiBtZXNzYWdlLCBvdGhlcndpc2UgZXJyb3Igc3RyaW5nLgotICAgICAgICAgICAgbm9fcmVz dWx0OiBJZiBUcnVlIHRoZW4gb25seSBwb2xsIHN0YXR1cyB3aWxsIGJlIHJldHVybmVkLgotICAg ICAgICAiIiIKLQotICAgICAgICBjdXIgPSBzZWxmLl9fYXN5bmNfY3Vyc29yCi0gICAgICAgIGlm IG5vdCBjdXI6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoCi0gICAgICAgICAg ICAgICAgIkN1cnNvciBjb3VsZCBub3QgYmUgZm91bmQgZm9yIHRoZSBhc3luYyBjb25uZWN0aW9u LiIKLSAgICAgICAgICAgICkKLQotICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKAotICAg ICAgICAgICAgMjUsCi0gICAgICAgICAgICAiUG9sbGluZyByZXN1bHQgZm9yIChRdWVyeS1pZDog e3F1ZXJ5X2lkfSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBxdWVyeV9pZD1zZWxmLl9fYXN5 bmNfcXVlcnlfaWQKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotCi0gICAgICAgIGlzX2Vycm9y ID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3RhdHVzID0gc2VsZi5fd2FpdF90 aW1lb3V0KHNlbGYuY29ubikKLSAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIHBlOgot ICAgICAgICAgICAgaWYgc2VsZi5jb25uLmNsb3NlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBD b25uZWN0aW9uTG9zdCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwKLSAg ICAgICAgICAgICAgICAgICAgc2VsZi5kYiwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25u X2lkWzU6XQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIGVycm1zZyA9IHNlbGYuX2Zv cm1hdHRlZF9leGNlcHRpb25fbXNnKHBlLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZykKLSAgICAg ICAgICAgIGlzX2Vycm9yID0gVHJ1ZQotCi0gICAgICAgIGlmIHNlbGYuY29ubi5ub3RpY2VzIGFu ZCBzZWxmLl9fbm90aWNlcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX19ub3RpY2Vz LmV4dGVuZChzZWxmLmNvbm4ubm90aWNlcykKLSAgICAgICAgICAgIHNlbGYuY29ubi5ub3RpY2Vz LmNsZWFyKCkKLQotICAgICAgICAjIFdlIGFsc28gbmVlZCB0byBmZXRjaCBub3RpY2VzIGJlZm9y ZSB3ZSByZXR1cm4gZnJvbSBmdW5jdGlvbiBpbiBjYXNlCi0gICAgICAgICMgb2YgYW55IEV4Y2Vw dGlvbiwgVG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbiB3ZSB3aWxsIHJldHVybiBhZnRlcgotICAg ICAgICAjIGZldGNoaW5nIHRoZSBub3RpY2VzIGluIGNhc2Ugb2YgYW55IEV4Y2VwdGlvbgotICAg ICAgICBpZiBpc19lcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZXJybXNnCi0KLSAg ICAgICAgcmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLnJvd19jb3VudCA9IDAKLSAgICAgICAg c2VsZi5jb2x1bW5faW5mbyA9IE5vbmUKLQotICAgICAgICBpZiBzdGF0dXMgPT0gc2VsZi5BU1lO Q19PSzoKLQotICAgICAgICAgICAgIyBpZiB1c2VyIGhhcyBjYW5jZWxsZWQgdGhlIHRyYW5zYWN0 aW9uIHRoZW4gY2hhbmdlZCB0aGUgc3RhdHVzCi0gICAgICAgICAgICBpZiBzZWxmLmV4ZWN1dGlv bl9hYm9ydGVkOgotICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuQVNZTkNfRVhFQ1VUSU9O X0FCT1JURUQKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGlvbl9hYm9ydGVkID0gRmFsc2UK LSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzLCByZXN1bHQKLQotICAgICAgICAgICAgIyBG ZXRjaCB0aGUgY29sdW1uIGluZm9ybWF0aW9uCi0gICAgICAgICAgICBpZiBjdXIuZGVzY3JpcHRp b24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb2x1bW5faW5mbyA9IFsKLSAg ICAgICAgICAgICAgICAgICAgZGVzYy50b19kaWN0KCkgZm9yIGRlc2MgaW4gY3VyLm9yZGVyZWRf ZGVzY3JpcHRpb24oKQotICAgICAgICAgICAgICAgIF0KLQotICAgICAgICAgICAgICAgIHBvcyA9 IDAKLSAgICAgICAgICAgICAgICBmb3IgY29sIGluIHNlbGYuY29sdW1uX2luZm86Ci0gICAgICAg ICAgICAgICAgICAgIGNvbFsncG9zJ10gPSBwb3MKLSAgICAgICAgICAgICAgICAgICAgcG9zICs9 IDEKLQotICAgICAgICAgICAgc2VsZi5yb3dfY291bnQgPSBjdXIucm93Y291bnQKLSAgICAgICAg ICAgIGlmIG5vdCBub19yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgaWYgY3VyLnJvd2NvdW50ID4g MDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgICAgICAgICAg IyBGb3IgRERMIG9wZXJhdGlvbiwgd2UgbWF5IG5vdCBoYXZlIHJlc3VsdC4KLSAgICAgICAgICAg ICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2UgLSB0aGVyZSBpcyBub3Qg ZGlyZWN0IHdheSB0byBkaWZmZXJlbnRpYXRlIERNTAotICAgICAgICAgICAgICAgICAgICAjIGFu ZCBEREwgb3BlcmF0aW9ucywgd2UgbmVlZCB0byByZWx5IG9uIGV4Y2VwdGlvbiB0bwotICAgICAg ICAgICAgICAgICAgICAjIGZpZ3VyZSB0aGF0IG91dCBhdCB0aGUgbW9tZW50LgotICAgICAgICAg ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGluIGN1cjoK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm93ID0gW10KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgY29sIGluIHNlbGYuY29sdW1uX2luZm86Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5ld19yb3cuYXBwZW5kKHJvd1tjb2xbJ25hbWUnXV0pCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChuZXdfcm93KQotCi0gICAgICAg ICAgICAgICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5Qcm9ncmFtbWluZ0Vycm9yOgotICAgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQotCi0gICAgICAgIHJldHVybiBzdGF0dXMsIHJl c3VsdAotCi0gICAgZGVmIHN0YXR1c19tZXNzYWdlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgc3RhdHVzIG1lc3NhZ2UgcmV0dXJuZWQg YnkgdGhlIGxhc3QKLSAgICAgICAgY29tbWFuZCBleGVjdXRlZCBvbiB0aGUgc2VydmVyLgotICAg ICAgICAiIiIKLSAgICAgICAgY3VyID0gc2VsZi5fX2FzeW5jX2N1cnNvcgotICAgICAgICBpZiBu b3QgY3VyOgotICAgICAgICAgICAgcmV0dXJuIGdldHRleHQoCi0gICAgICAgICAgICAgICAgIkN1 cnNvciBjb3VsZCBub3QgYmUgZm91bmQgZm9yIHRoZSBhc3luYyBjb25uZWN0aW9uLiIKLSAgICAg ICAgICAgICkKLQotICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKAotICAgICAgICAgICAg MjUsCi0gICAgICAgICAgICAiU3RhdHVzIG1lc3NhZ2UgZm9yIChRdWVyeS1pZDoge3F1ZXJ5X2lk fSkiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBxdWVyeV9pZD1zZWxmLl9fYXN5bmNfcXVlcnlf aWQKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotCi0gICAgICAgIHJldHVybiBjdXIuc3RhdHVz bWVzc2FnZQotCi0gICAgZGVmIHJvd3NfYWZmZWN0ZWQoc2VsZik6Ci0gICAgICAgICIiIgotICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBubyBvZiByb3dzIGFmZmVjdGVkIGJ5 IHRoZSBsYXN0IGNvbW1hbmQKLSAgICAgICAgZXhlY3V0ZWQgb24gdGhlIHNlcnZlci4KLSAgICAg ICAgIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucm93X2NvdW50Ci0KLSAgICBkZWYgZ2V0X2Nv bHVtbl9pbmZvKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IHJldHVybnMgbGlzdCBvZiBjb2x1bW5zIGZvciBsYXN0IGFzeW5jIHNxbCBjb21tYW5kCi0gICAg ICAgIGV4ZWN1dGVkIG9uIHRoZSBzZXJ2ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJldHVy biBzZWxmLmNvbHVtbl9pbmZvCi0KLSAgICBkZWYgY2FuY2VsX3RyYW5zYWN0aW9uKHNlbGYsIGNv bm5faWQsIGRpZD1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNhY3Rpb24KLSAgICAgICAgb2YgdGhlIGdp dmVuIGNvbm5lY3Rpb24gaWQgYW5kIGRhdGFiYXNlIGlkIHVzaW5nCi0gICAgICAgIFBvc3RncmVT UUwncyBwZ19jYW5jZWxfYmFja2VuZC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY29u bl9pZDogQ29ubmVjdGlvbiBpZAotICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBpZCAob3B0aW9u YWwpCi0gICAgICAgICIiIgotICAgICAgICBjYW5jZWxfY29ubiA9IHNlbGYubWFuYWdlci5jb25u ZWN0aW9uKGRpZD1kaWQsIGNvbm5faWQ9Y29ubl9pZCkKLSAgICAgICAgcXVlcnkgPSAiIiJTRUxF Q1QgcGdfY2FuY2VsX2JhY2tlbmQoezB9KTsiIiIuZm9ybWF0KAotICAgICAgICAgICAgY2FuY2Vs X2Nvbm4uX19iYWNrZW5kX3BpZCkKLQotICAgICAgICBzdGF0dXMgPSBUcnVlCi0gICAgICAgIG1z ZyA9ICcnCi0KLSAgICAgICAgIyBpZiBiYWNrZW5kIHBpZCBpcyBzYW1lIHRoZW4gY3JlYXRlIGEg bmV3IGNvbm5lY3Rpb24KLSAgICAgICAgIyB0byBjYW5jZWwgdGhlIHF1ZXJ5IGFuZCByZWxlYXNl IGl0LgotICAgICAgICBpZiBjYW5jZWxfY29ubi5fX2JhY2tlbmRfcGlkID09IHNlbGYuX19iYWNr ZW5kX3BpZDoKLSAgICAgICAgICAgIHBhc3N3b3JkID0gZ2V0YXR0cihzZWxmLm1hbmFnZXIsICdw YXNzd29yZCcsIE5vbmUpCi0gICAgICAgICAgICBpZiBwYXNzd29yZDoKLSAgICAgICAgICAgICAg ICAjIEZldGNoIExvZ2dlZCBpbiBVc2VyIERldGFpbHMuCi0gICAgICAgICAgICAgICAgdXNlciA9 IFVzZXIucXVlcnkuZmlsdGVyX2J5KGlkPWN1cnJlbnRfdXNlci5pZCkuZmlyc3QoKQotICAgICAg ICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBnZXR0ZXh0KCJVbmF1dGhvcml6ZWQgcmVxdWVzdC4iKQotCi0gICAgICAgICAgICAgICAg cGFzc3dvcmQgPSBkZWNyeXB0KHBhc3N3b3JkLCB1c2VyLnBhc3N3b3JkKS5kZWNvZGUoKQotCi0g ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGdfY29ubiA9IHBzeWNvcGcyLmNvbm5l Y3QoCi0gICAgICAgICAgICAgICAgICAgIGhvc3Q9c2VsZi5tYW5hZ2VyLmhvc3QsCi0gICAgICAg ICAgICAgICAgICAgIGhvc3RhZGRyPXNlbGYubWFuYWdlci5ob3N0YWRkciwKLSAgICAgICAgICAg ICAgICAgICAgcG9ydD1zZWxmLm1hbmFnZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9c2VsZi5kYiwKLSAgICAgICAgICAgICAgICAgICAgdXNlcj1zZWxmLm1hbmFnZXIudXNl ciwKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9cGFzc3dvcmQsCi0gICAgICAgICAgICAg ICAgICAgIHBhc3NmaWxlPWdldF9jb21wbGV0ZV9maWxlX3BhdGgoc2VsZi5tYW5hZ2VyLnBhc3Nm aWxlKSwKLSAgICAgICAgICAgICAgICAgICAgc3NsbW9kZT1zZWxmLm1hbmFnZXIuc3NsX21vZGUs Ci0gICAgICAgICAgICAgICAgICAgIHNzbGNlcnQ9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChzZWxm Lm1hbmFnZXIuc3NsY2VydCksCi0gICAgICAgICAgICAgICAgICAgIHNzbGtleT1nZXRfY29tcGxl dGVfZmlsZV9wYXRoKHNlbGYubWFuYWdlci5zc2xrZXkpLAotICAgICAgICAgICAgICAgICAgICBz c2xyb290Y2VydD1nZXRfY29tcGxldGVfZmlsZV9wYXRoKAotICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYW5hZ2VyLnNzbHJvb3RjZXJ0Ci0gICAgICAgICAgICAgICAgICAgICksCi0gICAg ICAgICAgICAgICAgICAgIHNzbGNybD1nZXRfY29tcGxldGVfZmlsZV9wYXRoKHNlbGYubWFuYWdl ci5zc2xjcmwpLAotICAgICAgICAgICAgICAgICAgICBzc2xjb21wcmVzc2lvbj1UcnVlIGlmIHNl bGYubWFuYWdlci5zc2xjb21wcmVzc2lvbgotICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNl Ci0gICAgICAgICAgICAgICAgKQotCi0gICAgICAgICAgICAgICAgIyBHZXQgdGhlIGN1cnNvciBh bmQgcnVuIHRoZSBxdWVyeQotICAgICAgICAgICAgICAgIGN1ciA9IHBnX2Nvbm4uY3Vyc29yKCkK LSAgICAgICAgICAgICAgICBjdXIuZXhlY3V0ZShxdWVyeSkKLQotICAgICAgICAgICAgICAgICMg Q2xvc2UgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICBwZ19jb25uLmNsb3NlKCkKLSAg ICAgICAgICAgICAgICBwZ19jb25uID0gTm9uZQotCi0gICAgICAgICAgICBleGNlcHQgcHN5Y29w ZzIuRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBGYWxzZQotICAgICAgICAg ICAgICAgIGlmIGUucGdlcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gZS5wZ2Vycm9y Ci0gICAgICAgICAgICAgICAgZWxpZiBlLmRpYWcubWVzc2FnZV9kZXRhaWw6Ci0gICAgICAgICAg ICAgICAgICAgIG1zZyA9IGUuZGlhZy5tZXNzYWdlX2RldGFpbAotICAgICAgICAgICAgICAgIGVs c2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9IHN0cihlKQotICAgICAgICAgICAgICAgIHJl dHVybiBzdGF0dXMsIG1zZwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2VsZi5jb25u ZWN0ZWQoKToKLSAgICAgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHNlbGYuZXhlY3V0ZV92b2lk KHF1ZXJ5KQotCi0gICAgICAgICAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAgICAgICAgICAg ICBjYW5jZWxfY29ubi5leGVjdXRpb25fYWJvcnRlZCA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gRmFsc2UKLSAgICAgICAgICAgICAgICBtc2cgPSBn ZXR0ZXh0KCJOb3QgY29ubmVjdGVkIHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIuIikKLQotICAgICAg ICByZXR1cm4gc3RhdHVzLCBtc2cKLQotICAgIGRlZiBtZXNzYWdlcyhzZWxmKToKLSAgICAgICAg IiIiCi0gICAgICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgdGhlIG1lc3NhZ2VzL25vdGljZXMgc2Vu ZCBmcm9tIHRoZSBkYXRhYmFzZSBzZXJ2ZXIuCi0gICAgICAgICIiIgotICAgICAgICByZXNwID0g W10KLSAgICAgICAgd2hpbGUgc2VsZi5fX25vdGljZXM6Ci0gICAgICAgICAgICByZXNwLmFwcGVu ZChzZWxmLl9fbm90aWNlcy5wb3AoMCkpCi0gICAgICAgIHJldHVybiByZXNwCi0KLSAgICBkZWYg ZGVjb2RlX3RvX3V0Zjgoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBt ZXRob2Qgd2lsbCBkZWNvZGUgdmFsdWVzIHRvIHV0Zi04Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAg ICAgICB2YWx1ZTogU3RyaW5nIHRvIGJlIGRlY29kZQotCi0gICAgICAgIFJldHVybnM6Ci0gICAg ICAgICAgICBEZWNvZGVkIHN0cmluZwotICAgICAgICAiIiIKLSAgICAgICAgaXNfZXJyb3IgPSBG YWxzZQotICAgICAgICBpZiBoYXNhdHRyKHN0ciwgJ2RlY29kZScpOgotICAgICAgICAgICAgdHJ5 OgotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAg ICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgICMgTGV0J3Mg dHJ5IHdpdGggcHl0aG9uJ3MgcHJlZmVycmVkIGVuY29kaW5nCi0gICAgICAgICAgICAgICAgIyBP biBXaW5kb3dzIGxjX21lc3NhZ2VzIG1vc3RseSBoYXMgZW52aXJvbm1lbnQgZGVwZW5kZW50Ci0g ICAgICAgICAgICAgICAgIyBlbmNvZGluZyBsaWtlICdGcmVuY2hfRnJhbmNlLjEyNTInCi0gICAg ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgbG9jYWxlCi0gICAg ICAgICAgICAgICAgICAgIHByZWZfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rp bmcoKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZShwcmVmX2VuY29k aW5nKVwKLSAgICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoJ3V0Zi04JylcCi0gICAgICAg ICAgICAgICAgICAgICAgICAuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgaXNfZXJyb3IgPSBUcnVlCi0gICAgICAg ICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGlzX2Vycm9yID0gVHJ1ZQot Ci0gICAgICAgICMgSWYgc3RpbGwgbm90IGFibGUgdG8gZGVjb2RlIHRoZW4KLSAgICAgICAgaWYg aXNfZXJyb3I6Ci0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZSgnYXNjaWknLCAnaWdu b3JlJykKLQotICAgICAgICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBfZm9ybWF0dGVkX2V4Y2Vw dGlvbl9tc2coc2VsZiwgZXhjZXB0aW9uX29iaiwgZm9ybWF0dGVkX21zZyk6Ci0gICAgICAgICIi IgotICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHBhcnNlIHRoZSBwc3ljb3BnMi5FcnJv ciBvYmplY3QgYW5kIHJldHVybnMgdGhlCi0gICAgICAgIGZvcm1hdHRlZCBlcnJvciBtZXNzYWdl IGlmIGZsYWcgaXMgc2V0IHRvIHRydWUgZWxzZSByZXR1cm4KLSAgICAgICAgbm9ybWFsIGVycm9y IG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGV4Y2VwdGlvbl9vYmo6IGV4 Y2VwdGlvbiBvYmplY3QKLSAgICAgICAgICAgIGZvcm1hdHRlZF9tc2c6IGlmIFRydWUgdGhlbiBm dW5jdGlvbiByZXR1cm4gdGhlIGZvcm1hdHRlZCBleGNlcHRpb24KLSAgICAgICAgICAgIG1lc3Nh Z2UKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgZXhjZXB0aW9uX29iai5wZ2Vycm9yOgotICAg ICAgICAgICAgZXJybXNnID0gZXhjZXB0aW9uX29iai5wZ2Vycm9yCi0gICAgICAgIGVsaWYgZXhj ZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfZGV0YWlsOgotICAgICAgICAgICAgZXJybXNnID0gZXhj ZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfZGV0YWlsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICBlcnJtc2cgPSBzdHIoZXhjZXB0aW9uX29iaikKLSAgICAgICAgIyBlcnJtc2cgbWlnaHQgY29u dGFpbnMgZW5jb2RlZCB2YWx1ZSwgbGV0cyBkZWNvZGUgaXQKLSAgICAgICAgZXJybXNnID0gc2Vs Zi5kZWNvZGVfdG9fdXRmOChlcnJtc2cpCi0KLSAgICAgICAgIyBpZiBmb3JtYXR0ZWRfbXNnIGlz IGZhbHNlIHRoZW4gcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uCi0gICAgICAgIGlmIG5vdCBmb3Jt YXR0ZWRfbXNnOgotICAgICAgICAgICAgcmV0dXJuIGVycm1zZwotCi0gICAgICAgICMgRG8gbm90 IGFwcGVuZCBpZiBlcnJvciBzdGFydHMgd2l0aCBgRVJST1I6YCBhcyBtb3N0IHBnIHJlbGF0ZWQK LSAgICAgICAgIyBlcnJvciBzdGFydHMgd2l0aCBgRVJST1I6YAotICAgICAgICBpZiBub3QgZXJy bXNnLnN0YXJ0c3dpdGgodSdFUlJPUjonKToKLSAgICAgICAgICAgIGVycm1zZyA9IHUnRVJST1I6 ICAnICsgZXJybXNnICsgdSdcblxuJwotCi0gICAgICAgIGlmIGV4Y2VwdGlvbl9vYmouZGlhZy5z ZXZlcml0eSBpcyBub3QgTm9uZSBcCi0gICAgICAgICAgICAgICAgYW5kIGV4Y2VwdGlvbl9vYmou ZGlhZy5tZXNzYWdlX3ByaW1hcnkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBleF9kaWFnX21l c3NhZ2UgPSB1InswfTogIHsxfSIuZm9ybWF0KAotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9v YmouZGlhZy5zZXZlcml0eSwKLSAgICAgICAgICAgICAgICBzZWxmLmRlY29kZV90b191dGY4KGV4 Y2VwdGlvbl9vYmouZGlhZy5tZXNzYWdlX3ByaW1hcnkpCi0gICAgICAgICAgICApCi0gICAgICAg ICAgICAjIElmIGJvdGggZXJyb3JzIGFyZSBkaWZmZXJlbnQgdGhlbiBvbmx5IGFwcGVuZCBpdAot ICAgICAgICAgICAgaWYgZXJybXNnIGFuZCBleF9kaWFnX21lc3NhZ2UgYW5kIFwKLSAgICAgICAg ICAgICAgICBleF9kaWFnX21lc3NhZ2Uuc3RyaXAoKS5zdHJpcCgnXG4nKS5sb3dlcigpIG5vdCBp biBcCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZy5zdHJpcCgpLnN0cmlwKCdcbicpLmxvd2Vy KCk6Ci0gICAgICAgICAgICAgICAgZXJybXNnICs9IGV4X2RpYWdfbWVzc2FnZQotICAgICAgICBl bGlmIGV4Y2VwdGlvbl9vYmouZGlhZy5tZXNzYWdlX3ByaW1hcnkgaXMgbm90IE5vbmU6Ci0gICAg ICAgICAgICBtZXNzYWdlX3ByaW1hcnkgPSBzZWxmLmRlY29kZV90b191dGY4KAotICAgICAgICAg ICAgICAgIGV4Y2VwdGlvbl9vYmouZGlhZy5tZXNzYWdlX3ByaW1hcnkKLSAgICAgICAgICAgICkK LSAgICAgICAgICAgIGlmIG1lc3NhZ2VfcHJpbWFyeS5sb3dlcigpIG5vdCBpbiBlcnJtc2cubG93 ZXIoKToKLSAgICAgICAgICAgICAgICBlcnJtc2cgKz0gbWVzc2FnZV9wcmltYXJ5Ci0KLSAgICAg ICAgaWYgZXhjZXB0aW9uX29iai5kaWFnLnNxbHN0YXRlIGlzIG5vdCBOb25lOgotICAgICAgICAg ICAgaWYgbm90IGVycm1zZy5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICBlcnJtc2cg Kz0gJ1xuJwotICAgICAgICAgICAgZXJybXNnICs9IGdldHRleHQoJ1NRTCBzdGF0ZTogJykKLSAg ICAgICAgICAgIGVycm1zZyArPSBzZWxmLmRlY29kZV90b191dGY4KGV4Y2VwdGlvbl9vYmouZGlh Zy5zcWxzdGF0ZSkKLQotICAgICAgICBpZiBleGNlcHRpb25fb2JqLmRpYWcubWVzc2FnZV9kZXRh aWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiAnRGV0YWlsOicubG93ZXIoKSBub3QgaW4g ZXJybXNnLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGVycm1zZy5lbmRzd2l0aCgn XG4nKToKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnICs9ICdcbicKLSAgICAgICAgICAgICAg ICBlcnJtc2cgKz0gZ2V0dGV4dCgnRGV0YWlsOiAnKQotICAgICAgICAgICAgICAgIGVycm1zZyAr PSBzZWxmLmRlY29kZV90b191dGY4KAotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fb2Jq LmRpYWcubWVzc2FnZV9kZXRhaWwKLSAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgaWYgZXhj ZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfaGludCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlm ICdIaW50OicubG93ZXIoKSBub3QgaW4gZXJybXNnLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAg aWYgbm90IGVycm1zZy5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICAgICAgZXJybXNn ICs9ICdcbicKLSAgICAgICAgICAgICAgICBlcnJtc2cgKz0gZ2V0dGV4dCgnSGludDogJykKLSAg ICAgICAgICAgICAgICBlcnJtc2cgKz0gc2VsZi5kZWNvZGVfdG9fdXRmOChleGNlcHRpb25fb2Jq LmRpYWcubWVzc2FnZV9oaW50KQotCi0gICAgICAgIGlmIGV4Y2VwdGlvbl9vYmouZGlhZy5zdGF0 ZW1lbnRfcG9zaXRpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiAnQ2hhcmFjdGVyOicu bG93ZXIoKSBub3QgaW4gZXJybXNnLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGVy cm1zZy5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnICs9ICdcbicK LSAgICAgICAgICAgICAgICBlcnJtc2cgKz0gZ2V0dGV4dCgnQ2hhcmFjdGVyOiAnKQotICAgICAg ICAgICAgICAgIGVycm1zZyArPSBzZWxmLmRlY29kZV90b191dGY4KAotICAgICAgICAgICAgICAg ICAgICBleGNlcHRpb25fb2JqLmRpYWcuc3RhdGVtZW50X3Bvc2l0aW9uCi0gICAgICAgICAgICAg ICAgKQotCi0gICAgICAgIGlmIGV4Y2VwdGlvbl9vYmouZGlhZy5jb250ZXh0IGlzIG5vdCBOb25l OgotICAgICAgICAgICAgaWYgJ0NvbnRleHQ6Jy5sb3dlcigpIG5vdCBpbiBlcnJtc2cubG93ZXIo KToKLSAgICAgICAgICAgICAgICBpZiBub3QgZXJybXNnLmVuZHN3aXRoKCdcbicpOgotICAgICAg ICAgICAgICAgICAgICBlcnJtc2cgKz0gJ1xuJwotICAgICAgICAgICAgICAgIGVycm1zZyArPSBn ZXR0ZXh0KCdDb250ZXh0OiAnKQotICAgICAgICAgICAgICAgIGVycm1zZyArPSBzZWxmLmRlY29k ZV90b191dGY4KGV4Y2VwdGlvbl9vYmouZGlhZy5jb250ZXh0KQotCi0gICAgICAgIHJldHVybiBl cnJtc2cKLQotICAgICMjIyMjCi0gICAgIyBBcyBwZXIgaXNzdWUgcmVwb3J0ZWQgb24gcGdzeWNv cGcyIGdpdGh1YiByZXBvc2l0b3J5IGxpbmsgaXMgc2hhcmVkIGJlbG93Ci0gICAgIyBjb25uLmNs b3NlZCBpcyBub3QgcmVsaWFibGUgZW5vdWdoIHRvIGlkZW50aWZ5IHRoZSBkaXNjb25uZWN0aW9u IGZyb20gdGhlCi0gICAgIyBkYXRhYmFzZSBzZXJ2ZXIgZm9yIHNvbWUgdW5rbm93biByZWFzb25z LgotICAgICMKLSAgICAjIChodHRwczovL2dpdGh1Yi5jb20vcHN5Y29wZy9wc3ljb3BnMi9pc3N1 ZXMvMjYzKQotICAgICMKLSAgICAjIEluIG9yZGVyIHRvIHJlc29sdmUgdGhlIGlzc3VlLCBzcWxh bGNoYW1leSBmb2xsb3dzIHRoZSBiZWxvdyBsb2dpYyB0bwotICAgICMgaWRlbnRpZnkgdGhlIGRp c2Nvbm5lY3Rpb24uIEl0IHJlbGllcyBvbiBleGNlcHRpb24gbWVzc2FnZSB0byBpZGVudGlmeQot ICAgICMgdGhlIGVycm9yLgotICAgICMKLSAgICAjIFJlZmVyZW5jZSAoTUlUIGxpY2Vuc2UpOgot ICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3p6emVlay9zcWxhbGNoZW15L2Jsb2IvbWFzdGVyL2xp Yi9zcWxhbGNoZW15L2RpYWxlY3RzL3Bvc3RncmVzcWwvcHN5Y29wZzIucHkKLSAgICAjCi0gICAg ZGVmIGlzX2Rpc2Nvbm5lY3RlZChzZWxmLCBlcnIpOgotICAgICAgICBpZiBub3Qgc2VsZi5jb25u LmNsb3NlZDoKLSAgICAgICAgICAgICMgY2hlY2tzIGJhc2VkIG9uIHN0cmluZ3MuICBpbiB0aGUg Y2FzZSB0aGF0IC5jbG9zZWQKLSAgICAgICAgICAgICMgZGlkbid0IGN1dCBpdCwgZmFsbCBiYWNr IG9udG8gdGhlc2UuCi0gICAgICAgICAgICBzdHJfZSA9IHN0cihlcnIpLnBhcnRpdGlvbigiXG4i KVswXQotICAgICAgICAgICAgZm9yIG1zZyBpbiBbCi0gICAgICAgICAgICAgICAgIyB0aGVzZSBl cnJvciBtZXNzYWdlcyBmcm9tIGxpYnBxOiBpbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYwotICAg ICAgICAgICAgICAgICMgYW5kIGludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMuCi0gICAgICAg ICAgICAgICAgJ3Rlcm1pbmF0aW5nIGNvbm5lY3Rpb24nLAotICAgICAgICAgICAgICAgICdjbG9z ZWQgdGhlIGNvbm5lY3Rpb24nLAotICAgICAgICAgICAgICAgICdjb25uZWN0aW9uIG5vdCBvcGVu JywKLSAgICAgICAgICAgICAgICAnY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIHNlcnZlcics Ci0gICAgICAgICAgICAgICAgJ2NvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2VydmVyJywKLSAgICAg ICAgICAgICAgICAjIHBzeWNvcGcyIGNsaWVudCBlcnJvcnMsIHBzeWNvcGcyL2NvbmVuY3Rpb24u aCwKLSAgICAgICAgICAgICAgICAjIHBzeWNvcGcyL2N1cnNvci5oCi0gICAgICAgICAgICAgICAg J2Nvbm5lY3Rpb24gYWxyZWFkeSBjbG9zZWQnLAotICAgICAgICAgICAgICAgICdjdXJzb3IgYWxy ZWFkeSBjbG9zZWQnLAotICAgICAgICAgICAgICAgICMgbm90IHN1cmUgd2hlcmUgdGhpcyBwYXRo IGlzIG9yaWdpbmFsbHkgZnJvbSwgaXQgbWF5Ci0gICAgICAgICAgICAgICAgIyBiZSBvYnNvbGV0 ZS4gICBJdCByZWFsbHkgc2F5cyAibG9zZWQiLCBub3QgImNsb3NlZCIuCi0gICAgICAgICAgICAg ICAgJ2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseScsCi0gICAgICAgICAgICAgICAg IyB0aGVzZSBjYW4gb2NjdXIgaW4gbmV3ZXIgU1NMCi0gICAgICAgICAgICAgICAgJ2Nvbm5lY3Rp b24gaGFzIGJlZW4gY2xvc2VkIHVuZXhwZWN0ZWRseScsCi0gICAgICAgICAgICAgICAgJ1NTTCBT WVNDQUxMIGVycm9yOiBCYWQgZmlsZSBkZXNjcmlwdG9yJywKLSAgICAgICAgICAgICAgICAnU1NM IFNZU0NBTEwgZXJyb3I6IEVPRiBkZXRlY3RlZCcsCi0gICAgICAgICAgICBdOgotICAgICAgICAg ICAgICAgIGlkeCA9IHN0cl9lLmZpbmQobXNnKQotICAgICAgICAgICAgICAgIGlmIGlkeCA+PSAw IGFuZCAnIicgbm90IGluIHN0cl9lWzppZHhdOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g VHJ1ZQotCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQot Ci1jbGFzcyBTZXJ2ZXJNYW5hZ2VyKG9iamVjdCk6Ci0gICAgIiIiCi0gICAgY2xhc3MgU2VydmVy TWFuYWdlcgotCi0gICAgVGhpcyBjbGFzcyBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gYWJvdXQg dGhlIGdpdmVuIHNlcnZlci4KLSAgICBBbmQsIGFjdHMgYXMgY29ubmVjdGlvbiBtYW5hZ2VyIGZv ciB0aGF0IHBhcnRpY3VsYXIgc2Vzc2lvbi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBzZXJ2ZXIpOgotICAgICAgICBzZWxmLmNvbm5lY3Rpb25zID0gZGljdCgpCi0KLSAgICAg ICAgc2VsZi51cGRhdGUoc2VydmVyKQotCi0gICAgZGVmIHVwZGF0ZShzZWxmLCBzZXJ2ZXIpOgot ICAgICAgICBhc3NlcnQgKHNlcnZlciBpcyBub3QgTm9uZSkKLSAgICAgICAgYXNzZXJ0IChpc2lu c3RhbmNlKHNlcnZlciwgU2VydmVyKSkKLQotICAgICAgICBzZWxmLnZlciA9IE5vbmUKLSAgICAg ICAgc2VsZi5zdmVyc2lvbiA9IE5vbmUKLSAgICAgICAgc2VsZi5zZXJ2ZXJfdHlwZSA9IE5vbmUK LSAgICAgICAgc2VsZi5zZXJ2ZXJfY2xzID0gTm9uZQotICAgICAgICBzZWxmLnBhc3N3b3JkID0g Tm9uZQotCi0gICAgICAgIHNlbGYuc2lkID0gc2VydmVyLmlkCi0gICAgICAgIHNlbGYuaG9zdCA9 IHNlcnZlci5ob3N0Ci0gICAgICAgIHNlbGYuaG9zdGFkZHIgPSBzZXJ2ZXIuaG9zdGFkZHIKLSAg ICAgICAgc2VsZi5wb3J0ID0gc2VydmVyLnBvcnQKLSAgICAgICAgc2VsZi5kYiA9IHNlcnZlci5t YWludGVuYW5jZV9kYgotICAgICAgICBzZWxmLmRpZCA9IE5vbmUKLSAgICAgICAgc2VsZi51c2Vy ID0gc2VydmVyLnVzZXJuYW1lCi0gICAgICAgIHNlbGYucGFzc3dvcmQgPSBzZXJ2ZXIucGFzc3dv cmQKLSAgICAgICAgc2VsZi5yb2xlID0gc2VydmVyLnJvbGUKLSAgICAgICAgc2VsZi5zc2xfbW9k ZSA9IHNlcnZlci5zc2xfbW9kZQotICAgICAgICBzZWxmLnBpbmdlZCA9IGRhdGV0aW1lLmRhdGV0 aW1lLm5vdygpCi0gICAgICAgIHNlbGYuZGJfaW5mbyA9IGRpY3QoKQotICAgICAgICBzZWxmLnNl cnZlcl90eXBlcyA9IE5vbmUKLSAgICAgICAgc2VsZi5kYl9yZXMgPSBzZXJ2ZXIuZGJfcmVzCi0g ICAgICAgIHNlbGYucGFzc2ZpbGUgPSBzZXJ2ZXIucGFzc2ZpbGUKLSAgICAgICAgc2VsZi5zc2xj ZXJ0ID0gc2VydmVyLnNzbGNlcnQKLSAgICAgICAgc2VsZi5zc2xrZXkgPSBzZXJ2ZXIuc3Nsa2V5 Ci0gICAgICAgIHNlbGYuc3Nscm9vdGNlcnQgPSBzZXJ2ZXIuc3Nscm9vdGNlcnQKLSAgICAgICAg c2VsZi5zc2xjcmwgPSBzZXJ2ZXIuc3NsY3JsCi0gICAgICAgIHNlbGYuc3NsY29tcHJlc3Npb24g PSBUcnVlIGlmIHNlcnZlci5zc2xjb21wcmVzc2lvbiBlbHNlIEZhbHNlCi0KLSAgICAgICAgZm9y IGNvbiBpbiBzZWxmLmNvbm5lY3Rpb25zOgotICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uc1tj b25dLl9yZWxlYXNlKCkKLQotICAgICAgICBzZWxmLnVwZGF0ZV9zZXNzaW9uKCkKLQotICAgICAg ICBzZWxmLmNvbm5lY3Rpb25zID0gZGljdCgpCi0KLSAgICBkZWYgYXNfZGljdChzZWxmKToKLSAg ICAgICAgIiIiCi0gICAgICAgIFJldHVybnMgYSBkaWN0aW9uYXJ5IG9iamVjdCByZXByZXNlbnRp bmcgdGhlIHNlcnZlciBtYW5hZ2VyLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi52ZXIg aXMgTm9uZSBvciBsZW4oc2VsZi5jb25uZWN0aW9ucykgPT0gMDoKLSAgICAgICAgICAgIHJldHVy biBOb25lCi0KLSAgICAgICAgcmVzID0gZGljdCgpCi0gICAgICAgIHJlc1snc2lkJ10gPSBzZWxm LnNpZAotICAgICAgICByZXNbJ3ZlciddID0gc2VsZi52ZXIKLSAgICAgICAgcmVzWydzdmVyc2lv biddID0gc2VsZi5zdmVyc2lvbgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdwYXNzd29yZCcp IGFuZCBzZWxmLnBhc3N3b3JkOgotICAgICAgICAgICAgIyBJZiBydW5uaW5nIHVuZGVyIFBZMgot ICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnBhc3N3b3JkLCAnZGVjb2RlJyk6Ci0gICAgICAg ICAgICAgICAgcmVzWydwYXNzd29yZCddID0gc2VsZi5wYXNzd29yZC5kZWNvZGUoJ3V0Zi04JykK LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVzWydwYXNzd29yZCddID0gc3Ry KHNlbGYucGFzc3dvcmQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNbJ3Bhc3N3b3Jk J10gPSBzZWxmLnBhc3N3b3JkCi0KLSAgICAgICAgY29ubmVjdGlvbnMgPSByZXNbJ2Nvbm5lY3Rp b25zJ10gPSBkaWN0KCkKLQotICAgICAgICBmb3IgY29ubl9pZCBpbiBzZWxmLmNvbm5lY3Rpb25z OgotICAgICAgICAgICAgY29ubiA9IHNlbGYuY29ubmVjdGlvbnNbY29ubl9pZF0uYXNfZGljdCgp Ci0KLSAgICAgICAgICAgIGlmIGNvbm4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgY29u bmVjdGlvbnNbY29ubl9pZF0gPSBjb25uCi0KLSAgICAgICAgcmV0dXJuIHJlcwotCi0gICAgZGVm IFNlcnZlclZlcnNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnZlcgotCi0gICAgQHBy b3BlcnR5Ci0gICAgZGVmIHZlcnNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnN2ZXJz aW9uCi0KLSAgICBkZWYgTWFqb3JWZXJzaW9uKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnN2ZXJz aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGludChzZWxmLnN2ZXJzaW9uIC8g MTAwMDApCi0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiSW5mb3JtYXRpb24gaXMgbm90IGF2YWls YWJsZS4iKQotCi0gICAgZGVmIE1pbm9yVmVyc2lvbihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5z dmVyc2lvbjoKLSAgICAgICAgICAgIHJldHVybiBpbnQoaW50KHNlbGYuc3ZlcnNpb24gLyAxMDAp ICUgMTAwKQotICAgICAgICByYWlzZSBFeGNlcHRpb24oIkluZm9ybWF0aW9uIGlzIG5vdCBhdmFp bGFibGUuIikKLQotICAgIGRlZiBQYXRjaFZlcnNpb24oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu c3ZlcnNpb246Ci0gICAgICAgICAgICByZXR1cm4gaW50KGludChzZWxmLnN2ZXJzaW9uIC8gMTAw KSAvIDEwMCkKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbmZvcm1hdGlvbiBpcyBub3QgYXZh aWxhYmxlLiIpCi0KLSAgICBkZWYgY29ubmVjdGlvbigKLSAgICAgICAgICAgIHNlbGYsIGRhdGFi YXNlPU5vbmUsIGNvbm5faWQ9Tm9uZSwgYXV0b19yZWNvbm5lY3Q9VHJ1ZSwgZGlkPU5vbmUsCi0g ICAgICAgICAgICBhc3luYz1Ob25lLCB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPUZhbHNlLCBhcnJh eV90b19zdHJpbmc9RmFsc2UKLSAgICApOgotICAgICAgICBpZiBkYXRhYmFzZSBpcyBub3QgTm9u ZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc3RyLCAnZGVjb2RlJykgYW5kIFwKLSAgICAgICAg ICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGF0YWJhc2UsIHVuaWNvZGUpOgotICAgICAgICAg ICAgICAgIGRhdGFiYXNlID0gZGF0YWJhc2UuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBp ZiBkaWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgZGlkIGluIHNlbGYuZGJfaW5m bzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pbmZvW2RpZF1bJ2RhdG5hbWUnXSA9IGRh dGFiYXNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBkaWQgaXMgTm9uZToKLSAgICAg ICAgICAgICAgICBkYXRhYmFzZSA9IHNlbGYuZGIKLSAgICAgICAgICAgIGVsaWYgZGlkIGluIHNl bGYuZGJfaW5mbzoKLSAgICAgICAgICAgICAgICBkYXRhYmFzZSA9IHNlbGYuZGJfaW5mb1tkaWRd WydkYXRuYW1lJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFpbnRlbmFu Y2VfZGJfaWQgPSB1J0RCOnswfScuZm9ybWF0KHNlbGYuZGIpCi0gICAgICAgICAgICAgICAgaWYg bWFpbnRlbmFuY2VfZGJfaWQgaW4gc2VsZi5jb25uZWN0aW9uczoKLSAgICAgICAgICAgICAgICAg ICAgY29ubiA9IHNlbGYuY29ubmVjdGlvbnNbbWFpbnRlbmFuY2VfZGJfaWRdCi0gICAgICAgICAg ICAgICAgICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHUiIiIKLVNFTEVDVAotICAgIGRiLm9pZCBh cyBkaWQsIGRiLmRhdG5hbWUsIGRiLmRhdGFsbG93Y29ubiwKLSAgICBwZ19lbmNvZGluZ190b19j aGFyKGRiLmVuY29kaW5nKSBBUyBzZXJ2ZXJlbmNvZGluZywKLSAgICBoYXNfZGF0YWJhc2VfcHJp dmlsZWdlKGRiLm9pZCwgJ0NSRUFURScpIGFzIGNhbmNyZWF0ZSwgZGF0bGFzdHN5c29pZAotRlJP TQotICAgIHBnX2RhdGFiYXNlIGRiCi1XSEVSRSBkYi5vaWQgPSB7MH0iIiIuZm9ybWF0KGRpZCkp Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXR1cyBhbmQgbGVuKHJlc1sncm93cydd KSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3Mn XToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9pbmZvW2RpZF0gPSBy b3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UgPSBzZWxmLmRiX2lu Zm9bZGlkXVsnZGF0bmFtZSddCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZCBub3Qg aW4gc2VsZi5kYl9pbmZvOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbihnZXR0ZXh0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90 IGZpbmQgdGhlIHNwZWNpZmllZCBkYXRhYmFzZS4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgKSkKLQotICAgICAgICBpZiBkYXRhYmFzZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2Ug Q29ubmVjdGlvbkxvc3Qoc2VsZi5zaWQsIE5vbmUsIE5vbmUpCi0KLSAgICAgICAgbXlfaWQgPSAo dSdDT05OOnswfScuZm9ybWF0KGNvbm5faWQpKSBpZiBjb25uX2lkIGlzIG5vdCBOb25lIGVsc2Ug XAotICAgICAgICAgICAgKHUnREI6ezB9Jy5mb3JtYXQoZGF0YWJhc2UpKQotCi0gICAgICAgIHNl bGYucGluZ2VkID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKLQotICAgICAgICBpZiBteV9pZCBp biBzZWxmLmNvbm5lY3Rpb25zOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29ubmVjdGlvbnNb bXlfaWRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBhc3luYyBpcyBOb25lOgotICAg ICAgICAgICAgICAgIGFzeW5jID0gMSBpZiBjb25uX2lkIGlzIG5vdCBOb25lIGVsc2UgMAotICAg ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhc3luYyA9IDEgaWYgYXN5bmMgaXMgVHJ1 ZSBlbHNlIDAKLSAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbnNbbXlfaWRdID0gQ29ubmVjdGlv bigKLSAgICAgICAgICAgICAgICBzZWxmLCBteV9pZCwgZGF0YWJhc2UsIGF1dG9fcmVjb25uZWN0 LCBhc3luYywKLSAgICAgICAgICAgICAgICB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPXVzZV9iaW5h cnlfcGxhY2Vob2xkZXIsCi0gICAgICAgICAgICAgICAgYXJyYXlfdG9fc3RyaW5nPWFycmF5X3Rv X3N0cmluZwotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb25uZWN0 aW9uc1tteV9pZF0KLQotICAgIGRlZiBfcmVzdG9yZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIi Ci0gICAgICAgIEhlbHBzIHJlc3RvcmluZyB0byByZWNvbm5lY3QgdGhlIGF1dG8tY29ubmVjdCBj b25uZWN0aW9ucyBzbW9vdGhseSBvbgotICAgICAgICByZWxvYWQvcmVzdGFydCBvZiB0aGUgYXBw IHNlcnZlci4uCi0gICAgICAgICIiIgotICAgICAgICAjIHJlc3RvcmUgc2VydmVyIHZlcnNpb24g ZnJvbSBmbGFzayBzZXNzaW9uIGlmIGZsYXNrIHNlcnZlciB3YXMKLSAgICAgICAgIyByZXN0YXJ0 ZWQuIEFzIHdlIG5lZWQgc2VydmVyIHZlcnNpb24gdG8gcmVzb2x2ZSBzcWwgdGVtcGxhdGUgcGF0 aHMuCi0KLSAgICAgICAgc2VsZi52ZXIgPSBkYXRhLmdldCgndmVyJywgTm9uZSkKLSAgICAgICAg c2VsZi5zdmVyc2lvbiA9IGRhdGEuZ2V0KCdzdmVyc2lvbicsIE5vbmUpCi0KLSAgICAgICAgaWYg c2VsZi52ZXIgYW5kIG5vdCBzZWxmLnNlcnZlcl90eXBlOgotICAgICAgICAgICAgZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnR5cGVzIGltcG9ydCBTZXJ2ZXJUeXBl Ci0gICAgICAgICAgICBmb3Igc3QgaW4gU2VydmVyVHlwZS50eXBlcygpOgotICAgICAgICAgICAg ICAgIGlmIHN0Lmluc3RhbmNlT2Yoc2VsZi52ZXIpOgotICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlcl90eXBlID0gc3Quc3R5cGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJf Y2xzID0gc3QKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIEhtbS4uIHdl IHdpbGwgbm90IGhvbm91ciB0aGlzIHJlcXVlc3QsIHdoZW4gSSBhbHJlYWR5IGhhdmUKLSAgICAg ICAgIyBjb25uZWN0aW9ucwotICAgICAgICBpZiBsZW4oc2VsZi5jb25uZWN0aW9ucykgIT0gMDoK LSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgV2UgbmVlZCB0byBrbm93IGFib3V0IHRo ZSBleGlzdGluZyBzZXJ2ZXIgdmFyaWFudCBzdXBwb3J0cyBkdXJpbmcKLSAgICAgICAgIyBmaXJz dCBjb25uZWN0aW9uIGZvciBpZGVudGlmaWNhdGlvbnMuCi0gICAgICAgIGZyb20gcGdhZG1pbi5i cm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50eXBlcyBpbXBvcnQgU2VydmVyVHlwZQotICAg ICAgICBzZWxmLnBpbmdlZCA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCi0gICAgICAgIHRyeToK LSAgICAgICAgICAgIGlmICdwYXNzd29yZCcgaW4gZGF0YSBhbmQgZGF0YVsncGFzc3dvcmQnXToK LSAgICAgICAgICAgICAgICBkYXRhWydwYXNzd29yZCddID0gZGF0YVsncGFzc3dvcmQnXS5lbmNv ZGUoJ3V0Zi04JykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg Y3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQotCi0gICAgICAgIGNvbm5lY3Rpb25zID0g ZGF0YVsnY29ubmVjdGlvbnMnXQotICAgICAgICBmb3IgY29ubl9pZCBpbiBjb25uZWN0aW9uczoK LSAgICAgICAgICAgIGNvbm5faW5mbyA9IGNvbm5lY3Rpb25zW2Nvbm5faWRdCi0gICAgICAgICAg ICBjb25uID0gc2VsZi5jb25uZWN0aW9uc1tjb25uX2luZm9bJ2Nvbm5faWQnXV0gPSBDb25uZWN0 aW9uKAotICAgICAgICAgICAgICAgIHNlbGYsIGNvbm5faW5mb1snY29ubl9pZCddLCBjb25uX2lu Zm9bJ2RhdGFiYXNlJ10sCi0gICAgICAgICAgICAgICAgY29ubl9pbmZvWydhdXRvX3JlY29ubmVj dCddLCBjb25uX2luZm9bJ2FzeW5jJ10sCi0gICAgICAgICAgICAgICAgdXNlX2JpbmFyeV9wbGFj ZWhvbGRlcj1jb25uX2luZm9bJ3VzZV9iaW5hcnlfcGxhY2Vob2xkZXInXSwKLSAgICAgICAgICAg ICAgICBhcnJheV90b19zdHJpbmc9Y29ubl9pbmZvWydhcnJheV90b19zdHJpbmcnXQotICAgICAg ICAgICAgKQotCi0gICAgICAgICAgICAjIG9ubHkgdHJ5IHRvIHJlY29ubmVjdCBpZiBjb25uZWN0 aW9uIHdhcyBjb25uZWN0ZWQgcHJldmlvdXNseSBhbmQKLSAgICAgICAgICAgICMgYXV0b19yZWNv bm5lY3QgaXMgdHJ1ZS4KLSAgICAgICAgICAgIGlmIGNvbm5faW5mb1snd2FzQ29ubmVjdGVkJ10g YW5kIGNvbm5faW5mb1snYXV0b19yZWNvbm5lY3QnXToKLSAgICAgICAgICAgICAgICB0cnk6Ci0g ICAgICAgICAgICAgICAgICAgIGNvbm4uY29ubmVjdCgKLSAgICAgICAgICAgICAgICAgICAgICAg IHBhc3N3b3JkPWRhdGFbJ3Bhc3N3b3JkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfdHlwZXM9U2VydmVyVHlwZS50eXBlcygpCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAg ICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgYWxzbyB1cGRhdGUgd2FzQ29ubmVjdGVkIGZsYWcg aW4gY29ubmVjdGlvbiBzbwotICAgICAgICAgICAgICAgICAgICAjIG5vIG5lZWQgdG8gdXBkYXRl IHRoZSBmbGFnIG1hbnVhbGx5LgotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQot ICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25zLnBvcChjb25uX2luZm9bJ2Nvbm5f aWQnXSkKLQotICAgIGRlZiByZWxlYXNlKHNlbGYsIGRhdGFiYXNlPU5vbmUsIGNvbm5faWQ9Tm9u ZSwgZGlkPU5vbmUpOgotICAgICAgICBpZiBkaWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBp ZiBkaWQgaW4gc2VsZi5kYl9pbmZvIGFuZCAnZGF0bmFtZScgaW4gc2VsZi5kYl9pbmZvW2RpZF06 Ci0gICAgICAgICAgICAgICAgZGF0YWJhc2UgPSBzZWxmLmRiX2luZm9bZGlkXVsnZGF0bmFtZSdd Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzdHIsICdkZWNvZGUnKSBhbmQgXAotICAgICAg ICAgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGF0YWJhc2UsIHVuaWNvZGUpOgotICAg ICAgICAgICAgICAgICAgICBkYXRhYmFzZSA9IGRhdGFiYXNlLmRlY29kZSgndXRmLTgnKQotICAg ICAgICAgICAgICAgIGlmIGRhdGFiYXNlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs c2UKLQotICAgICAgICBteV9pZCA9ICh1J0NPTk46ezB9Jy5mb3JtYXQoY29ubl9pZCkpIGlmIGNv bm5faWQgaXMgbm90IE5vbmUgZWxzZSBcCi0gICAgICAgICAgICAodSdEQjp7MH0nLmZvcm1hdChk YXRhYmFzZSkpIGlmIGRhdGFiYXNlIGlzIG5vdCBOb25lIGVsc2UgTm9uZQotCi0gICAgICAgIGlm IG15X2lkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgbXlfaWQgaW4gc2VsZi5jb25uZWN0 aW9uczoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25zW215X2lkXS5fcmVsZWFzZSgp Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuY29ubmVjdGlvbnNbbXlfaWRdCi0gICAgICAgICAg ICAgICAgaWYgZGlkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5k Yl9pbmZvW2RpZF0KLQotICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNvbm5lY3Rpb25zKSA9 PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnZlciA9IE5vbmUKLSAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdmVyc2lvbiA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfdHlwZSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xzID0gTm9u ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9uZQotCi0gICAgICAgICAg ICAgICAgc2VsZi51cGRhdGVfc2Vzc2lvbigpCi0KLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1 ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg ICAgICBmb3IgY29uIGluIHNlbGYuY29ubmVjdGlvbnM6Ci0gICAgICAgICAgICBzZWxmLmNvbm5l Y3Rpb25zW2Nvbl0uX3JlbGVhc2UoKQotCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBkaWN0 KCkKLSAgICAgICAgc2VsZi52ZXIgPSBOb25lCi0gICAgICAgIHNlbGYuc3ZlcnNpb24gPSBOb25l Ci0gICAgICAgIHNlbGYuc2VydmVyX3R5cGUgPSBOb25lCi0gICAgICAgIHNlbGYuc2VydmVyX2Ns cyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXNzd29yZCA9IE5vbmUKLQotICAgICAgICBzZWxmLnVw ZGF0ZV9zZXNzaW9uKCkKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF91cGRhdGVf cGFzc3dvcmQoc2VsZiwgcGFzc3dkKToKLSAgICAgICAgc2VsZi5wYXNzd29yZCA9IHBhc3N3ZAot ICAgICAgICBmb3IgY29ubl9pZCBpbiBzZWxmLmNvbm5lY3Rpb25zOgotICAgICAgICAgICAgY29u biA9IHNlbGYuY29ubmVjdGlvbnNbY29ubl9pZF0KLSAgICAgICAgICAgIGlmIGNvbm4uY29ubiBp cyBub3QgTm9uZSBvciBjb25uLndhc0Nvbm5lY3RlZCBpcyBUcnVlOgotICAgICAgICAgICAgICAg IGNvbm4ucGFzc3dvcmQgPSBwYXNzd2QKLQotICAgIGRlZiB1cGRhdGVfc2Vzc2lvbihzZWxmKToK LSAgICAgICAgbWFuYWdlcnMgPSBzZXNzaW9uWydfX3Bnc3FsX3NlcnZlcl9tYW5hZ2VycyddIFwK LSAgICAgICAgICAgIGlmICdfX3Bnc3FsX3NlcnZlcl9tYW5hZ2VycycgaW4gc2Vzc2lvbiBlbHNl IGRpY3QoKQotICAgICAgICB1cGRhdGVkX21nciA9IHNlbGYuYXNfZGljdCgpCi0KLSAgICAgICAg aWYgbm90IHVwZGF0ZWRfbWdyOgotICAgICAgICAgICAgaWYgc2VsZi5zaWQgaW4gbWFuYWdlcnM6 Ci0gICAgICAgICAgICAgICAgbWFuYWdlcnMucG9wKHNlbGYuc2lkKQotICAgICAgICBlbHNlOgot ICAgICAgICAgICAgbWFuYWdlcnNbc2VsZi5zaWRdID0gdXBkYXRlZF9tZ3IKLSAgICAgICAgc2Vz c2lvblsnX19wZ3NxbF9zZXJ2ZXJfbWFuYWdlcnMnXSA9IG1hbmFnZXJzCi0gICAgICAgIHNlc3Np b24uZm9yY2Vfd3JpdGUgPSBUcnVlCi0KLSAgICBkZWYgdXRpbGl0eShzZWxmLCBvcGVyYXRpb24p OgotICAgICAgICAiIiIKLSAgICAgICAgdXRpbGl0eShvcGVyYXRpb24pCi0KLSAgICAgICAgUmV0 dXJuczogbmFtZSBvZiB0aGUgdXRpbGl0eSB3aGljaCB1c2VkIGZvciB0aGUgb3BlcmF0aW9uCi0g ICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLnNlcnZlcl9jbHMgaXMgbm90IE5vbmU6Ci0gICAg ICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXJfY2xzLnV0aWxpdHkob3BlcmF0aW9uLCBzZWxmLnN2 ZXJzaW9uKQotCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZXhwb3J0X3Bhc3N3b3Jk X2VudihzZWxmLCBlbnYpOgotICAgICAgICBpZiBzZWxmLnBhc3N3b3JkOgotICAgICAgICAgICAg cGFzc3dvcmQgPSBkZWNyeXB0KAotICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmQsIGN1cnJl bnRfdXNlci5wYXNzd29yZAotICAgICAgICAgICAgKS5kZWNvZGUoKQotICAgICAgICAgICAgb3Mu ZW52aXJvbltzdHIoZW52KV0gPSBwYXNzd29yZAorZnJvbSAuLmFic3RyYWN0IGltcG9ydCBCYXNl RHJpdmVyCitmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCitmcm9tIC5zZXJ2ZXJf bWFuYWdlciBpbXBvcnQgU2VydmVyTWFuYWdlcgogCiAKIGNsYXNzIERyaXZlcihCYXNlRHJpdmVy KToKQEAgLTIxNjQsOCArMjAyLDkgQEAgY2xhc3MgRHJpdmVyKEJhc2VEcml2ZXIpOgogICAgICAg ICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGN1cnJfdGltZSAtIHNlc3NfbWdy WydwaW5nZWQnXSA+PSBzZXNzaW9uX2lkbGVfdGltZW91dDoKLSAgICAgICAgICAgICAgICBmb3Ig bWdyIGluIFttIGZvciBtIGluIHNlc3NfbWdyIGlmIGlzaW5zdGFuY2UobSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVy TWFuYWdlcildOgorICAgICAgICAgICAgICAgIGZvciBtZ3IgaW4gWworICAgICAgICAgICAgICAg ICAgICAgICAgbSBmb3IgbSBpbiBzZXNzX21nciBpZiBpc2luc3RhbmNlKG0sIFNlcnZlck1hbmFn ZXIpCisgICAgICAgICAgICAgICAgXToKICAgICAgICAgICAgICAgICAgICAgbWdyLnJlbGVhc2Uo KQogCiAgICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJp dmVyL3BzeWNvcGcyL2Nvbm5lY3Rpb24ucHkgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5 Y29wZzIvY29ubmVjdGlvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k NGM5NTczCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNv cGcyL2Nvbm5lY3Rpb24ucHkKQEAgLTAsMCArMSwxNjgyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisiIiIKK0ltcGxlbWVudGF0aW9uIG9mIENvbm5lY3Rpb24uCitJdCBpcyBhIHdyYXBw ZXIgYXJvdW5kIHRoZSBhY3R1YWwgcHN5Y29wZzIgZHJpdmVyLCBhbmQgY29ubmVjdGlvbgorb2Jq ZWN0LgorIiIiCisKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzeXMKK2Zy b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCitp bXBvcnQgcHN5Y29wZzIKK2Zyb20gZmxhc2sgaW1wb3J0IGcsIGN1cnJlbnRfYXBwCitmcm9tIGZs YXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBjdXJy ZW50X3VzZXIKK2Zyb20gcGdhZG1pbi51dGlscy5jcnlwdG8gaW1wb3J0IGRlY3J5cHQKK2Zyb20g cHN5Y29wZzIuZXh0ZW5zaW9ucyBpbXBvcnQgYWRhcHQsIGVuY29kaW5ncworCitpbXBvcnQgY29u ZmlnCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFNlcnZlciwgVXNlcgorZnJvbSBwZ2FkbWlu LnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgQ29ubmVjdGlvbkxvc3QKK2Zyb20gcGdhZG1pbi51dGls cyBpbXBvcnQgZ2V0X2NvbXBsZXRlX2ZpbGVfcGF0aAorZnJvbSAuLmFic3RyYWN0IGltcG9ydCBC YXNlRHJpdmVyLCBCYXNlQ29ubmVjdGlvbgorZnJvbSAuY3Vyc29yIGltcG9ydCBEaWN0Q3Vyc29y Citmcm9tIC50eXBlY2FzdCBpbXBvcnQgcmVnaXN0ZXJfZ2xvYmFsX3R5cGVjYXN0ZXJzLCBcCisg ICAgcmVnaXN0ZXJfc3RyaW5nX3R5cGVjYXN0ZXJzLCByZWdpc3Rlcl9iaW5hcnlfdHlwZWNhc3Rl cnMsIFwKKyAgICByZWdpc3Rlcl9hcnJheV90b19zdHJpbmdfdHlwZWNhc3RlcnMsIEFMTF9KU09O X1RZUEVTCisKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6CisgICAgIyBQeXRob24yIGlu LWJ1aWx0IGNzdiBtb2R1bGUgZG8gbm90IGhhbmRsZSB1bmljb2RlCisgICAgIyBiYWNrcG9ydHMu Y3N2IG1vZHVsZSBwb3J0ZWQgZnJvbSBQWTMgY3N2IG1vZHVsZSBmb3IgdW5pY29kZSBoYW5kbGlu ZworICAgIGZyb20gYmFja3BvcnRzIGltcG9ydCBjc3YKKyAgICBmcm9tIFN0cmluZ0lPIGltcG9y dCBTdHJpbmdJTworICAgIElTX1BZMiA9IFRydWUKK2Vsc2U6CisgICAgZnJvbSBpbyBpbXBvcnQg U3RyaW5nSU8KKyAgICBpbXBvcnQgY3N2CisgICAgSVNfUFkyID0gRmFsc2UKKworXyA9IGdldHRl eHQKKworCisjIFJlZ2lzdGVyIGdsb2JhbCB0eXBlIGNhc3RlciB3aGljaCB3aWxsIGJlIGFwcGxp Y2FibGUgdG8gYWxsIGNvbm5lY3Rpb25zLgorcmVnaXN0ZXJfZ2xvYmFsX3R5cGVjYXN0ZXJzKCkK KworCitjbGFzcyBDb25uZWN0aW9uKEJhc2VDb25uZWN0aW9uKToKKyAgICAiIiIKKyAgICBjbGFz cyBDb25uZWN0aW9uKG9iamVjdCkKKworICAgICAgICBBIHdyYXBwZXIgY2xhc3MsIHdoaWNoIHdy YXBzIHRoZSBwc3ljb3BnMiBjb25uZWN0aW9uIG9iamVjdCwgYW5kCisgICAgICAgIGRlbGVnYXRl IHRoZSBleGVjdXRpb24gdG8gdGhlIGFjdHVhbCBjb25uZWN0aW9uIG9iamVjdCwgd2hlbiByZXF1 aXJlZC4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogY29ubmVjdCgqKmt3YXJn cykKKyAgICAgIC0gQ29ubmVjdCB0aGUgUG9zdGdyZVNRTC9FREIgUG9zdGdyZXMgQWR2YW5jZWQg U2VydmVyIHVzaW5nIHRoZSBwc3ljb3BnMgorICAgICAgZHJpdmVyCisKKyAgICAqIGV4ZWN1dGVf c2NhbGFyKHF1ZXJ5LCBwYXJhbXMsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQorICAgICAgLSBF eGVjdXRlIHRoZSBnaXZlbiBxdWVyeSBhbmQgcmV0dXJucyBzaW5nbGUgZGF0dW0gcmVzdWx0CisK KyAgICAqIGV4ZWN1dGVfYXN5bmMocXVlcnksIHBhcmFtcywgZm9ybWF0dGVkX2V4Y2VwdGlvbl9t c2cpCisgICAgICAtIEV4ZWN1dGUgdGhlIGdpdmVuIHF1ZXJ5IGFzeW5jaHJvbm91c2x5IGFuZCBy ZXR1cm5zIHJlc3VsdC4KKworICAgICogZXhlY3V0ZV92b2lkKHF1ZXJ5LCBwYXJhbXMsIGZvcm1h dHRlZF9leGNlcHRpb25fbXNnKQorICAgICAgLSBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSB3aXRo IG5vIHJlc3VsdC4KKworICAgICogZXhlY3V0ZV8yZGFycmF5KHF1ZXJ5LCBwYXJhbXMsIGZvcm1h dHRlZF9leGNlcHRpb25fbXNnKQorICAgICAgLSBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSBhbmQg cmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgMiBkaW1lbnNpb25hbAorICAgICAgICBhcnJheS4KKwor ICAgICogZXhlY3V0ZV9kaWN0KHF1ZXJ5LCBwYXJhbXMsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNn KQorICAgICAgLSBFeGVjdXRlIHRoZSBnaXZlbiBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0 IGFzIGFuIGFycmF5IG9mIGRpY3QKKyAgICAgICAgKGNvbHVtbiBuYW1lIC0+IHZhbHVlKSBmb3Jt YXQuCisKKyAgICAqIGNvbm5lY3RlZCgpCisgICAgICAtIEdldCB0aGUgc3RhdHVzIG9mIHRoZSBj b25uZWN0aW9uLgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgY29ubmVjdGVkLCBvdGhlcndpc2Ug RmFsc2UuCisKKyAgICAqIHJlc2V0KCkKKyAgICAgIC0gUmVjb25uZWN0IHRoZSBkYXRhYmFzZSBz ZXJ2ZXIgKGlmIHBvc3NpYmxlKQorCisgICAgKiB0cmFuc2FjdGlvbl9zdGF0dXMoKQorICAgICAg LSBUcmFuc2FjdGlvbiBTdGF0dXMKKworICAgICogcGluZygpCisgICAgICAtIFBpbmcgdGhlIHNl cnZlci4KKworICAgICogX3JlbGVhc2UoKQorICAgICAgLSBSZWxlYXNlIHRoZSBjb25uZWN0aW9u IG9iamVjdCBvZiBwc3ljb3BnMgorCisgICAgKiBfcmVjb25uZWN0KCkKKyAgICAgIC0gQXR0ZW1w dCB0byByZWNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlCisKKyAgICAqIF93YWl0KGNvbm4pCisgICAg ICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gd2FpdCBmb3IgYXN5bmNocm9ub3VzIGNvbm5lY3Rp b24uIFRoaXMgaXMgYQorICAgICAgICBibG9ja2luZyBjYWxsLgorCisgICAgKiBfd2FpdF90aW1l b3V0KGNvbm4pCisgICAgICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gd2FpdCBmb3IgYXN5bmNo cm9ub3VzIGNvbm5lY3Rpb24gd2l0aCB0aW1lb3V0LgorICAgICAgICBUaGlzIGlzIGEgbm9uIGJs b2NraW5nIGNhbGwuCisKKyAgICAqIHBvbGwoZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cpCisgICAg ICAtIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcG9sbCB0aGUgZGF0YSBvZiBxdWVyeSBydW5uaW5n IG9uIGFzeW5jaHJvbm91cworICAgICAgICBjb25uZWN0aW9uLgorCisgICAgKiBzdGF0dXNfbWVz c2FnZSgpCisgICAgICAtIFJldHVybnMgdGhlIHN0YXR1cyBtZXNzYWdlIHJldHVybmVkIGJ5IHRo ZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQgb24KKyAgICAgIHRoZSBzZXJ2ZXIuCisKKyAgICAqIHJv d3NfYWZmZWN0ZWQoKQorICAgICAgLSBSZXR1cm5zIHRoZSBubyBvZiByb3dzIGFmZmVjdGVkIGJ5 IHRoZSBsYXN0IGNvbW1hbmQgZXhlY3V0ZWQgb24KKyAgICAgIHRoZSBzZXJ2ZXIuCisKKyAgICAq IGNhbmNlbF90cmFuc2FjdGlvbihjb25uX2lkLCBkaWQ9Tm9uZSkKKyAgICAgIC0gVGhpcyBtZXRo b2QgaXMgdXNlZCB0byBjYW5jZWwgdGhlIHRyYW5zYWN0aW9uIGZvciB0aGUKKyAgICAgICAgc3Bl Y2lmaWVkIGNvbm5lY3Rpb24gaWQgYW5kIGRhdGFiYXNlIGlkLgorCisgICAgKiBtZXNzYWdlcygp CisgICAgICAtIFJldHVybnMgdGhlIGxpc3Qgb2YgbWVzc2FnZXMvbm90aWNlcyBzZW5kcyBmcm9t IHRoZSBQb3N0Z3JlU1FMIGRhdGFiYXNlCisgICAgICAgIHNlcnZlci4KKworICAgICogX2Zvcm1h dHRlZF9leGNlcHRpb25fbXNnKGV4Y2VwdGlvbl9vYmosIGZvcm1hdHRlZF9tc2cpCisgICAgICAt IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcGFyc2UgdGhlIHBzeWNvcGcyLkVycm9yIG9iamVjdCBh bmQgcmV0dXJucyB0aGUKKyAgICAgICAgZm9ybWF0dGVkIGVycm9yIG1lc3NhZ2UgaWYgZmxhZyBp cyBzZXQgdG8gdHJ1ZSBlbHNlIHJldHVybgorICAgICAgICBub3JtYWwgZXJyb3IgbWVzc2FnZS4K KworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hbmFnZXIsIGNvbm5faWQsIGRi LCBhdXRvX3JlY29ubmVjdD1UcnVlLCBhc3luYz0wLAorICAgICAgICAgICAgICAgICB1c2VfYmlu YXJ5X3BsYWNlaG9sZGVyPUZhbHNlLCBhcnJheV90b19zdHJpbmc9RmFsc2UpOgorICAgICAgICBh c3NlcnQgKG1hbmFnZXIgaXMgbm90IE5vbmUpCisgICAgICAgIGFzc2VydCAoY29ubl9pZCBpcyBu b3QgTm9uZSkKKworICAgICAgICBzZWxmLmNvbm5faWQgPSBjb25uX2lkCisgICAgICAgIHNlbGYu bWFuYWdlciA9IG1hbmFnZXIKKyAgICAgICAgc2VsZi5kYiA9IGRiIGlmIGRiIGlzIG5vdCBOb25l IGVsc2UgbWFuYWdlci5kYgorICAgICAgICBzZWxmLmNvbm4gPSBOb25lCisgICAgICAgIHNlbGYu YXV0b19yZWNvbm5lY3QgPSBhdXRvX3JlY29ubmVjdAorICAgICAgICBzZWxmLmFzeW5jID0gYXN5 bmMKKyAgICAgICAgc2VsZi5fX2FzeW5jX2N1cnNvciA9IE5vbmUKKyAgICAgICAgc2VsZi5fX2Fz eW5jX3F1ZXJ5X2lkID0gTm9uZQorICAgICAgICBzZWxmLl9fYmFja2VuZF9waWQgPSBOb25lCisg ICAgICAgIHNlbGYuZXhlY3V0aW9uX2Fib3J0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLnJvd19j b3VudCA9IDAKKyAgICAgICAgc2VsZi5fX25vdGljZXMgPSBOb25lCisgICAgICAgIHNlbGYucGFz c3dvcmQgPSBOb25lCisgICAgICAgICMgVGhpcyBmbGFnIGluZGljYXRlcyB0aGUgY29ubmVjdGlv biBzdGF0dXMgKGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQpLgorICAgICAgICBzZWxmLndhc0Nvbm5l Y3RlZCA9IEZhbHNlCisgICAgICAgICMgVGhpcyBmbGFnIGluZGljYXRlcyB0aGUgY29ubmVjdGlv biByZWNvbm5lY3Rpbmcgc3RhdHVzLgorICAgICAgICBzZWxmLnJlY29ubmVjdGluZyA9IEZhbHNl CisgICAgICAgIHNlbGYudXNlX2JpbmFyeV9wbGFjZWhvbGRlciA9IHVzZV9iaW5hcnlfcGxhY2Vo b2xkZXIKKyAgICAgICAgc2VsZi5hcnJheV90b19zdHJpbmcgPSBhcnJheV90b19zdHJpbmcKKwor ICAgICAgICBzdXBlcihDb25uZWN0aW9uLCBzZWxmKS5fX2luaXRfXygpCisKKyAgICBkZWYgYXNf ZGljdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIGRpY3Rpb25hcnkg b2JqZWN0IHJlcHJlc2VudGluZyB0aGlzIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgICMg SW4gY2FzZSwgaXQgY2Fubm90IGJlIGF1dG8gcmVjb25uZWN0YWJsZSwgb3IgYWxyZWFkeSBiZWVu IHJlbGVhc2VkLAorICAgICAgICAjIHRoZW4gd2Ugd2lsbCByZXR1cm4gTm9uZS4KKyAgICAgICAg aWYgbm90IHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIG5vdCBzZWxmLmNvbm46CisgICAgICAgICAg ICByZXR1cm4gTm9uZQorCisgICAgICAgIHJlcyA9IGRpY3QoKQorICAgICAgICByZXNbJ2Nvbm5f aWQnXSA9IHNlbGYuY29ubl9pZAorICAgICAgICByZXNbJ2RhdGFiYXNlJ10gPSBzZWxmLmRiCisg ICAgICAgIHJlc1snYXN5bmMnXSA9IHNlbGYuYXN5bmMKKyAgICAgICAgcmVzWyd3YXNDb25uZWN0 ZWQnXSA9IHNlbGYud2FzQ29ubmVjdGVkCisgICAgICAgIHJlc1snYXV0b19yZWNvbm5lY3QnXSA9 IHNlbGYuYXV0b19yZWNvbm5lY3QKKyAgICAgICAgcmVzWyd1c2VfYmluYXJ5X3BsYWNlaG9sZGVy J10gPSBzZWxmLnVzZV9iaW5hcnlfcGxhY2Vob2xkZXIKKyAgICAgICAgcmVzWydhcnJheV90b19z dHJpbmcnXSA9IHNlbGYuYXJyYXlfdG9fc3RyaW5nCisKKyAgICAgICAgcmV0dXJuIHJlcworCisg ICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIlBHIENvbm5lY3Rpb246IHsw fSAoezF9KSAtPiB7Mn0gKGFqYXg6ezN9KSIuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5jb25u X2lkLCBzZWxmLmRiLAorICAgICAgICAgICAgJ0Nvbm5lY3RlZCcgaWYgc2VsZi5jb25uIGFuZCBu b3Qgc2VsZi5jb25uLmNsb3NlZCBlbHNlCisgICAgICAgICAgICAiRGlzY29ubmVjdGVkIiwKKyAg ICAgICAgICAgIHNlbGYuYXN5bmMKKyAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6 CisgICAgICAgIHJldHVybiAiUEcgQ29ubmVjdGlvbjogezB9ICh7MX0pIC0+IHsyfSAoYWpheDp7 M30pIi5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmNvbm5faWQsIHNlbGYuZGIsCisgICAgICAg ICAgICAnQ29ubmVjdGVkJyBpZiBzZWxmLmNvbm4gYW5kIG5vdCBzZWxmLmNvbm4uY2xvc2VkIGVs c2UKKyAgICAgICAgICAgICJEaXNjb25uZWN0ZWQiLAorICAgICAgICAgICAgc2VsZi5hc3luYwor ICAgICAgICApCisKKyAgICBkZWYgY29ubmVjdChzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIGlm IHNlbGYuY29ubjoKKyAgICAgICAgICAgIGlmIHNlbGYuY29ubi5jbG9zZWQ6CisgICAgICAgICAg ICAgICAgc2VsZi5jb25uID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAgICAgIHBnX2Nvbm4gPSBOb25lCisgICAgICAgIHBh c3N3b3JkID0gTm9uZQorICAgICAgICBwYXNzZmlsZSA9IE5vbmUKKyAgICAgICAgbWdyID0gc2Vs Zi5tYW5hZ2VyCisKKyAgICAgICAgZW5jcGFzcyA9IGt3YXJnc1sncGFzc3dvcmQnXSBpZiAncGFz c3dvcmQnIGluIGt3YXJncyBlbHNlIE5vbmUKKyAgICAgICAgcGFzc2ZpbGUgPSBrd2FyZ3NbJ3Bh c3NmaWxlJ10gaWYgJ3Bhc3NmaWxlJyBpbiBrd2FyZ3MgZWxzZSBOb25lCisKKyAgICAgICAgaWYg ZW5jcGFzcyBpcyBOb25lOgorICAgICAgICAgICAgZW5jcGFzcyA9IHNlbGYucGFzc3dvcmQgb3Ig Z2V0YXR0cihtZ3IsICdwYXNzd29yZCcsIE5vbmUpCisKKyAgICAgICAgIyBSZXNldCB0aGUgZXhp c3RpbmcgY29ubmVjdGlvbiBwYXNzd29yZAorICAgICAgICBpZiBzZWxmLnJlY29ubmVjdGluZyBp cyBub3QgRmFsc2U6CisgICAgICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9uZQorCisgICAgICAg IGlmIGVuY3Bhc3M6CisgICAgICAgICAgICAjIEZldGNoIExvZ2dlZCBpbiBVc2VyIERldGFpbHMu CisgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnkoaWQ9Y3VycmVudF91c2Vy LmlkKS5maXJzdCgpCisKKyAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoIlVuYXV0aG9yaXplZCByZXF1ZXN0LiIpCisKKyAg ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXNzd29yZCA9IGRlY3J5cHQoZW5jcGFz cywgdXNlci5wYXNzd29yZCkKKyAgICAgICAgICAgICAgICAjIEhhbmRsaW5nIG9mIG5vbiBhc2Np aSBwYXNzd29yZCAoUHl0aG9uMikKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN0ciwgJ2Rl Y29kZScpOgorICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCA9IHBhc3N3b3JkLmRlY29kZSgn dXRmLTgnKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICAjIHBhc3N3b3JkIGlzIGlu IGJ5dGVzLCBmb3IgcHl0aG9uMyB3ZSBuZWVkIGl0IGluIHN0cmluZworICAgICAgICAgICAgICAg IGVsaWYgaXNpbnN0YW5jZShwYXNzd29yZCwgYnl0ZXMpOgorICAgICAgICAgICAgICAgICAgICBw YXNzd29yZCA9IHBhc3N3b3JkLmRlY29kZSgpCisKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUp CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgIF8o CisgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGRlY3J5cHQgdGhlIHNhdmVkIHBh c3N3b3JkLlxuRXJyb3I6IHswfSIKKyAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoc3RyKGUp KQorCisgICAgICAgICMgSWYgbm8gcGFzc3dvcmQgY3JlZGVudGlhbCBpcyBmb3VuZCB0aGVuIGNv bm5lY3QgcmVxdWVzdCBtaWdodAorICAgICAgICAjIGNvbWUgZnJvbSBRdWVyeSB0b29sLCBWaWV3 RGF0YSBncmlkLCBkZWJ1Z2dlciBldGMgdG9vbHMuCisgICAgICAgICMgd2Ugd2lsbCBjaGVjayBm b3IgcGdwYXNzIGZpbGUgYXZhaWxhYmlsaXR5IGZyb20gY29ubmVjdGlvbiBtYW5hZ2VyCisgICAg ICAgICMgaWYgaXQncyBwcmVzZW50IHRoZW4gd2Ugd2lsbCB1c2UgaXQKKyAgICAgICAgaWYgbm90 IHBhc3N3b3JkIGFuZCBub3QgZW5jcGFzcyBhbmQgbm90IHBhc3NmaWxlOgorICAgICAgICAgICAg cGFzc2ZpbGUgPSBtZ3IucGFzc2ZpbGUgaWYgbWdyLnBhc3NmaWxlIGVsc2UgTm9uZQorCisgICAg ICAgIHRyeToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc3RyLCAnZGVjb2RlJyk6CisgICAgICAg ICAgICAgICAgZGF0YWJhc2UgPSBzZWxmLmRiLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAg ICAgIHVzZXIgPSBtZ3IudXNlci5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICBjb25u X2lkID0gc2VsZi5jb25uX2lkLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBkYXRhYmFzZSA9IHNlbGYuZGIKKyAgICAgICAgICAgICAgICB1c2VyID0g bWdyLnVzZXIKKyAgICAgICAgICAgICAgICBjb25uX2lkID0gc2VsZi5jb25uX2lkCisKKyAgICAg ICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgb3MuZW52aXJvblsnUEdBUFBOQU1FJ10gPSAn ezB9IC0gezF9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgY29uZmlnLkFQUF9OQU1FLCBjb25u X2lkKQorCisgICAgICAgICAgICBwZ19jb25uID0gcHN5Y29wZzIuY29ubmVjdCgKKyAgICAgICAg ICAgICAgICBob3N0PW1nci5ob3N0LAorICAgICAgICAgICAgICAgIGhvc3RhZGRyPW1nci5ob3N0 YWRkciwKKyAgICAgICAgICAgICAgICBwb3J0PW1nci5wb3J0LAorICAgICAgICAgICAgICAgIGRh dGFiYXNlPWRhdGFiYXNlLAorICAgICAgICAgICAgICAgIHVzZXI9dXNlciwKKyAgICAgICAgICAg ICAgICBwYXNzd29yZD1wYXNzd29yZCwKKyAgICAgICAgICAgICAgICBhc3luYz1zZWxmLmFzeW5j LAorICAgICAgICAgICAgICAgIHBhc3NmaWxlPWdldF9jb21wbGV0ZV9maWxlX3BhdGgocGFzc2Zp bGUpLAorICAgICAgICAgICAgICAgIHNzbG1vZGU9bWdyLnNzbF9tb2RlLAorICAgICAgICAgICAg ICAgIHNzbGNlcnQ9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChtZ3Iuc3NsY2VydCksCisgICAgICAg ICAgICAgICAgc3Nsa2V5PWdldF9jb21wbGV0ZV9maWxlX3BhdGgobWdyLnNzbGtleSksCisgICAg ICAgICAgICAgICAgc3Nscm9vdGNlcnQ9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChtZ3Iuc3Nscm9v dGNlcnQpLAorICAgICAgICAgICAgICAgIHNzbGNybD1nZXRfY29tcGxldGVfZmlsZV9wYXRoKG1n ci5zc2xjcmwpLAorICAgICAgICAgICAgICAgIHNzbGNvbXByZXNzaW9uPVRydWUgaWYgbWdyLnNz bGNvbXByZXNzaW9uIGVsc2UgRmFsc2UsCisgICAgICAgICAgICAgICAgc2VydmljZT1tZ3Iuc2Vy dmljZQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICAjIElmIGNvbm5lY3Rpb24gaXMgYXN5 bmNocm9ub3VzIHRoZW4gd2Ugd2lsbCBoYXZlIHRvIHdhaXQKKyAgICAgICAgICAgICMgdW50aWwg dGhlIGNvbm5lY3Rpb24gaXMgcmVhZHkgdG8gdXNlLgorICAgICAgICAgICAgaWYgc2VsZi5hc3lu YyA9PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3dhaXQocGdfY29ubikKKworICAgICAgICBl eGNlcHQgcHN5Y29wZzIuRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUucGdlcnJvcjoKKyAg ICAgICAgICAgICAgICBtc2cgPSBlLnBnZXJyb3IKKyAgICAgICAgICAgIGVsaWYgZS5kaWFnLm1l c3NhZ2VfZGV0YWlsOgorICAgICAgICAgICAgICAgIG1zZyA9IGUuZGlhZy5tZXNzYWdlX2RldGFp bAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSBzdHIoZSkKKyAgICAg ICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5pbmZvKAorICAgICAgICAgICAgICAgIHUiRmFpbGVk IHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZlcigje3NlcnZlcl9pZH0pIGZvciAiCisg ICAgICAgICAgICAgICAgdSJjb25uZWN0aW9uICh7Y29ubl9pZH0pIHdpdGggZXJyb3IgbWVzc2Fn ZSBhcyBiZWxvdyIKKyAgICAgICAgICAgICAgICB1Ijp7bXNnfSIuZm9ybWF0KAorICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAgICAgICAg ICAgY29ubl9pZD1jb25uX2lkLAorICAgICAgICAgICAgICAgICAgICBtc2c9bXNnLmRlY29kZSgn dXRmLTgnKSBpZiBoYXNhdHRyKHN0ciwgJ2RlY29kZScpIGVsc2UgbXNnCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtc2cKKworICAg ICAgICAjIE92ZXJ3cml0ZSBjb25uZWN0aW9uIG5vdGljZSBhdHRyIHRvIHN1cHBvcnQKKyAgICAg ICAgIyBtb3JlIHRoYW4gNTAgbm90aWNlcyBhdCBhIHRpbWUKKyAgICAgICAgcGdfY29ubi5ub3Rp Y2VzID0gZGVxdWUoW10sIHNlbGYuQVNZTkNfTk9USUNFX01BWExFTkdUSCkKKworICAgICAgICBz ZWxmLmNvbm4gPSBwZ19jb25uCisgICAgICAgIHNlbGYud2FzQ29ubmVjdGVkID0gVHJ1ZQorICAg ICAgICB0cnk6CisgICAgICAgICAgICBzdGF0dXMsIG1zZyA9IHNlbGYuX2luaXRpYWxpemUoY29u bl9pZCwgKiprd2FyZ3MpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgICAgIHNlbGYuY29u biA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlY29ubmVjdGluZzoKKyAgICAgICAg ICAgICAgICBzZWxmLndhc0Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgICAgICByYWlzZSBlCisK KyAgICAgICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgbWdyLl91cGRhdGVfcGFzc3dvcmQoZW5j cGFzcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlY29ubmVjdGlu ZzoKKyAgICAgICAgICAgICAgICBzZWxmLndhc0Nvbm5lY3RlZCA9IEZhbHNlCisKKyAgICAgICAg cmV0dXJuIHN0YXR1cywgbXNnCisKKyAgICBkZWYgX2luaXRpYWxpemUoc2VsZiwgY29ubl9pZCwg Kiprd2FyZ3MpOgorICAgICAgICBzZWxmLmV4ZWN1dGlvbl9hYm9ydGVkID0gRmFsc2UKKyAgICAg ICAgc2VsZi5fX2JhY2tlbmRfcGlkID0gc2VsZi5jb25uLmdldF9iYWNrZW5kX3BpZCgpCisKKyAg ICAgICAgc2V0YXR0cihnLCAiezB9I3sxfSIuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5tYW5h Z2VyLnNpZCwKKyAgICAgICAgICAgIHNlbGYuY29ubl9pZC5lbmNvZGUoJ3V0Zi04JykKKyAgICAg ICAgKSwgTm9uZSkKKworICAgICAgICBzdGF0dXMsIGN1ciA9IHNlbGYuX19jdXJzb3IoKQorICAg ICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25f bXNnCisgICAgICAgIG1nciA9IHNlbGYubWFuYWdlcgorCisgICAgICAgIGRlZiBfZXhlY3V0ZShj dXIsIHF1ZXJ5LCBwYXJhbXM9Tm9uZSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg ICAgc2VsZi5fX2ludGVybmFsX2Jsb2NraW5nX2V4ZWN1dGUoY3VyLCBxdWVyeSwgcGFyYW1zKQor ICAgICAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIHBlOgorICAgICAgICAgICAgICAg IGN1ci5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZF9leGNlcHRpb25f bXNnKHBlLCBGYWxzZSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgIyBhdXRv Y29tbWl0IGZsYWcgZG9lcyBub3Qgd29yayB3aXRoIGFzeW5jaHJvbm91cyBjb25uZWN0aW9ucy4K KyAgICAgICAgIyBCeSBkZWZhdWx0IGFzeW5jaHJvbm91cyBjb25uZWN0aW9uIHJ1bnMgaW4gYXV0 b2NvbW1pdCBtb2RlLgorICAgICAgICBpZiBzZWxmLmFzeW5jID09IDA6CisgICAgICAgICAgICBp ZiAnYXV0b2NvbW1pdCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2F1dG9jb21taXQnXSBpcyBGYWxz ZToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4uYXV0b2NvbW1pdCA9IEZhbHNlCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5hdXRvY29tbWl0ID0gVHJ1ZQor CisgICAgICAgIHJlZ2lzdGVyX3N0cmluZ190eXBlY2FzdGVycyhzZWxmLmNvbm4pCisKKyAgICAg ICAgaWYgc2VsZi5hcnJheV90b19zdHJpbmc6CisgICAgICAgICAgICByZWdpc3Rlcl9hcnJheV90 b19zdHJpbmdfdHlwZWNhc3RlcnMoc2VsZi5jb25uKQorCisgICAgICAgICMgUmVnaXN0ZXIgdHlw ZSBjYXN0ZXJzIGZvciBiaW5hcnkgZGF0YSBvbmx5IGFmdGVyIHJlZ2lzdGVyaW5nIGFycmF5IHRv CisgICAgICAgICMgc3RyaW5nIHR5cGUgY2FzdGVycy4KKyAgICAgICAgaWYgc2VsZi51c2VfYmlu YXJ5X3BsYWNlaG9sZGVyOgorICAgICAgICAgICAgcmVnaXN0ZXJfYmluYXJ5X3R5cGVjYXN0ZXJz KHNlbGYuY29ubikKKworICAgICAgICBzdGF0dXMgPSBfZXhlY3V0ZShjdXIsICJTRVQgRGF0ZVN0 eWxlPUlTTzsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNFVCBjbGllbnRfbWlu X21lc3NhZ2VzPW5vdGljZTsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNFVCBi eXRlYV9vdXRwdXQ9ZXNjYXBlOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU0VU IGNsaWVudF9lbmNvZGluZz0nVU5JQ09ERSc7IikKKworICAgICAgICBpZiBzdGF0dXMgaXMgbm90 IE5vbmU6CisgICAgICAgICAgICBzZWxmLmNvbm4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5j b25uID0gTm9uZQorCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0YXR1cworCisgICAgICAg IGlmIG1nci5yb2xlOgorICAgICAgICAgICAgc3RhdHVzID0gX2V4ZWN1dGUoY3VyLCB1IlNFVCBS T0xFIFRPICVzIiwgW21nci5yb2xlXSkKKworICAgICAgICAgICAgaWYgc3RhdHVzIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5jbG9zZSgpCisgICAgICAgICAgICAgICAg c2VsZi5jb25uID0gTm9uZQorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJv cigKKyAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZlciAo I3tzZXJ2ZXJfaWR9KSBmb3IgIgorICAgICAgICAgICAgICAgICAgICAiY29ubmVjdGlvbiAoe2Nv bm5faWR9KSwgYnV0IC0gZmFpbGVkIHRvIHNldHVwIHRoZSByb2xlICIKKyAgICAgICAgICAgICAg ICAgICAgIndpdGggZXJyb3IgbWVzc2FnZSBhcyBiZWxvdzp7bXNnfSIuZm9ybWF0KAorICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICBjb25uX2lkPWNvbm5faWQsCisgICAgICAgICAgICAgICAgICAgICAgICBt c2c9c3RhdHVzCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgIF8oCisgICAg ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHNldHVwIHRoZSByb2xlIHdpdGggZXJyb3Ig bWVzc2FnZTpcbnswfSIKKyAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoc3RhdHVzKQorCisg ICAgICAgIGlmIG1nci52ZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHN0YXR1cyA9IF9leGVjdXRl KGN1ciwgIlNFTEVDVCB2ZXJzaW9uKCkiKQorCisgICAgICAgICAgICBpZiBzdGF0dXMgaXMgbm90 IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmNsb3NlKCkKKyAgICAgICAgICAgICAg ICBzZWxmLmNvbm4gPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi53YXNDb25uZWN0ZWQgPSBG YWxzZQorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAgICAg ICAgICAgICAgICAgIkZhaWxlZCB0byBmZXRjaCB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBvbiB0 aGUgIgorICAgICAgICAgICAgICAgICAgICAiZXN0YWJsaXNoZWQgY29ubmVjdGlvbiB0byB0aGUg ZGF0YWJhc2Ugc2VydmVyICIKKyAgICAgICAgICAgICAgICAgICAgIigje3NlcnZlcl9pZH0pIGZv ciAne2Nvbm5faWR9JyB3aXRoIGJlbG93IGVycm9yICIKKyAgICAgICAgICAgICAgICAgICAgIm1l c3NhZ2U6e21zZ30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1z ZWxmLm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1jb25uX2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPXN0YXR1cykKKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzdGF0dXMKKworICAgICAgICAgICAgaWYg Y3VyLnJvd2NvdW50ID4gMDoKKyAgICAgICAgICAgICAgICByb3cgPSBjdXIuZmV0Y2htYW55KDEp WzBdCisgICAgICAgICAgICAgICAgbWdyLnZlciA9IHJvd1sndmVyc2lvbiddCisgICAgICAgICAg ICAgICAgbWdyLnN2ZXJzaW9uID0gc2VsZi5jb25uLnNlcnZlcl92ZXJzaW9uCisKKyAgICAgICAg c3RhdHVzID0gX2V4ZWN1dGUoY3VyLCAiIiIKK1NFTEVDVAorICAgIGRiLm9pZCBhcyBkaWQsIGRi LmRhdG5hbWUsIGRiLmRhdGFsbG93Y29ubiwKKyAgICBwZ19lbmNvZGluZ190b19jaGFyKGRiLmVu Y29kaW5nKSBBUyBzZXJ2ZXJlbmNvZGluZywKKyAgICBoYXNfZGF0YWJhc2VfcHJpdmlsZWdlKGRi Lm9pZCwgJ0NSRUFURScpIGFzIGNhbmNyZWF0ZSwgZGF0bGFzdHN5c29pZAorRlJPTQorICAgIHBn X2RhdGFiYXNlIGRiCitXSEVSRSBkYi5kYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpIiIiKQor CisgICAgICAgIGlmIHN0YXR1cyBpcyBOb25lOgorICAgICAgICAgICAgbWdyLmRiX2luZm8gPSBt Z3IuZGJfaW5mbyBvciBkaWN0KCkKKyAgICAgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6Cisg ICAgICAgICAgICAgICAgcmVzID0gY3VyLmZldGNobWFueSgxKVswXQorICAgICAgICAgICAgICAg IG1nci5kYl9pbmZvW3Jlc1snZGlkJ11dID0gcmVzLmNvcHkoKQorCisgICAgICAgICAgICAgICAg IyBXZSBkbyBub3QgaGF2ZSBkYXRhYmFzZSBvaWQgZm9yIHRoZSBtYWludGVuYW5jZSBkYXRhYmFz ZS4KKyAgICAgICAgICAgICAgICBpZiBsZW4obWdyLmRiX2luZm8pID09IDE6CisgICAgICAgICAg ICAgICAgICAgIG1nci5kaWQgPSByZXNbJ2RpZCddCisKKyAgICAgICAgc3RhdHVzID0gX2V4ZWN1 dGUoY3VyLCAiIiIKK1NFTEVDVAorICAgIG9pZCBhcyBpZCwgcm9sbmFtZSBhcyBuYW1lLCByb2xz dXBlciBhcyBpc19zdXBlcnVzZXIsCisgICAgcm9sY3JlYXRlcm9sZSBhcyBjYW5fY3JlYXRlX3Jv bGUsIHJvbGNyZWF0ZWRiIGFzIGNhbl9jcmVhdGVfZGIKK0ZST00KKyAgICBwZ19jYXRhbG9nLnBn X3JvbGVzCitXSEVSRQorICAgIHJvbG5hbWUgPSBjdXJyZW50X3VzZXIiIiIpCisKKyAgICAgICAg aWYgc3RhdHVzIGlzIE5vbmU6CisgICAgICAgICAgICBtZ3IudXNlcl9pbmZvID0gZGljdCgpCisg ICAgICAgICAgICBpZiBjdXIucm93Y291bnQgPiAwOgorICAgICAgICAgICAgICAgIG1nci51c2Vy X2luZm8gPSBjdXIuZmV0Y2htYW55KDEpWzBdCisKKyAgICAgICAgaWYgJ3Bhc3N3b3JkJyBpbiBr d2FyZ3M6CisgICAgICAgICAgICBtZ3IucGFzc3dvcmQgPSBrd2FyZ3NbJ3Bhc3N3b3JkJ10KKwor ICAgICAgICBzZXJ2ZXJfdHlwZXMgPSBOb25lCisgICAgICAgIGlmICdzZXJ2ZXJfdHlwZXMnIGlu IGt3YXJncyBhbmQgaXNpbnN0YW5jZSgKKyAgICAgICAgICAgICAgICBrd2FyZ3NbJ3NlcnZlcl90 eXBlcyddLCBsaXN0KToKKyAgICAgICAgICAgIHNlcnZlcl90eXBlcyA9IG1nci5zZXJ2ZXJfdHlw ZXMgPSBrd2FyZ3NbJ3NlcnZlcl90eXBlcyddCisKKyAgICAgICAgaWYgc2VydmVyX3R5cGVzIGlz IE5vbmU6CisgICAgICAgICAgICBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMudHlwZXMgaW1wb3J0IFNlcnZlclR5cGUKKyAgICAgICAgICAgIHNlcnZlcl90eXBlcyA9 IFNlcnZlclR5cGUudHlwZXMoKQorCisgICAgICAgIGZvciBzdCBpbiBzZXJ2ZXJfdHlwZXM6Cisg ICAgICAgICAgICBpZiBzdC5pbnN0YW5jZU9mKG1nci52ZXIpOgorICAgICAgICAgICAgICAgIG1n ci5zZXJ2ZXJfdHlwZSA9IHN0LnN0eXBlCisgICAgICAgICAgICAgICAgbWdyLnNlcnZlcl9jbHMg PSBzdAorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgbWdyLnVwZGF0ZV9zZXNzaW9u KCkKKworICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAgZGVmIF9fY3Vyc29yKHNlbGYs IHNlcnZlcl9jdXJzb3I9RmFsc2UpOgorICAgICAgICBpZiBzZWxmLndhc0Nvbm5lY3RlZCBpcyBG YWxzZToKKyAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25Mb3N0KAorICAgICAgICAgICAgICAg IHNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAgc2VsZi5kYiwKKyAgICAgICAgICAg ICAgICBOb25lIGlmIHNlbGYuY29ubl9pZFswOjNdID09IHUnREI6JyBlbHNlIHNlbGYuY29ubl9p ZFs1Ol0KKyAgICAgICAgICAgICkKKyAgICAgICAgY3VyID0gZ2V0YXR0cihnLCAiezB9I3sxfSIu Zm9ybWF0KAorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAgIHNlbGYu Y29ubl9pZC5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgKSwgTm9uZSkKKworICAgICAgICBpZiBz ZWxmLmNvbm5lY3RlZCgpIGFuZCBjdXIgYW5kIG5vdCBjdXIuY2xvc2VkOgorICAgICAgICAgICAg aWYgbm90IHNlcnZlcl9jdXJzb3Igb3IgKHNlcnZlcl9jdXJzb3IgYW5kIGN1ci5uYW1lKToKKyAg ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgY3VyCisKKyAgICAgICAgaWYgbm90IHNlbGYuY29u bmVjdGVkKCk6CisgICAgICAgICAgICBlcnJtc2cgPSAiIgorCisgICAgICAgICAgICBjdXJyZW50 X2FwcC5sb2dnZXIud2FybmluZygKKyAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiB0byBkYXRh YmFzZSBzZXJ2ZXIgKCN7c2VydmVyX2lkfSkgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgImNv bm5lY3Rpb24gLSAne2Nvbm5faWR9JyBoYXMgYmVlbiBsb3N0LiIuZm9ybWF0KAorICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAgICAgICAg ICAgY29ubl9pZD1zZWxmLmNvbm5faWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIGlmIHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIG5vdCBzZWxmLnJlY29u bmVjdGluZzoKKyAgICAgICAgICAgICAgICBzZWxmLl9fYXR0ZW1wdF9leGVjdXRpb25fcmVjb25u ZWN0KE5vbmUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIENvbm5l Y3Rpb25Mb3N0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuc2lkLAorICAgICAg ICAgICAgICAgICAgICBzZWxmLmRiLAorICAgICAgICAgICAgICAgICAgICBOb25lIGlmIHNlbGYu Y29ubl9pZFswOjNdID09IHUnREI6JyBlbHNlIHNlbGYuY29ubl9pZFs1Ol0KKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgc2VydmVyX2N1cnNvcjoKKyAg ICAgICAgICAgICAgICAjIFByb3ZpZGluZyBuYW1lIHRvIGN1cnNvciB3aWxsIGNyZWF0ZSBzZXJ2 ZXIgc2lkZSBjdXJzb3IuCisgICAgICAgICAgICAgICAgY3Vyc29yX25hbWUgPSAiQ1VSU09SOnsw fSIuZm9ybWF0KHNlbGYuY29ubl9pZCkKKyAgICAgICAgICAgICAgICBjdXIgPSBzZWxmLmNvbm4u Y3Vyc29yKAorICAgICAgICAgICAgICAgICAgICBuYW1lPWN1cnNvcl9uYW1lLCBjdXJzb3JfZmFj dG9yeT1EaWN0Q3Vyc29yCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBjdXIgPSBzZWxmLmNvbm4uY3Vyc29yKGN1cnNvcl9mYWN0b3J5PURpY3RD dXJzb3IpCisgICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBwZToKKyAgICAgICAgICAg IGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24ocGUpCisgICAgICAgICAgICBlcnJtc2cgPSBn ZXR0ZXh0KAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGN1cnNvciBmb3IgcHN5 Y29wZzIgY29ubmVjdGlvbiB3aXRoIGVycm9yICIKKyAgICAgICAgICAgICAgICAibWVzc2FnZSBm b3IgdGhlIHNlcnZlciN7MX06ezJ9OlxuezB9IgorICAgICAgICAgICAgKS5mb3JtYXQoCisgICAg ICAgICAgICAgICAgc3RyKHBlKSwgc2VsZi5tYW5hZ2VyLnNpZCwgc2VsZi5kYgorICAgICAgICAg ICAgKQorCisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoZXJybXNnKQorICAg ICAgICAgICAgaWYgc2VsZi5jb25uLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4g PSBOb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi5hdXRvX3JlY29ubmVjdCBhbmQgbm90IHNl bGYucmVjb25uZWN0aW5nOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu aW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gcmVjb25uZWN0IHRvIHRoZSBkYXRhYmFzZSBzZXJ2 ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoI3tzZXJ2ZXJfaWR9KSBmb3IgdGhl IGNvbm5lY3Rpb24gLSAne2Nvbm5faWR9Jy4iCisgICAgICAgICAgICAgICAgICAgICAgICApLmZv cm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2Vy LnNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9pZAor ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fYXR0ZW1wdF9leGVjdXRpb25fcmVjb25uZWN0KAor ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2N1cnNvciwgc2VydmVyX2N1cnNvcgorICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICAgICAgcmFpc2UgQ29ubmVjdGlvbkxvc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxm Lm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYiwKKyAgICAgICAg ICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6M10gPT0gdSdEQjonCisgICAg ICAgICAgICAgICAgICAgICAgICBlbHNlIHNlbGYuY29ubl9pZFs1Ol0KKyAgICAgICAgICAgICAg ICAgICAgKQorCisgICAgICAgIHNldGF0dHIoCisgICAgICAgICAgICBnLCAiezB9I3sxfSIuZm9y bWF0KAorICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsIHNlbGYuY29ubl9pZC5lbmNv ZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICksIGN1cgorICAgICAgICApCisKKyAgICAgICAgcmV0 dXJuIFRydWUsIGN1cgorCisgICAgZGVmIF9faW50ZXJuYWxfYmxvY2tpbmdfZXhlY3V0ZShzZWxm LCBjdXIsIHF1ZXJ5LCBwYXJhbXMpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biBleGVjdXRlcyB0aGUgcXVlcnkgdXNpbmcgY3Vyc29yJ3MgZXhlY3V0ZSBmdW5jdGlvbiwKKyAg ICAgICAgYnV0IGluIGNhc2Ugb2YgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gd2UgbmVlZCB0byB3 YWl0IGZvciB0aGUKKyAgICAgICAgdHJhbnNhY3Rpb24gdG8gYmUgY29tcGxldGVkLiBJZiBzZWxm LmFzeW5jIGlzIDEgdGhlbiBpdCBpcyBhCisgICAgICAgIGJsb2NraW5nIGNhbGwuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGN1cjogQ3Vyc29yIG9iamVjdAorICAgICAgICAgICAgcXVl cnk6IFNRTCBxdWVyeSB0byBydW4uCisgICAgICAgICAgICBwYXJhbXM6IEV4dHJhIHBhcmFtZXRl cnMKKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6Cisg ICAgICAgICAgICBpZiB0eXBlKHF1ZXJ5KSA9PSB1bmljb2RlOgorICAgICAgICAgICAgICAgIHF1 ZXJ5ID0gcXVlcnkuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBx dWVyeSA9IHF1ZXJ5LmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGN1ci5leGVjdXRlKHF1ZXJ5 LCBwYXJhbXMpCisgICAgICAgIGlmIHNlbGYuYXN5bmMgPT0gMToKKyAgICAgICAgICAgIHNlbGYu X3dhaXQoY3VyLmNvbm5lY3Rpb24pCisKKyAgICBkZWYgZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2 KHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSwgcGFyYW1zPU5v bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9u X21zZz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZHM9MjAw MCk6CisgICAgICAgICIiIgorICAgICAgICBUbyBmZXRjaCBxdWVyeSByZXN1bHQgYW5kIGdlbmVy YXRlIENTViBvdXRwdXQKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcXVlcnk6IFNRTAor ICAgICAgICAgICAgcGFyYW1zOiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIGZv cm1hdHRlZF9leGNlcHRpb25fbXNnOiBGb3IgZXhjZXB0aW9uCisgICAgICAgICAgICByZWNvcmRz OiBOdW1iZXIgb2YgaW5pdGlhbCByZWNvcmRzCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBHZW5lcmF0b3IgcmVzcG9uc2UKKyAgICAgICAgIiIiCisgICAgICAgIHN0YXR1cywgY3VyID0g c2VsZi5fX2N1cnNvcihzZXJ2ZXJfY3Vyc29yPVRydWUpCisgICAgICAgIHNlbGYucm93X2NvdW50 ID0gMAorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2Us IHN0cihjdXIpCisgICAgICAgIHF1ZXJ5X2lkID0gcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkK KworICAgICAgICBpZiBJU19QWTIgYW5kIHR5cGUocXVlcnkpID09IHVuaWNvZGU6CisgICAgICAg ICAgICBxdWVyeSA9IHF1ZXJ5LmVuY29kZSgndXRmLTgnKQorCisgICAgICAgIGN1cnJlbnRfYXBw LmxvZ2dlci5sb2coCisgICAgICAgICAgICAyNSwKKyAgICAgICAgICAgIHUiRXhlY3V0ZSAod2l0 aCBzZXJ2ZXIgY3Vyc29yKSBmb3Igc2VydmVyICN7c2VydmVyX2lkfSAtICIKKyAgICAgICAgICAg IHUie2Nvbm5faWR9IChRdWVyeS1pZDoge3F1ZXJ5X2lkfSk6XG57cXVlcnl9Ii5mb3JtYXQoCisg ICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAg ICAgY29ubl9pZD1zZWxmLmNvbm5faWQsCisgICAgICAgICAgICAgICAgcXVlcnk9cXVlcnkuZGVj b2RlKCd1dGYtOCcpIGlmCisgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25faW5mbyA8ICgzLCkg ZWxzZSBxdWVyeSwKKyAgICAgICAgICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAorICAgICAgICAg ICAgKQorICAgICAgICApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX19pbnRlcm5h bF9ibG9ja2luZ19leGVjdXRlKGN1ciwgcXVlcnksIHBhcmFtcykKKyAgICAgICAgZXhjZXB0IHBz eWNvcGcyLkVycm9yIGFzIHBlOgorICAgICAgICAgICAgY3VyLmNsb3NlKCkKKyAgICAgICAgICAg IGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKHBlLCBmb3JtYXR0ZWRfZXhj ZXB0aW9uX21zZykKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAg ICAgICAgICAgICB1ImZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5ICgod2l0aCBzZXJ2ZXIgY3Vyc29y KSAiCisgICAgICAgICAgICAgICAgdSJmb3IgdGhlIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29u bl9pZH0gIgorICAgICAgICAgICAgICAgIHUiKHF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbmVycm9y IG1lc3NhZ2U6e2Vycm1zZ30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lk PXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25u X2lkLAorICAgICAgICAgICAgICAgICAgICBxdWVyeT1xdWVyeSwKKyAgICAgICAgICAgICAgICAg ICAgZXJybXNnPWVycm1zZywKKyAgICAgICAgICAgICAgICAgICAgcXVlcnlfaWQ9cXVlcnlfaWQK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4gRmFs c2UsIGVycm1zZworCisgICAgICAgIGRlZiBoYW5kbGVfanNvbl9kYXRhKGpzb25fY29sdW1ucywg cmVzdWx0cyk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFsgVGhpcyBpcyBvbmx5IGZv ciBQeXRob24yLnhdCisgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgdXNlZnVsIHRv IGhhbmRsZSBqc29uIGRhdGEgdHlwZXMuCisgICAgICAgICAgICBXZSB3aWxsIGR1bXAganNvbiBk YXRhIGFzIHByb3BlciBqc29uIGluc3RlYWQgb2YgdW5pY29kZSB2YWx1ZXMKKworICAgICAgICAg ICAgQXJnczoKKyAgICAgICAgICAgICAgICBqc29uX2NvbHVtbnM6IENvbHVtbnMgd2hpY2ggY29u dGFpbnMganNvbiBkYXRhCisgICAgICAgICAgICAgICAgcmVzdWx0czogUXVlcnkgcmVzdWx0CisK KyAgICAgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICAgICAgcmVzdWx0cworICAgICAgICAg ICAgIiIiCisgICAgICAgICAgICAjIE9ubHkgaWYgUHl0aG9uMiBhbmQgdGhlcmUgYXJlIGNvbHVt bnMgd2l0aCBKU09OIHR5cGUKKyAgICAgICAgICAgIGlmIElTX1BZMiBhbmQgbGVuKGpzb25fY29s dW1ucykgPiAwOgorICAgICAgICAgICAgICAgIHRlbXBfcmVzdWx0cyA9IFtdCisgICAgICAgICAg ICAgICAgZm9yIHJvdyBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICByZXMgPSBkaWN0 KCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gcm93Lml0ZW1zKCk6CisgICAgICAg ICAgICAgICAgICAgICAgICBpZiBrIGluIGpzb25fY29sdW1uczoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNba10gPSBqc29uLmR1bXBzKHYpCisgICAgICAgICAgICAgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc1trXSA9IHYKKyAgICAgICAg ICAgICAgICAgICAgdGVtcF9yZXN1bHRzLmFwcGVuZChyZXMpCisgICAgICAgICAgICAgICAgcmVz dWx0cyA9IHRlbXBfcmVzdWx0cworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworICAgICAg ICBkZWYgY29udmVydF9rZXlzX3RvX3VuaWNvZGUocmVzdWx0cywgY29ubl9lbmNvZGluZyk6Cisg ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFsgVGhpcyBpcyBvbmx5IGZvciBQeXRob24yLnhd CisgICAgICAgICAgICBXZSBuZWVkIHRvIGNvbnZlcnQgYWxsIGtleXMgdG8gdW5pY29kZSBhcyBw c3ljb3BnMgorICAgICAgICAgICAgc2VuZHMgdGhlbSBhcyBzdHJpbmcKKworICAgICAgICAgICAg QXJnczoKKyAgICAgICAgICAgICAgICByZXM6IFF1ZXJ5IHJlc3VsdCBzZXQgZnJvbSBwc3ljb3Bn MgorICAgICAgICAgICAgICAgIGNvbm5fZW5jb2Rpbmc6IENvbm5lY3Rpb24gZW5jb2RpbmcKKwor ICAgICAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICAgICBSZXN1bHQgc2V0IChXaXRoIGFs bCB0aGUga2V5cyBjb252ZXJ0ZWQgdG8gdW5pY29kZSkKKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgbmV3X3Jlc3VsdHMgPSBbXQorICAgICAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRzOgor ICAgICAgICAgICAgICAgIG5ld19yZXN1bHRzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAg ZGljdChbKGsuZGVjb2RlKGNvbm5fZW5jb2RpbmcpLCB2KQorICAgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaywgdiBpbiByb3cuaXRlbXMoKV0pCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgcmV0dXJuIG5ld19yZXN1bHRzCisKKyAgICAgICAgZGVmIGdlbihxdW90ZT0nc3RyaW5n cycsIHF1b3RlX2NoYXI9IiciLCBmaWVsZF9zZXBhcmF0b3I9JywnKToKKworICAgICAgICAgICAg cmVzdWx0cyA9IGN1ci5mZXRjaG1hbnkocmVjb3JkcykKKyAgICAgICAgICAgIGlmIG5vdCByZXN1 bHRzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjdXIuY2xvc2VkOgorICAgICAgICAgICAgICAg ICAgICBjdXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHlpZWxkIGdldHRleHQoJ1RoZSBxdWVy eSBleGVjdXRlZCBkaWQgbm90IHJldHVybiBhbnkgZGF0YS4nKQorICAgICAgICAgICAgICAgIHJl dHVybgorCisgICAgICAgICAgICBoZWFkZXIgPSBbXQorICAgICAgICAgICAganNvbl9jb2x1bW5z ID0gW10KKyAgICAgICAgICAgIGNvbm5fZW5jb2RpbmcgPSBjdXIuY29ubmVjdGlvbi5lbmNvZGlu ZworCisgICAgICAgICAgICBmb3IgYyBpbiBjdXIub3JkZXJlZF9kZXNjcmlwdGlvbigpOgorICAg ICAgICAgICAgICAgICMgVGhpcyBpcyB0byBoYW5kbGUgdGhlIGNhc2UgaW4gd2hpY2ggY29sdW1u IG5hbWUgaXMgbm9uLWFzY2lpCisgICAgICAgICAgICAgICAgY29sdW1uX25hbWUgPSBjLnRvX2Rp Y3QoKVsnbmFtZSddCisgICAgICAgICAgICAgICAgaWYgSVNfUFkyOgorICAgICAgICAgICAgICAg ICAgICBjb2x1bW5fbmFtZSA9IGNvbHVtbl9uYW1lLmRlY29kZShjb25uX2VuY29kaW5nKQorICAg ICAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoY29sdW1uX25hbWUpCisgICAgICAgICAgICAgICAg aWYgYy50b19kaWN0KClbJ3R5cGVfY29kZSddIGluIEFMTF9KU09OX1RZUEVTOgorICAgICAgICAg ICAgICAgICAgICBqc29uX2NvbHVtbnMuYXBwZW5kKGNvbHVtbl9uYW1lKQorCisgICAgICAgICAg ICBpZiBJU19QWTI6CisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IGNvbnZlcnRfa2V5c190b191 bmljb2RlKHJlc3VsdHMsIGNvbm5fZW5jb2RpbmcpCisKKyAgICAgICAgICAgIHJlc19pbyA9IFN0 cmluZ0lPKCkKKworICAgICAgICAgICAgaWYgcXVvdGUgPT0gJ3N0cmluZ3MnOgorICAgICAgICAg ICAgICAgIHF1b3RlID0gY3N2LlFVT1RFX05PTk5VTUVSSUMKKyAgICAgICAgICAgIGVsaWYgcXVv dGUgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgcXVvdGUgPSBjc3YuUVVPVEVfQUxMCisgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHF1b3RlID0gY3N2LlFVT1RFX05PTkUKKwor ICAgICAgICAgICAgaWYgaGFzYXR0cihzdHIsICdkZWNvZGUnKToKKyAgICAgICAgICAgICAgICAj IERlY29kZSB0aGUgZmllbGRfc2VwYXJhdG9yCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAg ICAgICAgICAgICAgICBmaWVsZF9zZXBhcmF0b3IgPSBmaWVsZF9zZXBhcmF0b3IuZGVjb2RlKCd1 dGYtOCcpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAg ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoZSkKKworICAgICAgICAgICAgICAg ICMgRGVjb2RlIHRoZSBxdW90ZV9jaGFyCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAg ICAgICAgICAgICBxdW90ZV9jaGFyID0gcXVvdGVfY2hhci5kZWNvZGUoJ3V0Zi04JykKKyAgICAg ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGN1 cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihlKQorCisgICAgICAgICAgICBjc3Zfd3JpdGVyID0gY3N2 LkRpY3RXcml0ZXIoCisgICAgICAgICAgICAgICAgcmVzX2lvLCBmaWVsZG5hbWVzPWhlYWRlciwg ZGVsaW1pdGVyPWZpZWxkX3NlcGFyYXRvciwKKyAgICAgICAgICAgICAgICBxdW90aW5nPXF1b3Rl LAorICAgICAgICAgICAgICAgIHF1b3RlY2hhcj1xdW90ZV9jaGFyCisgICAgICAgICAgICApCisK KyAgICAgICAgICAgIGNzdl93cml0ZXIud3JpdGVoZWFkZXIoKQorICAgICAgICAgICAgcmVzdWx0 cyA9IGhhbmRsZV9qc29uX2RhdGEoanNvbl9jb2x1bW5zLCByZXN1bHRzKQorICAgICAgICAgICAg Y3N2X3dyaXRlci53cml0ZXJvd3MocmVzdWx0cykKKworICAgICAgICAgICAgeWllbGQgcmVzX2lv LmdldHZhbHVlKCkKKworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBy ZXN1bHRzID0gY3VyLmZldGNobWFueShyZWNvcmRzKQorCisgICAgICAgICAgICAgICAgaWYgbm90 IHJlc3VsdHM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjdXIuY2xvc2VkOgorICAgICAg ICAgICAgICAgICAgICAgICAgY3VyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsK KyAgICAgICAgICAgICAgICByZXNfaW8gPSBTdHJpbmdJTygpCisKKyAgICAgICAgICAgICAgICBj c3Zfd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoCisgICAgICAgICAgICAgICAgICAgIHJlc19pbywg ZmllbGRuYW1lcz1oZWFkZXIsIGRlbGltaXRlcj1maWVsZF9zZXBhcmF0b3IsCisgICAgICAgICAg ICAgICAgICAgIHF1b3Rpbmc9cXVvdGUsCisgICAgICAgICAgICAgICAgICAgIHF1b3RlY2hhcj1x dW90ZV9jaGFyCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAgICAgICAgaWYgSVNfUFky OgorICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gY29udmVydF9rZXlzX3RvX3VuaWNvZGUo cmVzdWx0cywgY29ubl9lbmNvZGluZykKKworICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBoYW5k bGVfanNvbl9kYXRhKGpzb25fY29sdW1ucywgcmVzdWx0cykKKyAgICAgICAgICAgICAgICBjc3Zf d3JpdGVyLndyaXRlcm93cyhyZXN1bHRzKQorICAgICAgICAgICAgICAgIHlpZWxkIHJlc19pby5n ZXR2YWx1ZSgpCisKKyAgICAgICAgcmV0dXJuIFRydWUsIGdlbgorCisgICAgZGVmIGV4ZWN1dGVf c2NhbGFyKHNlbGYsIHF1ZXJ5LCBwYXJhbXM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg Zm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2UpOgorICAgICAgICBzdGF0dXMsIGN1ciA9IHNl bGYuX19jdXJzb3IoKQorICAgICAgICBzZWxmLnJvd19jb3VudCA9IDAKKworICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzdHIoY3VyKQorICAgICAgICBx dWVyeV9pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpCisKKyAgICAgICAgY3VycmVudF9h cHAubG9nZ2VyLmxvZygKKyAgICAgICAgICAgIDI1LAorICAgICAgICAgICAgdSJFeGVjdXRlIChz Y2FsYXIpIGZvciBzZXJ2ZXIgI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9IChRdWVyeS1pZDogIgor ICAgICAgICAgICAgdSJ7cXVlcnlfaWR9KTpcbntxdWVyeX0iLmZvcm1hdCgKKyAgICAgICAgICAg ICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAgICAgICBjb25uX2lk PXNlbGYuY29ubl9pZCwKKyAgICAgICAgICAgICAgICBxdWVyeT1xdWVyeSwKKyAgICAgICAgICAg ICAgICBxdWVyeV9pZD1xdWVyeV9pZAorICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbF9ibG9ja2luZ19leGVjdXRlKGN1ciwg cXVlcnksIHBhcmFtcykKKyAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFzIHBlOgorICAg ICAgICAgICAgY3VyLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbm5lY3RlZCgp OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIG5vdCBzZWxmLnJl Y29ubmVjdGluZzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19hdHRlbXB0X2V4 ZWN1dGlvbl9yZWNvbm5lY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGVf ZGljdCwgcXVlcnksIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9l eGNlcHRpb25fbXNnCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByYWlz ZSBDb25uZWN0aW9uTG9zdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwK KyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYiwKKyAgICAgICAgICAgICAgICAgICAgTm9uZSBp ZiBzZWxmLmNvbm5faWRbMDozXSA9PSB1J0RCOicgZWxzZSBzZWxmLmNvbm5faWRbNTpdCisgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgZXJybXNnID0gc2VsZi5fZm9ybWF0dGVkX2V4Y2Vw dGlvbl9tc2cocGUsIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnKQorICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmVycm9yKAorICAgICAgICAgICAgICAgIHUiRmFpbGVkIHRvIGV4ZWN1dGUg cXVlcnkgKGV4ZWN1dGVfc2NhbGFyKSBmb3IgdGhlIHNlcnZlciAiCisgICAgICAgICAgICAgICAg dSIje3NlcnZlcl9pZH0gLSB7Y29ubl9pZH0gKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbiIKKyAg ICAgICAgICAgICAgICB1IkVycm9yIE1lc3NhZ2U6e2Vycm1zZ30iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAg ICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAgICAgICAgICBxdWVyeT1xdWVy eSwKKyAgICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywKKyAgICAgICAgICAgICAgICAg ICAgcXVlcnlfaWQ9cXVlcnlfaWQKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisg ICAgICAgICAgICByZXR1cm4gRmFsc2UsIGVycm1zZworCisgICAgICAgIHNlbGYucm93X2NvdW50 ID0gY3VyLnJvd2NvdW50CisgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6CisgICAgICAgICAg ICByZXMgPSBjdXIuZmV0Y2hvbmUoKQorICAgICAgICAgICAgaWYgbGVuKHJlcykgPiAwOgorICAg ICAgICAgICAgICAgIHJldHVybiBUcnVlLCByZXNbMF0KKworICAgICAgICByZXR1cm4gVHJ1ZSwg Tm9uZQorCisgICAgZGVmIGV4ZWN1dGVfYXN5bmMoc2VsZiwgcXVlcnksIHBhcmFtcz1Ob25lLCBm b3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1UcnVlKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gZXhlY3V0ZXMgdGhlIGdpdmVuIHF1ZXJ5IGFzeW5jaHJvbm91c2x5IGFuZCByZXR1 cm5zCisgICAgICAgIHJlc3VsdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcXVlcnk6 IFNRTCBxdWVyeSB0byBydW4uCisgICAgICAgICAgICBwYXJhbXM6IGV4dHJhIHBhcmFtZXRlcnMg dG8gdGhlIGZ1bmN0aW9uCisgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZzogaWYg VHJ1ZSB0aGVuIGZ1bmN0aW9uIHJldHVybiB0aGUKKyAgICAgICAgICAgIGZvcm1hdHRlZCBleGNl cHRpb24gbWVzc2FnZQorICAgICAgICAiIiIKKworICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZv IDwgKDMsKToKKyAgICAgICAgICAgIGlmIHR5cGUocXVlcnkpID09IHVuaWNvZGU6CisgICAgICAg ICAgICAgICAgcXVlcnkgPSBxdWVyeS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZWxzZToKKyAg ICAgICAgICAgIHF1ZXJ5ID0gcXVlcnkuZW5jb2RlKCd1dGYtOCcpCisKKyAgICAgICAgc2VsZi5f X2FzeW5jX2N1cnNvciA9IE5vbmUKKyAgICAgICAgc3RhdHVzLCBjdXIgPSBzZWxmLl9fY3Vyc29y KCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBz dHIoY3VyKQorICAgICAgICBxdWVyeV9pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpCisK KyAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmxvZygKKyAgICAgICAgICAgIDI1LAorICAgICAg ICAgICAgdSJFeGVjdXRlIChhc3luYykgZm9yIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29ubl9p ZH0gKFF1ZXJ5LWlkOiAiCisgICAgICAgICAgICB1IntxdWVyeV9pZH0pOlxue3F1ZXJ5fSIuZm9y bWF0KAorICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAorICAgICAg ICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAgICAgIHF1ZXJ5PXF1 ZXJ5LmRlY29kZSgndXRmLTgnKSwKKyAgICAgICAgICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAor ICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs Zi5fX25vdGljZXMgPSBbXQorICAgICAgICAgICAgc2VsZi5leGVjdXRpb25fYWJvcnRlZCA9IEZh bHNlCisgICAgICAgICAgICBjdXIuZXhlY3V0ZShxdWVyeSwgcGFyYW1zKQorICAgICAgICAgICAg cmVzID0gc2VsZi5fd2FpdF90aW1lb3V0KGN1ci5jb25uZWN0aW9uKQorICAgICAgICBleGNlcHQg cHN5Y29wZzIuRXJyb3IgYXMgcGU6CisgICAgICAgICAgICBlcnJtc2cgPSBzZWxmLl9mb3JtYXR0 ZWRfZXhjZXB0aW9uX21zZyhwZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cpCisgICAgICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCisgICAgICAgICAgICAgICAgdSJGYWlsZWQgdG8g ZXhlY3V0ZSBxdWVyeSAoZXhlY3V0ZV9hc3luYykgZm9yIHRoZSBzZXJ2ZXIgIgorICAgICAgICAg ICAgICAgIHUiI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9KFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpc biIKKyAgICAgICAgICAgICAgICB1IkVycm9yIE1lc3NhZ2U6e2Vycm1zZ30iLmZvcm1hdCgKKyAg ICAgICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAg ICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAgICAgICAgICBxdWVy eT1xdWVyeS5kZWNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAgICAgICAgIGVycm1zZz1lcnJt c2csCisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBzZWxmLmlzX2Rpc2Nvbm5lY3Rl ZChwZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvbkxvc3QoCisgICAgICAgICAg ICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGIs CisgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6M10gPT0gdSdEQjon IGVsc2Ugc2VsZi5jb25uX2lkWzU6XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgZXJybXNnCisKKyAgICAgICAgc2VsZi5fX2FzeW5jX2N1cnNvciA9IGN1cgor ICAgICAgICBzZWxmLl9fYXN5bmNfcXVlcnlfaWQgPSBxdWVyeV9pZAorCisgICAgICAgIHJldHVy biBUcnVlLCByZXMKKworICAgIGRlZiBleGVjdXRlX3ZvaWQoc2VsZiwgcXVlcnksIHBhcmFtcz1O b25lLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIGV4ZWN1dGVzIHRoZSBnaXZlbiBxdWVyeSB3aXRoIG5vIHJlc3VsdC4K KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcXVlcnk6IFNRTCBxdWVyeSB0byBydW4uCisg ICAgICAgICAgICBwYXJhbXM6IGV4dHJhIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uCisgICAg ICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZzogaWYgVHJ1ZSB0aGVuIGZ1bmN0aW9uIHJl dHVybiB0aGUKKyAgICAgICAgICAgIGZvcm1hdHRlZCBleGNlcHRpb24gbWVzc2FnZQorICAgICAg ICAiIiIKKyAgICAgICAgc3RhdHVzLCBjdXIgPSBzZWxmLl9fY3Vyc29yKCkKKyAgICAgICAgc2Vs Zi5yb3dfY291bnQgPSAwCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBGYWxzZSwgc3RyKGN1cikKKyAgICAgICAgcXVlcnlfaWQgPSByYW5kb20ucmFuZGludCgx LCA5OTk5OTk5KQorCisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5sb2coCisgICAgICAgICAg ICAyNSwKKyAgICAgICAgICAgIHUiRXhlY3V0ZSAodm9pZCkgZm9yIHNlcnZlciAje3NlcnZlcl9p ZH0gLSB7Y29ubl9pZH0gKFF1ZXJ5LWlkOiAiCisgICAgICAgICAgICB1IntxdWVyeV9pZH0pOlxu e3F1ZXJ5fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIu c2lkLAorICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAg ICAgIHF1ZXJ5PXF1ZXJ5LAorICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAg ICAgICAgICApCisgICAgICAgICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9f aW50ZXJuYWxfYmxvY2tpbmdfZXhlY3V0ZShjdXIsIHF1ZXJ5LCBwYXJhbXMpCisgICAgICAgIGV4 Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBwZToKKyAgICAgICAgICAgIGN1ci5jbG9zZSgpCisgICAg ICAgICAgICBpZiBub3Qgc2VsZi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxm LmF1dG9fcmVjb25uZWN0IGFuZCBub3Qgc2VsZi5yZWNvbm5lY3Rpbmc6CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLl9fYXR0ZW1wdF9leGVjdXRpb25fcmVjb25uZWN0KAorICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRlX3ZvaWQsIHF1ZXJ5LCBwYXJhbXMsCisgICAg ICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZworICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvbkxvc3QoCisgICAgICAg ICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaWQsCisgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGIsCisgICAgICAgICAgICAgICAgICAgIE5vbmUgaWYgc2VsZi5jb25uX2lkWzA6M10gPT0gdSdE QjonIGVsc2Ugc2VsZi5jb25uX2lkWzU6XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg IGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9leGNlcHRpb25fbXNnKHBlLCBmb3JtYXR0ZWRfZXhj ZXB0aW9uX21zZykKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAg ICAgICAgICAgICB1IkZhaWxlZCB0byBleGVjdXRlIHF1ZXJ5IChleGVjdXRlX3ZvaWQpIGZvciB0 aGUgc2VydmVyICIKKyAgICAgICAgICAgICAgICB1IiN7c2VydmVyX2lkfSAtIHtjb25uX2lkfShR dWVyeS1pZDoge3F1ZXJ5X2lkfSk6XG4iCisgICAgICAgICAgICAgICAgdSJFcnJvciBNZXNzYWdl OntlcnJtc2d9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1h bmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgcXVlcnk9cXVlcnksCisgICAgICAgICAgICAgICAgICAgIGVycm1z Zz1lcnJtc2csCisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBlcnJt c2cKKworICAgICAgICBzZWxmLnJvd19jb3VudCA9IGN1ci5yb3djb3VudAorCisgICAgICAgIHJl dHVybiBUcnVlLCBOb25lCisKKyAgICBkZWYgX19hdHRlbXB0X2V4ZWN1dGlvbl9yZWNvbm5lY3Qo c2VsZiwgZm4sICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYucmVjb25uZWN0aW5nID0g VHJ1ZQorICAgICAgICBzZXRhdHRyKGcsICJ7MH0jezF9Ii5mb3JtYXQoCisgICAgICAgICAgICBz ZWxmLm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgc2VsZi5jb25uX2lkLmVuY29kZSgndXRmLTgn KQorICAgICAgICApLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubmVjdCgpCisgICAgICAgICAgICBpZiBzdGF0dXM6CisgICAgICAgICAgICAg ICAgaWYgZm46CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gZm4oKmFyZ3MsICoq a3dhcmdzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlY29ubmVjdGluZyA9IEZhbHNlCisg ICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgcmVzCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oZSkKKyAg ICAgICAgICAgIHNlbGYucmVjb25uZWN0aW5nID0gRmFsc2UKKworICAgICAgICAgICAgY3VycmVu dF9hcHAud2FybmluZygKKyAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlY29ubmVjdCB0aGUg ZGF0YWJhc2Ugc2VydmVyICIKKyAgICAgICAgICAgICAgICAiKCN7c2VydmVyX2lkfSkiLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkPXNlbGYubWFuYWdlci5zaWQsCisgICAg ICAgICAgICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkCisgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgKQorICAgICAgICBzZWxmLnJlY29ubmVjdGluZyA9IEZhbHNlCisgICAgICAg IHJhaXNlIENvbm5lY3Rpb25Mb3N0KAorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyLnNpZCwKKyAg ICAgICAgICAgIHNlbGYuZGIsCisgICAgICAgICAgICBOb25lIGlmIHNlbGYuY29ubl9pZFswOjNd ID09IHUnREI6JyBlbHNlIHNlbGYuY29ubl9pZFs1Ol0KKyAgICAgICAgKQorCisgICAgZGVmIGV4 ZWN1dGVfMmRhcnJheShzZWxmLCBxdWVyeSwgcGFyYW1zPU5vbmUsCisgICAgICAgICAgICAgICAg ICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZz1GYWxzZSk6CisgICAgICAgIHN0YXR1cywg Y3VyID0gc2VsZi5fX2N1cnNvcigpCisgICAgICAgIHNlbGYucm93X2NvdW50ID0gMAorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihjdXIpCisK KyAgICAgICAgcXVlcnlfaWQgPSByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KQorICAgICAgICBj dXJyZW50X2FwcC5sb2dnZXIubG9nKAorICAgICAgICAgICAgMjUsCisgICAgICAgICAgICB1IkV4 ZWN1dGUgKDJkYXJyYXkpIGZvciBzZXJ2ZXIgI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9ICIKKyAg ICAgICAgICAgIHUiKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KTpcbntxdWVyeX0iLmZvcm1hdCgKKyAg ICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAgICAg ICBjb25uX2lkPXNlbGYuY29ubl9pZCwKKyAgICAgICAgICAgICAgICBxdWVyeT1xdWVyeSwKKyAg ICAgICAgICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAorICAgICAgICAgICAgKQorICAgICAgICAp CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbF9ibG9ja2luZ19leGVj dXRlKGN1ciwgcXVlcnksIHBhcmFtcykKKyAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFz IHBlOgorICAgICAgICAgICAgY3VyLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNv bm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYXV0b19yZWNvbm5lY3QgYW5kIFwK KyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLnJlY29ubmVjdGluZzoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19hdHRlbXB0X2V4ZWN1dGlvbl9yZWNvbm5lY3QoCisg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGVfMmRhcnJheSwgcXVlcnksIHBhcmFt cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRpb25fbXNnCisgICAg ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVycm1zZyA9IHNlbGYuX2Zvcm1hdHRlZF9l eGNlcHRpb25fbXNnKHBlLCBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZykKKyAgICAgICAgICAgIGN1 cnJlbnRfYXBwLmxvZ2dlci5lcnJvcigKKyAgICAgICAgICAgICAgICB1IkZhaWxlZCB0byBleGVj dXRlIHF1ZXJ5IChleGVjdXRlXzJkYXJyYXkpIGZvciB0aGUgc2VydmVyICIKKyAgICAgICAgICAg ICAgICB1IiN7c2VydmVyX2lkfSAtIHtjb25uX2lkfSAoUXVlcnktaWQ6IHtxdWVyeV9pZH0pOlxu IgorICAgICAgICAgICAgICAgIHUiRXJyb3IgTWVzc2FnZTp7ZXJybXNnfSIuZm9ybWF0KAorICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAgICAgICAgICAg ICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5faWQsCisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5 PXF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICBlcnJtc2c9ZXJybXNnLAorICAgICAgICAgICAg ICAgICAgICBxdWVyeV9pZD1xdWVyeV9pZAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZXJybXNnCisKKyAgICAgICAgIyBHZXQgUmVz dWx0c2V0IENvbHVtbiBOYW1lLCBUeXBlIGFuZCBzaXplCisgICAgICAgIGNvbHVtbnMgPSBjdXIu ZGVzY3JpcHRpb24gYW5kIFsKKyAgICAgICAgICAgIGRlc2MudG9fZGljdCgpIGZvciBkZXNjIGlu IGN1ci5vcmRlcmVkX2Rlc2NyaXB0aW9uKCkKKyAgICAgICAgXSBvciBbXQorCisgICAgICAgIHJv d3MgPSBbXQorICAgICAgICBzZWxmLnJvd19jb3VudCA9IGN1ci5yb3djb3VudAorICAgICAgICBp ZiBjdXIucm93Y291bnQgPiAwOgorICAgICAgICAgICAgZm9yIHJvdyBpbiBjdXI6CisgICAgICAg ICAgICAgICAgcm93cy5hcHBlbmQocm93KQorCisgICAgICAgIHJldHVybiBUcnVlLCB7J2NvbHVt bnMnOiBjb2x1bW5zLCAncm93cyc6IHJvd3N9CisKKyAgICBkZWYgZXhlY3V0ZV9kaWN0KHNlbGYs IHF1ZXJ5LCBwYXJhbXM9Tm9uZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2c9RmFsc2UpOgorICAg ICAgICBzdGF0dXMsIGN1ciA9IHNlbGYuX19jdXJzb3IoKQorICAgICAgICBzZWxmLnJvd19jb3Vu dCA9IDAKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBzdHIoY3VyKQorICAgICAgICBxdWVyeV9pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkp CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5sb2coCisgICAgICAgICAgICAyNSwKKyAgICAg ICAgICAgIHUiRXhlY3V0ZSAoZGljdCkgZm9yIHNlcnZlciAje3NlcnZlcl9pZH0gLSB7Y29ubl9p ZH0gKFF1ZXJ5LWlkOiAiCisgICAgICAgICAgICB1IntxdWVyeV9pZH0pOlxue3F1ZXJ5fSIuZm9y bWF0KAorICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAorICAgICAg ICAgICAgICAgIGNvbm5faWQ9c2VsZi5jb25uX2lkLAorICAgICAgICAgICAgICAgIHF1ZXJ5PXF1 ZXJ5LAorICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAgICAgICApCisg ICAgICAgICkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsX2Jsb2Nr aW5nX2V4ZWN1dGUoY3VyLCBxdWVyeSwgcGFyYW1zKQorICAgICAgICBleGNlcHQgcHN5Y29wZzIu RXJyb3IgYXMgcGU6CisgICAgICAgICAgICBjdXIuY2xvc2UoKQorICAgICAgICAgICAgaWYgbm90 IHNlbGYuY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5hdXRvX3JlY29ubmVj dCBhbmQgbm90IHNlbGYucmVjb25uZWN0aW5nOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5fX2F0dGVtcHRfZXhlY3V0aW9uX3JlY29ubmVjdCgKKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuZXhlY3V0ZV9kaWN0LCBxdWVyeSwgcGFyYW1zLAorICAgICAgICAgICAgICAgICAg ICAgICAgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cKKyAgICAgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25Mb3N0KAorICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICBzZWxmLmRiLAorICAgICAgICAg ICAgICAgICAgICBOb25lIGlmIHNlbGYuY29ubl9pZFswOjNdID09IHUnREI6JyBlbHNlIHNlbGYu Y29ubl9pZFs1Ol0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlcnJtc2cgPSBzZWxm Ll9mb3JtYXR0ZWRfZXhjZXB0aW9uX21zZyhwZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cpCisg ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCisgICAgICAgICAgICAgICAgdSJG YWlsZWQgdG8gZXhlY3V0ZSBxdWVyeSAoZXhlY3V0ZV9kaWN0KSBmb3IgdGhlIHNlcnZlciAiCisg ICAgICAgICAgICAgICAgdSIje3NlcnZlcl9pZH0tIHtjb25uX2lkfSAoUXVlcnktaWQ6IHtxdWVy eV9pZH0pOlxuIgorICAgICAgICAgICAgICAgIHUiRXJyb3IgTWVzc2FnZTp7ZXJybXNnfSIuZm9y bWF0KAorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQ9c2VsZi5tYW5hZ2VyLnNpZCwKKyAg ICAgICAgICAgICAgICAgICAgY29ubl9pZD1zZWxmLmNvbm5faWQsCisgICAgICAgICAgICAgICAg ICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkLAorICAgICAgICAgICAgICAgICAgICBlcnJtc2c9ZXJybXNn CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBlcnJtc2cKKworICAgICAgICAjIEdldCBSZXN1bHRzZXQgQ29sdW1uIE5hbWUsIFR5cGUg YW5kIHNpemUKKyAgICAgICAgY29sdW1ucyA9IGN1ci5kZXNjcmlwdGlvbiBhbmQgWworICAgICAg ICAgICAgZGVzYy50b19kaWN0KCkgZm9yIGRlc2MgaW4gY3VyLm9yZGVyZWRfZGVzY3JpcHRpb24o KQorICAgICAgICBdIG9yIFtdCisKKyAgICAgICAgcm93cyA9IFtdCisgICAgICAgIHNlbGYucm93 X2NvdW50ID0gY3VyLnJvd2NvdW50CisgICAgICAgIGlmIGN1ci5yb3djb3VudCA+IDA6CisgICAg ICAgICAgICBmb3Igcm93IGluIGN1cjoKKyAgICAgICAgICAgICAgICByb3dzLmFwcGVuZChkaWN0 KHJvdykpCisKKyAgICAgICAgcmV0dXJuIFRydWUsIHsnY29sdW1ucyc6IGNvbHVtbnMsICdyb3dz Jzogcm93c30KKworICAgIGRlZiBhc3luY19mZXRjaG1hbnlfMmRhcnJheShzZWxmLCByZWNvcmRz PTIwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9leGNlcHRp b25fbXNnPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFVzZXIgc2hvdWxkIHBvbGwgYW5k IGNoZWNrIGlmIHN0YXR1cyBpcyBBU1lOQ19PSyBiZWZvcmUgY2FsbGluZyB0aGlzCisgICAgICAg IGZ1bmN0aW9uCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgcmVjb3Jkczogbm8gb2YgcmVjb3Jk cyB0byBmZXRjaC4gdXNlIC0xIHRvIGZldGNoYWxsLgorICAgICAgICAgIGZvcm1hdHRlZF9leGNl cHRpb25fbXNnOgorCisgICAgICAgIFJldHVybnM6CisKKyAgICAgICAgIiIiCisgICAgICAgIGN1 ciA9IHNlbGYuX19hc3luY19jdXJzb3IKKyAgICAgICAgaWYgbm90IGN1cjoKKyAgICAgICAgICAg IHJldHVybiBGYWxzZSwgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAiQ3Vyc29yIGNvdWxkIG5v dCBiZSBmb3VuZCBmb3IgdGhlIGFzeW5jIGNvbm5lY3Rpb24uIgorICAgICAgICAgICAgKQorCisg ICAgICAgIGlmIHNlbGYuY29ubi5pc2V4ZWN1dGluZygpOgorICAgICAgICAgICAgcmV0dXJuIEZh bHNlLCBnZXR0ZXh0KAorICAgICAgICAgICAgICAgICJBc3luY2hyb25vdXMgcXVlcnkgZXhlY3V0 aW9uL29wZXJhdGlvbiB1bmRlcndheS4iCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgc2Vs Zi5yb3dfY291bnQgPiAwOgorICAgICAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgICAgICMg Rm9yIERETCBvcGVyYXRpb24sIHdlIG1heSBub3QgaGF2ZSByZXN1bHQuCisgICAgICAgICAgICAj CisgICAgICAgICAgICAjIEJlY2F1c2UgLSB0aGVyZSBpcyBub3QgZGlyZWN0IHdheSB0byBkaWZm ZXJlbnRpYXRlIERNTCBhbmQKKyAgICAgICAgICAgICMgRERMIG9wZXJhdGlvbnMsIHdlIG5lZWQg dG8gcmVseSBvbiBleGNlcHRpb24gdG8gZmlndXJlCisgICAgICAgICAgICAjIHRoYXQgb3V0IGF0 IHRoZSBtb21lbnQuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgcmVjb3Jk cyA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gY3VyLmZldGNoYWxsKCkKKyAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXMgPSBjdXIuZmV0Y2htYW55 KHJlY29yZHMpCisgICAgICAgICAgICAgICAgZm9yIHJvdyBpbiByZXM6CisgICAgICAgICAgICAg ICAgICAgIG5ld19yb3cgPSBbXQorICAgICAgICAgICAgICAgICAgICBmb3IgY29sIGluIHNlbGYu Y29sdW1uX2luZm86CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm93LmFwcGVuZChyb3db Y29sWyduYW1lJ11dKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5ld19yb3cp CisgICAgICAgICAgICBleGNlcHQgcHN5Y29wZzIuUHJvZ3JhbW1pbmdFcnJvciBhcyBlOgorICAg ICAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMg VXNlciBwZXJmb3JtZWQgb3BlcmF0aW9uIHdoaWNoIGRvc2Ugbm90IHByb2R1Y2UgcmVjb3JkL3Mg YXMKKyAgICAgICAgICAgICMgcmVzdWx0LgorICAgICAgICAgICAgIyBmb3IgZWcuIERETCBvcGVy YXRpb25zLgorICAgICAgICAgICAgcmV0dXJuIFRydWUsIE5vbmUKKworICAgICAgICByZXR1cm4g VHJ1ZSwgcmVzdWx0CisKKyAgICBkZWYgY29ubmVjdGVkKHNlbGYpOgorICAgICAgICBpZiBzZWxm LmNvbm46CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNsb3NlZDoKKyAgICAgICAgICAg ICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgc2VsZi5jb25uID0gTm9uZQorICAgICAgICBy ZXR1cm4gRmFsc2UKKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb25u OgorICAgICAgICAgICAgaWYgc2VsZi5jb25uLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxm LmNvbm4gPSBOb25lCisgICAgICAgIHBnX2Nvbm4gPSBOb25lCisgICAgICAgIG1nciA9IHNlbGYu bWFuYWdlcgorCisgICAgICAgIHBhc3N3b3JkID0gZ2V0YXR0cihtZ3IsICdwYXNzd29yZCcsIE5v bmUpCisKKyAgICAgICAgaWYgcGFzc3dvcmQ6CisgICAgICAgICAgICAjIEZldGNoIExvZ2dlZCBp biBVc2VyIERldGFpbHMuCisgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnko aWQ9Y3VycmVudF91c2VyLmlkKS5maXJzdCgpCisKKyAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9u ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoIlVuYXV0aG9yaXplZCBy ZXF1ZXN0LiIpCisKKyAgICAgICAgICAgIHBhc3N3b3JkID0gZGVjcnlwdChwYXNzd29yZCwgdXNl ci5wYXNzd29yZCkuZGVjb2RlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBwZ19jb25u ID0gcHN5Y29wZzIuY29ubmVjdCgKKyAgICAgICAgICAgICAgICBob3N0PW1nci5ob3N0LAorICAg ICAgICAgICAgICAgIGhvc3RhZGRyPW1nci5ob3N0YWRkciwKKyAgICAgICAgICAgICAgICBwb3J0 PW1nci5wb3J0LAorICAgICAgICAgICAgICAgIGRhdGFiYXNlPXNlbGYuZGIsCisgICAgICAgICAg ICAgICAgdXNlcj1tZ3IudXNlciwKKyAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZCwK KyAgICAgICAgICAgICAgICBwYXNzZmlsZT1nZXRfY29tcGxldGVfZmlsZV9wYXRoKG1nci5wYXNz ZmlsZSksCisgICAgICAgICAgICAgICAgc3NsbW9kZT1tZ3Iuc3NsX21vZGUsCisgICAgICAgICAg ICAgICAgc3NsY2VydD1nZXRfY29tcGxldGVfZmlsZV9wYXRoKG1nci5zc2xjZXJ0KSwKKyAgICAg ICAgICAgICAgICBzc2xrZXk9Z2V0X2NvbXBsZXRlX2ZpbGVfcGF0aChtZ3Iuc3Nsa2V5KSwKKyAg ICAgICAgICAgICAgICBzc2xyb290Y2VydD1nZXRfY29tcGxldGVfZmlsZV9wYXRoKG1nci5zc2xy b290Y2VydCksCisgICAgICAgICAgICAgICAgc3NsY3JsPWdldF9jb21wbGV0ZV9maWxlX3BhdGgo bWdyLnNzbGNybCksCisgICAgICAgICAgICAgICAgc3NsY29tcHJlc3Npb249VHJ1ZSBpZiBtZ3Iu c3NsY29tcHJlc3Npb24gZWxzZSBGYWxzZSwKKyAgICAgICAgICAgICAgICBzZXJ2aWNlPW1nci5z ZXJ2aWNlCisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IHBzeWNvcGcyLkVycm9yIGFz IGU6CisgICAgICAgICAgICBtc2cgPSBlLnBnZXJyb3IgaWYgZS5wZ2Vycm9yIGVsc2UgZS5tZXNz YWdlIFwKKyAgICAgICAgICAgICAgICBpZiBlLm1lc3NhZ2UgZWxzZSBlLmRpYWcubWVzc2FnZV9k ZXRhaWwgXAorICAgICAgICAgICAgICAgIGlmIGUuZGlhZy5tZXNzYWdlX2RldGFpbCBlbHNlIHN0 cihlKQorCisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IoCisgICAgICAgICAg ICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgIiIiCitGYWlsZWQgdG8gcmVzZXQg dGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBkdWUgdG8gZm9sbG93aW5nIGVycm9yOgorezB9 IiIiCisgICAgICAgICAgICAgICAgKS5Gb3JtYXQobXNnKQorICAgICAgICAgICAgKQorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBtc2cKKworICAgICAgICBwZ19jb25uLm5vdGljZXMgPSBkZXF1 ZShbXSwgc2VsZi5BU1lOQ19OT1RJQ0VfTUFYTEVOR1RIKQorICAgICAgICBzZWxmLmNvbm4gPSBw Z19jb25uCisgICAgICAgIHNlbGYuX19iYWNrZW5kX3BpZCA9IHBnX2Nvbm4uZ2V0X2JhY2tlbmRf cGlkKCkKKworICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAgZGVmIHRyYW5zYWN0aW9u X3N0YXR1cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jb25uOgorICAgICAgICAgICAgcmV0dXJu IHNlbGYuY29ubi5nZXRfdHJhbnNhY3Rpb25fc3RhdHVzKCkKKyAgICAgICAgcmV0dXJuIE5vbmUK KworICAgIGRlZiBwaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRlX3NjYWxh cignU0VMRUNUIDEnKQorCisgICAgZGVmIF9yZWxlYXNlKHNlbGYpOgorICAgICAgICBpZiBzZWxm Lndhc0Nvbm5lY3RlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuY29ubjoKKyAgICAgICAgICAgICAg ICBzZWxmLmNvbm4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAg ICAgICAgICAgIHNlbGYucGFzc3dvcmQgPSBOb25lCisgICAgICAgICAgICBzZWxmLndhc0Nvbm5l Y3RlZCA9IEZhbHNlCisKKyAgICBkZWYgX3dhaXQoc2VsZiwgY29ubik6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRoZSBhc3luY2hyb25vdXMgY29ubmVj dGlvbiwKKyAgICAgICAgaXQgd2lsbCBjYWxsIHBvbGwgbWV0aG9kIGluIGEgaW5maW5pdGUgbG9v cCB0aWxsIHBvbGwKKyAgICAgICAgcmV0dXJucyBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfT0su IFRoaXMgaXMgYSBibG9ja2luZworICAgICAgICBjYWxsLgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBjb25uOiBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICAiIiIKKworICAgICAgICB3 aGlsZSAxOgorICAgICAgICAgICAgc3RhdGUgPSBjb25uLnBvbGwoKQorICAgICAgICAgICAgaWYg c3RhdGUgPT0gcHN5Y29wZzIuZXh0ZW5zaW9ucy5QT0xMX09LOgorICAgICAgICAgICAgICAgIGJy ZWFrCisgICAgICAgICAgICBlbGlmIHN0YXRlID09IHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9X UklURToKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbY29ubi5maWxlbm8oKV0s IFtdKQorICAgICAgICAgICAgZWxpZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExf UkVBRDoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtjb25uLmZpbGVubygpXSwgW10s IFtdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBwc3ljb3BnMi5P cGVyYXRpb25hbEVycm9yKAorICAgICAgICAgICAgICAgICAgICAicG9sbCgpIHJldHVybmVkICVz IGZyb20gX3dhaXQgZnVuY3Rpb24iICUgc3RhdGUpCisKKyAgICBkZWYgX3dhaXRfdGltZW91dChz ZWxmLCBjb25uKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBm b3IgdGhlIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uLAorICAgICAgICBpdCB3aWxsIGNhbGwgcG9s bCBtZXRob2QgYW5kIHJldHVybiB0aGUgc3RhdHVzLiBJZiBzdGF0ZSBpcworICAgICAgICBwc3lj b3BnMi5leHRlbnNpb25zLlBPTExfV1JJVEUgYW5kIHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9S RUFECisgICAgICAgIGZ1bmN0aW9uIHdpbGwgd2FpdCBmb3IgdGhlIGdpdmVuIHRpbWVvdXQuVGhp cyBpcyBub3QgYSBibG9ja2luZyBjYWxsLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBj b25uOiBjb25uZWN0aW9uIG9iamVjdAorICAgICAgICAgICAgdGltZTogd2FpdCB0aW1lCisgICAg ICAgICIiIgorCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICBzdGF0ZSA9IGNvbm4ucG9s bCgpCisKKyAgICAgICAgICAgIGlmIHN0YXRlID09IHBzeWNvcGcyLmV4dGVuc2lvbnMuUE9MTF9P SzoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5BU1lOQ19PSworICAgICAgICAgICAgZWxp ZiBzdGF0ZSA9PSBwc3ljb3BnMi5leHRlbnNpb25zLlBPTExfV1JJVEU6CisgICAgICAgICAgICAg ICAgIyBXYWl0IGZvciB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlbiBjaGVjayB0aGUgcmV0dXJuIHN0 YXR1cworICAgICAgICAgICAgICAgICMgSWYgdGhyZWUgZW1wdHkgbGlzdHMgYXJlIHJldHVybmVk IHRoZW4gdGhlIHRpbWUtb3V0IGlzCisgICAgICAgICAgICAgICAgIyByZWFjaGVkLgorICAgICAg ICAgICAgICAgIHRpbWVvdXRfc3RhdHVzID0gc2VsZWN0LnNlbGVjdCgKKyAgICAgICAgICAgICAg ICAgICAgW10sIFtjb25uLmZpbGVubygpXSwgW10sIHNlbGYuQVNZTkNfVElNRU9VVAorICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0X3N0YXR1cyA9PSAoW10sIFtd LCBbXSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkFTWU5DX1dSSVRFX1RJTUVP VVQKKyAgICAgICAgICAgIGVsaWYgc3RhdGUgPT0gcHN5Y29wZzIuZXh0ZW5zaW9ucy5QT0xMX1JF QUQ6CisgICAgICAgICAgICAgICAgIyBXYWl0IGZvciB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlbiBj aGVjayB0aGUgcmV0dXJuIHN0YXR1cworICAgICAgICAgICAgICAgICMgSWYgdGhyZWUgZW1wdHkg bGlzdHMgYXJlIHJldHVybmVkIHRoZW4gdGhlIHRpbWUtb3V0IGlzCisgICAgICAgICAgICAgICAg IyByZWFjaGVkLgorICAgICAgICAgICAgICAgIHRpbWVvdXRfc3RhdHVzID0gc2VsZWN0LnNlbGVj dCgKKyAgICAgICAgICAgICAgICAgICAgW2Nvbm4uZmlsZW5vKCldLCBbXSwgW10sIHNlbGYuQVNZ TkNfVElNRU9VVAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0 X3N0YXR1cyA9PSAoW10sIFtdLCBbXSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LkFTWU5DX1JFQURfVElNRU9VVAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBy YWlzZSBwc3ljb3BnMi5PcGVyYXRpb25hbEVycm9yKAorICAgICAgICAgICAgICAgICAgICAicG9s bCgpIHJldHVybmVkICVzIGZyb20gX3dhaXRfdGltZW91dCBmdW5jdGlvbiIgJSBzdGF0ZQorICAg ICAgICAgICAgICAgICkKKworICAgIGRlZiBwb2xsKHNlbGYsIGZvcm1hdHRlZF9leGNlcHRpb25f bXNnPUZhbHNlLCBub19yZXN1bHQ9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiBpcyBhIHdyYXBwZXIgYXJvdW5kIGNvbm5lY3Rpb24ncyBwb2xsIGZ1bmN0aW9uLgor ICAgICAgICBJdCBpbnRlcm5hbGx5IHVzZXMgdGhlIF93YWl0X3RpbWVvdXQgbWV0aG9kIHRvIHBv bGwgdGhlCisgICAgICAgIHJlc3VsdCBvbiB0aGUgY29ubmVjdGlvbiBvYmplY3QuIEluIGNhc2Ug b2Ygc3VjY2VzcyBpdAorICAgICAgICByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5Lgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBmb3JtYXR0ZWRfZXhjZXB0aW9uX21zZzogaWYg VHJ1ZSB0aGVuIGZ1bmN0aW9uIHJldHVybiB0aGUgZm9ybWF0dGVkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIG1lc3NhZ2UsIG90aGVyd2lzZSBlcnJvciBz dHJpbmcuCisgICAgICAgICAgICBub19yZXN1bHQ6IElmIFRydWUgdGhlbiBvbmx5IHBvbGwgc3Rh dHVzIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICAgICIiIgorCisgICAgICAgIGN1ciA9IHNlbGYu X19hc3luY19jdXJzb3IKKyAgICAgICAgaWYgbm90IGN1cjoKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAiQ3Vyc29yIGNvdWxkIG5vdCBiZSBmb3Vu ZCBmb3IgdGhlIGFzeW5jIGNvbm5lY3Rpb24uIgorICAgICAgICAgICAgKQorCisgICAgICAgIGN1 cnJlbnRfYXBwLmxvZ2dlci5sb2coCisgICAgICAgICAgICAyNSwKKyAgICAgICAgICAgICJQb2xs aW5nIHJlc3VsdCBmb3IgKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KSIuZm9ybWF0KAorICAgICAgICAg ICAgICAgIHF1ZXJ5X2lkPXNlbGYuX19hc3luY19xdWVyeV9pZAorICAgICAgICAgICAgKQorICAg ICAgICApCisKKyAgICAgICAgaXNfZXJyb3IgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAg ICAgICBzdGF0dXMgPSBzZWxmLl93YWl0X3RpbWVvdXQoc2VsZi5jb25uKQorICAgICAgICBleGNl cHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uY2xvc2Vk OgorICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25Mb3N0KAorICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hbmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICBzZWxmLmRiLAorICAg ICAgICAgICAgICAgICAgICBzZWxmLmNvbm5faWRbNTpdCisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgZXJybXNnID0gc2VsZi5fZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cocGUsIGZvcm1h dHRlZF9leGNlcHRpb25fbXNnKQorICAgICAgICAgICAgaXNfZXJyb3IgPSBUcnVlCisKKyAgICAg ICAgaWYgc2VsZi5jb25uLm5vdGljZXMgYW5kIHNlbGYuX19ub3RpY2VzIGlzIG5vdCBOb25lOgor ICAgICAgICAgICAgc2VsZi5fX25vdGljZXMuZXh0ZW5kKHNlbGYuY29ubi5ub3RpY2VzKQorICAg ICAgICAgICAgc2VsZi5jb25uLm5vdGljZXMuY2xlYXIoKQorCisgICAgICAgICMgV2UgYWxzbyBu ZWVkIHRvIGZldGNoIG5vdGljZXMgYmVmb3JlIHdlIHJldHVybiBmcm9tIGZ1bmN0aW9uIGluIGNh c2UKKyAgICAgICAgIyBvZiBhbnkgRXhjZXB0aW9uLCBUbyBhdm9pZCBjb2RlIGR1cGxpY2F0aW9u IHdlIHdpbGwgcmV0dXJuIGFmdGVyCisgICAgICAgICMgZmV0Y2hpbmcgdGhlIG5vdGljZXMgaW4g Y2FzZSBvZiBhbnkgRXhjZXB0aW9uCisgICAgICAgIGlmIGlzX2Vycm9yOgorICAgICAgICAgICAg cmV0dXJuIEZhbHNlLCBlcnJtc2cKKworICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHNl bGYucm93X2NvdW50ID0gMAorICAgICAgICBzZWxmLmNvbHVtbl9pbmZvID0gTm9uZQorCisgICAg ICAgIGlmIHN0YXR1cyA9PSBzZWxmLkFTWU5DX09LOgorCisgICAgICAgICAgICAjIGlmIHVzZXIg aGFzIGNhbmNlbGxlZCB0aGUgdHJhbnNhY3Rpb24gdGhlbiBjaGFuZ2VkIHRoZSBzdGF0dXMKKyAg ICAgICAgICAgIGlmIHNlbGYuZXhlY3V0aW9uX2Fib3J0ZWQ6CisgICAgICAgICAgICAgICAgc3Rh dHVzID0gc2VsZi5BU1lOQ19FWEVDVVRJT05fQUJPUlRFRAorICAgICAgICAgICAgICAgIHNlbGYu ZXhlY3V0aW9uX2Fib3J0ZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMs IHJlc3VsdAorCisgICAgICAgICAgICAjIEZldGNoIHRoZSBjb2x1bW4gaW5mb3JtYXRpb24KKyAg ICAgICAgICAgIGlmIGN1ci5kZXNjcmlwdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICBzZWxmLmNvbHVtbl9pbmZvID0gWworICAgICAgICAgICAgICAgICAgICBkZXNjLnRvX2RpY3Qo KSBmb3IgZGVzYyBpbiBjdXIub3JkZXJlZF9kZXNjcmlwdGlvbigpCisgICAgICAgICAgICAgICAg XQorCisgICAgICAgICAgICAgICAgcG9zID0gMAorICAgICAgICAgICAgICAgIGZvciBjb2wgaW4g c2VsZi5jb2x1bW5faW5mbzoKKyAgICAgICAgICAgICAgICAgICAgY29sWydwb3MnXSA9IHBvcwor ICAgICAgICAgICAgICAgICAgICBwb3MgKz0gMQorCisgICAgICAgICAgICBzZWxmLnJvd19jb3Vu dCA9IGN1ci5yb3djb3VudAorICAgICAgICAgICAgaWYgbm90IG5vX3Jlc3VsdDoKKyAgICAgICAg ICAgICAgICBpZiBjdXIucm93Y291bnQgPiAwOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQg PSBbXQorICAgICAgICAgICAgICAgICAgICAjIEZvciBEREwgb3BlcmF0aW9uLCB3ZSBtYXkgbm90 IGhhdmUgcmVzdWx0LgorICAgICAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgICAg ICMgQmVjYXVzZSAtIHRoZXJlIGlzIG5vdCBkaXJlY3Qgd2F5IHRvIGRpZmZlcmVudGlhdGUgRE1M CisgICAgICAgICAgICAgICAgICAgICMgYW5kIERETCBvcGVyYXRpb25zLCB3ZSBuZWVkIHRvIHJl bHkgb24gZXhjZXB0aW9uIHRvCisgICAgICAgICAgICAgICAgICAgICMgZmlndXJlIHRoYXQgb3V0 IGF0IHRoZSBtb21lbnQuCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICAgICAgICAgIGZvciByb3cgaW4gY3VyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l d19yb3cgPSBbXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2wgaW4gc2VsZi5j b2x1bW5faW5mbzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3Jvdy5hcHBl bmQocm93W2NvbFsnbmFtZSddXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQu YXBwZW5kKG5ld19yb3cpCisKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHBzeWNvcGcyLlBy b2dyYW1taW5nRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBOb25lCisK KyAgICAgICAgcmV0dXJuIHN0YXR1cywgcmVzdWx0CisKKyAgICBkZWYgc3RhdHVzX21lc3NhZ2Uo c2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRo ZSBzdGF0dXMgbWVzc2FnZSByZXR1cm5lZCBieSB0aGUgbGFzdAorICAgICAgICBjb21tYW5kIGV4 ZWN1dGVkIG9uIHRoZSBzZXJ2ZXIuCisgICAgICAgICIiIgorICAgICAgICBjdXIgPSBzZWxmLl9f YXN5bmNfY3Vyc29yCisgICAgICAgIGlmIG5vdCBjdXI6CisgICAgICAgICAgICByZXR1cm4gZ2V0 dGV4dCgKKyAgICAgICAgICAgICAgICAiQ3Vyc29yIGNvdWxkIG5vdCBiZSBmb3VuZCBmb3IgdGhl IGFzeW5jIGNvbm5lY3Rpb24uIgorICAgICAgICAgICAgKQorCisgICAgICAgIGN1cnJlbnRfYXBw LmxvZ2dlci5sb2coCisgICAgICAgICAgICAyNSwKKyAgICAgICAgICAgICJTdGF0dXMgbWVzc2Fn ZSBmb3IgKFF1ZXJ5LWlkOiB7cXVlcnlfaWR9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgIHF1 ZXJ5X2lkPXNlbGYuX19hc3luY19xdWVyeV9pZAorICAgICAgICAgICAgKQorICAgICAgICApCisK KyAgICAgICAgcmV0dXJuIGN1ci5zdGF0dXNtZXNzYWdlCisKKyAgICBkZWYgcm93c19hZmZlY3Rl ZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4g dGhlIG5vIG9mIHJvd3MgYWZmZWN0ZWQgYnkgdGhlIGxhc3QgY29tbWFuZAorICAgICAgICBleGVj dXRlZCBvbiB0aGUgc2VydmVyLgorICAgICAgICAiIiIKKworICAgICAgICByZXR1cm4gc2VsZi5y b3dfY291bnQKKworICAgIGRlZiBnZXRfY29sdW1uX2luZm8oc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJucyBsaXN0IG9mIGNvbHVtbnMgZm9yIGxh c3QgYXN5bmMgc3FsIGNvbW1hbmQKKyAgICAgICAgZXhlY3V0ZWQgb24gdGhlIHNlcnZlci4KKyAg ICAgICAgIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuY29sdW1uX2luZm8KKworICAgIGRlZiBj YW5jZWxfdHJhbnNhY3Rpb24oc2VsZiwgY29ubl9pZCwgZGlkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNhbmNlbCB0aGUgcnVubmluZyB0cmFu c2FjdGlvbgorICAgICAgICBvZiB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBpZCBhbmQgZGF0YWJhc2Ug aWQgdXNpbmcKKyAgICAgICAgUG9zdGdyZVNRTCdzIHBnX2NhbmNlbF9iYWNrZW5kLgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBjb25uX2lkOiBDb25uZWN0aW9uIGlkCisgICAgICAgICAg ICBkaWQ6IERhdGFiYXNlIGlkIChvcHRpb25hbCkKKyAgICAgICAgIiIiCisgICAgICAgIGNhbmNl bF9jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCwgY29ubl9pZD1jb25uX2lk KQorICAgICAgICBxdWVyeSA9ICIiIlNFTEVDVCBwZ19jYW5jZWxfYmFja2VuZCh7MH0pOyIiIi5m b3JtYXQoCisgICAgICAgICAgICBjYW5jZWxfY29ubi5fX2JhY2tlbmRfcGlkKQorCisgICAgICAg IHN0YXR1cyA9IFRydWUKKyAgICAgICAgbXNnID0gJycKKworICAgICAgICAjIGlmIGJhY2tlbmQg cGlkIGlzIHNhbWUgdGhlbiBjcmVhdGUgYSBuZXcgY29ubmVjdGlvbgorICAgICAgICAjIHRvIGNh bmNlbCB0aGUgcXVlcnkgYW5kIHJlbGVhc2UgaXQuCisgICAgICAgIGlmIGNhbmNlbF9jb25uLl9f YmFja2VuZF9waWQgPT0gc2VsZi5fX2JhY2tlbmRfcGlkOgorICAgICAgICAgICAgcGFzc3dvcmQg PSBnZXRhdHRyKHNlbGYubWFuYWdlciwgJ3Bhc3N3b3JkJywgTm9uZSkKKyAgICAgICAgICAgIGlm IHBhc3N3b3JkOgorICAgICAgICAgICAgICAgICMgRmV0Y2ggTG9nZ2VkIGluIFVzZXIgRGV0YWls cy4KKyAgICAgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnkoaWQ9Y3VycmVu dF91c2VyLmlkKS5maXJzdCgpCisgICAgICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGdldHRleHQoIlVuYXV0aG9yaXplZCByZXF1 ZXN0LiIpCisKKyAgICAgICAgICAgICAgICBwYXNzd29yZCA9IGRlY3J5cHQocGFzc3dvcmQsIHVz ZXIucGFzc3dvcmQpLmRlY29kZSgpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg ICBwZ19jb25uID0gcHN5Y29wZzIuY29ubmVjdCgKKyAgICAgICAgICAgICAgICAgICAgaG9zdD1z ZWxmLm1hbmFnZXIuaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgaG9zdGFkZHI9c2VsZi5tYW5h Z2VyLmhvc3RhZGRyLAorICAgICAgICAgICAgICAgICAgICBwb3J0PXNlbGYubWFuYWdlci5wb3J0 LAorICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZT1zZWxmLmRiLAorICAgICAgICAgICAgICAg ICAgICB1c2VyPXNlbGYubWFuYWdlci51c2VyLAorICAgICAgICAgICAgICAgICAgICBwYXNzd29y ZD1wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgcGFzc2ZpbGU9Z2V0X2NvbXBsZXRlX2Zp bGVfcGF0aChzZWxmLm1hbmFnZXIucGFzc2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICBzc2xt b2RlPXNlbGYubWFuYWdlci5zc2xfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgc3NsY2VydD1n ZXRfY29tcGxldGVfZmlsZV9wYXRoKHNlbGYubWFuYWdlci5zc2xjZXJ0KSwKKyAgICAgICAgICAg ICAgICAgICAgc3Nsa2V5PWdldF9jb21wbGV0ZV9maWxlX3BhdGgoc2VsZi5tYW5hZ2VyLnNzbGtl eSksCisgICAgICAgICAgICAgICAgICAgIHNzbHJvb3RjZXJ0PWdldF9jb21wbGV0ZV9maWxlX3Bh dGgoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hbmFnZXIuc3Nscm9vdGNlcnQKKyAg ICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgc3NsY3JsPWdldF9jb21w bGV0ZV9maWxlX3BhdGgoc2VsZi5tYW5hZ2VyLnNzbGNybCksCisgICAgICAgICAgICAgICAgICAg IHNzbGNvbXByZXNzaW9uPVRydWUgaWYgc2VsZi5tYW5hZ2VyLnNzbGNvbXByZXNzaW9uCisgICAg ICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2U9 c2VsZi5tYW5hZ2VyLnNlcnZpY2UKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAg ICAjIEdldCB0aGUgY3Vyc29yIGFuZCBydW4gdGhlIHF1ZXJ5CisgICAgICAgICAgICAgICAgY3Vy ID0gcGdfY29ubi5jdXJzb3IoKQorICAgICAgICAgICAgICAgIGN1ci5leGVjdXRlKHF1ZXJ5KQor CisgICAgICAgICAgICAgICAgIyBDbG9zZSB0aGUgY29ubmVjdGlvbgorICAgICAgICAgICAgICAg IHBnX2Nvbm4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHBnX2Nvbm4gPSBOb25lCisKKyAgICAg ICAgICAgIGV4Y2VwdCBwc3ljb3BnMi5FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHN0YXR1 cyA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgZS5wZ2Vycm9yOgorICAgICAgICAgICAgICAg ICAgICBtc2cgPSBlLnBnZXJyb3IKKyAgICAgICAgICAgICAgICBlbGlmIGUuZGlhZy5tZXNzYWdl X2RldGFpbDoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gZS5kaWFnLm1lc3NhZ2VfZGV0YWls CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gc3RyKGUp CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBpZiBzZWxmLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgbXNn ID0gc2VsZi5leGVjdXRlX3ZvaWQocXVlcnkpCisKKyAgICAgICAgICAgICAgICBpZiBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIGNhbmNlbF9jb25uLmV4ZWN1dGlvbl9hYm9ydGVkID0gVHJ1 ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBGYWxzZQorICAg ICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoIk5vdCBjb25uZWN0ZWQgdG8gdGhlIGRhdGFiYXNl IHNlcnZlci4iKQorCisgICAgICAgIHJldHVybiBzdGF0dXMsIG1zZworCisgICAgZGVmIG1lc3Nh Z2VzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiB0aGUg bWVzc2FnZXMvbm90aWNlcyBzZW5kIGZyb20gdGhlIGRhdGFiYXNlIHNlcnZlci4KKyAgICAgICAg IiIiCisgICAgICAgIHJlc3AgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9fbm90aWNlczoKKyAg ICAgICAgICAgIHJlc3AuYXBwZW5kKHNlbGYuX19ub3RpY2VzLnBvcCgwKSkKKyAgICAgICAgcmV0 dXJuIHJlc3AKKworICAgIGRlZiBkZWNvZGVfdG9fdXRmOChzZWxmLCB2YWx1ZSk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGRlY29kZSB2YWx1ZXMgdG8gdXRmLTgKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcgdG8gYmUgZGVjb2RlCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIERlY29kZWQgc3RyaW5nCisgICAgICAgICIiIgor ICAgICAgICBpc19lcnJvciA9IEZhbHNlCisgICAgICAgIGlmIGhhc2F0dHIoc3RyLCAnZGVjb2Rl Jyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNv ZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAg ICAgICAgICAgICAgIyBMZXQncyB0cnkgd2l0aCBweXRob24ncyBwcmVmZXJyZWQgZW5jb2RpbmcK KyAgICAgICAgICAgICAgICAjIE9uIFdpbmRvd3MgbGNfbWVzc2FnZXMgbW9zdGx5IGhhcyBlbnZp cm9ubWVudCBkZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAjIGVuY29kaW5nIGxpa2UgJ0ZyZW5j aF9GcmFuY2UuMTI1MicKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg IGltcG9ydCBsb2NhbGUKKyAgICAgICAgICAgICAgICAgICAgcHJlZl9lbmNvZGluZyA9IGxvY2Fs ZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFs dWUuZGVjb2RlKHByZWZfZW5jb2RpbmcpXAorICAgICAgICAgICAgICAgICAgICAgICAgLmVuY29k ZSgndXRmLTgnKVwKKyAgICAgICAgICAgICAgICAgICAgICAgIC5kZWNvZGUoJ3V0Zi04JykKKyAg ICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBpc19l cnJvciA9IFRydWUKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAg ICAgaXNfZXJyb3IgPSBUcnVlCisKKyAgICAgICAgIyBJZiBzdGlsbCBub3QgYWJsZSB0byBkZWNv ZGUgdGhlbgorICAgICAgICBpZiBpc19lcnJvcjoKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUu ZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKQorCisgICAgICAgIHJldHVybiB2YWx1ZQorCisgICAg ZGVmIF9mb3JtYXR0ZWRfZXhjZXB0aW9uX21zZyhzZWxmLCBleGNlcHRpb25fb2JqLCBmb3JtYXR0 ZWRfbXNnKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcGFy c2UgdGhlIHBzeWNvcGcyLkVycm9yIG9iamVjdCBhbmQgcmV0dXJucyB0aGUKKyAgICAgICAgZm9y bWF0dGVkIGVycm9yIG1lc3NhZ2UgaWYgZmxhZyBpcyBzZXQgdG8gdHJ1ZSBlbHNlIHJldHVybgor ICAgICAgICBub3JtYWwgZXJyb3IgbWVzc2FnZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg ICAgZXhjZXB0aW9uX29iajogZXhjZXB0aW9uIG9iamVjdAorICAgICAgICAgICAgZm9ybWF0dGVk X21zZzogaWYgVHJ1ZSB0aGVuIGZ1bmN0aW9uIHJldHVybiB0aGUgZm9ybWF0dGVkIGV4Y2VwdGlv bgorICAgICAgICAgICAgbWVzc2FnZQorCisgICAgICAgICIiIgorICAgICAgICBpZiBleGNlcHRp b25fb2JqLnBnZXJyb3I6CisgICAgICAgICAgICBlcnJtc2cgPSBleGNlcHRpb25fb2JqLnBnZXJy b3IKKyAgICAgICAgZWxpZiBleGNlcHRpb25fb2JqLmRpYWcubWVzc2FnZV9kZXRhaWw6CisgICAg ICAgICAgICBlcnJtc2cgPSBleGNlcHRpb25fb2JqLmRpYWcubWVzc2FnZV9kZXRhaWwKKyAgICAg ICAgZWxzZToKKyAgICAgICAgICAgIGVycm1zZyA9IHN0cihleGNlcHRpb25fb2JqKQorICAgICAg ICAjIGVycm1zZyBtaWdodCBjb250YWlucyBlbmNvZGVkIHZhbHVlLCBsZXRzIGRlY29kZSBpdAor ICAgICAgICBlcnJtc2cgPSBzZWxmLmRlY29kZV90b191dGY4KGVycm1zZykKKworICAgICAgICAj IGlmIGZvcm1hdHRlZF9tc2cgaXMgZmFsc2UgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24K KyAgICAgICAgaWYgbm90IGZvcm1hdHRlZF9tc2c6CisgICAgICAgICAgICByZXR1cm4gZXJybXNn CisKKyAgICAgICAgIyBEbyBub3QgYXBwZW5kIGlmIGVycm9yIHN0YXJ0cyB3aXRoIGBFUlJPUjpg IGFzIG1vc3QgcGcgcmVsYXRlZAorICAgICAgICAjIGVycm9yIHN0YXJ0cyB3aXRoIGBFUlJPUjpg CisgICAgICAgIGlmIG5vdCBlcnJtc2cuc3RhcnRzd2l0aCh1J0VSUk9SOicpOgorICAgICAgICAg ICAgZXJybXNnID0gdSdFUlJPUjogICcgKyBlcnJtc2cgKyB1J1xuXG4nCisKKyAgICAgICAgaWYg ZXhjZXB0aW9uX29iai5kaWFnLnNldmVyaXR5IGlzIG5vdCBOb25lIFwKKyAgICAgICAgICAgICAg ICBhbmQgZXhjZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfcHJpbWFyeSBpcyBub3QgTm9uZToKKyAg ICAgICAgICAgIGV4X2RpYWdfbWVzc2FnZSA9IHUiezB9OiAgezF9Ii5mb3JtYXQoCisgICAgICAg ICAgICAgICAgZXhjZXB0aW9uX29iai5kaWFnLnNldmVyaXR5LAorICAgICAgICAgICAgICAgIHNl bGYuZGVjb2RlX3RvX3V0ZjgoZXhjZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfcHJpbWFyeSkKKyAg ICAgICAgICAgICkKKyAgICAgICAgICAgICMgSWYgYm90aCBlcnJvcnMgYXJlIGRpZmZlcmVudCB0 aGVuIG9ubHkgYXBwZW5kIGl0CisgICAgICAgICAgICBpZiBlcnJtc2cgYW5kIGV4X2RpYWdfbWVz c2FnZSBhbmQgXAorICAgICAgICAgICAgICAgIGV4X2RpYWdfbWVzc2FnZS5zdHJpcCgpLnN0cmlw KCdcbicpLmxvd2VyKCkgbm90IGluIFwKKyAgICAgICAgICAgICAgICAgICAgZXJybXNnLnN0cmlw KCkuc3RyaXAoJ1xuJykubG93ZXIoKToKKyAgICAgICAgICAgICAgICBlcnJtc2cgKz0gZXhfZGlh Z19tZXNzYWdlCisgICAgICAgIGVsaWYgZXhjZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfcHJpbWFy eSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1lc3NhZ2VfcHJpbWFyeSA9IHNlbGYuZGVjb2Rl X3RvX3V0ZjgoCisgICAgICAgICAgICAgICAgZXhjZXB0aW9uX29iai5kaWFnLm1lc3NhZ2VfcHJp bWFyeQorICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgbWVzc2FnZV9wcmltYXJ5Lmxvd2Vy KCkgbm90IGluIGVycm1zZy5sb3dlcigpOgorICAgICAgICAgICAgICAgIGVycm1zZyArPSBtZXNz YWdlX3ByaW1hcnkKKworICAgICAgICBpZiBleGNlcHRpb25fb2JqLmRpYWcuc3Fsc3RhdGUgaXMg bm90IE5vbmU6CisgICAgICAgICAgICBpZiBub3QgZXJybXNnLmVuZHN3aXRoKCdcbicpOgorICAg ICAgICAgICAgICAgIGVycm1zZyArPSAnXG4nCisgICAgICAgICAgICBlcnJtc2cgKz0gZ2V0dGV4 dCgnU1FMIHN0YXRlOiAnKQorICAgICAgICAgICAgZXJybXNnICs9IHNlbGYuZGVjb2RlX3RvX3V0 ZjgoZXhjZXB0aW9uX29iai5kaWFnLnNxbHN0YXRlKQorCisgICAgICAgIGlmIGV4Y2VwdGlvbl9v YmouZGlhZy5tZXNzYWdlX2RldGFpbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmICdEZXRh aWw6Jy5sb3dlcigpIG5vdCBpbiBlcnJtc2cubG93ZXIoKToKKyAgICAgICAgICAgICAgICBpZiBu b3QgZXJybXNnLmVuZHN3aXRoKCdcbicpOgorICAgICAgICAgICAgICAgICAgICBlcnJtc2cgKz0g J1xuJworICAgICAgICAgICAgICAgIGVycm1zZyArPSBnZXR0ZXh0KCdEZXRhaWw6ICcpCisgICAg ICAgICAgICAgICAgZXJybXNnICs9IHNlbGYuZGVjb2RlX3RvX3V0ZjgoCisgICAgICAgICAgICAg ICAgICAgIGV4Y2VwdGlvbl9vYmouZGlhZy5tZXNzYWdlX2RldGFpbAorICAgICAgICAgICAgICAg ICkKKworICAgICAgICBpZiBleGNlcHRpb25fb2JqLmRpYWcubWVzc2FnZV9oaW50IGlzIG5vdCBO b25lOgorICAgICAgICAgICAgaWYgJ0hpbnQ6Jy5sb3dlcigpIG5vdCBpbiBlcnJtc2cubG93ZXIo KToKKyAgICAgICAgICAgICAgICBpZiBub3QgZXJybXNnLmVuZHN3aXRoKCdcbicpOgorICAgICAg ICAgICAgICAgICAgICBlcnJtc2cgKz0gJ1xuJworICAgICAgICAgICAgICAgIGVycm1zZyArPSBn ZXR0ZXh0KCdIaW50OiAnKQorICAgICAgICAgICAgICAgIGVycm1zZyArPSBzZWxmLmRlY29kZV90 b191dGY4KGV4Y2VwdGlvbl9vYmouZGlhZy5tZXNzYWdlX2hpbnQpCisKKyAgICAgICAgaWYgZXhj ZXB0aW9uX29iai5kaWFnLnN0YXRlbWVudF9wb3NpdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgIGlmICdDaGFyYWN0ZXI6Jy5sb3dlcigpIG5vdCBpbiBlcnJtc2cubG93ZXIoKToKKyAgICAg ICAgICAgICAgICBpZiBub3QgZXJybXNnLmVuZHN3aXRoKCdcbicpOgorICAgICAgICAgICAgICAg ICAgICBlcnJtc2cgKz0gJ1xuJworICAgICAgICAgICAgICAgIGVycm1zZyArPSBnZXR0ZXh0KCdD aGFyYWN0ZXI6ICcpCisgICAgICAgICAgICAgICAgZXJybXNnICs9IHNlbGYuZGVjb2RlX3RvX3V0 ZjgoCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9vYmouZGlhZy5zdGF0ZW1lbnRfcG9z aXRpb24KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgaWYgZXhjZXB0aW9uX29iai5kaWFn LmNvbnRleHQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiAnQ29udGV4dDonLmxvd2VyKCkg bm90IGluIGVycm1zZy5sb3dlcigpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBlcnJtc2cuZW5k c3dpdGgoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGVycm1zZyArPSAnXG4nCisgICAgICAg ICAgICAgICAgZXJybXNnICs9IGdldHRleHQoJ0NvbnRleHQ6ICcpCisgICAgICAgICAgICAgICAg ZXJybXNnICs9IHNlbGYuZGVjb2RlX3RvX3V0ZjgoZXhjZXB0aW9uX29iai5kaWFnLmNvbnRleHQp CisKKyAgICAgICAgcmV0dXJuIGVycm1zZworCisgICAgIyMjIyMKKyAgICAjIEFzIHBlciBpc3N1 ZSByZXBvcnRlZCBvbiBwZ3N5Y29wZzIgZ2l0aHViIHJlcG9zaXRvcnkgbGluayBpcyBzaGFyZWQg YmVsb3cKKyAgICAjIGNvbm4uY2xvc2VkIGlzIG5vdCByZWxpYWJsZSBlbm91Z2ggdG8gaWRlbnRp ZnkgdGhlIGRpc2Nvbm5lY3Rpb24gZnJvbSB0aGUKKyAgICAjIGRhdGFiYXNlIHNlcnZlciBmb3Ig c29tZSB1bmtub3duIHJlYXNvbnMuCisgICAgIworICAgICMgKGh0dHBzOi8vZ2l0aHViLmNvbS9w c3ljb3BnL3BzeWNvcGcyL2lzc3Vlcy8yNjMpCisgICAgIworICAgICMgSW4gb3JkZXIgdG8gcmVz b2x2ZSB0aGUgaXNzdWUsIHNxbGFsY2hhbWV5IGZvbGxvd3MgdGhlIGJlbG93IGxvZ2ljIHRvCisg ICAgIyBpZGVudGlmeSB0aGUgZGlzY29ubmVjdGlvbi4gSXQgcmVsaWVzIG9uIGV4Y2VwdGlvbiBt ZXNzYWdlIHRvIGlkZW50aWZ5CisgICAgIyB0aGUgZXJyb3IuCisgICAgIworICAgICMgUmVmZXJl bmNlIChNSVQgbGljZW5zZSk6CisgICAgIyBodHRwczovL2dpdGh1Yi5jb20venp6ZWVrL3NxbGFs Y2hlbXkvYmxvYi9tYXN0ZXIvbGliL3NxbGFsY2hlbXkvZGlhbGVjdHMvcG9zdGdyZXNxbC9wc3lj b3BnMi5weQorICAgICMKKyAgICBkZWYgaXNfZGlzY29ubmVjdGVkKHNlbGYsIGVycik6CisgICAg ICAgIGlmIG5vdCBzZWxmLmNvbm4uY2xvc2VkOgorICAgICAgICAgICAgIyBjaGVja3MgYmFzZWQg b24gc3RyaW5ncy4gIGluIHRoZSBjYXNlIHRoYXQgLmNsb3NlZAorICAgICAgICAgICAgIyBkaWRu J3QgY3V0IGl0LCBmYWxsIGJhY2sgb250byB0aGVzZS4KKyAgICAgICAgICAgIHN0cl9lID0gc3Ry KGVycikucGFydGl0aW9uKCJcbiIpWzBdCisgICAgICAgICAgICBmb3IgbXNnIGluIFsKKyAgICAg ICAgICAgICAgICAjIHRoZXNlIGVycm9yIG1lc3NhZ2VzIGZyb20gbGlicHE6IGludGVyZmFjZXMv bGlicHEvZmUtbWlzYy5jCisgICAgICAgICAgICAgICAgIyBhbmQgaW50ZXJmYWNlcy9saWJwcS9m ZS1zZWN1cmUuYy4KKyAgICAgICAgICAgICAgICAndGVybWluYXRpbmcgY29ubmVjdGlvbicsCisg ICAgICAgICAgICAgICAgJ2Nsb3NlZCB0aGUgY29ubmVjdGlvbicsCisgICAgICAgICAgICAgICAg J2Nvbm5lY3Rpb24gbm90IG9wZW4nLAorICAgICAgICAgICAgICAgICdjb3VsZCBub3QgcmVjZWl2 ZSBkYXRhIGZyb20gc2VydmVyJywKKyAgICAgICAgICAgICAgICAnY291bGQgbm90IHNlbmQgZGF0 YSB0byBzZXJ2ZXInLAorICAgICAgICAgICAgICAgICMgcHN5Y29wZzIgY2xpZW50IGVycm9ycywg cHN5Y29wZzIvY29uZW5jdGlvbi5oLAorICAgICAgICAgICAgICAgICMgcHN5Y29wZzIvY3Vyc29y LmgKKyAgICAgICAgICAgICAgICAnY29ubmVjdGlvbiBhbHJlYWR5IGNsb3NlZCcsCisgICAgICAg ICAgICAgICAgJ2N1cnNvciBhbHJlYWR5IGNsb3NlZCcsCisgICAgICAgICAgICAgICAgIyBub3Qg c3VyZSB3aGVyZSB0aGlzIHBhdGggaXMgb3JpZ2luYWxseSBmcm9tLCBpdCBtYXkKKyAgICAgICAg ICAgICAgICAjIGJlIG9ic29sZXRlLiAgIEl0IHJlYWxseSBzYXlzICJsb3NlZCIsIG5vdCAiY2xv c2VkIi4KKyAgICAgICAgICAgICAgICAnbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5 JywKKyAgICAgICAgICAgICAgICAjIHRoZXNlIGNhbiBvY2N1ciBpbiBuZXdlciBTU0wKKyAgICAg ICAgICAgICAgICAnY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgdW5leHBlY3RlZGx5JywKKyAg ICAgICAgICAgICAgICAnU1NMIFNZU0NBTEwgZXJyb3I6IEJhZCBmaWxlIGRlc2NyaXB0b3InLAor ICAgICAgICAgICAgICAgICdTU0wgU1lTQ0FMTCBlcnJvcjogRU9GIGRldGVjdGVkJywKKyAgICAg ICAgICAgIF06CisgICAgICAgICAgICAgICAgaWR4ID0gc3RyX2UuZmluZChtc2cpCisgICAgICAg ICAgICAgICAgaWYgaWR4ID49IDAgYW5kICciJyBub3QgaW4gc3RyX2VbOmlkeF06CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg ICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3Bz eWNvcGcyL3NlcnZlcl9tYW5hZ2VyLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNv cGcyL3NlcnZlcl9tYW5hZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjIyOTllMjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5 Y29wZzIvc2VydmVyX21hbmFnZXIucHkKQEAgLTAsMCArMSwzMzMgQEAKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKyIiIgorSW1wbGVtZW50YXRpb24gb2YgU2VydmVyTWFuYWdlcgorIiIiCitp bXBvcnQgb3MKK2ltcG9ydCBkYXRldGltZQorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAs IHNlc3Npb24KK2Zyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGN1cnJlbnRfdXNlcgorZnJvbSBm bGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAorCitmcm9tIHBnYWRtaW4udXRpbHMuY3J5cHRvIGlt cG9ydCBkZWNyeXB0Citmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCitmcm9tIHBn YWRtaW4ubW9kZWwgaW1wb3J0IFNlcnZlcgorCisKK2NsYXNzIFNlcnZlck1hbmFnZXIob2JqZWN0 KToKKyAgICAiIiIKKyAgICBjbGFzcyBTZXJ2ZXJNYW5hZ2VyCisKKyAgICBUaGlzIGNsYXNzIGNv bnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2l2ZW4gc2VydmVyLgorICAgIEFuZCwg YWN0cyBhcyBjb25uZWN0aW9uIG1hbmFnZXIgZm9yIHRoYXQgcGFydGljdWxhciBzZXNzaW9uLgor ICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcik6CisgICAgICAgIHNlbGYu Y29ubmVjdGlvbnMgPSBkaWN0KCkKKworICAgICAgICBzZWxmLnVwZGF0ZShzZXJ2ZXIpCisKKyAg ICBkZWYgdXBkYXRlKHNlbGYsIHNlcnZlcik6CisgICAgICAgIGFzc2VydCAoc2VydmVyIGlzIG5v dCBOb25lKQorICAgICAgICBhc3NlcnQgKGlzaW5zdGFuY2Uoc2VydmVyLCBTZXJ2ZXIpKQorCisg ICAgICAgIHNlbGYudmVyID0gTm9uZQorICAgICAgICBzZWxmLnN2ZXJzaW9uID0gTm9uZQorICAg ICAgICBzZWxmLnNlcnZlcl90eXBlID0gTm9uZQorICAgICAgICBzZWxmLnNlcnZlcl9jbHMgPSBO b25lCisgICAgICAgIHNlbGYucGFzc3dvcmQgPSBOb25lCisKKyAgICAgICAgc2VsZi5zaWQgPSBz ZXJ2ZXIuaWQKKyAgICAgICAgc2VsZi5ob3N0ID0gc2VydmVyLmhvc3QKKyAgICAgICAgc2VsZi5o b3N0YWRkciA9IHNlcnZlci5ob3N0YWRkcgorICAgICAgICBzZWxmLnBvcnQgPSBzZXJ2ZXIucG9y dAorICAgICAgICBzZWxmLmRiID0gc2VydmVyLm1haW50ZW5hbmNlX2RiCisgICAgICAgIHNlbGYu ZGlkID0gTm9uZQorICAgICAgICBzZWxmLnVzZXIgPSBzZXJ2ZXIudXNlcm5hbWUKKyAgICAgICAg c2VsZi5wYXNzd29yZCA9IHNlcnZlci5wYXNzd29yZAorICAgICAgICBzZWxmLnJvbGUgPSBzZXJ2 ZXIucm9sZQorICAgICAgICBzZWxmLnNzbF9tb2RlID0gc2VydmVyLnNzbF9tb2RlCisgICAgICAg IHNlbGYucGluZ2VkID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgc2VsZi5kYl9p bmZvID0gZGljdCgpCisgICAgICAgIHNlbGYuc2VydmVyX3R5cGVzID0gTm9uZQorICAgICAgICBz ZWxmLmRiX3JlcyA9IHNlcnZlci5kYl9yZXMKKyAgICAgICAgc2VsZi5wYXNzZmlsZSA9IHNlcnZl ci5wYXNzZmlsZQorICAgICAgICBzZWxmLnNzbGNlcnQgPSBzZXJ2ZXIuc3NsY2VydAorICAgICAg ICBzZWxmLnNzbGtleSA9IHNlcnZlci5zc2xrZXkKKyAgICAgICAgc2VsZi5zc2xyb290Y2VydCA9 IHNlcnZlci5zc2xyb290Y2VydAorICAgICAgICBzZWxmLnNzbGNybCA9IHNlcnZlci5zc2xjcmwK KyAgICAgICAgc2VsZi5zc2xjb21wcmVzc2lvbiA9IFRydWUgaWYgc2VydmVyLnNzbGNvbXByZXNz aW9uIGVsc2UgRmFsc2UKKyAgICAgICAgc2VsZi5zZXJ2aWNlID0gc2VydmVyLnNlcnZpY2UKKwor ICAgICAgICBmb3IgY29uIGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAgICAgICAgICBzZWxmLmNv bm5lY3Rpb25zW2Nvbl0uX3JlbGVhc2UoKQorCisgICAgICAgIHNlbGYudXBkYXRlX3Nlc3Npb24o KQorCisgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBkaWN0KCkKKworICAgIGRlZiBhc19kaWN0 KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgb2JqZWN0 IHJlcHJlc2VudGluZyB0aGUgc2VydmVyIG1hbmFnZXIuCisgICAgICAgICIiIgorICAgICAgICBp ZiBzZWxmLnZlciBpcyBOb25lIG9yIGxlbihzZWxmLmNvbm5lY3Rpb25zKSA9PSAwOgorICAgICAg ICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICByZXMgPSBkaWN0KCkKKyAgICAgICAgcmVzWydz aWQnXSA9IHNlbGYuc2lkCisgICAgICAgIHJlc1sndmVyJ10gPSBzZWxmLnZlcgorICAgICAgICBy ZXNbJ3N2ZXJzaW9uJ10gPSBzZWxmLnN2ZXJzaW9uCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwg J3Bhc3N3b3JkJykgYW5kIHNlbGYucGFzc3dvcmQ6CisgICAgICAgICAgICAjIElmIHJ1bm5pbmcg dW5kZXIgUFkyCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYucGFzc3dvcmQsICdkZWNvZGUn KToKKyAgICAgICAgICAgICAgICByZXNbJ3Bhc3N3b3JkJ10gPSBzZWxmLnBhc3N3b3JkLmRlY29k ZSgndXRmLTgnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNbJ3Bhc3N3 b3JkJ10gPSBzdHIoc2VsZi5wYXNzd29yZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJl c1sncGFzc3dvcmQnXSA9IHNlbGYucGFzc3dvcmQKKworICAgICAgICBjb25uZWN0aW9ucyA9IHJl c1snY29ubmVjdGlvbnMnXSA9IGRpY3QoKQorCisgICAgICAgIGZvciBjb25uX2lkIGluIHNlbGYu Y29ubmVjdGlvbnM6CisgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uc1tjb25uX2lk XS5hc19kaWN0KCkKKworICAgICAgICAgICAgaWYgY29ubiBpcyBub3QgTm9uZToKKyAgICAgICAg ICAgICAgICBjb25uZWN0aW9uc1tjb25uX2lkXSA9IGNvbm4KKworICAgICAgICByZXR1cm4gcmVz CisKKyAgICBkZWYgU2VydmVyVmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmVy CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJu IHNlbGYuc3ZlcnNpb24KKworICAgIGRlZiBNYWpvclZlcnNpb24oc2VsZik6CisgICAgICAgIGlm IHNlbGYuc3ZlcnNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYu c3ZlcnNpb24gLyAxMDAwMCkKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbmZvcm1hdGlvbiBp cyBub3QgYXZhaWxhYmxlLiIpCisKKyAgICBkZWYgTWlub3JWZXJzaW9uKHNlbGYpOgorICAgICAg ICBpZiBzZWxmLnN2ZXJzaW9uOgorICAgICAgICAgICAgcmV0dXJuIGludChpbnQoc2VsZi5zdmVy c2lvbiAvIDEwMCkgJSAxMDApCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiSW5mb3JtYXRpb24g aXMgbm90IGF2YWlsYWJsZS4iKQorCisgICAgZGVmIFBhdGNoVmVyc2lvbihzZWxmKToKKyAgICAg ICAgaWYgc2VsZi5zdmVyc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBpbnQoaW50KHNlbGYuc3Zl cnNpb24gLyAxMDApIC8gMTAwKQorICAgICAgICByYWlzZSBFeGNlcHRpb24oIkluZm9ybWF0aW9u IGlzIG5vdCBhdmFpbGFibGUuIikKKworICAgIGRlZiBjb25uZWN0aW9uKAorICAgICAgICAgICAg c2VsZiwgZGF0YWJhc2U9Tm9uZSwgY29ubl9pZD1Ob25lLCBhdXRvX3JlY29ubmVjdD1UcnVlLCBk aWQ9Tm9uZSwKKyAgICAgICAgICAgIGFzeW5jPU5vbmUsIHVzZV9iaW5hcnlfcGxhY2Vob2xkZXI9 RmFsc2UsIGFycmF5X3RvX3N0cmluZz1GYWxzZQorICAgICk6CisgICAgICAgIGlmIGRhdGFiYXNl IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaGFzYXR0cihzdHIsICdkZWNvZGUnKSBhbmQg XAorICAgICAgICAgICAgICAgICAgICBub3QgaXNpbnN0YW5jZShkYXRhYmFzZSwgdW5pY29kZSk6 CisgICAgICAgICAgICAgICAgZGF0YWJhc2UgPSBkYXRhYmFzZS5kZWNvZGUoJ3V0Zi04JykKKyAg ICAgICAgICAgIGlmIGRpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBkaWQgaW4g c2VsZi5kYl9pbmZvOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX2luZm9bZGlkXVsnZGF0 bmFtZSddID0gZGF0YWJhc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGRpZCBpcyBO b25lOgorICAgICAgICAgICAgICAgIGRhdGFiYXNlID0gc2VsZi5kYgorICAgICAgICAgICAgZWxp ZiBkaWQgaW4gc2VsZi5kYl9pbmZvOgorICAgICAgICAgICAgICAgIGRhdGFiYXNlID0gc2VsZi5k Yl9pbmZvW2RpZF1bJ2RhdG5hbWUnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICBtYWludGVuYW5jZV9kYl9pZCA9IHUnREI6ezB9Jy5mb3JtYXQoc2VsZi5kYikKKyAgICAgICAg ICAgICAgICBpZiBtYWludGVuYW5jZV9kYl9pZCBpbiBzZWxmLmNvbm5lY3Rpb25zOgorICAgICAg ICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uc1ttYWludGVuYW5jZV9kYl9pZF0K KyAgICAgICAgICAgICAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2RpY3QodSIiIgorU0VMRUNUCisg ICAgZGIub2lkIGFzIGRpZCwgZGIuZGF0bmFtZSwgZGIuZGF0YWxsb3djb25uLAorICAgIHBnX2Vu Y29kaW5nX3RvX2NoYXIoZGIuZW5jb2RpbmcpIEFTIHNlcnZlcmVuY29kaW5nLAorICAgIGhhc19k YXRhYmFzZV9wcml2aWxlZ2UoZGIub2lkLCAnQ1JFQVRFJykgYXMgY2FuY3JlYXRlLCBkYXRsYXN0 c3lzb2lkCitGUk9NCisgICAgcGdfZGF0YWJhc2UgZGIKK1dIRVJFIGRiLm9pZCA9IHswfSIiIi5m b3JtYXQoZGlkKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdHVzIGFuZCBsZW4o cmVzWydyb3dzJ10pID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igcm93IGlu IHJlc1sncm93cyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX2lu Zm9bZGlkXSA9IHJvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZSA9 IHNlbGYuZGJfaW5mb1tkaWRdWydkYXRuYW1lJ10KKworICAgICAgICAgICAgICAgICAgICAgICAg aWYgZGlkIG5vdCBpbiBzZWxmLmRiX2luZm86CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmFpc2UgRXhjZXB0aW9uKGdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJDb3VsZCBub3QgZmluZCB0aGUgc3BlY2lmaWVkIGRhdGFiYXNlLiIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICApKQorCisgICAgICAgIGlmIGRhdGFiYXNlIGlzIE5vbmU6CisgICAgICAg ICAgICByYWlzZSBDb25uZWN0aW9uTG9zdChzZWxmLnNpZCwgTm9uZSwgTm9uZSkKKworICAgICAg ICBteV9pZCA9ICh1J0NPTk46ezB9Jy5mb3JtYXQoY29ubl9pZCkpIGlmIGNvbm5faWQgaXMgbm90 IE5vbmUgZWxzZSBcCisgICAgICAgICAgICAodSdEQjp7MH0nLmZvcm1hdChkYXRhYmFzZSkpCisK KyAgICAgICAgc2VsZi5waW5nZWQgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorCisgICAgICAg IGlmIG15X2lkIGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5j b25uZWN0aW9uc1tteV9pZF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGFzeW5jIGlz IE5vbmU6CisgICAgICAgICAgICAgICAgYXN5bmMgPSAxIGlmIGNvbm5faWQgaXMgbm90IE5vbmUg ZWxzZSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzeW5jID0gMSBpZiBh c3luYyBpcyBUcnVlIGVsc2UgMAorICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uc1tteV9pZF0g PSBDb25uZWN0aW9uKAorICAgICAgICAgICAgICAgIHNlbGYsIG15X2lkLCBkYXRhYmFzZSwgYXV0 b19yZWNvbm5lY3QsIGFzeW5jLAorICAgICAgICAgICAgICAgIHVzZV9iaW5hcnlfcGxhY2Vob2xk ZXI9dXNlX2JpbmFyeV9wbGFjZWhvbGRlciwKKyAgICAgICAgICAgICAgICBhcnJheV90b19zdHJp bmc9YXJyYXlfdG9fc3RyaW5nCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmNvbm5lY3Rpb25zW215X2lkXQorCisgICAgZGVmIF9yZXN0b3JlKHNlbGYsIGRhdGEpOgor ICAgICAgICAiIiIKKyAgICAgICAgSGVscHMgcmVzdG9yaW5nIHRvIHJlY29ubmVjdCB0aGUgYXV0 by1jb25uZWN0IGNvbm5lY3Rpb25zIHNtb290aGx5IG9uCisgICAgICAgIHJlbG9hZC9yZXN0YXJ0 IG9mIHRoZSBhcHAgc2VydmVyLi4KKyAgICAgICAgIiIiCisgICAgICAgICMgcmVzdG9yZSBzZXJ2 ZXIgdmVyc2lvbiBmcm9tIGZsYXNrIHNlc3Npb24gaWYgZmxhc2sgc2VydmVyIHdhcworICAgICAg ICAjIHJlc3RhcnRlZC4gQXMgd2UgbmVlZCBzZXJ2ZXIgdmVyc2lvbiB0byByZXNvbHZlIHNxbCB0 ZW1wbGF0ZSBwYXRocy4KKyAgICAgICAgZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLnR5cGVzIGltcG9ydCBTZXJ2ZXJUeXBlCisKKyAgICAgICAgc2VsZi52ZXIgPSBk YXRhLmdldCgndmVyJywgTm9uZSkKKyAgICAgICAgc2VsZi5zdmVyc2lvbiA9IGRhdGEuZ2V0KCdz dmVyc2lvbicsIE5vbmUpCisKKyAgICAgICAgaWYgc2VsZi52ZXIgYW5kIG5vdCBzZWxmLnNlcnZl cl90eXBlOgorICAgICAgICAgICAgZm9yIHN0IGluIFNlcnZlclR5cGUudHlwZXMoKToKKyAgICAg ICAgICAgICAgICBpZiBzdC5pbnN0YW5jZU9mKHNlbGYudmVyKToKKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJfdHlwZSA9IHN0LnN0eXBlCisgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyX2NscyA9IHN0CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgIyBI bW0uLiB3ZSB3aWxsIG5vdCBob25vdXIgdGhpcyByZXF1ZXN0LCB3aGVuIEkgYWxyZWFkeSBoYXZl CisgICAgICAgICMgY29ubmVjdGlvbnMKKyAgICAgICAgaWYgbGVuKHNlbGYuY29ubmVjdGlvbnMp ICE9IDA6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFdlIG5lZWQgdG8ga25vdyBh Ym91dCB0aGUgZXhpc3Rpbmcgc2VydmVyIHZhcmlhbnQgc3VwcG9ydHMgZHVyaW5nCisgICAgICAg ICMgZmlyc3QgY29ubmVjdGlvbiBmb3IgaWRlbnRpZmljYXRpb25zLgorICAgICAgICBzZWxmLnBp bmdlZCA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IGlmICdwYXNzd29yZCcgaW4gZGF0YSBhbmQgZGF0YVsncGFzc3dvcmQnXToKKyAgICAgICAgICAg ICAgICBkYXRhWydwYXNzd29yZCddID0gZGF0YVsncGFzc3dvcmQnXS5lbmNvZGUoJ3V0Zi04JykK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLmV4Y2VwdGlvbihlKQorCisgICAgICAgIGNvbm5lY3Rpb25zID0gZGF0YVsnY29ubmVj dGlvbnMnXQorICAgICAgICBmb3IgY29ubl9pZCBpbiBjb25uZWN0aW9uczoKKyAgICAgICAgICAg IGNvbm5faW5mbyA9IGNvbm5lY3Rpb25zW2Nvbm5faWRdCisgICAgICAgICAgICBjb25uID0gc2Vs Zi5jb25uZWN0aW9uc1tjb25uX2luZm9bJ2Nvbm5faWQnXV0gPSBDb25uZWN0aW9uKAorICAgICAg ICAgICAgICAgIHNlbGYsIGNvbm5faW5mb1snY29ubl9pZCddLCBjb25uX2luZm9bJ2RhdGFiYXNl J10sCisgICAgICAgICAgICAgICAgY29ubl9pbmZvWydhdXRvX3JlY29ubmVjdCddLCBjb25uX2lu Zm9bJ2FzeW5jJ10sCisgICAgICAgICAgICAgICAgdXNlX2JpbmFyeV9wbGFjZWhvbGRlcj1jb25u X2luZm9bJ3VzZV9iaW5hcnlfcGxhY2Vob2xkZXInXSwKKyAgICAgICAgICAgICAgICBhcnJheV90 b19zdHJpbmc9Y29ubl9pbmZvWydhcnJheV90b19zdHJpbmcnXQorICAgICAgICAgICAgKQorCisg ICAgICAgICAgICAjIG9ubHkgdHJ5IHRvIHJlY29ubmVjdCBpZiBjb25uZWN0aW9uIHdhcyBjb25u ZWN0ZWQgcHJldmlvdXNseSBhbmQKKyAgICAgICAgICAgICMgYXV0b19yZWNvbm5lY3QgaXMgdHJ1 ZS4KKyAgICAgICAgICAgIGlmIGNvbm5faW5mb1snd2FzQ29ubmVjdGVkJ10gYW5kIGNvbm5faW5m b1snYXV0b19yZWNvbm5lY3QnXToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg ICAgICAgIGNvbm4uY29ubmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPWRh dGFbJ3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfdHlwZXM9U2Vy dmVyVHlwZS50eXBlcygpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg ICAgIyBUaGlzIHdpbGwgYWxzbyB1cGRhdGUgd2FzQ29ubmVjdGVkIGZsYWcgaW4gY29ubmVjdGlv biBzbworICAgICAgICAgICAgICAgICAgICAjIG5vIG5lZWQgdG8gdXBkYXRlIHRoZSBmbGFnIG1h bnVhbGx5LgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQorICAgICAgICAgICAg ICAgICAgICBzZWxmLmNvbm5lY3Rpb25zLnBvcChjb25uX2luZm9bJ2Nvbm5faWQnXSkKKworICAg IGRlZiByZWxlYXNlKHNlbGYsIGRhdGFiYXNlPU5vbmUsIGNvbm5faWQ9Tm9uZSwgZGlkPU5vbmUp OgorICAgICAgICBpZiBkaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBkaWQgaW4gc2Vs Zi5kYl9pbmZvIGFuZCAnZGF0bmFtZScgaW4gc2VsZi5kYl9pbmZvW2RpZF06CisgICAgICAgICAg ICAgICAgZGF0YWJhc2UgPSBzZWxmLmRiX2luZm9bZGlkXVsnZGF0bmFtZSddCisgICAgICAgICAg ICAgICAgaWYgaGFzYXR0cihzdHIsICdkZWNvZGUnKSBhbmQgXAorICAgICAgICAgICAgICAgICAg ICAgICAgbm90IGlzaW5zdGFuY2UoZGF0YWJhc2UsIHVuaWNvZGUpOgorICAgICAgICAgICAgICAg ICAgICBkYXRhYmFzZSA9IGRhdGFiYXNlLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAg IGlmIGRhdGFiYXNlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQor ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg ICBteV9pZCA9ICh1J0NPTk46ezB9Jy5mb3JtYXQoY29ubl9pZCkpIGlmIGNvbm5faWQgaXMgbm90 IE5vbmUgZWxzZSBcCisgICAgICAgICAgICAodSdEQjp7MH0nLmZvcm1hdChkYXRhYmFzZSkpIGlm IGRhdGFiYXNlIGlzIG5vdCBOb25lIGVsc2UgTm9uZQorCisgICAgICAgIGlmIG15X2lkIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgaWYgbXlfaWQgaW4gc2VsZi5jb25uZWN0aW9uczoKKyAgICAg ICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25zW215X2lkXS5fcmVsZWFzZSgpCisgICAgICAgICAg ICAgICAgZGVsIHNlbGYuY29ubmVjdGlvbnNbbXlfaWRdCisgICAgICAgICAgICAgICAgaWYgZGlk IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5kYl9pbmZvW2RpZF0K KworICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNvbm5lY3Rpb25zKSA9PSAwOgorICAgICAg ICAgICAgICAgICAgICBzZWxmLnZlciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5z dmVyc2lvbiA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfdHlwZSA9IE5v bmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xzID0gTm9uZQorICAgICAgICAg ICAgICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9uZQorCisgICAgICAgICAgICAgICAgc2VsZi51 cGRhdGVfc2Vzc2lvbigpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBmb3IgY29u IGluIHNlbGYuY29ubmVjdGlvbnM6CisgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb25zW2Nvbl0u X3JlbGVhc2UoKQorCisgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBkaWN0KCkKKyAgICAgICAg c2VsZi52ZXIgPSBOb25lCisgICAgICAgIHNlbGYuc3ZlcnNpb24gPSBOb25lCisgICAgICAgIHNl bGYuc2VydmVyX3R5cGUgPSBOb25lCisgICAgICAgIHNlbGYuc2VydmVyX2NscyA9IE5vbmUKKyAg ICAgICAgc2VsZi5wYXNzd29yZCA9IE5vbmUKKworICAgICAgICBzZWxmLnVwZGF0ZV9zZXNzaW9u KCkKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF91cGRhdGVfcGFzc3dvcmQoc2Vs ZiwgcGFzc3dkKToKKyAgICAgICAgc2VsZi5wYXNzd29yZCA9IHBhc3N3ZAorICAgICAgICBmb3Ig Y29ubl9pZCBpbiBzZWxmLmNvbm5lY3Rpb25zOgorICAgICAgICAgICAgY29ubiA9IHNlbGYuY29u bmVjdGlvbnNbY29ubl9pZF0KKyAgICAgICAgICAgIGlmIGNvbm4uY29ubiBpcyBub3QgTm9uZSBv ciBjb25uLndhc0Nvbm5lY3RlZCBpcyBUcnVlOgorICAgICAgICAgICAgICAgIGNvbm4ucGFzc3dv cmQgPSBwYXNzd2QKKworICAgIGRlZiB1cGRhdGVfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgbWFu YWdlcnMgPSBzZXNzaW9uWydfX3Bnc3FsX3NlcnZlcl9tYW5hZ2VycyddIFwKKyAgICAgICAgICAg IGlmICdfX3Bnc3FsX3NlcnZlcl9tYW5hZ2VycycgaW4gc2Vzc2lvbiBlbHNlIGRpY3QoKQorICAg ICAgICB1cGRhdGVkX21nciA9IHNlbGYuYXNfZGljdCgpCisKKyAgICAgICAgaWYgbm90IHVwZGF0 ZWRfbWdyOgorICAgICAgICAgICAgaWYgc2VsZi5zaWQgaW4gbWFuYWdlcnM6CisgICAgICAgICAg ICAgICAgbWFuYWdlcnMucG9wKHNlbGYuc2lkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg bWFuYWdlcnNbc2VsZi5zaWRdID0gdXBkYXRlZF9tZ3IKKyAgICAgICAgc2Vzc2lvblsnX19wZ3Nx bF9zZXJ2ZXJfbWFuYWdlcnMnXSA9IG1hbmFnZXJzCisgICAgICAgIHNlc3Npb24uZm9yY2Vfd3Jp dGUgPSBUcnVlCisKKyAgICBkZWYgdXRpbGl0eShzZWxmLCBvcGVyYXRpb24pOgorICAgICAgICAi IiIKKyAgICAgICAgdXRpbGl0eShvcGVyYXRpb24pCisKKyAgICAgICAgUmV0dXJuczogbmFtZSBv ZiB0aGUgdXRpbGl0eSB3aGljaCB1c2VkIGZvciB0aGUgb3BlcmF0aW9uCisgICAgICAgICIiIgor ICAgICAgICBpZiBzZWxmLnNlcnZlcl9jbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1 cm4gc2VsZi5zZXJ2ZXJfY2xzLnV0aWxpdHkob3BlcmF0aW9uLCBzZWxmLnN2ZXJzaW9uKQorCisg ICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZXhwb3J0X3Bhc3N3b3JkX2VudihzZWxmLCBl bnYpOgorICAgICAgICBpZiBzZWxmLnBhc3N3b3JkOgorICAgICAgICAgICAgcGFzc3dvcmQgPSBk ZWNyeXB0KAorICAgICAgICAgICAgICAgIHNlbGYucGFzc3dvcmQsIGN1cnJlbnRfdXNlci5wYXNz d29yZAorICAgICAgICAgICAgKS5kZWNvZGUoKQorICAgICAgICAgICAgb3MuZW52aXJvbltzdHIo ZW52KV0gPSBwYXNzd29yZAo= --001a1147191045c969056732220d--