Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfnBo-0003tF-TA for pgadmin-hackers@arkaria.postgresql.org; Tue, 25 Jun 2019 15:16:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hfnBl-00013E-JR for pgadmin-hackers@arkaria.postgresql.org; Tue, 25 Jun 2019 15:16:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfnBk-000137-Nr for pgadmin-hackers@lists.postgresql.org; Tue, 25 Jun 2019 15:16:53 +0000 Received: from mail-qt1-x829.google.com ([2607:f8b0:4864:20::829]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hfnBd-0006uu-1L for pgadmin-hackers@postgresql.org; Tue, 25 Jun 2019 15:16:51 +0000 Received: by mail-qt1-x829.google.com with SMTP id d17so18749536qtj.8 for ; Tue, 25 Jun 2019 08:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=/yZ0zmNRjLXj5p9BxSjPgFaEaGY6FNLH/cif2sHltLc=; b=STpsuKLkN0qvKqeR40bVRWeBMPp1/GdNSrNNaRLiACGcz92vsQo5CNAQ4RMHLbxvIV DecaTV/j7W9IKsq3j23qkQmMj7em4OpjoY4vgtorVGNIYlaGx5p1eXF+vILRFiNF1l9/ YzOFc5WC/EWIQCQf4se66itirtAdvuzIwHUdpCze0V4vl4J8ooxYLjisWNj6uhsudhVI 01TTSwNhvCrx7XFh5cWvKFolQuFhCjGndStZ6kzS4EQ6YmSrYytmNnCN/Gd78NX459Qq SKUVuPf5g5Hx56JdEI+KauWUY6kLzjuwQu2pgeLDgEJI6L/kpDD4ts9ohQeAUzw6xB3r ZY/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=/yZ0zmNRjLXj5p9BxSjPgFaEaGY6FNLH/cif2sHltLc=; b=WrKqaVMMAlBwuzlbuWy59NXGeq0k2J7pP46HGqf4waA72WBD3JVwioMo/LrUPU6EWt sJRucdfWKeyJENvToefWm3j5/UsJISd99jTXJY/M5Uo+ygaar2XAm5Bo7EsUPa4ThU+J Yf0xfxjg9wT4U1bS612YXosm3GFEwUa44Z5kZgyyakdTZzjUkIKsPhzI7a3ZWpTPfc3h BgnOcytgiO/kaOVEGTZrPXLJCsVLw/GuF9yA9i1rv/MFVbmiu9F3goC//kcPHkHvyjoV L905JkiC3MXXaSCtkD7w2td7qOdwAv0K6SUTUInsVnyVcUK7IpoVljDmgCCa34NP1mdR CIxw== X-Gm-Message-State: APjAAAWuKMkxl5P0f5SNEgfhkr00hGsrMdhnFoSEd2cMY7+dVORV3OPd mJWXLoKxsbGv+j+0bL3/4PngNQYQhwdFwGPgWCQ= X-Google-Smtp-Source: APXvYqw2D/o9c2/jlCzY5S61BfL+QPHSqzqd71guzxGl03TKgPt95dgjE8GMYL69h13M0t9hHJZNXMTVlOOhV2zski0= X-Received: by 2002:ad4:5283:: with SMTP id v3mr63355937qvr.207.1561475803832; Tue, 25 Jun 2019 08:16:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yosry Muhammad Date: Tue, 25 Jun 2019 17:16:32 +0200 Message-ID: Subject: Re: [GSoC][Patch] Automatic Mode Detection V1 To: Aditya Toshniwal , Dave Page , pgadmin-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000009d7eac058c276a56" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000009d7eac058c276a56 Content-Type: multipart/alternative; boundary="0000000000009d7ea8058c276a54" --0000000000009d7ea8058c276a54 Content-Type: text/plain; charset="UTF-8" Hi, OK. Yosry, How about storing the mogirfied query in the cookie/session when > the query is executed and then modifying query history storing logic to use > it when called ? This way you will not need to change any parsing when > query history is displayed. > >> -- >> > My problem is not where to store the mogrified query, I can just replace the sql sent with the response to saving the data with the mogrified one. In order to produce the mogrified query in the first place I need a psycopg2.cursor object, but I only have access to a Connection object (the wrapper, not the actual psycopg2.connection object). Should I modify that wrapper Connection class to add a mogirfy function? or just get a cursor using the psycopg2.connection object like this: conn.conn.cursor() - which doesn't seem right. Thoughts? Also, could you please help me with the selenium TimeoutException in the feature tests? 3 tests are failing because of that exception and I am not sure what is it related to. I am attaching the feature test log file in this email if you would like to take a look on it. Thanks ! -- *Yosry Muhammad Yosry* Computer Engineering student, The Faculty of Engineering, Cairo University (2021). Class representative of CMP 2021. https://www.linkedin.com/in/yosrym93/ --0000000000009d7ea8058c276a54 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,


=
OK. Yosry, How about storing the= =C2=A0mogirfied query in the cookie= /session when the query is executed and then modifying query history storin= g logic to use it when called ? This way you will not need to change any pa= rsing when query history is displayed.
--

My problem is not where to store = the mogrified query, I can just replace the sql sent with the response to s= aving the data with the mogrified one. In order to produce the mogrified qu= ery in the first place I need a psycopg2.cursor object, but I only have acc= ess to a Connection object (the wrapper, not the actual psycopg2.connection= object). Should I modify that wrapper Connection class to add a mogirfy fu= nction? or just get a cursor using the psycopg2.connection object like this= : conn.conn.cursor() - which doesn't seem right. Thoughts?
Also, could you please help me with the selenium TimeoutExcept= ion in the feature tests? 3 tests are failing because of that exception and= I am not sure what is it related to. I am attaching the feature test log f= ile in this email if you would like to take a look on it.

Thanks !


--
Yosry Muhammad Yosry

Co= mputer Engineering student,
The Facult= y of Engineering,
Cairo University (202= 1).
Class representative of CMP 2021.
--0000000000009d7ea8058c276a54-- --0000000000009d7eac058c276a56 Content-Type: text/x-log; charset="US-ASCII"; name="regression.log" Content-Disposition: attachment; filename="regression.log" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jxbyd81f0 MjAxOS0wNi0yNCAxODoxMTo0NSw3OTk6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTE6 NDUsNzk5OiBFUlJPUglTVERFUlI6CT09PT09PT09PT09PT1SdW5uaW5nIHRoZSB0ZXN0IGNhc2Vz IGZvciAnUG9zdGdyZVNRTCAxMSc9PT09PT09PT09PT09CjIwMTktMDYtMjQgMTg6MTE6NDgsOTAy OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5icm93c2VyX3Rv b2xfYmFyX3Rlc3QuQnJvd3NlclRvb2xCYXJGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMTo0 OCw5MDI6IEVSUk9SCVNUREVSUjoJQnJvd3NlciB0b29sIGJhciBmZWF0dXJlIHRlc3QKMjAxOS0w Ni0yNCAxODoxMTo0OCw5MDI6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2LTI0IDE4OjExOjUz LDYzNzogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxMTo1Myw2Mzg6IEVSUk9SCVNUREVS UjoJUXVlcnkgVG9vbCBUb29sQmFyIEJ1dHRvbgoyMDE5LTA2LTI0IDE4OjExOjU4LDE5NzogRVJS T1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxMTo1OCwxOTc6IEVSUk9SCVNUREVSUjoJCjIw MTktMDYtMjQgMTg6MTE6NTgsMTk3OiBFUlJPUglTVERFUlI6CVZpZXcgRGF0YSBUb29sQmFyIEJ1 dHRvbgoyMDE5LTA2LTI0IDE4OjEyOjAxLDE5NzogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0y NCAxODoxMjowMSwxOTc6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTI6MDEsMTk3OiBF UlJPUglTVERFUlI6CUZpbHRlcmVkIFJvd3MgVG9vbEJhciBCdXR0b24KMjAxOS0wNi0yNCAxODox MjowMywyMTg6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTI6MDQsMzUwOiBFUlJP UglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTI6MDQsMzUxOiBFUlJPUglTVERFUlI6CXJ1blRl c3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVh dHVyZV90ZXN0LkNvcHlTZWxlY3RlZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KQoyMDE5LTA2LTI0 IDE4OjEyOjA0LDM1MTogRVJST1IJU1RERVJSOglDb3B5IHJvd3MsIGNvbHVtbiB1c2luZyBidXR0 b24gYW5kIGtleWJvYXJkIHNob3J0Y3V0CjIwMTktMDYtMjQgMTg6MTI6MDQsMzUxOiBFUlJPUglT VERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJb2sKMjAx OS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0 dXJlX3Rlc3RzLmZpbGVfbWFuYWdlcl90ZXN0LkNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCkK MjAxOS0wNi0yNCAxODoxMjoyMCwxMzE6IEVSUk9SCVNUREVSUjoJRmlsZSBtYW5hZ2VyIGZlYXR1 cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjEyOjIwLDEzMTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTkt MDYtMjQgMTg6MTI6MjQsNDgzOiBFUlJPUglTVERFUlI6CVRlc3RzIHRvIGNoZWNrIGlmIEZpbGUg bWFuYWdlciBpcyB2dWxuZXJhYmxlIHRvIFhTUy4uLgoyMDE5LTA2LTI0IDE4OjEyOjM0LDQwMDog RVJST1IJU1RERVJSOglFUlJPUgoyMDE5LTA2LTI0IDE4OjEyOjM0LDQwMDogRVJST1IJU1RERVJS OglydW5UZXN0IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMua2V5Ym9hcmRfc2hvcnRjdXRfdGVzdC5L ZXlib2FyZFNob3J0Y3V0RmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTI6MzQsNDAwOiBFUlJP UglTVERFUlI6CVRlc3QgZm9yIGtleWJvYXJkIHNob3J0Y3V0CjIwMTktMDYtMjQgMTg6MTI6MzQs NDAwOiBFUlJPUglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMjo0MCwxNjU6IEVSUk9SCVNU REVSUjoJRXhlY3V0aW5nIHNob3J0Y3V0OiBGaWxlIG1haW4gbWVudS4uLgoyMDE5LTA2LTI0IDE4 OjEyOjQwLDIyNDogRVJST1IJU1RERVJSOglPSwoyMDE5LTA2LTI0IDE4OjEyOjQwLDI3NjogRVJS T1IJU1RERVJSOglFeGVjdXRpbmcgc2hvcnRjdXQ6IE9iamVjdCBtYWluIG1lbnUuLi4KMjAxOS0w Ni0yNCAxODoxMjo0MCwzNDk6IEVSUk9SCVNUREVSUjoJT0sKMjAxOS0wNi0yNCAxODoxMjo0MCwz NDk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODoxMjo0MCwzNDk6IEVSUk9SCVNUREVS UjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX2RhdGF0eXBlX3ZhbGlkYXRpb25f dGVzdC5QR0RhdGF5cGVGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMjo0MCwzNTA6IEVSUk9S CVNUREVSUjoJVGVzdCBjaGVja3MgZm9yIFBHIGRhdGEtdHlwZXMgb3V0cHV0CjIwMTktMDYtMjQg MTg6MTI6NDAsMzUwOiBFUlJPUglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMzowNiw0OTI6 IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODoxMzowNiw0OTI6IEVSUk9SCVNUREVSUjoJ cnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9y ZV90ZXN0LlBHVXRpbGl0aWVzQmFja3VwRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTM6MDYs NDkyOiBFUlJPUglTVERFUlI6CVRlc3QgZm9yIFBHIHV0aWxpdGllcyAtIEJhY2t1cCBhbmQgUmVz dG9yZQoyMDE5LTA2LTI0IDE4OjEzOjA2LDQ5MjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYt MjQgMTg6MTM6MjQsNTIzOiBFUlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTM6MjQsNTIz OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5wZ191dGlsaXRp ZXNfYmFja3VwX3Jlc3RvcmVfdGVzdC5QR1V0aWxpdGllc0JhY2t1cEZlYXR1cmVUZXN0KQoyMDE5 LTA2LTI0IDE4OjEzOjI0LDUyNDogRVJST1IJU1RERVJSOglUZXN0IGZvciBYU1MgaW4gQmFja3Vw IGFuZCBSZXN0b3JlCjIwMTktMDYtMjQgMTg6MTM6MjQsNTI0OiBFUlJPUglTVERFUlI6CSAuLi4K MjAxOS0wNi0yNCAxODoxMzo0MiwxMjU6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0yNCAxODox Mzo0MiwxMjU6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnBn X3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFpbnRlbmFuY2VGZWF0dXJl VGVzdCkKMjAxOS0wNi0yNCAxODoxMzo0MiwxMjY6IEVSUk9SCVNUREVSUjoJVGVzdCBmb3IgUEcg bWFpbnRlbmFuY2U6IGRhdGFiYXNlCjIwMTktMDYtMjQgMTg6MTM6NDIsMTI2OiBFUlJPUglTVERF UlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxMzo1Niw1MDk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0w Ni0yNCAxODoxMzo1Niw1MTA6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJl X3Rlc3RzLnBnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFpbnRlbmFu Y2VGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxMzo1Niw1MTA6IEVSUk9SCVNUREVSUjoJVGVz dCBmb3IgUEcgbWFpbnRlbmFuY2U6IHRhYmxlCjIwMTktMDYtMjQgMTg6MTM6NTYsNTEwOiBFUlJP UglTVERFUlI6CSAuLi4KMjAxOS0wNi0yNCAxODoxNDoxMiw4OTU6IEVSUk9SCVNUREVSUjoJb2sK MjAxOS0wNi0yNCAxODoxNDoxMiw4OTY6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5m ZWF0dXJlX3Rlc3RzLnBnX3V0aWxpdGllc19tYWludGVuYW5jZV90ZXN0LlBHVXRpbGl0aWVzTWFp bnRlbmFuY2VGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxNDoxMiw4OTY6IEVSUk9SCVNUREVS UjoJVGVzdCBmb3IgWFNTIGluIG1haW50ZW5hbmNlIGRpYWxvZwoyMDE5LTA2LTI0IDE4OjE0OjEy LDg5NjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA1OiBFUlJPUglT VERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA2OiBFUlJPUglTVERFUlI6CXJ1blRlc3Qg KHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX2F1dG9fY29tcGxldGVfdGVzdHMuUXVl cnlUb29sQXV0b0NvbXBsZXRlRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTQ6MjksMTA2OiBF UlJPUglTVERFUlI6CVF1ZXJ5IHRvb2wgYXV0byBjb21wbGV0ZSBmZWF0dXJlIHRlc3QKMjAxOS0w Ni0yNCAxODoxNDoyOSwxMDY6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2LTI0IDE4OjE0OjM2 LDUxODogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxNDozNiw1MTk6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBBTFRFUiBrZXl3b3JkLi4uCjIwMTktMDYtMjQgMTg6MTQ6MzgsNzk4 OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE0OjM5LDk3MDogRVJST1IJU1RERVJS OglBdXRvIGNvbXBsZXRlIEJFR0lOIGtleXdvcmQuLi4KMjAxOS0wNi0yNCAxODoxNDo0MSwyODg6 IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTQ6NDIsMzEyOiBFUlJPUglTVERFUlI6 CUF1dG8gY29tcGxldGUgQ0FTQ0FERUQga2V5d29yZC4uLgoyMDE5LTA2LTI0IDE4OjE0OjQzLDYy MzogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0NCw2NTQ6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBTRUxFQ1Qga2V5d29yZC4uLgoyMDE5LTA2LTI0IDE4OjE0OjQ1LDk3 NjogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0NywwMTE6IEVSUk9SCVNUREVS UjoJQXV0byBjb21wbGV0ZSBwZ19iYWNrZW5kX3BpZCgpIGZ1bmN0aW9uIC4uLgoyMDE5LTA2LTI0 IDE4OjE0OjQ4LDcyMDogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNDo0OSw3NDA6 IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0ZSBjdXJyZW50X3F1ZXJ5KCkgZnVuY3Rpb24gLi4u CjIwMTktMDYtMjQgMTg6MTQ6NTEsMzQ2OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4 OjE0OjUyLDM1MjogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIGZ1bmN0aW9uIHdpdGggYXJn dW1lbnQgLi4uCjIwMTktMDYtMjQgMTg6MTQ6NTMsODczOiBFUlJPUglTVERFUlI6CU9LLgoyMDE5 LTA2LTI0IDE4OjE0OjU0LDkwNzogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIHNjaGVtYSBv dGhlciB0aGFuIGRlZmF1bHQgc3RhcnQgd2l0aCB0ZXN0XyAuLi4KMjAxOS0wNi0yNCAxODoxNDo1 Niw0NTE6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTQ6NTcsNDY2OiBFUlJPUglT VERFUlI6CUF1dG8gY29tcGxldGUgc2NoZW1hIG90aGVyIHRoYW4gZGVmYXVsdCBzdGFydHMgd2l0 aCBjb21wXyAuLi4KMjAxOS0wNi0yNCAxODoxNDo1OSwwNzI6IEVSUk9SCVNUREVSUjoJT0suCjIw MTktMDYtMjQgMTg6MTU6MDAsMTAyOiBFUlJPUglTVERFUlI6CUF1dG8gY29tcGxldGUgZmlyc3Qg dGFibGUgaW4gcHVibGljIHNjaGVtYSAuLi4KMjAxOS0wNi0yNCAxODoxNTowMSw0MjI6IEVSUk9S CVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6MDIsNDI5OiBFUlJPUglTVERFUlI6CUF1dG8g Y29tcGxldGUgc2Vjb25kIHRhYmxlIGluIHB1YmxpYyBzY2hlbWEgLi4uCjIwMTktMDYtMjQgMTg6 MTU6MDMsNzYxOiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE1OjA0LDc4NjogRVJS T1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEpPSU4gc2Vjb25kIHRhYmxlIHdpdGggYWZ0ZXIgc2No ZW1hIG5hbWUgLi4uCjIwMTktMDYtMjQgMTg6MTU6MDYsMTExOiBFUlJPUglTVERFUlI6CU9LLgoy MDE5LTA2LTI0IDE4OjE1OjA3LDEyNzogRVJST1IJU1RERVJSOglBdXRvIGNvbXBsZXRlIEpPSU4g T04gc29tZSBjb2x1bW5zIC4uLgoyMDE5LTA2LTI0IDE4OjE1OjA4LDQ0NzogRVJST1IJU1RERVJS OglPSy4KMjAxOS0wNi0yNCAxODoxNTowOSw0NTc6IEVSUk9SCVNUREVSUjoJQXV0byBjb21wbGV0 ZSBKT0lOIE9OIHNvbWUgY29sdW1ucyB1c2luZyB0YWJlbCBhbGlhcyAuLi4KMjAxOS0wNi0yNCAx ODoxNToxMCw4MjE6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6MTIsOTcwOiBF UlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTU6MTIsOTcxOiBFUlJPUglTVERFUlI6CXJ1 blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX2pvdXJuZXlfdGVzdC5RdWVy eVRvb2xKb3VybmV5VGVzdCkKMjAxOS0wNi0yNCAxODoxNToxMiw5NzE6IEVSUk9SCVNUREVSUjoJ VGVzdHMgdGhlIHBhdGggdGhyb3VnaCB0aGUgcXVlcnkgdG9vbAoyMDE5LTA2LTI0IDE4OjE1OjEy LDk3MTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTU6NDIsOTY5OiBFUlJPUglT VERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTU6NDIsOTY5OiBFUlJPUglTVERFUlI6CXJ1blRlc3Qg KHBnYWRtaW4uZmVhdHVyZV90ZXN0cy5xdWVyeV90b29sX3Rlc3RzLlF1ZXJ5VG9vbEZlYXR1cmVU ZXN0KQoyMDE5LTA2LTI0IDE4OjE1OjQyLDk2OTogRVJST1IJU1RERVJSOglRdWVyeSB0b29sIGZl YXR1cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjE1OjQyLDk2OTogRVJST1IJU1RERVJSOgkgLi4uCjIw MTktMDYtMjQgMTg6MTU6NTMsNDY5OiBFUlJPUglTVERFUlI6CQoyMDE5LTA2LTI0IDE4OjE1OjUz LDQ2OTogRVJST1IJU1RERVJSOglPbiBkZW1hbmQgcXVlcnkgcmVzdWx0Li4uCjIwMTktMDYtMjQg MTg6MTU6NTMsNDY5OiBFUlJPUglTVERFUlI6CQoyMDE5LTA2LTI0IDE4OjE1OjUzLDQ2OTogRVJS T1IJU1RERVJSOglPbiBkZW1hbmQgcmVzdWx0IHNldCBvbiBzY3JvbGxpbmcuLi4KMjAxOS0wNi0y NCAxODoxNTo1NSw2Njg6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTU6NTUsNjY4 OiBFUlJPUglTVERFUlI6CU9uIGRlbWFuZCByZXN1bHQgc2V0IG9uIGdyaWQgc2VsZWN0IGFsbC4u LgoyMDE5LTA2LTI0IDE4OjE1OjU2LDc2NDogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAx ODoxNTo1Niw3NjU6IEVSUk9SCVNUREVSUjoJT24gZGVtYW5kIHJlc3VsdCBzZXQgb24gY29sdW1u IHNlbGVjdCBhbGwuLi4KMjAxOS0wNi0yNCAxODoxNTo1Nyw1MjI6IEVSUk9SCVNUREVSUjoJT0su CjIwMTktMDYtMjQgMTg6MTU6NTgsNjY3OiBFUlJPUglTVERFUlI6CUV4cGxhaW4gcXVlcnkgd2l0 aCB2ZXJib3NlIGFuZCBjb3N0Li4uCjIwMTktMDYtMjQgMTg6MTY6MDEsNDUwOiBFUlJPUglTVERF UlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjAyLDYxNDogRVJST1IJU1RERVJSOglFeHBsYWluIGFu YWx5emUgcXVlcnkgd2l0aCBidWZmZXJzIGFuZCB0aW1pbmcuLi4KMjAxOS0wNi0yNCAxODoxNjow NSwyOTM6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTY6MDYsMzkwOiBFUlJPUglT VERFUlI6CUF1dG8gY29tbWl0IGRpc2FibGVkLi4uCjIwMTktMDYtMjQgMTg6MTY6MTUsOTMyOiBF UlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjE3LDE1MjogRVJST1IJU1RERVJSOglB dXRvIGNvbW1pdCBlbmFibGVkLi4uCjIwMTktMDYtMjQgMTg6MTY6MjcsNTg3OiBFUlJPUglTVERF UlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjI4LDY1NTogRVJST1IJU1RERVJSOglBdXRvIHJvbGxi YWNrIGVuYWJsZWQuLi4KMjAxOS0wNi0yNCAxODoxNjo0MiwwMjY6IEVSUk9SCVNUREVSUjoJIE9L LgoyMDE5LTA2LTI0IDE4OjE2OjQzLDEwMDogRVJST1IJU1RERVJSOglDYW5jZWwgcXVlcnkuLi4K MjAxOS0wNi0yNCAxODoxNjo0NiwwNDc6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6 MTY6NTEsMDA4OiBFUlJPUglTVERFUlI6CUNhcHR1cmUgTm90aWZ5IFN0YXRlbWVudHMuLi4KMjAx OS0wNi0yNCAxODoxNjo1MSwwMDg6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTY6NTEs MDA5OiBFUlJPUglTVERFUlI6CQlMaXN0ZW4gb24gYW4gZXZlbnQuLi4KMjAxOS0wNi0yNCAxODox Njo1MywxNzI6IEVSUk9SCVNUREVSUjoJT0suCjIwMTktMDYtMjQgMTg6MTY6NTQsMzAyOiBFUlJP UglTVERFUlI6CQlOb3RpZnkgZXZlbnQgd2l0aG91dCBkYXRhLi4uCjIwMTktMDYtMjQgMTg6MTY6 NTYsNDI2OiBFUlJPUglTVERFUlI6CU9LLgoyMDE5LTA2LTI0IDE4OjE2OjU3LDY0OTogRVJST1IJ U1RERVJSOgkJTm90aWZ5IGV2ZW50IHdpdGggZGF0YS4uLgoyMDE5LTA2LTI0IDE4OjE2OjU5LDk2 NjogRVJST1IJU1RERVJSOglPSy4KMjAxOS0wNi0yNCAxODoxNzowMiw1MzA6IEVSUk9SCVNUREVS UjoJRXhwbGFpbiBxdWVyeSB3aXRoIEpJVCBzdGF0cy4uLgoyMDE5LTA2LTI0IDE4OjE3OjAyLDU0 NjogRVJST1IJU1RERVJSOglTa2lwcGVkLgoyMDE5LTA2LTI0IDE4OjE3OjAzLDc0NzogRVJST1IJ U1RERVJSOglvawoyMDE5LTA2LTI0IDE4OjE3OjAzLDc1MzogRVJST1IJU1RERVJSOglydW5UZXN0 IChwZ2FkbWluLmZlYXR1cmVfdGVzdHMudGFibGVfZGRsX2ZlYXR1cmVfdGVzdC5UYWJsZURkbEZl YXR1cmVUZXN0KQoyMDE5LTA2LTI0IDE4OjE3OjAzLDc1MzogRVJST1IJU1RERVJSOglUZXN0IHRh YmxlIERETCBnZW5lcmF0aW9uCjIwMTktMDYtMjQgMTg6MTc6MDMsNzUzOiBFUlJPUglTVERFUlI6 CSAuLi4KMjAxOS0wNi0yNCAxODoxNzoxNyw0MjE6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0wNi0y NCAxODoxNzoxNyw0MjI6IEVSUk9SCVNUREVSUjoJcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rl c3RzLnZpZXdfZGF0YV9kbWxfcXVlcmllcy5DaGVja0ZvclZpZXdEYXRhVGVzdCkKMjAxOS0wNi0y NCAxODoxNzoxNyw0MjI6IEVSUk9SCVNUREVSUjoJVmFsaWRhdGUgSW5zZXJ0LCBVcGRhdGUgb3Bl cmF0aW9ucyBpbiBWaWV3L0VkaXQgZGF0YSB3aXRoIGdpdmVuIHRlc3QgZGF0YQoyMDE5LTA2LTI0 IDE4OjE3OjE3LDQyMjogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTc6NTAsODkw OiBFUlJPUglTVERFUlI6CUVSUk9SCjIwMTktMDYtMjQgMTg6MTc6NTAsODkxOiBFUlJPUglTVERF UlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy54c3NfY2hlY2tzX3BhbmVsc19hbmRf cXVlcnlfdG9vbF90ZXN0LkNoZWNrRm9yWHNzRmVhdHVyZVRlc3QpCjIwMTktMDYtMjQgMTg6MTc6 NTAsODkxOiBFUlJPUglTVERFUlI6CVRlc3QgWFNTIGNoZWNrIGZvciBwYW5lbHMgYW5kIHF1ZXJ5 IHRvb2wKMjAxOS0wNi0yNCAxODoxNzo1MCw4OTE6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2 LTI0IDE4OjE4OjAxLDUxOTogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODoxODowMSw1MTk6 IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBCcm93c2VyIHRyZWUgZm9yIHRoZSBYU1MKMjAx OS0wNi0yNCAxODoxODowMSw2MTU6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTg6MDEs NjE1OiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgUHJvcGVydGllcyB0YWIgZm9yIHRoZSBY U1MKMjAxOS0wNi0yNCAxODoxODowMiwzOTY6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6 MTg6MDIsMzk2OiBFUlJPUglTVERFUlI6CQlDaGVja2luZyB0aGUgU1FMIHRhYiBmb3IgdGhlIFhT UwoyMDE5LTA2LTI0IDE4OjE4OjEwLDYyMTogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0yNCAxODox ODoxMCw2MjE6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBEZXBlbmRlbnRzIHRhYiBmb3Ig dGhlIFhTUwoyMDE5LTA2LTI0IDE4OjE4OjExLDM1NzogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0y NCAxODoxODoxMSwzNTc6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBTbGlja0dyaWQgY2Vs bCBmb3IgdGhlIFhTUwoyMDE5LTA2LTI0IDE4OjE4OjE0LDAzNTogRVJST1IJU1RERVJSOgkKMjAx OS0wNi0yNCAxODoxODoxNCwwMzU6IEVSUk9SCVNUREVSUjoJCUNoZWNraW5nIHRoZSBxdWVyeSB0 b29sIGhpc3RvcnkgZm9yIHRoZSBYU1MKMjAxOS0wNi0yNCAxODoxODoyMCw3MTQ6IEVSUk9SCVNU REVSUjoJRVJST1IKMjAxOS0wNi0yNCAxODoxODoyMCw3MTQ6IEVSUk9SCVNUREVSUjoJcnVuVGVz dCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnhzc19jaGVja3NfcGdhZG1pbl9kZWJ1Z2dlcl90ZXN0 LkNoZWNrRGVidWdnZXJGb3JYc3NGZWF0dXJlVGVzdCkKMjAxOS0wNi0yNCAxODoxODoyMCw3MTU6 IEVSUk9SCVNUREVSUjoJVGVzdHMgdG8gY2hlY2sgaWYgRGVidWdnZXIgaXMgdnVsbmVyYWJsZSB0 byBYU1MKMjAxOS0wNi0yNCAxODoxODoyMCw3MTU6IEVSUk9SCVNUREVSUjoJIC4uLgoyMDE5LTA2 LTI0IDE4OjE4OjM2LDAxODogRVJST1IJU1RERVJSOglza2lwcGVkICdQbGVhc2UgbWFrZSBzdXJl IHRoYXQgZGVidWdnZXIgcGx1Z2luIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQnCjIwMTktMDYtMjQg MTg6MTg6MzYsMDE5OiBFUlJPUglTVERFUlI6CXJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0 cy54c3NfY2hlY2tzX3JvbGVzX2NvbnRyb2xfdGVzdC5DaGVja1JvbGVNZW1iZXJzaGlwQ29udHJv bEZlYXR1cmVUZXN0KQoyMDE5LTA2LTI0IDE4OjE4OjM2LDAxOTogRVJST1IJU1RERVJSOglUZXN0 cyB0byBjaGVjayBpZiBSb2xlIG1lbWJlcnNoaXAgY29udHJvbCBpcyB2dWxuZXJhYmxlIHRvIFhT UwoyMDE5LTA2LTI0IDE4OjE4OjM2LDAxOTogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQg MTg6MTg6NDYsNjc5OiBFUlJPUglTVERFUlI6CW9rCjIwMTktMDYtMjQgMTg6MTg6NDYsNjgwOiBF UlJPUglTVERFUlI6CXJ1blRlc3QgKHJlZ3Jlc3Npb24ucmVfc3FsLnRlc3RzLnRlc3RfcmVzcWwu UmV2ZXJzZUVuZ2luZWVyZWRTUUxUZXN0Q2FzZXMpCjIwMTktMDYtMjQgMTg6MTg6NDYsNjgwOiBF UlJPUglTVERFUlI6CVJldmVyc2UgRW5naW5lZXJlZCBTUUwgVGVzdCBDYXNlcwoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDY4MDogRVJST1IJU1RERVJSOgkgLi4uCjIwMTktMDYtMjQgMTg6MTg6NDYsNzc3 OiBJTkZPCWZsYXNrLmFwcDoJQ29ubmVjdGlvbiBSZXF1ZXN0IGZvciBzZXJ2ZXIjMQoyMDE5LTA2 LTI0IDE4OjE4OjQ2LDgzNDogSU5GTwlmbGFzay5hcHA6CUNvbm5lY3Rpb24gRXN0YWJsaXNoZWQg Zm9yIHNlcnZlcjogICAgICAgICAgICAgICAgIDEgLSBQb3N0Z3JlU1FMIDExCjIwMTktMDYtMjQg MTg6MTg6NDYsODQ2OiBTUUwJZmxhc2suYXBwOglFeGVjdXRlIChkaWN0KSBmb3Igc2VydmVyICMx IC0gREI6cG9zdGdyZXMgKFF1ZXJ5LWlkOiA3MjYxNTQyKToKU0VMRUNUIENBU0UgV0hFTiB1c2Vz dXBlcgogICAgICAgVEhFTiBwZ19pc19pbl9yZWNvdmVyeSgpCiAgICAgICBFTFNFIEZBTFNFCiAg ICAgICBFTkQgYXMgaW5yZWNvdmVyeSwKICAgICAgIENBU0UgV0hFTiB1c2VzdXBlciBBTkQgcGdf aXNfaW5fcmVjb3ZlcnkoKQogICAgICAgVEhFTiBwZ19pc193YWxfcmVwbGF5X3BhdXNlZCgpCiAg ICAgICBFTFNFIEZBTFNFCiAgICAgICBFTkQgYXMgaXNyZXBsYXlwYXVzZWQKRlJPTSBwZ191c2Vy IFdIRVJFIHVzZW5hbWU9Y3VycmVudF91c2VyCjIwMTktMDYtMjQgMTg6MTg6NDYsODc1OiBTUUwJ Zmxhc2suYXBwOglFeGVjdXRlIChkaWN0KSBmb3Igc2VydmVyICMxIC0gREI6cG9zdGdyZXMgKFF1 ZXJ5LWlkOiAzMjg0MjU0KToKClNFTEVDVAogICAgZGIub2lkIGFzIGRpZCwgZGIuZGF0bmFtZSwg ZGIuZGF0YWxsb3djb25uLAogICAgcGdfZW5jb2RpbmdfdG9fY2hhcihkYi5lbmNvZGluZykgQVMg c2VydmVyZW5jb2RpbmcsCiAgICBoYXNfZGF0YWJhc2VfcHJpdmlsZWdlKGRiLm9pZCwgJ0NSRUFU RScpIGFzIGNhbmNyZWF0ZSwgZGF0bGFzdHN5c29pZApGUk9NCiAgICBwZ19kYXRhYmFzZSBkYgpX SEVSRSBkYi5vaWQgPSAzMjQ2OQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDg5NDogSU5GTwlmbGFzay5h cHA6CUNvbm5lY3Rpb24gRXN0YWJsaXNoZWQgZm9yIERhdGFiYXNlIElkOiAgICAgICAgICAgICAg ICAgMzI0NjkKMjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJb2sKMjAxOS0w Ni0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDkyOTogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAocGdhZG1pbi5mZWF0 dXJlX3Rlc3RzLmZpbGVfbWFuYWdlcl90ZXN0LkNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCkK MjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVSUjoJRmlsZSBtYW5hZ2VyIGZlYXR1 cmUgdGVzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkyOTogRVJST1IJU1RERVJSOgktLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTI5OiBFUlJPUglTVERFUlI6CVRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKMjAxOS0wNi0yNCAxODoxODo0Niw5Mjk6IEVSUk9SCVNUREVS UjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9m ZWF0dXJlX3Rlc3RzL2ZpbGVfbWFuYWdlcl90ZXN0LnB5IiwgbGluZSA1MywgaW4gcnVuVGVzdAoy MDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgc2VsZi5fY3JlYXRlX25l d19maWxlKCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJICBGaWxlICIv aG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L2ZpbGVfbWFuYWdlcl90ZXN0LnB5IiwgbGluZSA2OCwgaW4gX2NyZWF0ZV9uZXdfZmlsZQoyMDE5 LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgc2VsZi5wYWdlLmZpbmRfYnlf Y3NzX3NlbGVjdG9yKFF1ZXJ5VG9vbExvY2F0b3JzQ3NzLmJ0bl9zYXZlKS5jbGljaygpCjIwMTkt MDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMv RGV2L0dTb0MvcGdhZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3Bh Z2UucHkiLCBsaW5lIDMyNywgaW4gZmluZF9ieV9jc3Nfc2VsZWN0b3IKMjAxOS0wNi0yNCAxODox ODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2Vs ZW1lbnRfYnlfY3NzX3NlbGVjdG9yKGNzc19zZWxlY3RvcikKMjAxOS0wNi0yNCAxODoxODo0Niw5 MzA6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWlu NC93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3BnYWRtaW5fcGFnZS5weSIsIGxpbmUgNTA3 LCBpbiB3YWl0X2Zvcl9lbGVtZW50CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERF UlI6CSAgICBzZWxmLl93YWl0X2ZvcigiZWxlbWVudCB0byBleGlzdCIsIGVsZW1lbnRfaWZfaXRf ZXhpc3RzKQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9o b21lL3lvc3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRp bHMvcGdhZG1pbl9wYWdlLnB5IiwgbGluZSA1ODIsIGluIF93YWl0X2ZvcgoyMDE5LTA2LTI0IDE4 OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkgICAgIlRpbWVkIG91dCB3YWl0aW5nIGZvciAiICsg d2FpdGluZ19mb3JfbWVzc2FnZQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJS OgkgIEZpbGUgIi9ob21lL3lvc3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3ZlbnYvbGliL3B5dGhv bjMuNi9zaXRlLXBhY2thZ2VzL3NlbGVuaXVtL3dlYmRyaXZlci9zdXBwb3J0L3dhaXQucHkiLCBs aW5lIDgwLCBpbiB1bnRpbAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMDogRVJST1IJU1RERVJSOgkg ICAgcmFpc2UgVGltZW91dEV4Y2VwdGlvbihtZXNzYWdlLCBzY3JlZW4sIHN0YWNrdHJhY2UpCjIw MTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CXNlbGVuaXVtLmNvbW1vbi5leGNl cHRpb25zLlRpbWVvdXRFeGNlcHRpb246IE1lc3NhZ2U6IFRpbWVkIG91dCB3YWl0aW5nIGZvciBl bGVtZW50IHRvIGV4aXN0CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6CT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJRVJST1I6 IHJ1blRlc3QgKHBnYWRtaW4uZmVhdHVyZV90ZXN0cy52aWV3X2RhdGFfZG1sX3F1ZXJpZXMuQ2hl Y2tGb3JWaWV3RGF0YVRlc3QpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMwOiBFUlJPUglTVERFUlI6 CVZhbGlkYXRlIEluc2VydCwgVXBkYXRlIG9wZXJhdGlvbnMgaW4gVmlldy9FZGl0IGRhdGEgd2l0 aCBnaXZlbiB0ZXN0IGRhdGEKMjAxOS0wNi0yNCAxODoxODo0Niw5MzA6IEVSUk9SCVNUREVSUjoJ LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOglUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkiLCBsaW5lIDEx NiwgaW4gcnVuVGVzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOgkgICAg c2VsZi5fYWRkX3JvdygpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAg RmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2ViL3BnYWRtaW4vZmVhdHVy ZV90ZXN0cy92aWV3X2RhdGFfZG1sX3F1ZXJpZXMucHkiLCBsaW5lIDI4MiwgaW4gX2FkZF9yb3cK MjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJICAgIHNlbGYucGFnZS5maW5k X2J5X2lkKCJidG4tc2F2ZSIpLmNsaWNrKCkgICMgU2F2ZSBkYXRhCjIwMTktMDYtMjQgMTg6MTg6 NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdh ZG1pbjQvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5l IDMyMiwgaW4gZmluZF9ieV9pZAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJS OgkgICAgbGFtYmRhIGRyaXZlcjogZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9pZChlbGVtZW50X2lk KQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMTogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9ob21lL3lv c3J5bTkzL0Rldi9HU29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdh ZG1pbl9wYWdlLnB5IiwgbGluZSA1MDcsIGluIHdhaXRfZm9yX2VsZW1lbnQKMjAxOS0wNi0yNCAx ODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJICAgIHNlbGYuX3dhaXRfZm9yKCJlbGVtZW50IHRv IGV4aXN0IiwgZWxlbWVudF9pZl9pdF9leGlzdHMpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5lIDU4MiwgaW4g X3dhaXRfZm9yCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgICAiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yICIgKyB3YWl0aW5nX2Zvcl9tZXNzYWdlCjIwMTktMDYtMjQgMTg6 MTg6NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0Mv cGdhZG1pbjQvdmVudi9saWIvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvc2VsZW5pdW0vd2ViZHJp dmVyL3N1cHBvcnQvd2FpdC5weSIsIGxpbmUgODAsIGluIHVudGlsCjIwMTktMDYtMjQgMTg6MTg6 NDYsOTMxOiBFUlJPUglTVERFUlI6CSAgICByYWlzZSBUaW1lb3V0RXhjZXB0aW9uKG1lc3NhZ2Us IHNjcmVlbiwgc3RhY2t0cmFjZSkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVS UjoJc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMuVGltZW91dEV4Y2VwdGlvbjogTWVzc2FnZTog VGltZWQgb3V0IHdhaXRpbmcgZm9yIGVsZW1lbnQgdG8gZXhpc3QKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzE6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkz MTogRVJST1IJU1RERVJSOglFUlJPUjogcnVuVGVzdCAocGdhZG1pbi5mZWF0dXJlX3Rlc3RzLnhz c19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QuQ2hlY2tGb3JYc3NGZWF0dXJlVGVz dCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzE6IEVSUk9SCVNUREVSUjoJVGVzdCBYU1MgY2hlY2sg Zm9yIHBhbmVscyBhbmQgcXVlcnkgdG9vbAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJ U1RERVJSOgktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBFUlJPUglTVERF UlI6CVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2Fk bWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGFuZWxzX2FuZF9xdWVy eV90b29sX3Rlc3QucHkiLCBsaW5lIDY3LCBpbiBydW5UZXN0CjIwMTktMDYtMjQgMTg6MTg6NDYs OTMyOiBFUlJPUglTVERFUlI6CSAgICBzZWxmLl9jaGVja194c3NfaW5fcXVlcnlfdG9vbF9oaXN0 b3J5KCkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9t ZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3hz c19jaGVja3NfcGFuZWxzX2FuZF9xdWVyeV90b29sX3Rlc3QucHkiLCBsaW5lIDIxNiwgaW4gX2No ZWNrX3hzc19pbl9xdWVyeV90b29sX2hpc3RvcnkKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVS Uk9SCVNUREVSUjoJICAgICIucXVlcnktZGV0YWlsIC5jb250ZW50LXZhbHVlIgoyMDE5LTA2LTI0 IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgkgIEZpbGUgIi9ob21lL3lvc3J5bTkzL0Rldi9H U29DL3BnYWRtaW40L3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1pbl9wYWdlLnB5 IiwgbGluZSAzMjcsIGluIGZpbmRfYnlfY3NzX3NlbGVjdG9yCjIwMTktMDYtMjQgMTg6MTg6NDYs OTMyOiBFUlJPUglTVERFUlI6CSAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9lbGVtZW50 X2J5X2Nzc19zZWxlY3Rvcihjc3Nfc2VsZWN0b3IpCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBF UlJPUglTVERFUlI6CSAgRmlsZSAiL2hvbWUveW9zcnltOTMvRGV2L0dTb0MvcGdhZG1pbjQvd2Vi L3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9wZ2FkbWluX3BhZ2UucHkiLCBsaW5lIDUwNywgaW4g d2FpdF9mb3JfZWxlbWVudAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgkg ICAgc2VsZi5fd2FpdF9mb3IoImVsZW1lbnQgdG8gZXhpc3QiLCBlbGVtZW50X2lmX2l0X2V4aXN0 cykKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBGaWxlICIvaG9tZS95 b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxzL3Bn YWRtaW5fcGFnZS5weSIsIGxpbmUgNTgyLCBpbiBfd2FpdF9mb3IKMjAxOS0wNi0yNCAxODoxODo0 Niw5MzI6IEVSUk9SCVNUREVSUjoJICAgICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgIiArIHdhaXRp bmdfZm9yX21lc3NhZ2UKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICBG aWxlICIvaG9tZS95b3NyeW05My9EZXYvR1NvQy9wZ2FkbWluNC92ZW52L2xpYi9weXRob24zLjYv c2l0ZS1wYWNrYWdlcy9zZWxlbml1bS93ZWJkcml2ZXIvc3VwcG9ydC93YWl0LnB5IiwgbGluZSA4 MCwgaW4gdW50aWwKMjAxOS0wNi0yNCAxODoxODo0Niw5MzI6IEVSUk9SCVNUREVSUjoJICAgIHJh aXNlIFRpbWVvdXRFeGNlcHRpb24obWVzc2FnZSwgc2NyZWVuLCBzdGFja3RyYWNlKQoyMDE5LTA2 LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOglzZWxlbml1bS5jb21tb24uZXhjZXB0aW9u cy5UaW1lb3V0RXhjZXB0aW9uOiBNZXNzYWdlOiBUaW1lZCBvdXQgd2FpdGluZyBmb3IgZWxlbWVu dCB0byBleGlzdAoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMjogRVJST1IJU1RERVJSOgktLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCjIwMTktMDYtMjQgMTg6MTg6NDYsOTMyOiBFUlJPUglTVERFUlI6CVJhbiAxOSB0ZXN0 cyBpbiA0MTguMDI3cwoyMDE5LTA2LTI0IDE4OjE4OjQ2LDkzMzogRVJST1IJU1RERVJSOglGQUlM RUQKMjAxOS0wNi0yNCAxODoxODo0Niw5MzM6IEVSUk9SCVNUREVSUjoJIChlcnJvcnM9Mywgc2tp cHBlZD0xKQoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzODogRVJST1IJU1RERVJSOgkKMjAxOS0wNi0y NCAxODoxODo0Nyw2Mzg6IEVSUk9SCVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyMDE5LTA2LTI0IDE4 OjE4OjQ3LDYzODogRVJST1IJU1RERVJSOglUZXN0IFJlc3VsdCBTdW1tYXJ5CjIwMTktMDYtMjQg MTg6MTg6NDcsNjM4OiBFUlJPUglTVERFUlI6CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMjAxOS0wNi0yNCAxODox ODo0Nyw2Mzk6IEVSUk9SCVNUREVSUjoJUG9zdGdyZVNRTCAxMToKMjAxOS0wNi0yNCAxODoxODo0 Nyw2Mzk6IEVSUk9SCVNUREVSUjoJCjIwMTktMDYtMjQgMTg6MTg6NDcsNjM5OiBFUlJPUglTVERF UlI6CQkxNSB0ZXN0cyBwYXNzZWQKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9SCVNUREVS UjoJCTMgdGVzdHMgZmFpbGVkOgoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzOTogRVJST1IJU1RERVJS OgkJCUNoZWNrRmlsZU1hbmFnZXJGZWF0dXJlVGVzdCAoRmlsZSBtYW5hZ2VyIGZlYXR1cmUgdGVz dCkKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9SCVNUREVSUjoJCQlDaGVja0ZvclZpZXdE YXRhVGVzdCAoVmFsaWRhdGUgSW5zZXJ0LCBVcGRhdGUgb3BlcmF0aW9ucyBpbiBWaWV3L0VkaXQg ZGF0YSB3aXRoIGdpdmVuIHRlc3QgZGF0YSkKMjAxOS0wNi0yNCAxODoxODo0Nyw2Mzk6IEVSUk9S CVNUREVSUjoJCQlDaGVja0Zvclhzc0ZlYXR1cmVUZXN0IChUZXN0IFhTUyBjaGVjayBmb3IgcGFu ZWxzIGFuZCBxdWVyeSB0b29sKQoyMDE5LTA2LTI0IDE4OjE4OjQ3LDYzOTogRVJST1IJU1RERVJS OgkJMSB0ZXN0IHNraXBwZWQ6CjIwMTktMDYtMjQgMTg6MTg6NDcsNjM5OiBFUlJPUglTVERFUlI6 CQkJQ2hlY2tEZWJ1Z2dlckZvclhzc0ZlYXR1cmVUZXN0IChUZXN0cyB0byBjaGVjayBpZiBEZWJ1 Z2dlciBpcyB2dWxuZXJhYmxlIHRvIFhTUykKMjAxOS0wNi0yNCAxODoxODo0Nyw2NDA6IEVSUk9S CVNUREVSUjoJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo= --0000000000009d7eac058c276a56--