Fwd: Re: Correction of pagination bug in grid when using -numbered

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Fwd: Re: Correction of pagination bug in grid when using -numbered

stevepiercy
Is there a chance that this will make it into the repo as well?

I've tested with several clients and they like the added flexibility.

--steve


====== Forwarded Message ======
Date: 12/24/10 12:46 AM
From: [hidden email] (Steve Piercy - Web Site Builder)
To: [hidden email] (Knop Framework Discussion)

OK, now I've got it merged and tested.  Here is the change log
that I merged:

2010-12-23  SP  Corrected pagination bug for -numbered.
2010-11-17  JC  Added -startwithfooter flag to
grid->renderhtml.  This moves the footer before the column
titles in the table header.
2010-11-17  JC  Changed rawheader inclusion to work even if
there's no quicksearch for a grid
2010-05-14  JC  Added span separation on grid footer for better styling
2010-01-27  JC  Adjusted the id support
2010-01-25  JC  Added support for optional id, used by table,
quicksearch and quicksearch_reset

Jolle's additions create an option to place the column titles
immediately above their column values, improves styles and helps
with javascript selectors.

When running a diff, you will see comments for 3 customizations
I made in the grid footer using the language string 'gotopage'.  
They may be safely omitted, however I think it helps clarify
what the numbers in the grid footer represent.

I also found a bug from Jolle's grid.inc that added an empty row
to the grid when using $grid->renderhtml(-startwithfooter):

         if(#startwithfooter);
             #output += self -> 'footer';
             #output += '<th colspan="' + (#fields -> size) + '">';
             #output += '</th></tr>\n<tr>';
         /if;

Should be:

         if(#startwithfooter);
             #output += self -> 'footer';
         /if;

I'm not sure why those two extra lines were in there.  I removed
them because I could not understand its purpose with them.

There was also a missing semi-colon on the second one of these,
which I corrected:

         (local_defined('startwithfooter') && #startwithfooter
!= false ? #startwithfooter = true | local('startwithfooter' = false))

--steve


On 12/23/10 at 4:39 AM, [hidden email] (Steve Piercy - Web
Site Builder) pronounced:

>meh.  Ignore that.  I forgot to merge Jolle's bug fix.
>
>Also I like his addition to Knop that swaps the rows for
>pagination and column names in the header which make the column
>headings sit directly above their column values.  I'll merge
>that in, too, then resubmit for review after I get some sleep.
>http://lasso.2283332.n4.nabble.com/Grid-links-and-session-links-don-t-play-tt3157883.
>html
>
>--steve
>
>
>On 12/23/10 at 4:11 AM, [hidden email] (Steve Piercy - Web
>Site Builder) pronounced:
>
>>This did not make it into the repo.  Attached please find a
>>correction to the pagination bug in the grid when using
>>-numbered.  Without this change, only next and previous links
>>appear and no first or last links.
>>
>>When running a diff, you will see comments for 3
>>customizations I made in the grid footer using the language
>>string 'gotopage'.  They may be safely omitted.
>>
>>The remaining changes are necessary in order to properly
>>display complete navigation links in a grid when using -numbered.
>>
>>--steve
>>
>>-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>Steve Piercy               Web Site Builder               Soquel, CA
>><[hidden email]>                  <http://www.StevePiercy.com/>
>>
>>-----
>
>-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>Steve Piercy               Web Site Builder               Soquel, CA
><[hidden email]>                  <http://www.StevePiercy.com/>
>
>
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Steve Piercy               Web Site Builder              
Soquel, CA
<[hidden email]>                  <http://www.StevePiercy.com/>
====== End Forwarded Message ======

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Steve Piercy               Web Site Builder              
Soquel, CA
<[hidden email]>                  <http://www.StevePiercy.com/>
--Mailsmith-5189706E-683D-4C44-8902-A98A55DE44AE
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

OK, now I've got it merged and tested.  Here is the change log=20
that I merged:

2010-12-23  SP  Corrected pagination bug for -numbered.
2010-11-17  JC  Added -startwithfooter flag to=20
grid->renderhtml.  This moves the footer before the column=20
titles in the table header.
2010-11-17  JC  Changed rawheader inclusion to work even if=20
there's no quicksearch for a grid
2010-05-14  JC  Added span separation on grid footer for better styling
2010-01-27  JC  Adjusted the id support
2010-01-25  JC  Added support for optional id, used by table,=20
quicksearch and quicksearch_reset

Jolle's additions create an option to place the column titles=20
immediately above their column values, improves styles and helps=20
with javascript selectors.

When running a diff, you will see comments for 3 customizations=20
I made in the grid footer using the language string 'gotopage'. =20
They may be safely omitted, however I think it helps clarify=20
what the numbers in the grid footer represent.

I also found a bug from Jolle's grid.inc that added an empty row=20
to the grid when using $grid->renderhtml(-startwithfooter):

         if(#startwithfooter);
             #output +=3D self -> 'footer';
             #output +=3D '<th colspan=3D"' + (#fields -> size) + '">';
             #output +=3D '</th></tr>\n<tr>';
         /if;

Should be:

         if(#startwithfooter);
             #output +=3D self -> 'footer';
         /if;

I'm not sure why those two extra lines were in there.  I removed=20
them because I could not understand its purpose with them.

There was also a missing semi-colon on the second one of these,=20
which I corrected:

         (local_defined('startwithfooter') && #startwithfooter=20
!=3D false ? #startwithfooter =3D true | local('startwithfooter' =3D false)=
)

--steve


On 12/23/10 at 4:39 AM, [hidden email] (Steve Piercy - Web=20
Site Builder) pronounced:

>meh.  Ignore that.  I forgot to merge Jolle's bug fix.
>
>Also I like his addition to Knop that swaps the rows for=20
>pagination and column names in the header which make the column=20
>headings sit directly above their column values.  I'll merge=20
>that in, too, then resubmit for review after I get some sleep.
>http://lasso.2283332.n4.nabble.com/Grid-links-and-session-links-don-t-play=
-tt3157883.

>html
>
>--steve
>
>
>On 12/23/10 at 4:11 AM, [hidden email] (Steve Piercy - Web=20
>Site Builder) pronounced:
>
>>This did not make it into the repo.  Attached please find a=20
>>correction to the pagination bug in the grid when using=20
>>-numbered.  Without this change, only next and previous links=20
>>appear and no first or last links.
>>
>>When running a diff, you will see comments for 3=20
>>customizations I made in the grid footer using the language=20
>>string 'gotopage'.  They may be safely omitted.
>>
>>The remaining changes are necessary in order to properly=20
>>display complete navigation links in a grid when using -numbered.
>>
>>--steve
>>
>>-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>Steve Piercy               Web Site Builder               Soquel, CA
>><[hidden email]>                  <http://www.StevePiercy.com/>
>>
>>-----
>
>-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>Steve Piercy               Web Site Builder               Soquel, CA
><[hidden email]>                  <http://www.StevePiercy.com/>
>
>
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --=20
-- --
Steve Piercy               Web Site Builder              =20
Soquel, CA
<[hidden email]>                  <http://www.StevePiercy.com/>
--Mailsmith-5189706E-683D-4C44-8902-A98A55DE44AE
Content-Type: application/octet-stream; name="grid.inc"; x-mac-type=54455854; x-mac-creator=522A6368; x-mac-type="54455854"; x-mac-creator="522A6368"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="grid.inc"

77u/PD9MYXNzb1NjcmlwdAoKZGVmaW5lX3R5cGU6ICdncmlkJywKCSdrbm9w
X2Jhc2UnLAoJLW5hbWVzcGFjZT0na25vcF8nOwovLwktcHJvdG90eXBlOwoK
CWxvY2FsOiAndmVyc2lvbic9JzIwMTAtMTItMjMnLAoJCSdkZXNjcmlwdGlv
bic9J0N1c3RvbSB0eXBlIHRvIGhhbmRsZSBkYXRhIGdyaWRzIChyZWNvcmQg
bGlzdGluZ3MpLic7CgovKgoKQ0hBTkdFIE5PVEVTCjIwMTAtMTItMjMJU1AJ
Q29ycmVjdGVkIHBhZ2luYXRpb24gYnVnIGZvciAtbnVtYmVyZWQuCjIwMTAt
MTEtMTcJSkMJQWRkZWQgLXN0YXJ0d2l0aGZvb3RlciBmbGFnIHRvIGdyaWQt
PnJlbmRlcmh0bWwuICBUaGlzIG1vdmVzIHRoZSBmb290ZXIgYmVmb3JlIHRo
ZSBjb2x1bW4gdGl0bGVzIGluIHRoZSB0YWJsZSBoZWFkZXIuCjIwMTAtMTEt
MTcJSkMJQ2hhbmdlZCByYXdoZWFkZXIgaW5jbHVzaW9uIHRvIHdvcmsgZXZl
biBpZiB0aGVyZSdzIG5vIHF1aWNrc2VhcmNoIGZvciBhIGdyaWQKMjAxMC0w
NS0xNAlKQwlBZGRlZCBzcGFuIHNlcGFyYXRpb24gb24gZ3JpZCBmb290ZXIg
Zm9yIGJldHRlciBzdHlsaW5nCjIwMTAtMDEtMjcJSkMJQWRqdXN0ZWQgdGhl
IGlkIHN1cHBvcnQKMjAxMC0wMS0yNQlKQwlBZGRlZCBzdXBwb3J0IGZvciBv
cHRpb25hbCBpZCwgdXNlZCBieSB0YWJsZSwgcXVpY2tzZWFyY2ggYW5kIHF1
aWNrc2VhcmNoX3Jlc2V0CjIwMTAtMDMtMDYJU1AJQ2hhbmdlZCBkZWZhdWx0
IGJlaGF2aW9yIG9mIC0+c29ydHBhcmFtcyBhbmQgLT5xdWlja3NlYXJjaCB3
aXRoIC1zcWwgdG8gYWRkIGJhY2t0aWNrcyBiZXR3ZWVuIHRoZSB0YWJsZSBh
bmQgY29sdW1uIG5hbWVzLiAgTm93IEpPSU5zIG1heSBiZSB1c2VkLgoyMDEw
LTAzLTA2CVNQCUFkZGVkIC0+c29ydHBhcmFtcyBhbmQgLT5xdWlja3NlYXJj
aCB3aXRoIC1yZW1vdmVkb3RiYWNrdGlja3MgZm9yIGJhY2t3YXJkIGNvbXBh
dGliaWxpdHkgZm9yIGZpZWxkcyB0aGF0IGNvbnRhaW4gcGVyaW9kcy4gIElm
IHlvdSB1c2UgcGVyaW9kcyBpbiBhIGZpZWxkbmFtZSB0aGVuIHlvdSBjYW5u
b3QgdXNlIGEgSk9JTiBpbiBLbm9wLgoyMDA5LTA5LTE4CUpTCVN5bnRheCBh
ZGp1c3RtZW50cyBmb3IgTGFzc28gOQoyMDA5LTA4LTI2CUpTCUNvcnJlY3Rl
ZCBwcmV2L25leHQgbGlua3Mgd2hlbiBubyBuYXYgaXMgZGVmaW5lZCBmb3Ig
dGhlIGdyaWQgb2JqZWN0CjIwMDktMDYtMjkJSlMJLT5yZW5kZXJsaXN0aW5n
OiBkb2N1bWVudGF0aW9uIGNvcnJlY3Rpb24gKHJlbmRlcmxpc3RpbmcgbmV2
ZXIgY2FsbHMgcmVuZGVyZm9vdGVyKS4gCjIwMDktMDEtMTEJSlMJLT5yZW5k
ZXJsaXN0aW5nOiBNYWRlIHN1cmUgdGhhdCB0ZW1wbGF0ZSBpc24ndCBhcHBs
aWVkIG9uIE5VTEwgZmllbGQgdmFsdWVzIHNpbmNlIHRoYXQgd291bGQgY2F1
c2UgYW4gZXJyb3Igd2l0aCAtPnJlcGxhY2UgCjIwMDgtMTItMjkJSkMJU3Vw
cG9ydCBmb3Igb3B0aW9uYWwgY2xhc3NlcyBpbiB0YWJsZSBoZWFkZXIKMjAw
OC0xMS0yNwlKQwktPiBpbXBsZW1lbnRlZCBzdXBwb3J0IGZvciB0ZCBzcGVj
aWZpYyBjbGFzc2VzLiBUaGUgY2xhc3MgaXMgaW5zZXJ0ZWQgaW4gYm90aCB0
aGUgVEggYW5kIFREIHRhZyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZAoyMDA4
LTA5LTI0CUpTCS0+c29ydHBhcmFtczogZmllbGRuYW1lcyBzcGVjaWZpZWQg
YnkgdGhlIC1zb3J0IHBhcmFtZXRlciBhcmUgbm93IHZhbGlkYXRlZCBzbyB0
aGV5IGV4aXN0IGluIHRoZSBkYXRhYmFzZQoyMDA4LTA5LTI0CUpTCS0+c29y
dHBhcmFtcywgLT5xdWlja3NlYXJjaDogQWRkZWQgcHJvdGVjdGlvbiBhZ2Fp
bnN0IGJhY2t0aWNrIHNxbCBpbmplY3Rpb24gaW4gTXlTUUwgb2JqZWN0IG5h
bWVzCjIwMDgtMDktMTAJSlMJLW51bWJlcmVkIGNhbiBub3cgYmUgc3BlY2lm
aWVkIGF0IG9uY3JlYXRlIGluIGFkZGl0aW9uIHRvICAtPnJlbmRlcmh0bWwg
YW5kIC0+cmVuZGVyZm9vdGVyLiAKMjAwOC0wOS0wOAlKUwktPnNvcnRmaWVs
ZCBjaGFuZ2VkIHNvIGRlZmF1bHRzb3J0IGlzIGhvbm9yZWQgZXZlbiBpZiAt
bm9zb3J0IGlzIHNwZWNpZmllZCAoLW5vc29ydCBpcyBvbmx5IHVzZWQgdG8g
cHJldmVudCB0aGUgdXNlciBmcm9tIGNoYW5naW5nIHNvcnQgb3JkZXIgb24g
dGhlIGZseSkKMjAwOC0wOS0wOAlKUwktPnJlbmRlcmxpc3RpbmcgYW5kIC0+
cmVuZGVyZm9vdGVyIG9wdGltaXplZCBieSBjYWNoaW5nIHRoZSByZXN1bHQg
b2YgbmF2LT51cmwuIAoyMDA4LTA1LTE1CUpTCS0+cmVuZGVyZm9vdGVyOiBt
aW5vciBhZGp1c3RtZW50IHRvIG51bWJlcmVkIHBhZ2luYXRpb24gbGlua3MK
MjAwOC0wNS0xNAlKUwktPnJlbmRlcmZvb3RlciAoYW5kIC0+cmVuZGVyaHRt
bCk6IGFkZGVkIC1udW1iZXJlZCBhcyBvcHRpb24gdG8gZ2V0IGdvb2dsZSBz
dHlsZSBudW1iZXJlZCBwYWdpbmF0aW9uIGxpbmtzLiBSZW5kZXIgdGhlIGdy
aWQgd2l0aCAtbnVtYmVyZWQgKGRlZmF1bHRzIHRvIHNob3cgNiBwYWdlIG51
bWJlciBsaW5rcyBwbHVzIHRoZSBmYXIgZW5kcykgb3IgLW51bWJlcmVkPTEw
IG9yIGFub3RoZXIgbnVtYmVyLiAKMjAwOC0wNS0xMwlKUwlBZGRlZCAtPnJl
bmRlcmxpc3Rpbmcgd2hpY2ggaXMgbm93IHBhcnQgb2YgLT5yZW5kZXJodG1s
IGZvciBtb3JlIGZsZXhpYmlsaXR5CjIwMDgtMDItMjUJSlMJLT5yZW5kZXJo
ZWFkZXIgYW5kIC0+cmVuZGVyZm9vdGVyIGNhbGxzIG5hdiAtPiB1cmwgd2l0
aCAtZ2V0YXJncyAKMjAwOC0wMS0yMglKUwktPnJlbmRlcmhlYWRlciwgLT5y
ZW5kZXJmb290ZXIsIC0+cmVuZGVyaHRtbDogYWRkZGVkIC1hdXRvcGFyYW1z
IHRvIG5hdiAtPiB1cmwgdXNlZCBpbiBsaW5rcyBzaW5jZSB1cmwgd2FzIGNo
YW5nZWQgdG8gZGVmYXVsdCB0byBubyBhdXRvcGFyYW1zLiAKMjAwOC0wMS0y
MglKUwktPnJlbmRlcmhlYWRlciwgLT5yZW5kZXJmb290ZXIsIC0+cmVuZGVy
aHRtbDogaW1wcm92ZWQgc3VwcG9ydCBmb3IgcGFyYW0gYmFzZWQgbmF2aWdh
dGlvbiBtZXRob2QgIGluIGxpbmtzLCBjbGVhbmVkIHVwIGxpbmtpbmcgdG8g
dXNlIG5hdiAtPiB1cmwgaW5zdGVhZCBvZiBzZWxmIC0+IHVybHBhcmFtcyB3
aGVuIG5hdiBpcyBhdmFpbGFibGUKMjAwOC0wMS0yMglKQwktPnF1aWNrc2Vh
cmNoOiBDaGFuZ2VkIHdvcmRzZXBhcmF0b3JzIHNvIHRoYXQgXHIgYW5kIFxu
IGFyZW4ndCBwbGFjZWQgYXMgXHJcbiwgb3RoZXJ3aXNlIHRoZXkgYXJlIHRy
ZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyIGJ5IC0+c3BsaXQuIAoyMDA3
LTEyLTExCUpTCUFkZGVkIGRvY3VtZW50YXRpb24gYXMgLWRlc2NyaXB0aW9u
IHRvIG1vc3QgbWVtYmVyIHRhZ3MsIHRvIGJlIHVzZWQgYnkgdGhlIG5ldyAt
PmhlbHAgdGFnCjIwMDctMTItMTEJSlMJTW92ZWQgLT5oZWxwIHRvIGtub3Bf
YmFzZQoyMDA3LTEyLTAzCUpTCUFkZGVkIG9wdGlvbmFsIC1sYW5ndWFnZSBw
YXJhbWV0ZXIgdG8gc2V0IHRoZSBpbml0aWFsIGxhbmd1YWdlIGZvciB0aGUg
Z3JpZCBvYmplY3QKMjAwNy0xMi0wMwlKUwlBZGRlZCAtPiBsYW5nIHRvIHBy
b3ZpZGUgYSByZWZlcmVuY2UgdG8gdGhlIGtub3BfbGFuZyBvYmplY3QgdGhh
dCBpcyB1c2VkIGZvciBsb2NhbGl6ZWQgc3RyaW5ncwoyMDA3LTEyLTAzCUpT
CUFkZGVkIGxvY2FsaXplZCBzdHJpbmdzIGZvciBFbmdsaXNoIGFuZCBTd2Vk
aXNoCjIwMDctMTItMDMJSlMJQWRkZWQga25vcF9sYW5nIHRvIGhhbmRsZSBs
b2NhbGl6ZWQgc3RyaW5ncwoyMDA3LTExLTExCUpDCUFkZGVkIG9wdGlvbmFs
IC1yYXdoZWFkZXIgZm9yIGV4dHJhIGhlYWRlciBjb250ZW50IHRvIGJlIGlu
c2VydGVkIGJlZm9yZSB0aGUgUXVpY2tzZWFyY2ggZm9ybQoyMDA3LTEwLTIz
CUpTCS0+cmVuZGVyaGVhZGVyOiBhZGRlZCBjbGFzcz0iZ3JpZCIgdG8gdGhl
IG9wZW5pbmcgdGFibGUgdGFnIHRvIGJlIGFibGUgdG8gaXNvbGF0ZSB0aGUg
Y3NzIHNwZWNpZmljYXRpb25zCjIwMDctMTAtMDMJSlMJLT5yZW5kZXJmb290
ZXI6IGFkZGVkIHVuaXF1ZSBjbGFzc2VzIGZvciBlYWNoIHR5cGUgb2YgcHJl
di9uZXh0IGxpbmsgdG8gYmUgYWJsZSB0byByZXBsYWNlIHdpdGggaW1hZ2Vz
IHVzaW5nIGNzcwoyMDA3LTEwLTAzCUpTCS0+cmVuZGVyZm9vdGVyOiBDaGFu
Z2VkIHByZXYvbmV4dCBsaW5rIHRleHRzIHRvIHNpbXBsZSB8PCA8PCA+PiA+
fCBpbnN0ZWFkIG9mIHVuaWNvZGUgZ2x5cGhzCjIwMDctMDktMjAJSlMJUG9z
dHBhcmFtcyBhcmUgb25seSBzZW50IGFsb25nIGZvciBuYXYgcGFyYW1zIChu
b3QgIi0iIHBhcmFtcykKMjAwNy0wOS0wNwlKUwlBbHNvIHNlbmQgcG9zdHBh
cmFtcyBhbG9uZyBpbiBwcmV2L25leHQgbGlua3MgKG5vdCBvbmx5IGdldHBh
cmFtcykKMjAwNy0wOS0wNglKUwlJZiBuYXYgaGFzIHBhcmFtcyBkZWZpbmVk
LCB0aG9zZSBwYXJhbXMgd2lsbCBiZSBzZW50IGFsb25nIHdpdGggcHJldi9u
ZXh0IGxpbmtzCjIwMDctMDktMDYJSlMJQWRkZWQgZW5jb2RlX3VybCBmb3Ig
bGluayBwYXJhbXMKMjAwNy0wOS0wNglKUwlDaGFuZ2VkIC1hY3Rpb24gdG8g
LWZvcm1hY3Rpb24gaW4gdGhlIHF1aWNrc2VhcmNoIGZvcm0KMjAwNy0wOC0w
OAlKUwktPnVybGFyZ3M6IEFkZGVkIGV4Y2VwdGlvbiBmb3IgLXNlc3Npb24K
MjAwNy0wNi0xOAlKUwlBZGRlZCB0YWcgdGltZXIgdG8gbW9zdCBtZW1iZXIg
dGFncwoyMDA3LTA2LTEzCUpTCWFkZGVkIGluaGVyaXRhbmNlIGZyb20ga25v
cF9iYXNlCjIwMDctMDYtMTEJSkMJYWRkZWQgaGFuZGxpbmcgb2YgeGh0bWwg
b3V0cHV0CjIwMDctMDUtMzAJSlMJLT5xdWlja3NlYXJjaDogYWRkZWQgXHIg
YW5kIFxuIGFzIHdvcmQgc2VwYXJhdG9ycy4gCjIwMDctMDUtMDMJSlMJLT5h
ZGRmaWVsZDogQWRkZWQgY2hlY2sgZm9yIGVtcHR5IGRiZmllbGQgbmFtZSBi
ZWZvcmUgYWRkaW5nIHRvIGRiZmllbGRtYXAKMjAwNy0wNC0xOQlKUwktPnF1
aWNrc2VhcmNoOiBhZGRlZCAgLXZhbHVlIChmbGFnKSB0aGF0IG1ha2VzIHF1
aWNrc2VhcmNoIG91dHB1dCBqdXN0IHRoZSB2YWx1ZSBvZiB0aGUgcXVpY2tz
ZWFyY2ggZmllbGQgaW5zdGVhZCBvZiBhIHF1ZXJ5CjIwMDctMDQtMTMJSlMJ
LT5vbmNyZWF0ZTogYWRkZWQgLW5vc29ydCBhcyBnbG9iYWwgZmxhZyAob3Zl
cnJpZGVzIGNvbHVtbiBzcGVjaWZpYyBzb3J0IG9wdGlvbnMpCjIwMDctMDQt
MTMJSlMJLT5yZW5kZXJmb290ZXI6IEFkZGVkIHRib2R5IHRvIGZvb3RlciB0
byBtYWtlIGl0IHBhc3MgdmFsaWRhdGlvbiwgYnV0IGl0J3Mgc3RpbGwgbm90
IHNlbWFudGljYWxseSBjb3JyZWN0LiAKMjAwNy0wNC0xMwlKUwlDaGFuZ2Vk
IGZpZWxkIHR5cGUgZm9yIHF1aWNrc2VhcmNoIGZvciBub24tV2ViS2l0IGJh
c2VkIGJyb3dzZXJzCjIwMDctMDQtMTAJSlMJLT5xdWlja3NlYXJjaDogQWRk
ZWQgQCBhcyB3b3JkIHNlcGFyYXRvciBmb3IgIndvcmQgYmVnaW5zIHdpdGgi
IHNlYXJjaAoyMDA3LTA0LTEwCUpTCS0+cXVpY2tzZWFyY2g6IEFkZGVkIC1j
b250YWlucyBhcyBvcHRpb24gdG8gcGVyZm9ybSBhIHNpbXBsZSBjb250YWlu
cyBzZWFyY2ggaW5zdGVhZCBvZiBlbXVsYXRpbmcgIndvcmQgYmVnaW5zIHdp
dGgiIHNlYXJjaAoyMDA3LTA0LTEwCUpTCS0+cmVuZGVyaGVhZGVyOiBXaGVu
IGdyaWQgaGFzIGEgZGVmYXVsdHNvcnQsIHRoZXJlIHNob3VsZCBiZSBubyAi
dW5zb3J0IiBvcHRpb24gaW4gdGhlIHNvcnRhYmxlIGhlYWRpbmdzCjIwMDct
MDQtMTAJSlMJLT5pbnNlcnQ6ICgtZGVmYXVsdHNvcnQ9J2Rlc2MnKSBvciAo
LWRlZmF1bHRzb3J0PSdkZXNjZW5kaW5nJykgbWFrZXMgdGhlIGRlZmF1bHQg
c29ydCBvcmRlciBzb3J0IGluIGRlc2NlbmRpbmcgb3JkZXIKMjAwNy0wNC0w
NAlKUwktPmFkZGZpZWxkOiAtdGVtcGxhdGUgY2FuIG5vdyBhbHNvIGJlIGEg
Y29tcG91bmQgZXhwcmVzc2lvbgoyMDA3LTA0LTAzCUpTCUNoYW5nZWQgbmFt
ZXNwYWNlIGZyb20gbXRfIHRvIGtub3BfCjIwMDctMDMtMDEJSlMJQWRkZWQg
c3VwcG9ydCBmb3IgRmlsZU1ha2VyIHdpdGggcXVpY2tzZWFyY2ggKHVudGVz
dGVkKQoyMDA3LTAzLTAxCUpTCUNoYW5nZWQgYWxsIHRleHRzIHRvIEVuZ2xp
c2gKMjAwNy0wMi0wNwlKUwlSZW1vdmVkIGNsYXNzcz0iZmlyc3QiIGFuZCBj
bGFzcz0ibm90b3Bib3JkZXIiIHNpbmNlIENTUyBib3JkZXItY29sbGFwc2U6
IGNvbGxhcHNlOyBlbGltaW5hdGVzIHRoZSBuZWVkCjIwMDctMDItMDUJSlMg
VGhlIC1rZXl2YWx1ZSBwYXJhbWV0ZXIgZm9yIHVybCBlZGl0IGxpbmtzIGNh
biBiZSBnaXZlbiBhbm90aGVyIG5hbWUgYnkgc3BlY2lmeWluZyAta2V5cGFy
YW1uYW1lIGluIGFkZGZpZWxkCjIwMDctMDEtMzEJSlMJLT5hZGRmaWVsZDog
I3ZhbHVlIyBjYW4gYmUgdXNlZCBpbiAtdXJsLCBhcyBhIHdheSB0byBwcm92
aWRlIG1haWx0byBsaW5rcyBldGMgaW4gbGlzdHMKMjAwNy0wMS0zMAlKUwlT
b3J0YWJsZSBjb2x1bW5zIG5vdyB0aGF2ZSB0aHJlZSBzdGF0ZXMgaW5zdGVh
ZCBvZiB0d286IHNvcnRlZCBhc2NlbmRpbmcsIHNvcnRlZCBkZXNjZW5kaW5n
IGFuZCB1bnNvcnRlZC4gCjIwMDctMDEtMzAJSlMJSW1wcm92ZW1lbnRzIHRv
IHF1aWNrc2VhcmNoLCB0byBlbXVsYXRlICJ3b3JkIGJlZ2lucyB3aXRoIiAg
c2VhcmNoZXMKMjAwNy0wMS0yNglKUwlBZGRlZCBzdXBwb3J0IGZvciBxdWlj
a3NlYXJjaCBmaWVsZCBpbiBncmlkIGhlYWRlci4gU3BlY2lmeSAtcXVpY2tz
ZWFyY2ggYXQgLT5vbmNyZWF0ZSwgYW5kIHRlbGwgd2hhdCBmaWVsZHMgdG8g
c2VhcmNoIGJ5IHNwZWNpZnlpbmcgLXF1aWNrc2VhcmNoIGZvciB0aG9zZSBm
aWVsZHMgYXQgLT5hZGRmaWVsZC4gCgkJCQlGaWVsZHMgY2FuIGJlIHNlYXJj
aCBvbmx5IChubyBkaXNwbGF5KSBieSBsZWF2aW5nIG91dCBuYW1lIGFuZCBs
YWJlbC4gQWxsIHNwZWNpZmllZCBmaWVsZHMgYXJlIHNlYXJjaGVkIHdvcmQg
Zm9yIHdvcmQgb2YgdGhldyBzZWFyY2ggc3RyaW5nLiAKCQkJCVVzZSAtPnF1
aWNrc2VhcmNoIHRvIGdldCB0aGUgc2VhcmNoIHBhcmFtZXRlcnMgKG9wdGlv
bmFsbHkgLXNxbCkKMjAwNy0wMS0yNglKUwlBZGRlZCAtPnVybGFyZ3MgdG8g
Z2V0IGEgcXVlcnlzdHJpbmcgd2l0aCBhbGwgIi0iIEdFVCBwYXJhbXMsIGV4
Y2VwdCB0aG9zZSBpbiBvcHRpb25hbCAtZXhjZXB0IHN0cmluZyBvciBhcnJh
eSBwYXJhbWV0ZXIuIAoyMDA3LTAxLTIyCUpTCUFkanVzdG1lbnRzIHRvIGhp
Z2hsaWdodGluZyBhbmQgIihyZWRpZ2VyYSkiLWxpbmsgZm9yIHJlY29yZHMg
d2l0aCBlbXB0eSB2YWx1ZXMgaW4gdGhlIGxpbmtlZCBmaWVsZAoyMDA3LTAx
LTE5CUpTCUFkZGVkIGhyZWYgdGl0bGVzIHRvIHNvcnQgbGlua3MgYW5kIHBy
ZXZuZXh0IGxpbmtzCjIwMDctMDEtMTkJSlMJQ29ycmVjdGVkIHNvcnRwYXJh
bXMgd2hlbiBubyBzb3J0ZmllbGQgaXMgc3BlY2lmaWVkCjIwMDctMDEtMTkJ
SlMJQWRkZGVkIGdvIHRvIGZpcnN0IHBhZ2UsIGdvIHRvIGxhc3QgcGFnZSBp
biBmb290ZXIKMjAwNy0wMS0xOQlKUwlBZGRlZCBtZW1iZXIgdGFnIHBhZ2Vf
c2tpcHJlY29yZHMgdG8gaGVscCBjb3JyZWN0aW5nIG91dCBvZiBib3VuZHMg
cGFnZSBudW1iZXJzCjIwMDctMDEtMTkJSlMJQWRkZWQgbWVtYmVyIHRhZyBs
YXN0cGFnZQoyMDA3LTAxLTE4CUpTCVN1cHBvcnQgZm9yIGhpZ2hsaWdodGlu
ZyBvZiBhZmZlY3RlZCByZWNvcmQgYWZ0ZXIgZWRpdCBvciB1cGRhdGUgKGNs
YXNzIG5hbWUgImhpZ2hsaWdodCIpCjIwMDctMDEtMTcJSlMJQWRkZWQgYWRk
ZmllbGQ6IC10ZW1wbGF0ZQoKVE9ETwpNYWtlIGl0IHBvc3NpYmxlIGZvciBr
bm9wX2dyaWQgdG8gd29yayBpbmRlcGVuZGVudGx5IG9mIGEga25vcF9kYXRh
YmFzZSBvYmplY3Qgc28gb3RoZXIgdHlwZXMgb2YgbGlzdGluZ3MgY2FuIGJy
ZSBjcmVhdGVkLiAKTGFuZ3VhZ2Ugb2YgcXVpY2tzZWFyY2ggYnV0dG9ucyBj
YW4ndCBiZSBjaGFuZ2VkIGFmdGVyIHRoZSBncmlkIGhhcyBiZWVuIGNyZWF0
ZWQKdGJvZHkgaXMgdXNlZCBpbiByZW5kZXJmb290ZXIsIHdoaWNoIGlzIG5v
dCBzZW1hbnRpY2FsbHkgY29ycmVjdC4gY2FuJ3QgdXNlIHRmb290IHRob3Vn
aCBzaW5jZSB0aGUgZm9vdGVyIGlzIHJlbmRlcmVkIHR3aWNlLiAKTW92ZSB0
ZW1wbGF0ZXMgdG8gYSBtZW1iZXIgdGFnIHRvIGJlIG1ha2UgaXQgZWFzaWVy
IHRvIHN1YmNsYXNzCkNoYW5nZSAtPmFkZGZpZWxkIHRvIC0+aW5zZXJ0IGFu
ZCBtYWtlIC0+YWRkZmllbGQgZGVwcmVjYXRlZAoKKi8KCgkvLyBpbnN0YW5j
ZSB2YXJpYWJsZXMKCWxvY2FsOiAnZmllbGRzJz1hcnJheSwKCQknZGJmaWVs
ZG1hcCc9bWFwLAoJCSdzb3J0ZmllbGQnPXN0cmluZywKCQknZGVmYXVsdHNv
cnQnPXN0cmluZywKCQkncGFnZSc9aW50ZWdlciwKCQknc29ydGRlc2NlbmRp
bmcnPWZhbHNlLAoJCSdkYXRhYmFzZSc9bnVsbCwKCQknbmF2Jz1udWxsLAoJ
CSdkZWJ1Z190cmFjZSc9YXJyYXksCgkJJ3F1aWNrc2VhcmNoJz1zdHJpbmcs
CgkJJ3F1aWNrc2VhcmNoX2Zvcm0nLAoJCSdxdWlja3NlYXJjaF9mb3JtX3Jl
c2V0JywKCQkncmF3aGVhZGVyJyA9IHN0cmluZywgLy8gYWRkZWQgYnkgSm9s
bGUgMDcxMTExCgkJJ2NsYXNzJyA9IHN0cmluZywgLy8gQWRkZWQgYnkgSm9s
bGUgMDgxMjI5CgkJJ3RibF9pZCcgPSAnZ3JpZCcsIC8vIEFkZGVkIGJ5IEpv
bGxlIDEwMDEyNQoJCSdxc19pZCcgPSAncXVpY2tzZWFyY2gnLCAvLyBBZGRl
ZCBieSBKb2xsZSAxMDAxMjUKCQkncXNyX2lkJyA9ICdxc19yZXNldCcsIC8v
IEFkZGVkIGJ5IEpvbGxlIDEwMDEyNQoJCSdxdWlja3NlYXJjaF9maWVsZHMn
PWFycmF5LAoJCSdmb290ZXInID0gc3RyaW5nLCAvLyBBZGRlZCBieSBKb2xs
ZSAxMDExMTcKCQknbGFuZyc9KGtub3BfbGFuZzogLWRlZmF1bHQ9J2VuJywg
LWZhbGxiYWNrKSwJCS8vIGxhbmd1YWdlIHN0cmluZ3Mgb2JqZWN0IAoJCSdl
cnJvcl9sYW5nJz0oa25vcF9sYW5nOiAtZGVmYXVsdD0nZW4nLCAtZmFsbGJh
Y2spLAoJCSdudW1iZXJlZCc9ZmFsc2UsCgkJJ25vc29ydCc7CgoJI2xhbmcg
LT4gKGFkZGxhbmd1YWdlOiAtbGFuZ3VhZ2U9J2VuJywgLXN0cmluZ3M9KG1h
cDogCgkJJ3F1aWNrc2VhcmNoX3Nob3dhbGwnID0gJ1Nob3cgYWxsJywKCQkn
cXVpY2tzZWFyY2hfc2VhcmNoJyA9ICdTZWFyY2gnLAoJCSdsaW5rdGV4dF9l
ZGl0JyA9ICcoZWRpdCknLAoJCSdsaW5rdGl0bGVfc2hvd3Vuc29ydGVkJyA9
ICdTaG93IHVuc29ydGVkJywKCQknbGlua3RpdGxlX2NoYW5nZXNvcnQnID0g
J0NoYW5nZSBzb3J0IG9yZGVyIHRvJywKCQknbGlua3RpdGxlX2FzY2VuZGlu
ZycgPSAnYXNjZW5kaW5nJywKCQknbGlua3RpdGxlX2Rlc2NlbmRpbmcnID0g
J2Rlc2NlbmRpbmcnLAoJCSdsaW5rdGl0bGVfc29ydGFzY2J5JyA9ICdTb3J0
IGFzY2VuZGluZyBieScsCgkJJ2xpbmt0aXRsZV9nb2ZpcnN0JyA9ICdHbyB0
byBmaXJzdCBwYWdlJywKCQknbGlua3RpdGxlX2dvcHJldicgPSAnR28gdG8g
cHJldmlvdXMgcGFnZScsCgkJJ2Zvb3Rlcl9zaG93bicgPSAnIzEjIC0gIzIj
IG9mJywKCQknZm9vdGVyX2ZvdW5kJz0nZm91bmQnLAoJCSdnb3RvcGFnZSc9
J0dvIHRvIHBhZ2UnLCAvLyBTUCBjdXN0b21pemF0aW9uCgkJJ2xpbmt0aXRs
ZV9nb25leHQnID0gJ0dvIHRvIG5leHQgcGFnZScsCgkJJ2xpbmt0aXRsZV9n
b2xhc3QnID0gJ0dvIHRvIGxhc3QgcGFnZScsCgoJCS8vIGxhbmd1YWdlIG5l
dXRyYWwgc3RyaW5ncywgb25seSBuZWVkIHRvIGJlIHNldCBmb3IgdGhlIGRl
ZmF1bHQgbGFuZ3VhZ2UKCQknbGlua3RleHRfZmlyc3QnPSd8Jmx0OycsCgkJ
J2xpbmt0ZXh0X3ByZXYnPScmbHQ7Jmx0OycsCgkJJ2xpbmt0ZXh0X25leHQn
PScmZ3Q7Jmd0OycsCgkJJ2xpbmt0ZXh0X2xhc3QnPScmZ3Q7fCcKCQkJKSk7
CgkJCQoJI2xhbmcgLT4gKGFkZGxhbmd1YWdlOiAtbGFuZ3VhZ2U9J3N2Jywg
LXN0cmluZ3M9KG1hcDogCgkJJ3F1aWNrc2VhcmNoX3Nob3dhbGwnID0gJ1Zp
c2EgYWxsYScsCgkJJ3F1aWNrc2VhcmNoX3NlYXJjaCcgPSAnU8O2aycsCgkJ
J2xpbmt0ZXh0X2VkaXQnID0gJyhyZWRpZ2VyYSknLAoJCSdsaW5rdGl0bGVf
c2hvd3Vuc29ydGVkJyA9ICdWaXNhIG9zb3J0ZXJhZGUnLAoJCSdsaW5rdGl0
bGVfY2hhbmdlc29ydCcgPSAnw4RuZHJhIHNvcnRlcmluZ3NvcmRuaW5nIHRp
bGwnLAoJCSdsaW5rdGl0bGVfYXNjZW5kaW5nJyA9ICdzdGlnYW5kZScsCgkJ
J2xpbmt0aXRsZV9kZXNjZW5kaW5nJyA9ICdmYWxsYW5kZScsCgkJJ2xpbmt0
aXRsZV9zb3J0YXNjYnknID0gJ1NvcnRlcmEgaSBzdGlnYW5kZSBvcmRuaW5n
IGVmdGVyJywKCQknbGlua3RpdGxlX2dvZmlyc3QnID0gJ0fDpSB0aWxsIGbD
tnJzdGEgc2lkYW4nLAoJCSdsaW5rdGl0bGVfZ29wcmV2JyA9ICdHw6UgdGls
bCBmw7ZyZWfDpWVuZGUgc2lkYScsCgkJJ2Zvb3Rlcl9zaG93bicgPSAnIzEj
IC0gIzIjIGF2JywKCQknZm9vdGVyX2ZvdW5kJz0naGl0dGFkZScsCgkJJ2dv
dG9wYWdlJz0nR8OlIHRpbGwgc2lkYScsIC8vIFNQIGPDvHN0w7htaXrDpHRp
w7huCgkJJ2xpbmt0aXRsZV9nb25leHQnID0gJ0fDpSB0aWxsIG7DpHN0YSBz
aWRhJywKCQknbGlua3RpdGxlX2dvbGFzdCcgPSAnR8OlIHRpbGwgc2lzdGEg
c2lkYW4nCgkpKTsKCQoJZGVmaW5lX3RhZzogJ29uY3JlYXRlJywgLWRlc2Ny
aXB0aW9uPSdQYXJhbWV0ZXJzOlxuXAoJCQktZGF0YWJhc2UgKHJlcXVpcmVk
IGRhdGFiYXNlKSBEYXRhYmFzZSBvYmplY3QgdGhhdCB0aGUgZ3JpZCBvYmpl
Y3Qgd2lsbCBpbnRlcmFjdCB3aXRoXG5cCgkJCS1uYXYgKG9wdGlvbmFsIG5h
dikgTmF2aWdhdGlvbiBvYmplY3QgdG8gaW50ZXJhY3Qgd2l0aFxuXAoJCQkt
cXVpY2tzZWFyY2ggKG9wdGlvbmFsKSBMYWJlbCB0ZXh0IGZvciB0aGUgcXVp
Y2sgc2VhcmNoIGZpZWxkXG5cCgkJCS1yYXdoZWFkZXIgKG9wdGlvbmFsKSBF
eHRyYSBodG1sIHRvIGJlIGluc2VydGVkIGluIHRoZSBncmlkIGhlYWRlclxu
XAoJCQktY2xhc3MgKG9wdGlvbmFsKSBFeHRyYSBjbGFzc2VzIHRvIGJlIGlu
c2VydGVkIGluIHRoZSBncmlkIGhlYWRlci4gVGhlIHN0YW5kYXJkIGNsYXNz
ICJncmlkIiBpcyBhbHdheXMgaW5zZXJ0ZWRcblwKCQkJLWlkIChvcHRpb25h
bCkgQ3JlYXRlcyBhIGN1c3RvbSBpZCB1c2VkIGZvciB0YWJsZSwgcXVpY2tz
ZWFyY2ggYW5kIHF1aWNrc2VhcmNoX3Jlc2V0XG5cCgkJCS1ub3NvcnQgKG9w
dGlvbmFsIGZsYWcpIEdsb2JhbCBzZXR0aW5nIGZvciB0aGUgZW50aXJlIGdy
aWQgKG92ZXJyaWRlcyBjb2x1bW4gc3BlY2lmaWMgc29ydCBvcHRpb25zKVxu
XAoJCQktbGFuZ3VhZ2UgKG9wdGlvbmFsKSBMYW5ndWFnZSB0byB1c2UgZm9y
IHRoZSBncmlkLCBkZWZhdWx0cyB0byB0aGUgYnJvd3NlclwncyBwcmVmZXJy
ZWQgbGFuZ3VhZ2VcblwKCQkJLW51bWJlcmVkIChvcHRpb25hbCBmbGFnIG9y
IGludGVnZXIpIElmIHNwZWNpZmllZCwgcGFnaW5hdGlvbiBsaW5rcyB3aWxs
IGJlIHNob3duIGFzIHBhZ2UgbnVtYmVycyBpbnN0ZWFkIG9mIHJlZ3VsYXIg
cHJldi9uZXh0IGxpbmtzLiBEZWZhdWx0cyB0byA2IGxpbmtzLCBzcGVjaWZ5
IGFub3RoZXIgbnVtYmVyIChtaW5pbXVtIDYpIGlmIG1vcmUgbnVtYmVycyBh
cmUgd2FudGVkLiBDYW4gYmUgc3BlY2lmaWVkIGluIC0+cmVuZGVyaHRtbCBh
cyB3ZWxsLiAnLAoJCS1yZXF1aXJlZD0nZGF0YWJhc2UnLCAtdHlwZT0nZGF0
YWJhc2UnLAoJCS1vcHRpb25hbD0nbmF2JywgLXR5cGU9J25hdicsCgkJLW9w
dGlvbmFsPSdxdWlja3NlYXJjaCcsCgkJLW9wdGlvbmFsPSdyYXdoZWFkZXIn
LAoJCS1vcHRpb25hbD0nY2xhc3MnLAoJCS1vcHRpb25hbD0naWQnLAoJCS1v
cHRpb25hbD0nbm9zb3J0JywKCQktb3B0aW9uYWw9J2xhbmd1YWdlJywKCQkt
b3B0aW9uYWw9J251bWJlcmVkJzsKCQlsb2NhbDogJ3RpbWVyJz1rbm9wX3Rp
bWVyOyAKCQkKCQlsb2NhbDogJ2xhbmcnPUAoc2VsZiAtPiAnbGFuZycpOwoJ
CQoJCWlmOiAobG9jYWxfZGVmaW5lZDogJ2xhbmd1YWdlJyk7CgkJCSNsYW5n
IC0+IChzZXRsYW5ndWFnZTogI2xhbmd1YWdlKTsKCQkvaWY7CgkJCgkJLy8g
dGhlIGZvbGxvd2luZyBwYXJhbXMgYXJlIHN0b3JlZCBhcyByZWZlcmVuY2Us
IHNvIHRoZSB2YWx1ZXMgb2YgdGhlIHBhcmFtcyBjYW4gYmUgYWx0ZXJlZCBh
ZnRlciBhZGRpbmcgYSBmaWVsZCBzaW1wbHkgYnkgY2hhbmdpbmcgdGhlIHJl
ZmVyZW5jZWQgdmFyaWFibGUuIAoJCWxvY2FsX2RlZmluZWQoJ2RhdGFiYXNl
JykgPyAoc2VsZiAtPiAnZGF0YWJhc2UnID0gQCNkYXRhYmFzZSk7CgkJbG9j
YWxfZGVmaW5lZCgnbmF2JykgPyAoc2VsZiAtPiAnbmF2JyA9IEAjbmF2KTsK
CgkJKHNlbGYgLT4gJ25vc29ydCcpPWxvY2FsX2RlZmluZWQoJ25vc29ydCcp
OwoKCQlpZihsb2NhbF9kZWZpbmVkKCdudW1iZXJlZCcpKTsKCQkJKHNlbGYg
LT4gJ251bWJlcmVkJyk9KCgjbnVtYmVyZWQgIT09IGZhbHNlKSA/IGludGVn
ZXIoI251bWJlcmVkKSB8IGZhbHNlKTsKCQkvaWY7CgkJKGxvY2FsX2RlZmlu
ZWQoJ2NsYXNzJykgJiYgI2NsYXNzIC0+IHR5cGUgPT0gJ3N0cmluZycpID8K
CQkJKHNlbGYgLT4gJ2NsYXNzJykgPSAjY2xhc3M7CgkJCgkJaWYobG9jYWxf
ZGVmaW5lZCgnaWQnKSAmJiAjaWQgLT4gdHlwZSA9PSAnc3RyaW5nJyk7CgkJ
CShzZWxmIC0+ICd0YmxfaWQnKSA9ICNpZCArICdfZ3JpZCc7CgkJCShzZWxm
IC0+ICdxc19pZCcpID0gI2lkICsgJ19xdWlja3NlYXJjaCc7CgkJCShzZWxm
IC0+ICdxc3JfaWQnKSA9ICNpZCArICdfcXNfcmVzZXQnOwoJCS9pZjsKCgoJ
CWxvY2FsOiAnY2xpZW50cGFyYW1zJz1jbGllbnRfZ2V0cGFyYW1zOwoJCSNj
bGllbnRwYXJhbXMgLT4gKG1lcmdlOiBjbGllbnRfcG9zdHBhcmFtcyk7CgkJ
aWY6ICEoc2VsZiAtPiAnbm9zb3J0Jyk7CgkJCShzZWxmIC0+ICdzb3J0Zmll
bGQnKSA9ICgjY2xpZW50cGFyYW1zID4+ICctc29ydCcgPyAoI2NsaWVudHBh
cmFtcyAtPiAoZmluZDogJy1zb3J0JykgLT4gZmlyc3QgLT4gdmFsdWUpIHwg
c3RyaW5nKTsKCQkJKHNlbGYgLT4gJ3NvcnRkZXNjZW5kaW5nJykgPSAoI2Ns
aWVudHBhcmFtcyA+PiAnLWRlc2MnKTsKCQkvaWY7CgkJKHNlbGYgLT4gJ3Bh
Z2UnKSA9ICgjY2xpZW50cGFyYW1zID4+ICctcGFnZScgPyAoaW50ZWdlcjog
KCNjbGllbnRwYXJhbXMgLT4gKGZpbmQ6ICctcGFnZScpIC0+IGZpcnN0IC0+
IHZhbHVlKSkgfCAxKTsKCQkoc2VsZiAtPiAncGFnZScpIDwgMSA/IChzZWxm
IC0+ICdwYWdlJykgPSAxOwoKCQlpZjogKGxvY2FsX2RlZmluZWQ6ICdxdWlj
a3NlYXJjaCcpOwoJCQlpZjogI3F1aWNrc2VhcmNoICE9ICcnOwoJCQkJKHNl
bGYgLT4gJ3F1aWNrc2VhcmNoJykgPSAjcXVpY2tzZWFyY2g7CgkJCWVsc2U7
CgkJCQkoc2VsZiAtPiAncXVpY2tzZWFyY2gnKSA9ICdRdWlja3NlYXJjaCc7
CgkJCS9pZjsKCQkJKHNlbGYgLT4gJ3F1aWNrc2VhcmNoX2Zvcm0nKSA9IChr
bm9wX2Zvcm06IC1uYW1lPSdxdWlja3NlYXJjaCcsIC1pZCA9IChzZWxmIC0+
ICdxc19pZCcpLCAtZm9ybWFjdGlvbj0nLi8nLCAtbWV0aG9kPSdnZXQnLCAt
dGVtcGxhdGU9JyNmaWVsZCNcbicsIC1ub2F1dG9wYXJhbXMpOwoJCQkoc2Vs
ZiAtPiAncXVpY2tzZWFyY2hfZm9ybV9yZXNldCcpID0gKGtub3BfZm9ybTog
LW5hbWU9J3F1aWNrc2VhcmNoX3Jlc2V0JywgLWlkID0gKHNlbGYgLT4gJ3Fz
cl9pZCcpLCAtZm9ybWFjdGlvbj0nLi8nLCAtbWV0aG9kPSdnZXQnLCAtdGVt
cGxhdGU9JyNmaWVsZCNcbicsIC1ub2F1dG9wYXJhbXMpOwoJCQlsb2NhbDog
J2F1dG9zYXZla2V5Jz1zZXJ2ZXJfbmFtZSArIHJlc3BvbnNlX3BhdGg7CgkJ
CWlmOiAoc2VsZiAtPiAnbmF2JykgLT4gdHlwZSA9PSduYXYnICYmIChzZWxm
IC0+ICduYXYnKSAtPiAnbmF2bWV0aG9kJz09J3BhcmFtJzsKCQkJCShzZWxm
IC0+ICdxdWlja3NlYXJjaF9mb3JtJykgLT4gKGFkZGZpZWxkOiAtdHlwZT0n
aGlkZGVuJywgLW5hbWU9Jy1wYXRoJywgLXZhbHVlPSgoc2VsZiAtPiAnbmF2
JykgLT4gcGF0aCkpOwoJCQkJKHNlbGYgLT4gJ3F1aWNrc2VhcmNoX2Zvcm1f
cmVzZXQnKSAtPiAoYWRkZmllbGQ6IC10eXBlPSdoaWRkZW4nLCAtbmFtZT0n
LXBhdGgnLCAtdmFsdWU9KChzZWxmIC0+ICduYXYnKSAtPiBwYXRoKSk7CgkJ
CQkjYXV0b3NhdmVrZXkgLT4gKHJlbW92ZXRyYWlsaW5nOiAnLycpOwoJCQkJ
I2F1dG9zYXZla2V5ICs9ICcvJyArICgoc2VsZiAtPiAnbmF2JykgLT4gcGF0
aCk7CgkJCS9pZjsKCQkJaWY6IChzZWxmIC0+ICdzb3J0ZmllbGQnKSAhPSAn
JyAmJiAhKHNlbGYgLT4gJ25vc29ydCcpOwoJCQkJKHNlbGYgLT4gJ3F1aWNr
c2VhcmNoX2Zvcm0nKSAtPiAoYWRkZmllbGQ6IC10eXBlPSdoaWRkZW4nLCAt
bmFtZT0nLXNvcnQnLCAtdmFsdWU9KHNlbGYgLT4gJ3NvcnRmaWVsZCcpKTsK
CQkJCShzZWxmIC0+ICdxdWlja3NlYXJjaF9mb3JtX3Jlc2V0JykgLT4gKGFk
ZGZpZWxkOiAtdHlwZT0naGlkZGVuJywgLW5hbWU9Jy1zb3J0JywgLXZhbHVl
PShzZWxmIC0+ICdzb3J0ZmllbGQnKSk7CgkJCQlpZjogKHNlbGYgLT4gJ3Nv
cnRkZXNjZW5kaW5nJyk7CgkJCQkJKHNlbGYgLT4gJ3F1aWNrc2VhcmNoX2Zv
cm0nKSAtPiAoYWRkZmllbGQ6IC10eXBlPSdoaWRkZW4nLCAtbmFtZT0nLWRl
c2MnKTsKCQkJCQkoc2VsZiAtPiAncXVpY2tzZWFyY2hfZm9ybV9yZXNldCcp
IC0+IChhZGRmaWVsZDogLXR5cGU9J2hpZGRlbicsIC1uYW1lPSctZGVzYycp
OwoJCQkJL2lmOwoJCQkvaWY7CgkJCWlmOiBjbGllbnRfdHlwZSA+PiAnV2Vi
S2l0JzsKCQkJCS8vIG9ubHkgdXNlPGlucHV0IHR5cGU9c2VhcmNoIiBmb3Ig
V2ViS2l0IGJhc2VkIGJyb3dzZXJzIGxpa2UgU2FmYXJpCgkJCQkoc2VsZiAt
PiAncXVpY2tzZWFyY2hfZm9ybScpIC0+IChhZGRmaWVsZDogLXR5cGU9J3Nl
YXJjaCcsIC1uYW1lPSctcScsIC1oaW50PShzZWxmIC0+ICdxdWlja3NlYXJj
aCcpLCAKCQkJCQktc2l6ZT0xNSwgLWlkID0gKHNlbGYgLT4gJ3FzX2lkJykg
KyAnX3EnLCAtcmF3PSdhdXRvc2F2ZT0iJyArICNhdXRvc2F2ZWtleSArICci
IHJlc3VsdHM9IjEwIicpOwoJCQllbHNlOwoJCQkJKHNlbGYgLT4gJ3F1aWNr
c2VhcmNoX2Zvcm0nKSAtPiAoYWRkZmllbGQ6IC10eXBlPSd0ZXh0JywgLW5h
bWU9Jy1xJywgLWhpbnQ9KHNlbGYgLT4gJ3F1aWNrc2VhcmNoJyksIAoJCQkJ
CS1zaXplPTE1LCAtaWQgPSAoc2VsZiAtPiAncXNfaWQnKSArICdfcScpOwoJ
CQkvaWY7CgkJCShzZWxmIC0+ICdxdWlja3NlYXJjaF9mb3JtJykgLT4gKGFk
ZGZpZWxkOiAtdHlwZT0nc3VibWl0JywgLW5hbWU9J3MnLCAtdmFsdWU9KCNs
YW5nIC0+IHF1aWNrc2VhcmNoX3NlYXJjaCkpOwoJCQlpZjogI2NsaWVudHBh
cmFtcyA+PiAnLXEnOwoJCQkJKHNlbGYgLT4gJ3F1aWNrc2VhcmNoX2Zvcm0n
KSAtPiAoc2V0dmFsdWU6ICctcSc9KCNjbGllbnRwYXJhbXMgLT4gKGZpbmQ6
ICctcScpIC0+IGZpcnN0IC0+IHZhbHVlKSk7CgkJCQkoc2VsZiAtPiAncXVp
Y2tzZWFyY2hfZm9ybV9yZXNldCcpIC0+IChhZGRmaWVsZDogLXR5cGU9J3N1
Ym1pdCcsIC1uYW1lPSdhJywgLXZhbHVlPSgjbGFuZyAtPiBxdWlja3NlYXJj
aF9zaG93YWxsKSk7CgkJCWVsc2U7CgkJCQkoc2VsZiAtPiAncXVpY2tzZWFy
Y2hfZm9ybV9yZXNldCcpIC0+IChhZGRmaWVsZDogLXR5cGU9J3N1Ym1pdCcs
IC1uYW1lPSdhJywgLXZhbHVlPSgjbGFuZyAtPiBxdWlja3NlYXJjaF9zaG93
YWxsKSwgLWRpc2FibGVkKTsKCQkJL2lmOwoJCS9pZjsKCgkJLyogQWRkZWQg
YnkgSkMgMDcxMTExIHRvIGhhbmRsZSBleHRyYSBmb3JtIGluY2x1ZGVkIGlu
IHRoZSBoZWFkZXIgKi8KCQlpZjogKGxvY2FsX2RlZmluZWQ6ICdyYXdoZWFk
ZXInKTsKCQkJaWY6ICNyYXdoZWFkZXIgLT4gdHlwZSA9PSAnc3RyaW5nJzsK
CQkJCShzZWxmIC0+ICdyYXdoZWFkZXInKSA9ICNyYXdoZWFkZXI7CgkJCWVs
c2U7CgkJCQkoc2VsZiAtPiAncmF3aGVhZGVyJykgPSAnJzsKCQkJL2lmOwoJ
CS9pZjsKCQlzZWxmIC0+ICd0YWd0aW1lX3RhZ25hbWUnPXRhZ19uYW1lOwoJ
CXNlbGYgLT4gJ3RhZ3RpbWUnPWludGVnZXI6ICN0aW1lcjsgLy8gY2FzdCB0
byBpbnRlZ2VyIHRvIHRyaWdnZXIgb25jb252ZXJ0IGFuZCB0byAic3RvcCB0
aW1lciIKCS9kZWZpbmVfdGFnOwoKCWRlZmluZV90YWc6ICdvbmFzc2lnbics
IC1yZXF1aXJlZD0ndmFsdWUnLCAtZGVzY3JpcHRpb249J0ludGVybmFsLCBu
ZWVkZWQgdG8gcmVzdG9yZSByZWZlcmVuY2VzIHdoZW4gY3R5cGUgaXMgZGVm
aW5lZCBhcyBwcm90b3R5cGUnOwoJCS8vIHJlY3JlYXRlIHJlZmVyZW5jZXMg
aGVyZQoJCShzZWxmLT4nZGF0YWJhc2UnKSA9IEAoI3ZhbHVlIC0+ICdkYXRh
YmFzZScpOwoJCShzZWxmLT4nbmF2JykgPSBAKCN2YWx1ZSAtPiAnbmF2Jyk7
CgkvZGVmaW5lX3RhZzsKCglkZWZpbmVfdGFnOiAnbGFuZycsIC1kZXNjcmlw
dGlvbj0nUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgbGFuZ3VhZ2Ugb2Jq
ZWN0JzsKCQlyZXR1cm46IEAoc2VsZiAtPiAnbGFuZycpOwoJL2RlZmluZV90
YWc7CgoJCglkZWZpbmVfdGFnOiAnYWRkZmllbGQnLCAtZGVzY3JpcHRpb249
J0FkZHMgYSBjb2x1bW4gdG8gdGhlIHJlY29yZCBsaXN0aW5nLiBcblwKCQkJ
UGFyYW1ldGVyczpcblwKCQkJLW5hbWUgKG9wdGlvbmFsKSBOYW1lIG9mIHRo
ZSBmaWVsZC4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGZpZWxkIHdpbGwgYmUg
b21pdHRlZCBmcm9tIHRoZSBncmlkLiBcCgkJCQlVc2VmdWwgdG8gYmUgYWJs
ZSB0byBxdWlja3NlYXJjaCBpbiBmaWVsZHMgbm90IHNob3duIGluIHRoZSBn
cmlkLiBcCgkJCQlJbiB0aGF0IGNhc2UgLWRiZmllbGQgbXVzdCBiZSBzcGVj
aWZpZWQuIFxuXAoJCQktbGFiZWwgKG9wdGlvbmFsKSBDb2x1bW4gaGVhZGlu
Z1xuXAoJCQktZGJmaWVsZCAob3B0aW9uYWwpIENvcnJlc3BvbmRpbmcgZGF0
YWJhc2UgZmllbGQgbmFtZSAobmFtZSBpcyB1c2VkIGlmIGRiZmllbGQgaXMg
bm90IHNwZWNpZmllZClcblwKCQkJLXdpZHRoIChvcHRpb25hbCkgUGl4ZWxz
IChDU1Mgd2lkdGgpXG5cCgkJCS11cmwgKG9wdGlvbmFsKSBDb2x1bW5zIHdp
bGwgYmUgbGlua2VkIHdpdGggdGhpcyB1cmwgYXMgYmFzZS4gQ2FuIGNvbnRh
aW4gI3ZhbHVlIyBmb3IgZXhhbXBsZSB0byBjcmVhdGUgY2xpY2thYmxlIGVt
YWlsIGxpbmtzLiBcblwKCQkJLWtleXBhcmFtbmFtZSAob3B0aW9uYWwpIFBh
cmFtIG5hbWUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgLWtleXZh
bHVlIGZvciBlZGl0IGxpbmtzXG5cCgkJCS1kZWZhdWx0c29ydCAob3B0aW9u
YWwgZmxhZykgVGhpcyBmaWVsZCB3aWxsIGJlIHRoZSBkZWZhdWx0IHNvcnQg
ZmllbGRcblwKCQkJLW5vc29ydCAob3B0aW9uYWwgZmxhZykgVGhlIGZpZWxk
IGhlYWRlciBzaG91bGQgbm90IGJlIGNsaWNrYWJsZSBmb3Igc29ydFxuXAoJ
CQktdGVtcGxhdGUgKG9wdGlvbmFsKSBFaXRoZXIgc3RyaW5nIHRvIGZvcm1h
dCB2YWx1ZXMsIGNvbXBvdW5kIGV4cHJlc3Npb24gb3IgbWFwIGNvbnRhaW5p
bmcgdGVtcGxhdGVzIHRvIGRpc3BsYXkgaW5kaXZpZHVhbCB2YWx1ZXMgaW4g
ZGlmZmVyZW50IHdheXMsIHVzZSAtZGVmYXVsdCB0byBkaXNwbGF5IHVua25v
d24gdmFsdWVzLCB1c2UgI3ZhbHVlIyB0byBpbnNlcnQgdGhlIGFjdHVhbCBm
aWVsZCB2YWx1ZSBpbiB0aGUgdGVtcGxhdGUuIFxuXHRcCgkJCQlJZiBhIGNv
bXBvdW5kIGV4cHJlc3Npb24gaXMgc3BlY2lmaWVkLCB0aGUgZmllbGQgdmFs
dWUgaXMgcGFzc2VkIGFzIHBhcmFtIHRvIHRoZSBleHByZXNzaW9uIGFuZCBj
YW4gYmUgYWNjZXNzZWQgYXMgcGFyYW1zLiBcblx0XAoJCQkJRXhhbXBsZSBl
eHByZXNzaW9uczogXG5cdFwKCQkJCXtyZXR1cm46IHBhcmFtc30gdG8gcmV0
dXJuIGp1c3QgdGhlIGZpZWxkIHZhbHVlIGFzIGlzXG5cdFwKCQkJCXtyZXR1
cm46IChkYXRlOiAoZmllbGQ6ICJtb2RkYXRlIikpIC0+IChmb3JtYXQ6ICIl
LWQvJS1tIil9IHRvIHJldHVybiBhIHNwZWNpZmljIGZpZWxkIGFzIGZvcm1h
dHRlZCBkYXRlXG5cCgkJCS1xdWlja3NlYXJjaCAob3B0aW9uYWwgZmxhZykg
SWYgc3BlY2lmaWVkLCB0aGUgZmllbGQgd2lsbCBiZSB1c2VkIGZvciBzZWFy
Y2ggd2l0aCBxdWlja3NlYXJjaCcsCgkJLW9wdGlvbmFsPSduYW1lJywKCQkt
b3B0aW9uYWw9J2xhYmVsJywKCQktb3B0aW9uYWw9J2RiZmllbGQnLAoJCS1v
cHRpb25hbD0nd2lkdGgnLAoJCS1vcHRpb25hbD0nY2xhc3MnLAoJCS8vIC1v
cHRpb25hbD0ncmF3JywJCS8vIFRPRE86IG5vdCBpbXBsZW1lbnRlZCAKCQkt
b3B0aW9uYWw9J3VybCcsCgkJLW9wdGlvbmFsPSdrZXlwYXJhbW5hbWUnLAoJ
CS1vcHRpb25hbD0nZGVmYXVsdHNvcnQnLAoJCS1vcHRpb25hbD0nbm9zb3J0
JywKCQktb3B0aW9uYWw9J3RlbXBsYXRlJywKCQktb3B0aW9uYWw9J3F1aWNr
c2VhcmNoJzsKCQlsb2NhbDogJ3RpbWVyJz1rbm9wX3RpbWVyOyAKCQkKCQlm
YWlsX2lmOiAobG9jYWxfZGVmaW5lZDogJ3RlbXBsYXRlJykgJiYgI3RlbXBs
YXRlIC0+IHR5cGUgIT0gJ3N0cmluZycgCgkJCSYmICN0ZW1wbGF0ZSAtPiB0
eXBlICE9ICdtYXAnICAKCQkJJiYgI3RlbXBsYXRlIC0+IHR5cGUgIT0gJ3Rh
ZycsIC0xLCAnVGVtcGxhdGUgbXVzdCBiZSBlaXRoZXIgc3RyaW5nLCBtYXAg
b3IgY29tcG91bmQgZXhwcmVzc2lvbic7CgkJbG9jYWw6ICdmaWVsZCc9bWFw
OwoKCQlsb2NhbF9kZWZpbmVkKCduYW1lJykgPyAjZmllbGQgLT4gaW5zZXJ0
KCduYW1lJyA9ICNuYW1lKTsgCgkJbG9jYWxfZGVmaW5lZCgnY2xhc3MnKSA/
ICNmaWVsZCAtPiBpbnNlcnQoJ2NsYXNzJyA9ICNjbGFzcyk7IAoJCWxvY2Fs
X2RlZmluZWQoJ3VybCcpID8gI2ZpZWxkIC0+IGluc2VydCgndXJsJyA9ICN1
cmwpOyAKCQlsb2NhbF9kZWZpbmVkKCdrZXlwYXJhbW5hbWUnKSA/ICNmaWVs
ZCAtPiBpbnNlcnQoJ2tleXBhcmFtbmFtZScgPSAja2V5cGFyYW1uYW1lKTsg
CgkJbG9jYWxfZGVmaW5lZCgnd2lkdGgnKSA/ICNmaWVsZCAtPiBpbnNlcnQo
J3dpZHRoJyA9ICN3aWR0aCk7CgkJI2ZpZWxkICE+PiAna2V5cGFyYW1uYW1l
JyA/ICNmaWVsZCAtPiAoaW5zZXJ0OiAna2V5cGFyYW1uYW1lJyA9ICcta2V5
dmFsdWUnKTsKCQkKCQlpZjogKGxvY2FsX2RlZmluZWQ6ICd0ZW1wbGF0ZScp
OwoJCQkjZmllbGQgLT4gKGluc2VydDogJ3RlbXBsYXRlJz0oI3RlbXBsYXRl
IC0+IHR5cGUgPT0gJ3N0cmluZycgPyAobWFwOiAnLWRlZmF1bHQnPSN0ZW1w
bGF0ZSkgfCAjdGVtcGxhdGUpKTsKCQkvaWY7CgkJaWY6IChsb2NhbF9kZWZp
bmVkOiAnbmFtZScpOwoJCQkjZmllbGQgLT4gKGluc2VydDogJ2xhYmVsJz0o
IChsb2NhbF9kZWZpbmVkOiAnbGFiZWwnKSA/ICNsYWJlbCB8ICNuYW1lICkg
KTsKCQkJI2ZpZWxkIC0+IChpbnNlcnQ6ICdkYmZpZWxkJz0oIChsb2NhbF9k
ZWZpbmVkOiAnZGJmaWVsZCcpID8gI2RiZmllbGQgfCAjbmFtZSApICk7CgkJ
CSNmaWVsZCAtPiAoaW5zZXJ0OiAnbm9zb3J0Jz0obG9jYWxfZGVmaW5lZDog
J25vc29ydCcpKTsKCQkJaWYobG9jYWxfZGVmaW5lZCgnZGVmYXVsdHNvcnQn
KQoJCQkJLy8mJiAhKGxvY2FsX2RlZmluZWQ6ICdub3NvcnQnKSAKCQkJCSYm
IChzZWxmIC0+ICdkZWZhdWx0c29ydCcpID09ICcnCgkJCQkvLyYmICEoc2Vs
ZiAtPiAnbm9zb3J0JykKCQkJCSk7IAoJCQkJKHNlbGYgLT4gJ2RlZmF1bHRz
b3J0JykgPSAjbmFtZTsKCQkJCWlmOiAoc2VsZiAtPiAnc29ydGZpZWxkJykg
PT0gJyc7CgkJCQkJKHNlbGYgLT4gJ3NvcnRmaWVsZCcpID0gKHNlbGYgLT4g
J2RlZmF1bHRzb3J0Jyk7CgkJCQkJaWY6ICNkZWZhdWx0c29ydCA9PSAnZGVz
YycgfHwgI2RlZmF1bHRzb3J0ID09ICdkZXNjZW5kaW5nJzsKCQkJCQkJKHNl
bGYgLT4gJ3NvcnRkZXNjZW5kaW5nJykgPSB0cnVlOwoJCQkJCS9pZjsKCQkJ
CS9pZjsKCQkJL2lmOwoJCQkoc2VsZiAtPiAnZGJmaWVsZG1hcCcpIC0+IChp
bnNlcnQ6ICNuYW1lID0gKChsb2NhbF9kZWZpbmVkOiAnZGJmaWVsZCcpICYm
ICNkYmZpZWxkICE9ICcnID8gI2RiZmllbGQgfCAjbmFtZSkpOwoJCS9pZjsK
CQkobG9jYWxfZGVmaW5lZDogJ3F1aWNrc2VhcmNoJykgPyAoc2VsZiAtPiAn
cXVpY2tzZWFyY2hfZmllbGRzJykgLT4gKGluc2VydDogKChsb2NhbF9kZWZp
bmVkOiAnZGJmaWVsZCcpID8gI2RiZmllbGQgfCAobG9jYWw6ICduYW1lJykp
KTsKCQkKCQlpZihsb2NhbF9kZWZpbmVkKCduYW1lJykgfHwgbG9jYWxfZGVm
aW5lZCgnbGFiZWwnKSk7CgkJCShzZWxmIC0+ICdmaWVsZHMnKSAtPiAoaW5z
ZXJ0OiAjZmllbGQpOwoJCS9pZjsKCQlzZWxmIC0+ICd0YWd0aW1lX3RhZ25h
bWUnPXRhZ19uYW1lOwoJCXNlbGYgLT4gJ3RhZ3RpbWUnPWludGVnZXI6ICN0
aW1lcjsgLy8gY2FzdCB0byBpbnRlZ2VyIHRvIHRyaWdnZXIgb25jb252ZXJ0
IGFuZCB0byAic3RvcCB0aW1lciIKCS9kZWZpbmVfdGFnOwoJCglkZWZpbmVf
dGFnOiAnc29ydHBhcmFtcycsIC1kZXNjcmlwdGlvbj0nUmV0dXJucyBhIExh
c3NvLXN0eWxlIHBhaXIgYXJyYXkgd2l0aCBzb3J0IHBhcmFtZXRlcnMgdG8g
dXNlIGluIHRoZSBzZWFyY2ggaW5saW5lLlxuXAoJCVBhcmFtZXRlcnM6XG5c
CgkJLXNxbCAob3B0aW9uYWwpXG5cCgkJLXJlbW92ZWRvdGJhY2t0aWNrcyAo
b3B0aW9uYWwgZmxhZykgVXNlIHdpdGggLXNxbCBmb3IgYmFja3dhcmQgY29t
cGF0aWJpbGl0eSBmb3IgZmllbGRzIHRoYXQgY29udGFpbiBwZXJpb2RzLiAg
SWYgeW91IHVzZSBwZXJpb2RzIGluIGEgZmllbGRuYW1lIHRoZW4geW91IGNh
bm5vdCB1c2UgYSBKT0lOIGluIEtub3AuJywKCQktb3B0aW9uYWw9J3NxbCcs
CgkJLW9wdGlvbmFsPSdyZW1vdmVkb3RiYWNrdGlja3MnOwoJCWxvY2FsOiAn
dGltZXInPWtub3BfdGltZXI7IAoJCWlmOiBsb2NhbF9kZWZpbmVkOiAnc3Fs
JzsKCQkJZmFpbF9pZjogKHNlbGYgLT4gJ2RhdGFiYXNlJykgLT4gJ2lzZmls
ZW1ha2VyJywgNzAwOSwgJy1zcWwgY2FuIG5vdCBiZSB1c2VkIHdpdGggRmls
ZU1ha2VyJzsKCQkJKHNlbGYgLT4gJ3NvcnRmaWVsZCcpID09ICcnID8gcmV0
dXJuOwoJCQlsb2NhbCgnb3V0cHV0Jz1zdHJpbmcpOwoJCQlpZjogKHNlbGYg
LT4gJ2RiZmllbGRtYXAnKSA+PiAoc2VsZiAtPiAnc29ydGZpZWxkJyk7CgkJ
CQkjb3V0cHV0PScgT1JERVIgQlkgJzsKCQkJCWlmKGxvY2FsX2RlZmluZWQo
J3JlbW92ZWRvdGJhY2t0aWNrcycpKTsKCQkJCQkjb3V0cHV0ICs9ICdgJyAr
IGtub3Bfc3RyaXBiYWNrdGlja3MoKHNlbGYgLT4gJ2RiZmllbGRtYXAnKSAt
PiBmaW5kKHNlbGYgLT4gJ3NvcnRmaWVsZCcpKSArICdgJzsKCQkJCWVsc2U7
CgkJCQkJI291dHB1dCArPSAnYCcgKyBzdHJpbmdfcmVwbGFjZShrbm9wX3N0
cmlwYmFja3RpY2tzKChzZWxmIC0+ICdkYmZpZWxkbWFwJykgLT4gZmluZChz
ZWxmIC0+ICdzb3J0ZmllbGQnKSksIC1maW5kPScuJywgLXJlcGxhY2U9J2Au
YCcpICsgJ2AnOwoJCQkJL2lmOwoJCQkJaWY6IChzZWxmIC0+ICdzb3J0ZGVz
Y2VuZGluZycpOwoJCQkJCSNvdXRwdXQgKz0gJyBERVNDJzsKCQkJCS9pZjsK
CQkJL2lmOwoJCWVsc2U7CgkJCWxvY2FsOiAnb3V0cHV0Jz1hcnJheTsKCQkJ
KHNlbGYgLT4gJ3NvcnRmaWVsZCcpID09ICcnID8gcmV0dXJuOiBAI291dHB1
dDsKCQkJaWY6IChzZWxmIC0+ICdkYmZpZWxkbWFwJykgPj4gKHNlbGYgLT4g
J3NvcnRmaWVsZCcpOwoJCQkJI291dHB1dCAtPiAoaW5zZXJ0OiAtc29ydGZp
ZWxkPShzZWxmIC0+ICdkYmZpZWxkbWFwJykgLT4gKGZpbmQ6IChzZWxmIC0+
ICdzb3J0ZmllbGQnKSkgKTsKCQkJCWlmOiAoc2VsZiAtPiAnc29ydGRlc2Nl
bmRpbmcnKTsKCQkJCQkjb3V0cHV0IC0+IChpbnNlcnQ6IC1zb3J0b3JkZXI9
J2Rlc2NlbmRpbmcnKTsKCQkJCS9pZjsKCQkJL2lmOwoJCS9pZjsKCQlzZWxm
IC0+ICd0YWd0aW1lX3RhZ25hbWUnPXRhZ19uYW1lOwoJCXNlbGYgLT4gJ3Rh
Z3RpbWUnPWludGVnZXI6ICN0aW1lcjsgLy8gY2FzdCB0byBpbnRlZ2VyIHRv
IHRyaWdnZXIgb25jb252ZXJ0IGFuZCB0byAic3RvcCB0aW1lciIKCQlyZXR1
cm46IEAjb3V0cHV0OwoJL2RlZmluZV90YWc7CgoJZGVmaW5lX3RhZzogJ3F1
aWNrc2VhcmNoJywgLWRlc2NyaXB0aW9uPSdSZXR1cm5zIGEgcGFpciBhcnJh
eSB3aXRoIGZpZWxkbmFtZT12YWx1ZSB0byB1c2UgaW4gYSBzZWFyY2ggaW5s
aW5lLiBJZiB5b3Ugc3BlY2lmeSBzZXZlcmFsIGZpZWxkcyBpbiB0aGUgZ3Jp
ZCBhcyAtcXVpY2tzZWFyY2ggKHZpc2libGUgb3Igbm90KSwgdGhleSB3aWxs
IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIG9uZSBzaW5nbGUgY29uY2F0
ZW5hdGVkIGZpZWxkLiBRdWlja3NlYXJjaCB3aWxsIHRha2UgZWFjaCB3b3Jk
IGVudGVyZWQgaW4gdGhlIHNlYXJjaCBmaWVsZCBhbmQgc2VhcmNoIGZvciB0
aGVtIGluIHRoZSBjb21iaW5lZCBzZXQgb2YgcXVpY2tzZWFyY2ggZmllbGRz
LCBwZXJmb3JtaW5nIGEgIndvcmQgYmVnaW5zIHdpdGgiIG1hdGNoICh1bmxl
c3MgeW91IHNwZWNpZnkgLWNvbnRhaW5zIHdoZW4gY2FsbGluZyAtPiBxdWlj
a3NlYXJjaCkuXG5cCgkJCVNvIGlmIHlvdSBlbnRlciBkZXYgam9oIGl0IHdp
bGwgZmluZCByZWNvcmRzIHdpdGggZmlyc3RuYW1lPUpvaGFuLCBvY2N1cGF0
aW9uPURldmVsb3Blci5cblwKCQkJSWYgeW91XCdyZSBmYW1pbGlhciB3aXRo
IGhvdyBGaWxlTWFrZXIgcGVyZm9ybXMgdGV4dCBzZWFyY2hlcywgdGhpcyBp
cyB0aGUgd2F5IHF1aWNrc2VhcmNoIHRyaWVzIHRvIGJlaGF2ZS5cblwKCQkJ
UGFyYW1ldGVyczpcblwKCQkJLXNxbCAob3B0aW9uYWwgZmxhZykgUmV0dXJu
IGFuIFNRTCBzdHJpbmcgZm9yIHRoZSBzZWFyY2ggcGFyYW1ldGVycyBpbnN0
ZWFkLlxuXAoJCQktY29udGFpbnMgKG9wdGlvbmFsIGZsYWcpIFBlcmZvcm0g
YSBzaW1wbGUgY29udGFpbnMgc2VhcmNoIGluc3RlYWQgb2YgZW11bGF0aW5n
ICJ3b3JkIGJlZ2lucyB3aXRoIiBzZWFyY2hcblwKCQkJLXZhbHVlIChvcHRp
b25hbCBmbGFnKSBPdXRwdXQganVzdCB0aGUgc2VhcmNoIHZhbHVlIG9mIHRo
ZSBxdWlja3NlYXJjaCBmaWVsZCBpbnN0ZWFkIG9mIGEgcGFpciBhcnJheSBv
ciBTUUwgc3RyaW5nXG5cCgkJCS1yZW1vdmVkb3RiYWNrdGlja3MgKG9wdGlv
bmFsIGZsYWcpIFVzZSB3aXRoIC1zcWwgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkgZm9yIGZpZWxkcyB0aGF0IGNvbnRhaW4gcGVyaW9kcy4gIElmIHlv
dSB1c2UgcGVyaW9kcyBpbiBhIGZpZWxkbmFtZSB0aGVuIHlvdSBjYW5ub3Qg
dXNlIGEgSk9JTiBpbiBLbm9wLicsCgkJLW9wdGlvbmFsPSdzcWwnLAoJCS1v
cHRpb25hbD0nY29udGFpbnMnLAoJCS1vcHRpb25hbD0ndmFsdWUnLAoJCS1v
cHRpb25hbD0ncmVtb3ZlZG90YmFja3RpY2tzJzsKCQlsb2NhbDogJ3RpbWVy
Jz1rbm9wX3RpbWVyOyAKCQkKCQlsb2NhbDogJ291dHB1dCc9YXJyYXksCgkJ
CSdvdXRwdXRfdGVtcCc9YXJyYXksCgkJCSdfc3FsJz0obG9jYWxfZGVmaW5l
ZDogJ3NxbCcpLCAKCQkJJ3dvcmRzZXBhcmF0b3JzJz0nLC4tICgiQFxuXHIn
LCAvLyBcciBhbmQgXG4gbXVzdCBub3QgY29tZSBhZnRlciBlYWNoIG90aGVy
IGFzIFxyXG4sIGJ1dCBcblxyIGlzIGZpbmUuIAoJCQknZmllbGR2YWx1ZScs
ICdvbmV2YWx1ZScsICdmaWVsZCcsICd3b3Jkc2VwYXJhdG9yJzsKCQlmYWls
X2lmOiAjX3NxbCAmJiAoc2VsZiAtPiAnZGF0YWJhc2UnKSAtPiAnaXNmaWxl
bWFrZXInLCA3MDA5LCAnLXNxbCBjYW4gbm90IGJlIHVzZWQgd2l0aCBGaWxl
TWFrZXInOwoKCQkjd29yZHNlcGFyYXRvcnMgPSAjd29yZHNlcGFyYXRvcnMg
LT4gKHNwbGl0OiAnJyk7CgkJaWY6IChzZWxmIC0+ICdxdWlja3NlYXJjaF9m
b3JtJykgLT4gdHlwZSAhPSAnZm9ybSc7CgkJCWlmOiAjX3NxbDsgCgkJCQly
ZXR1cm46IHN0cmluZzsKCQkJZWxzZTsKCQkJCXJldHVybjogYXJyYXk7CgkJ
CS9pZjsKCQkvaWY7CgkJaWY6IGxvY2FsX2RlZmluZWQ6ICd2YWx1ZSc7CgkJ
CXJldHVybjogc3RyaW5nOiAoKHNlbGYgLT4gJ3F1aWNrc2VhcmNoX2Zvcm0n
KSAtPiAoZ2V0dmFsdWU6ICctcScpKTsKCQkvaWY7CgkJCgkJI2ZpZWxkdmFs
dWUgPSBzdHJpbmc6ICgoc2VsZiAtPiAncXVpY2tzZWFyY2hfZm9ybScpIC0+
IChnZXR2YWx1ZTogJy1xJykpOwoJCWlmOiAjZmllbGR2YWx1ZSAhPSAnJzsK
CQkJaWY6IChzZWxmIC0+ICdkYXRhYmFzZScpIC0+ICdpc2ZpbGVtYWtlcic7
CgkJCQkjb3V0cHV0IC0+IChpbnNlcnQ6IC1sb2dpY2Fsb3BlcmF0b3I9J29y
Jyk7CgkJCQlpdGVyYXRlOiAoc2VsZiAtPiAncXVpY2tzZWFyY2hfZmllbGRz
JyksICNmaWVsZDsKCQkJCQlpZjogKGxvY2FsX2RlZmluZWQ6ICdjb250YWlu
cycpOwoJCQkJCQkjb3V0cHV0IC0+IChpbnNlcnQ6ICAtb3AgPSAnY24nKTsK
CQkJCQkvaWY7CgkJCQkJI291dHB1dCAtPiAoaW5zZXJ0OiAgI2ZpZWxkID0g
I2ZpZWxkdmFsdWUpOwoJCQkJL2l0ZXJhdGU7CgkJCWVsc2U7CgkJCQkvLyBz
ZWFyY2ggZWFjaCB3b3JkIHNlcGFyYXRlbHkKCQkJCSNmaWVsZHZhbHVlID0g
I2ZpZWxkdmFsdWUgLT4gKHNwbGl0OiAnICcpOwoJCQkJaXRlcmF0ZTogI2Zp
ZWxkdmFsdWUsICNvbmV2YWx1ZTsKCQkJCQkjb3V0cHV0X3RlbXAgPSBhcnJh
eTsKCQkJCQlpdGVyYXRlOiAoc2VsZiAtPiAncXVpY2tzZWFyY2hfZmllbGRz
JyksICNmaWVsZDsKCQkJCQkJaWY6ICNfc3FsOwoJCQkJCQkJaWY6IChsb2Nh
bF9kZWZpbmVkOiAnY29udGFpbnMnKTsKCQkJCQkJCQlpZihsb2NhbF9kZWZp
bmVkKCdyZW1vdmVkb3RiYWNrdGlja3MnKSk7CgkJCQkJCQkJCSNvdXRwdXRf
dGVtcCAtPiBpbnNlcnQoJ2AnICsga25vcF9zdHJpcGJhY2t0aWNrcyhlbmNv
ZGVfc3FsKCNmaWVsZCkpICsgJ2AnIAoJCQkJCQkJCQkJKyAnIExJS0UgIiUn
ICsgZW5jb2RlX3NxbCgjb25ldmFsdWUgKSArICclIicpOwoJCQkJCQkJCWVs
c2U7CgkJCQkJCQkJCSNvdXRwdXRfdGVtcCAtPiBpbnNlcnQoJ2AnICsgc3Ry
aW5nX3JlcGxhY2Uoa25vcF9zdHJpcGJhY2t0aWNrcyhlbmNvZGVfc3FsKCNm
aWVsZCkpLCAtZmluZD0nLicsIC1yZXBsYWNlPSdgLmAnKSArICdgJyAKCQkJ
CQkJCQkJCSsgJyBMSUtFICIlJyArIGVuY29kZV9zcWwoI29uZXZhbHVlICkg
KyAnJSInKTsKCQkJCQkJCQkvaWY7CgkJCQkJCQllbHNlOwoJCQkJCQkJCWlm
KGxvY2FsX2RlZmluZWQoJ3JlbW92ZWRvdGJhY2t0aWNrcycpKTsKCQkJCQkJ
CQkJI291dHB1dF90ZW1wIC0+IGluc2VydCgnYCcgKyBrbm9wX3N0cmlwYmFj
a3RpY2tzKGVuY29kZV9zcWwoI2ZpZWxkKSkgKyAnYCcgCgkJCQkJCQkJCSsg
JyBMSUtFICInICsgZW5jb2RlX3NxbCgjb25ldmFsdWUgKSArICclIicpOwoJ
CQkJCQkJCWVsc2U7CgkJCQkJCQkJCSNvdXRwdXRfdGVtcCAtPiBpbnNlcnQo
J2AnICsgc3RyaW5nX3JlcGxhY2Uoa25vcF9zdHJpcGJhY2t0aWNrcyhlbmNv
ZGVfc3FsKCNmaWVsZCkpLCAtZmluZD0nLicsIC1yZXBsYWNlPSdgLmAnKSAr
ICdgJyAKCQkJCQkJCQkJKyAnIExJS0UgIicgKyBlbmNvZGVfc3FsKCNvbmV2
YWx1ZSApICsgJyUiJyk7CgkJCQkJCQkJL2lmOwoJCQkJCQkJCS8vIGJhc2lj
IGVtdWxhdGlvbiBvZiAid29yZCBiZWdpbnMgd2l0aCIKCQkJCQkJCQlpdGVy
YXRlOiAjd29yZHNlcGFyYXRvcnMsICN3b3Jkc2VwYXJhdG9yOwoJCQkJCQkJ
CQlpZihsb2NhbF9kZWZpbmVkKCdyZW1vdmVkb3RiYWNrdGlja3MnKSk7CgkJ
CQkJCQkJCQkjb3V0cHV0X3RlbXAgLT4gaW5zZXJ0KCdgJyArIGtub3Bfc3Ry
aXBiYWNrdGlja3MoZW5jb2RlX3NxbCgjZmllbGQpKSArICdgJyAKCQkJCQkJ
CQkJCQkrICcgTElLRSAiJScgKyBlbmNvZGVfc3FsKCN3b3Jkc2VwYXJhdG9y
ICsgI29uZXZhbHVlICkgKyAnJSInKTsKCQkJCQkJCQkJZWxzZTsKCQkJCQkJ
CQkJCSNvdXRwdXRfdGVtcCAtPiBpbnNlcnQoJ2AnICsgc3RyaW5nX3JlcGxh
Y2Uoa25vcF9zdHJpcGJhY2t0aWNrcyhlbmNvZGVfc3FsKCNmaWVsZCkpLCAt
ZmluZD0nLicsIC1yZXBsYWNlPSdgLmAnKSArICdgJyAKCQkJCQkJCQkJCQkr
ICcgTElLRSAiJScgKyBlbmNvZGVfc3FsKCN3b3Jkc2VwYXJhdG9yICsgI29u
ZXZhbHVlICkgKyAnJSInKTsKCQkJCQkJCQkJL2lmOwoJCQkJCQkJCS9pdGVy
YXRlOwoJCQkJCQkJL2lmOwoJCQkJCQllbHNlOwoJCQkJCQkJaWY6IChsb2Nh
bF9kZWZpbmVkOiAnY29udGFpbnMnKTsKCQkJCQkJCQkjb3V0cHV0X3RlbXAg
LT4gKGluc2VydDogIC1vcD0nY24nKTsKCQkJCQkJCQkjb3V0cHV0X3RlbXAg
LT4gKGluc2VydDogICNmaWVsZCA9ICNvbmV2YWx1ZSApOwoJCQkJCQkJZWxz
ZTsKCQkJCQkJCQkjb3V0cHV0X3RlbXAgLT4gKGluc2VydDogIC1vcD0nYncn
KTsKCQkJCQkJCQkjb3V0cHV0X3RlbXAgLT4gKGluc2VydDogICNmaWVsZCA9
ICNvbmV2YWx1ZSApOwoJCQkJCQkJCWlmOiAhKHNlbGYgLT4gJ2RhdGFiYXNl
JyAtPiAnaXNmaWxlbWFrZXInKTsKCQkJCQkJCQkJLy8gdGhpcyB2YXJpYW50
IGlzIG5vdCBuZWVkZWQgZm9yIEZpbGVNYWtlciBzaW5jZSBpdCBhbHJlYWR5
IHNlYXJjaGVzIHdpdGggIndvcmQgYmVnaW5zIHdpdGgiIGFzIGRlZmF1bHQJ
CQkJCQkJI291dHB1dF90ZW1wIC0+IChpbnNlcnQ6ICAtb3A9J2NuJyk7CgkJ
CQkJCQkJCWl0ZXJhdGU6ICN3b3Jkc2VwYXJhdG9ycywgI3dvcmRzZXBhcmF0
b3I7CgkJCQkJCQkJCQkjb3V0cHV0X3RlbXAgLT4gKGluc2VydDogIC1vcD0n
Y24nKTsKCQkJCQkJCQkJCSNvdXRwdXRfdGVtcCAtPiAoaW5zZXJ0OiAgI2Zp
ZWxkID0gI3dvcmRzZXBhcmF0b3IgKyAjb25ldmFsdWUgKTsKCQkJCQkJCQkJ
L2l0ZXJhdGU7CgkJCQkJCQkJL2lmOwoJCQkJCQkJL2lmOwoJCQkJCQkvaWY7
CgkJCQkJL2l0ZXJhdGU7CgkJCQkJaWY6ICNfc3FsOwoJCQkJCQlpZjogI291
dHB1dF90ZW1wIC0+IHNpemUgPiAxOwoJCQkJCQkJI291dHB1dF90ZW1wID0g
JygnICsgI291dHB1dF90ZW1wIC0+IChqb2luOiAnIE9SICcpICsgJyknOwoJ
CQkJCQllbHNlOwoJCQkJCQkJI291dHB1dF90ZW1wID0gI291dHB1dF90ZW1w
IC0+IGZpcnN0OwoJCQkJCQkvaWY7CgkJCQkJCSNvdXRwdXQgLT4gKGluc2Vy
dDogI291dHB1dF90ZW1wKTsKCQkJCQllbHNlOwoJCQkJCQlpZjogI291dHB1
dF90ZW1wIC0+IHNpemUgPiAyOwoJCQkJCQkJI291dHB1dF90ZW1wIC0+IChp
bnNlcnQ6IC1vcGJlZ2luPSdvcicsIDEpOwoJCQkJCQkJI291dHB1dF90ZW1w
IC0+IChpbnNlcnQ6IC1vcGVuZD0nb3InKTsKCQkJCQkJL2lmOwoJCQkJCQkj
b3V0cHV0IC0+IChtZXJnZTogI291dHB1dF90ZW1wKTsKCQkJCQkvaWY7CgkJ
CQkvaXRlcmF0ZTsKCQkJCQoJCQkJaWY6ICNfc3FsOwoJCQkJCWlmOiAjb3V0
cHV0IC0+IHNpemU7CgkJCQkJCSNvdXRwdXQgPSAnKCcgKyAjb3V0cHV0IC0+
IChqb2luOiAnIEFORCAnKSArICcpJzsKCQkJCQllbHNlOwoJCQkJCQkjb3V0
cHV0ID0gc3RyaW5nOwoJCQkJCS9pZjsKCQkJCWVsc2U7CgkJCQkJaWY6ICNv
dXRwdXQgLT4gc2l6ZTsKCQkJCQkJI291dHB1dCAtPiAoaW5zZXJ0OiAtb3Bi
ZWdpbj0nYW5kJywgMSk7CgkJCQkJCSNvdXRwdXQgLT4gKGluc2VydDogLW9w
ZW5kPSdhbmQnKTsKCQkJCQkvaWY7CgkJCQkvaWY7CgkJCS9pZjsgLy8gaXNm
aWxlbWFrZXIKCQkvaWY7IC8vICNmaWVsZHZhbHVlICE9ICcnCgkJc2VsZiAt
PiAndGFndGltZV90YWduYW1lJz10YWdfbmFtZTsKCQlzZWxmIC0+ICd0YWd0
aW1lJz1pbnRlZ2VyOiAjdGltZXI7IC8vIGNhc3QgdG8gaW50ZWdlciB0byB0
cmlnZ2VyIG9uY29udmVydCBhbmQgdG8gInN0b3AgdGltZXIiCgkJcmV0dXJu
OiBAI291dHB1dDsKCS9kZWZpbmVfdGFnOwoJCglkZWZpbmVfdGFnOiAndXJs
YXJncycsIC1kZXNjcmlwdGlvbj0ncmV0dXJucyBhbGwgZ2V0IHBhcmFtcyB0
aGF0IGJlZ2luIHdpdGggLSBhcyBhIHF1ZXJ5IHN0cmluZywgZm9yIGludGVy
bmFsIHVzZSBpbiBsaW5rcyBpbiB0aGUgZ3JpZC4gXG5cCgkJCVBhcmFtZXRl
cnM6XG5cCgkJCS1leGNlcHQgKG9wdGlvbmFsKSBFeGNsdWRlIHRoZXNlIHBh
cmFtZXRlcnMgKHN0cmluZyBvciBhcnJheSlcblwKCQkJLXByZWZpeCAob3B0
aW9uYWwpIEZvciBleGFtcGxlID8gb3IgJmFtcDsgdG8gaW5jbHVkZSBhdCB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBxdWVyeXN0cmluZyBcblwKCQkJLXN1ZmZp
eCAob3B0aW9uYWwpIEZvciBleGFtcGxlICZhbXA7IHRvIGluY2x1ZGUgYXQg
dGhlIGVuZCBvZiB0aGUgcXVlcnlzdHJpbmcnLAoJCS1vcHRpb25hbD0nZXhj
ZXB0JywgLWNvcHksCgkJLW9wdGlvbmFsPSdwcmVmaXgnLAkvLyBmb3IgZXhh
bXBsZSA/IG9yICZhbXA7IHRvIGluY2x1ZGUgYXQgdGhlIGJlZ2lubmluZyBv
ZiB0aGUgcXVlcnlzdHJpbmcgCgkJLW9wdGlvbmFsPSdzdWZmaXgnOwkvLyBm
b3IgZXhhbXBsZSAmYW1wOyB0byBpbmNsdWRlIGF0IHRoZSBlbmQgb2YgdGhl
IHF1ZXJ5c3RyaW5nCgkJbG9jYWw6ICd0aW1lcic9a25vcF90aW1lcjsgCgkJ
bG9jYWw6ICdvdXRwdXQnPWFycmF5LCAncGFyYW0nPW51bGw7CgoJCS8vIG9u
bHkgZ2V0cGFyYW1zIHRvIG5vdCBzZW5kIGFsb25nIC1hY3Rpb24gZXRjCgkJ
bG9jYWw6ICdjbGllbnRwYXJhbXMnPWNsaWVudF9nZXRwYXJhbXM7CgoJCSEo
bG9jYWxfZGVmaW5lZDogJ2V4Y2VwdCcpID8gbG9jYWw6ICdleGNlcHQnPWFy
cmF5OwoJCSNleGNlcHQgLT4gdHlwZSAhPSAnYXJyYXknID8gI2V4Y2VwdCA9
IGFycmF5OiAjZXhjZXB0OwoJCSNleGNlcHQgLT4gKGluc2VydDogLXNlc3Np
b24pOwoJCQoJCS8vIGFkZCBnZXRwYXJhbXMgdGhhdCBiZWdpbiB3aXRoIC0K
CQlpdGVyYXRlOiAjY2xpZW50cGFyYW1zLCAjcGFyYW07CgkJCWlmOiAjcGFy
YW0gLT4gdHlwZSA9PSAncGFpcic7CgkJCQlpZjogI3BhcmFtIC0+IG5hbWUg
LT4gKGJlZ2luc3dpdGg6ICctJykgJiYgI2V4Y2VwdCAhPj4gI3BhcmFtIC0+
IG5hbWU7CgkJCQkJI291dHB1dCAtPiAoaW5zZXJ0OiAoZW5jb2RlX3N0cmlj
dHVybDogI3BhcmFtIC0+IG5hbWUpICsgJz0nICsgKGVuY29kZV9zdHJpY3R1
cmw6ICNwYXJhbSAtPiB2YWx1ZSkpOwoJCQkJL2lmOwoJCQllbHNlOyAvLyBq
dXN0IGEgc3RyaW5nIHBhcmFtIChubyBwYWlyKQoJCQkJaWY6ICNwYXJhbSAt
PiAoYmVnaW5zd2l0aDogJy0nKSAmJiAjZXhjZXB0ICE+PiAjcGFyYW07CgkJ
CQkJI291dHB1dCAtPiAoaW5zZXJ0OiBlbmNvZGVfc3RyaWN0dXJsOiAjcGFy
YW0pOwoJCQkJL2lmOwoJCQkvaWY7CgkJL2l0ZXJhdGU7CgoJCWlmOiBzZWxm
IC0+ICduYXYnIC0+IGlzYSgnbmF2Jyk7CgkJCS8vIHNlbmQgcGFyYW1zIHRo
YXQgaGF2ZSBiZWVuIGRlZmluZWQgYXMgLXBhcmFtcyBpbiBuYXYKCQkJbG9j
YWw6ICduYXZpdGVtJz1zZWxmIC0+ICduYXYnIC0+IGdldG5hdjsKCQkJLy8g
YWRkIHBvc3QgcGFyYW1zCgkJCSNjbGllbnRwYXJhbXMgLT4gKG1lcmdlOiBj
bGllbnRfcG9zdHBhcmFtcyk7CgoJCQlpdGVyYXRlOiAjbmF2aXRlbSAtPiAo
ZmluZDogJ3BhcmFtcycpLCAjcGFyYW07CgkJCQlpZjogI2NsaWVudHBhcmFt
cyA+PiAjcGFyYW0gJiYgI2NsaWVudHBhcmFtcyAtPiAoZmluZDogI3BhcmFt
KSAtPiBmaXJzdCAtPiB0eXBlID09ICdwYWlyJzsKCQkJCQkjb3V0cHV0IC0+
IChpbnNlcnQ6IChlbmNvZGVfc3RyaWN0dXJsOiAjY2xpZW50cGFyYW1zIC0+
IChmaW5kOiAjcGFyYW0pIC0+IGZpcnN0IC0+IG5hbWUpICsgICc9JyArIChl
bmNvZGVfc3RyaWN0dXJsOiAjY2xpZW50cGFyYW1zIC0+IChmaW5kOiAjcGFy
YW0pIC0+IGZpcnN0IC0+IHZhbHVlKSk7CgkJCQllbHNlOiAjY2xpZW50cGFy
YW1zID4+ICNwYXJhbTsKCQkJCQkjb3V0cHV0IC0+IChpbnNlcnQ6IGVuY29k
ZV9zdHJpY3R1cmw6ICNjbGllbnRwYXJhbXMgLT4gKGZpbmQ6ICNwYXJhbSkg
LT4gZmlyc3QpOwoJCQkJL2lmOwoJCQkvaXRlcmF0ZTsKCQkvaWY7CgkJI291
dHB1dCA9IHN0cmluZzogKCNvdXRwdXQgLT4gKGpvaW46ICcmYW1wOycpKTsK
CQkvLyByZXN0b3JlIC8gaW4gcGF0aHMKCQkjb3V0cHV0IC0+IHJlcGxhY2Uo
JyUyRicsICcvJyk7CgoKCQlzZWxmIC0+ICd0YWd0aW1lX3RhZ25hbWUnPXRh
Z19uYW1lOwoJCXNlbGYgLT4gJ3RhZ3RpbWUnPWludGVnZXI6ICN0aW1lcjsg
Ly8gY2FzdCB0byBpbnRlZ2VyIHRvIHRyaWdnZXIgb25jb252ZXJ0IGFuZCB0
byAic3RvcCB0aW1lciIKCQlpZjogI291dHB1dCAtPiBzaXplOwoJCQlyZXR1
cm46IChsb2NhbDogJ3ByZWZpeCcpICsgI291dHB1dCArIChsb2NhbDogJ3N1
ZmZpeCcpOwoJCS9pZjsKCgkvZGVmaW5lX3RhZzsKCQoJCglkZWZpbmVfdGFn
OiAncmVuZGVyaHRtbCcsIC1kZXNjcmlwdGlvbj0nT3V0cHV0cyB0aGUgY29t
cGxldGUgcmVjb3JkIGxpc3RpbmcuIENhbGxzIHJlbmRlcmhlYWRlciwgcmVu
ZGVybGlzdGluZyBhbmQgcmVuZGVyZm9vdGVyIGFzIHdlbGwuIFwKCQkJSWYg
MTAgcmVjb3JkcyBvciBtb3JlIGFyZSBzaG93biwgcmVuZGVyZm9vdGVyIGlz
IGFkZGVkIGFsc28ganVzdCBiZWxvdyB0aGUgaGVhZGVyLlxuXAoJCQlQYXJh
bWV0ZXJzOlxuXAoJCQktaW5saW5lbmFtZSAob3B0aW9uYWwpIElmIG5vdCBz
cGVjaWZpZWQsIGlubGluZW5hbWUgZnJvbSB0aGUgY29ubmVjdGVkIGRhdGFi
YXNlIG9iamVjdCBpcyB1c2VkXG5cCgkJCS1udW1iZXJlZCAob3B0aW9uYWwg
ZmxhZyBvciBpbnRlZ2VyKSBJZiBzcGVjaWZpZWQsIHBhZ2luYXRpb24gbGlu
a3Mgd2lsbCBiZSBzaG93biBhcyBwYWdlIG51bWJlcnMgaW5zdGVhZCBvZiBy
ZWd1bGFyIHByZXYvbmV4dCBsaW5rcy4gRGVmYXVsdHMgdG8gNiBsaW5rcywg
c3BlY2lmeSBhbm90aGVyIG51bWJlciAobWluaW11bSA2KSBpZiBtb3JlIG51
bWJlcnMgYXJlIHdhbnRlZC4nLAoJCS1vcHRpb25hbD0naW5saW5lbmFtZScs
CgkJLW9wdGlvbmFsPSd4aHRtbCcsCgkJLW9wdGlvbmFsPSdudW1iZXJlZCcs
CgkJLW9wdGlvbmFsPSdzdGFydHdpdGhmb290ZXInOwoJCWxvY2FsOiAndGlt
ZXInPWtub3BfdGltZXI7IAoKCQlsb2NhbDogJ291dHB1dCc9c3RyaW5nLAoJ
CQknZGInPUAoc2VsZiAtPiAnZGF0YWJhc2UnKSwgCgkJCSdfeGh0bWwnID0g
KCgobG9jYWxfZGVmaW5lZDogJ3hodG1sJykgJiYgI3hodG1sICE9IGZhbHNl
KSA/IHRydWUgfCBmYWxzZSk7CgkJaWYobG9jYWxfZGVmaW5lZCgnbnVtYmVy
ZWQnKSk7CgkJCWxvY2FsKCdudW1iZXJlZHBhZ2luZyc9KCgjbnVtYmVyZWQg
IT09IGZhbHNlKSA/IGludGVnZXIoI251bWJlcmVkKSB8IGZhbHNlKSk7CgkJ
ZWxzZTsKCQkJbG9jYWwoJ251bWJlcmVkcGFnaW5nJz0oKChzZWxmIC0+ICdu
dW1iZXJlZCcpICE9PSBmYWxzZSkgPyBpbnRlZ2VyKHNlbGYgLT4gJ251bWJl
cmVkJykgfCBmYWxzZSkpOwoJCS9pZjsKCgkJbG9jYWxfZGVmaW5lZCgnc3Rh
cnR3aXRoZm9vdGVyJykgJiYgI3N0YXJ0d2l0aGZvb3RlciAhPSBmYWxzZSA/
ICNzdGFydHdpdGhmb290ZXIgPSB0cnVlIHwgbG9jYWwoJ3N0YXJ0d2l0aGZv
b3RlcicpID0gZmFsc2U7CgoJCSEobG9jYWxfZGVmaW5lZDogJ2lubGluZW5h
bWUnKSA/IGxvY2FsOiAnaW5saW5lbmFtZSc9c3RyaW5nOwoJCXNlbGYgLT4g
J2Zvb3RlcicgPSAoc2VsZiAtPiAocmVuZGVyZm9vdGVyOiAteGh0bWwgPSAj
X3hodG1sLCAtbnVtYmVyZWQ9I251bWJlcmVkcGFnaW5nKSk7CgkJI291dHB1
dCArPSAoc2VsZiAtPiByZW5kZXJoZWFkZXIoLXN0YXJ0LCAteGh0bWwgPSAj
X3hodG1sLCAtc3RhcnR3aXRoZm9vdGVyID0gI3N0YXJ0d2l0aGZvb3Rlcikp
OwoJCWlmOiAjZGIgLT4gc2hvd25fY291bnQgPj0gMTAgJiYgISNzdGFydHdp
dGhmb290ZXI7CgkJCSNvdXRwdXQgKz0gc2VsZiAtPiAnZm9vdGVyJzsKCQkv
aWY7CgkJI291dHB1dCArPSAoc2VsZiAtPiAocmVuZGVybGlzdGluZzogLWlu
bGluZW5hbWU9I2lubGluZW5hbWUsIC14aHRtbD0jX3hodG1sKSk7CgoJCSNv
dXRwdXQgKz0gc2VsZiAtPiAnZm9vdGVyJyArICc8L3RhYmxlPlxuJzsKCQlz
ZWxmIC0+ICd0YWd0aW1lX3RhZ25hbWUnPXRhZ19uYW1lOwoJCXNlbGYgLT4g
J3RhZ3RpbWUnPWludGVnZXI6ICN0aW1lcjsgLy8gY2FzdCB0byBpbnRlZ2Vy
IHRvIHRyaWdnZXIgb25jb252ZXJ0IGFuZCB0byAic3RvcCB0aW1lciIKCQly
ZXR1cm46IEAjb3V0cHV0OwoJL2RlZmluZV90YWc7CgoKCWRlZmluZV90YWc6
ICdyZW5kZXJsaXN0aW5nJywgLWRlc2NyaXB0aW9uPSdPdXRwdXRzIGp1c3Qg
dGhlIGFjdHVhbCByZWNvcmQgbGlzdGluZy4gSXMgY2FsbGVkIGJ5IHJlbmRl
cmh0bWwuIFwKCQkJUGFyYW1ldGVyczpcblwKCQkJLWlubGluZW5hbWUgKG9w
dGlvbmFsKSBJZiBub3Qgc3BlY2lmaWVkLCBpbmxpbmVuYW1lIGZyb20gdGhl
IGNvbm5lY3RlZCBkYXRhYmFzZSBvYmplY3QgaXMgdXNlZCcsCgkJLW9wdGlv
bmFsPSdpbmxpbmVuYW1lJywKCQktb3B0aW9uYWw9J3hodG1sJzsKCQlsb2Nh
bDogJ3RpbWVyJz1rbm9wX3RpbWVyOyAKCgkJbG9jYWw6ICdfaW5saW5lbmFt
ZSc9c3RyaW5nLCAKCQkJJ291dHB1dCc9c3RyaW5nLCAKCQkJJ2ZpZWxkcyc9
KHNlbGYgLT4gJ2ZpZWxkcycpLCAKCQkJJ2ZpZWxkJz1zdHJpbmcsCgkJCSdr
ZXlmaWVsZCc9bnVsbCwKCQkJJ2FmZmVjdGVkcmVjb3JkX2tleXZhbHVlJz1u
dWxsLAoJCQkncmVjb3JkX2xvb3BfY291bnQnPWludGVnZXIsCgkJCSdkYic9
QChzZWxmIC0+ICdkYXRhYmFzZScpLCAKCQkJJ25hdic9QChzZWxmIC0+ICdu
YXYnKSwKCQkJJ2RiZmllbGRtYXAnPUAoc2VsZiAtPiAnZGJmaWVsZG1hcCcp
LAoJCQknY2xhc3NhcnJheSc9YXJyYXksCgkJCSdmaWVsZG5hbWUnPXN0cmlu
ZywKCQkJJ3ZhbHVlJz1zdHJpbmcsCgkJCSdrZXlwYXJhbW5hbWUnLAoJCQkn
dXJsJywKCQkJJ3VybF9jYWNoZWRfdGVtcCcsCgkJCSdfeGh0bWwnID0gKCgo
bG9jYWxfZGVmaW5lZDogJ3hodG1sJykgJiYgI3hodG1sICE9IGZhbHNlKSA/
IHRydWUgfCBmYWxzZSksCgkJCSdsYW5nJz1AKHNlbGYgLT4gJ2xhbmcnKTsK
CQkJCgkJaWY6IChsb2NhbDogJ2lubGluZW5hbWUnKSE9Jyc7CgkJCSNfaW5s
aW5lbmFtZSA9ICNpbmxpbmVuYW1lOwoJCWVsc2U6ICNkYiAtPiB0eXBlID09
ICdkYXRhYmFzZSc7CgkJCSNfaW5saW5lbmFtZT0jZGIgLT4gJ2lubGluZW5h
bWUnOwoJCQkja2V5ZmllbGQ9I2RiIC0+ICdrZXlmaWVsZCc7CgkJCSNhZmZl
Y3RlZHJlY29yZF9rZXl2YWx1ZSA9ICNkYiAtPiAnYWZmZWN0ZWRyZWNvcmRf
a2V5dmFsdWUnOwoJCS9pZjsKCQkjb3V0cHV0ICs9ICdcbjx0Ym9keT5cbic7
CgkJaWY6ICNuYXYgLT4gKGlzYTogJ25hdicpOwoJCQlpdGVyYXRlOiAjZmll
bGRzLCAjZmllbGQ7CgkJCQlpZjogKCNmaWVsZCAtPiAoZmluZDogJ3VybCcp
KSAhPSAnJzsKCQkJCQkjdXJsID0gKCNmaWVsZCAtPiAoZmluZDogJ3VybCcp
KTsKCQkJCQkja2V5cGFyYW1uYW1lID0gKCNmaWVsZCAtPiAoZmluZDogJ2tl
eXBhcmFtbmFtZScpKTsKCQkJCQkjZmllbGQgLT4gaW5zZXJ0KCd1cmxfY2Fj
aGVkJyA9ICgjbmF2IC0+ICh1cmw6IC1wYXRoPSN1cmwsIAoJCQkJCQkja2V5
cGFyYW1uYW1lPScjIyNrZXl2YWx1ZSMjIycsCgkJCQkJCS1hdXRvcGFyYW1z
LAoJCQkJCQktZXhjZXB0PShhcnJheTogLXBhdGgpKSkpOwoJCQkJL2lmOwoJ
CQkvaXRlcmF0ZTsKCQkvaWY7CgkJcmVjb3JkczogLWlubGluZW5hbWU9I19p
bmxpbmVuYW1lOwoJCQkjcmVjb3JkX2xvb3BfY291bnQgPSBsb29wX2NvdW50
OwoJCQkjb3V0cHV0ICs9ICdcbjx0cj4nOwoJCQlpdGVyYXRlOiAjZmllbGRz
LCAjZmllbGQ7CgkJCQkjZmllbGRuYW1lID0gKCNkYmZpZWxkbWFwIC0+IChm
aW5kOiAoI2ZpZWxkIC0+IChmaW5kOiAnbmFtZScpKSkpOwoJCQkJI2tleXBh
cmFtbmFtZSA9ICgjZmllbGQgLT4gKGZpbmQ6ICdrZXlwYXJhbW5hbWUnKSk7
CgkJCQkjdmFsdWU9KGZpZWxkOiAjZmllbGRuYW1lKTsKCQkJCWlmOiAjZmll
bGQgLT4gKGZpbmQ6ICd0ZW1wbGF0ZScpIC0+IHR5cGUgPT0gJ21hcCc7CgkJ
CQkJI3ZhbHVlPXN0cmluZygjdmFsdWUpOwoJCQkJCWlmOiAjZmllbGQgLT4g
KGZpbmQ6ICd0ZW1wbGF0ZScpID4+ICN2YWx1ZTsKCQkJCQkJI3ZhbHVlID0g
I2ZpZWxkIC0+IChmaW5kOiAndGVtcGxhdGUnKSAtPiAoZmluZDogI3ZhbHVl
KTsKCQkJCQllbHNlOiAjZmllbGQgLT4gKGZpbmQ6ICd0ZW1wbGF0ZScpID4+
ICctZGVmYXVsdCc7CgkJCQkJCSN2YWx1ZSA9ICNmaWVsZCAtPiAoZmluZDog
J3RlbXBsYXRlJykgLT4gKGZpbmQ6ICctZGVmYXVsdCcpOwoJCQkJCWVsc2U7
CgkJCQkJCS8vIHNob3cgZmllbGR2YWx1ZSBhcyBpcwoJCQkJCS9pZjsKCQkJ
CQkvLyBzdWJzdGl0dXRlIGZpZWxkIHZhbHVlIGluIHRoZSBkaXNwbGF5IHRl
bXBsYXRlCgkJCQkJI3ZhbHVlIC0+IChyZXBsYWNlOiAnI3ZhbHVlIycsIChm
aWVsZDogI2ZpZWxkbmFtZSkpOwoJCQkJZWxzZTogI2ZpZWxkIC0+IChmaW5k
OiAndGVtcGxhdGUnKSAtPiAoaXNhOiAndGFnJyk7CgkJCQkJI3ZhbHVlID0g
I2ZpZWxkIC0+IChmaW5kOiAndGVtcGxhdGUnKSAtPiAocnVuOiAtcGFyYW1z
PSN2YWx1ZSk7CgkJCQkvaWY7CgkJCQkjY2xhc3NhcnJheT1hcnJheTsKCQkJ
CWlmOiAgI2FmZmVjdGVkcmVjb3JkX2tleXZhbHVlID09IChmaWVsZDogI2tl
eWZpZWxkKSAmJiAoZmllbGQ6ICNrZXlmaWVsZCkgIT0gJyc7CgkJCQkJLy8g
aGlnaHRsaWdodCBhZmZlY3RlZCByb3cKCQkJCQkjY2xhc3NhcnJheSAtPiAo
aW5zZXJ0OiAnaGlnaGxpZ2h0Jyk7CgkJCQllbHNlOwoJCQkJCSgjcmVjb3Jk
X2xvb3BfY291bnQgLSAxKSAgJSAyID09IDAgPyAjY2xhc3NhcnJheSAtPiAo
aW5zZXJ0OiAnZXZlbicpOwoJCQkJL2lmOwoJCQkJLy8gQWRkZWQgYnkgSkMg
MDgxMTI3IHRvIGhhbmRsZSB0ZCBzcGVjaWZpYyBjbGFzc2VzCgkJCQkoI2Zp
ZWxkIC0+IGZpbmQoJ2NsYXNzJykgLT4gc2l6ZSA/ICNjbGFzc2FycmF5IC0+
IGluc2VydCggI2ZpZWxkIC0+IGZpbmQoJ2NsYXNzJykpKTsKCQkJCSNvdXRw
dXQgKz0gJzx0ZCc7CgkJCQlpZjogI2NsYXNzYXJyYXkgLT4gc2l6ZTsKCQkJ
CQkjb3V0cHV0ICs9ICcgY2xhc3M9IicgKyAjY2xhc3NhcnJheSAtPiAoam9p
bjogJyAnKSArICciJzsKCQkJCS9pZjsKCQkJCSNvdXRwdXQgKz0gJz4nOwoJ
CQkJaWY6ICgjZmllbGQgLT4gKGZpbmQ6ICd1cmwnKSkgIT0gJyc7CgkJCQkJ
I3VybCA9ICgjZmllbGQgLT4gKGZpbmQ6ICd1cmwnKSk7CgkJCQkJLyoKCQkJ
CQlpZjogI25hdiAtPiAoaXNhOiAnbmF2JykgJiYgI3VybCAhPj4gJyN2YWx1
ZSMnOwoJCQkJCQkjb3V0cHV0ICs9ICc8YSBocmVmPSInICsgKCNuYXYgLT4g
KHVybDogLXBhdGg9I3VybCwgCgkJCQkJCQkja2V5cGFyYW1uYW1lPShmaWVs
ZDogI2tleWZpZWxkKSwKCQkJCQkJCS1hdXRvcGFyYW1zLAoJCQkJCQkJLWV4
Y2VwdD0oYXJyYXk6IC1wYXRoKSkpOwoJCQkJCSovCgkJCQkJaWY6ICNmaWVs
ZCAtPiBmaW5kKCd1cmxfY2FjaGVkJykgLT4gc2l6ZSAmJiAjdXJsICE+PiAn
I3ZhbHVlIyc7CgkJCQkJCSN1cmxfY2FjaGVkX3RlbXAgPSAjZmllbGQgLT4g
ZmluZCgndXJsX2NhY2hlZCcpOwoJCQkJCQkjdXJsX2NhY2hlZF90ZW1wIC0+
IHJlcGxhY2UoJyMjI2tleXZhbHVlIyMjJywgZmllbGQoI2tleWZpZWxkKSk7
CgkJCQkJCSNvdXRwdXQgKz0gJzxhIGhyZWY9IicgKyAjdXJsX2NhY2hlZF90
ZW1wOwoJCQkJCQkjb3V0cHV0ICs9ICciPicgKyAgI3ZhbHVlIAoJCQkJCQkJ
Ly8gc2hvdyBzb21ldGhpbmcgdG8gY2xpY2sgb24gZXZlbiBpZiB0aGUgZmll
bGQgaXMgZW1wdHkKCQkJCQkJCSsgKChzdHJpbmdfZmluZHJlZ2V4cDogI3Zh
bHVlLCAtZmluZD0nXFx3KicpIC0+IHNpemUgPT0gMCA/ICgjbGFuZyAtPiBs
aW5rdGV4dF9lZGl0KSkgCgkJCQkJCQkrICc8L2E+JzsKCQkJCQllbHNlOwoJ
CQkJCQkjdXJsIC0+IChyZXBsYWNlOiAnI3ZhbHVlIycsIChmaWVsZDogI2Zp
ZWxkbmFtZSkpOwoJCQkJCQkjb3V0cHV0ICs9ICc8YSBocmVmPSInICsgI3Vy
bCArICciJzsgCgkJCQkJCSN1cmwgLT4gKGJlZ2luc3dpdGg6ICdodHRwOi8v
JykgfHwgI3VybCAtPiAoYmVnaW5zd2l0aDogJ2h0dHBzOi8vJykgfHwgI3Vy
bCAtPiAoYmVnaW5zd2l0aDogJ21haWx0bzonKQoJCQkJCQkJPyAjb3V0cHV0
ICs9ICcgY2xhc3M9ImV4dCInOwoJCQkJCQkjb3V0cHV0ICs9ICc+JyArICAj
dmFsdWUgKyAnPC9hPic7CgkJCQkJL2lmOwoJCQkJZWxzZTsKCQkJCQkjb3V0
cHV0ICs9ICN2YWx1ZTsKCQkJCS9pZjsKCQkJCSNvdXRwdXQgKz0gJzwvdGQ+
XG4nOwoJCQkvaXRlcmF0ZTsKCQkJI291dHB1dCArPSAnPC90cj5cbic7CgkJ
L3JlY29yZHM7CgkJI291dHB1dCArPSAnXG48L3Rib2R5PlxuJzsKCQlzZWxm
IC0+ICd0YWd0aW1lX3RhZ25hbWUnPXRhZ19uYW1lOwoJCXNlbGYgLT4gJ3Rh
Z3RpbWUnPWludGVnZXI6ICN0aW1lcjsgLy8gY2FzdCB0byBpbnRlZ2VyIHRv
IHRyaWdnZXIgb25jb252ZXJ0IGFuZCB0byAic3RvcCB0aW1lciIKCQlyZXR1
cm46IEAjb3V0cHV0OwoJL2RlZmluZV90YWc7CgkKCQoJZGVmaW5lX3RhZzog
J3JlbmRlcmhlYWRlcicsIC1kZXNjcmlwdGlvbj0nT3V0cHV0cyB0aGUgaGVh
ZGVyIG9mIHRoZSBncmlkIHdpdGggdGhlIGNvbHVtbiBoZWFkaW5ncy4gXAoJ
CQlBdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGJ5IC0+cmVuZGVyaHRtbC4gXG5c
CgkJCVBhcmFtZXRlcnM6XG5cCgkJCS1zdGFydCAob3B0aW9uYWwgZmxhZykg
QWxzbyBvdXRwdXQgb3BlbmluZyA8dGFibGU+IHRhZycsCgkJLW9wdGlvbmFs
PSdzdGFydCcsCgkJLW9wdGlvbmFsPSd4aHRtbCcsCgkJLW9wdGlvbmFsID0g
J3N0YXJ0d2l0aGZvb3Rlcic7CgkJbG9jYWw6ICd0aW1lcic9a25vcF90aW1l
cjsgCgkJbG9jYWw6ICdvdXRwdXQnPXN0cmluZywgCgkJCSdkYic9QChzZWxm
IC0+ICdkYXRhYmFzZScpLCAKCQkJJ25hdic9QChzZWxmIC0+ICduYXYnKSwK
CQkJJ2ZpZWxkcyc9QChzZWxmIC0+ICdmaWVsZHMnKSwgCgkJCSdmaWVsZCc9
c3RyaW5nLAoJCQknY2xhc3NhcnJheSc9YXJyYXksCgkJCSdfeGh0bWwnID0g
KChsb2NhbF9kZWZpbmVkOiAneGh0bWwnKSAmJiAjeGh0bWwgIT0gZmFsc2Up
ID8gdHJ1ZSB8IGZhbHNlLAoJCQknbGFuZyc9QChzZWxmIC0+ICdsYW5nJyk7
CgkJbG9jYWxfZGVmaW5lZCgnc3RhcnR3aXRoZm9vdGVyJykgJiYgI3N0YXJ0
d2l0aGZvb3RlciAhPSBmYWxzZSA/ICNzdGFydHdpdGhmb290ZXIgPSB0cnVl
IHwgbG9jYWwoJ3N0YXJ0d2l0aGZvb3RlcicpID0gZmFsc2U7CgoKCQkobG9j
YWxfZGVmaW5lZDogJ3N0YXJ0JykgPyAjb3V0cHV0ICs9ICc8dGFibGUgaWQ9
IicgKyAoc2VsZiAtPiAndGJsX2lkJykgKyAnIiBjbGFzcz0iZ3JpZCcgKyAo
c2VsZiAtPiAnY2xhc3MnIC0+IHNpemUgPiAwID8gJyAnICsgc2VsZiAtPiAn
Y2xhc3MnKSArICciPic7CgkJI291dHB1dCArPSAnPHRoZWFkPlxuPHRyPic7
CgkJaWY6IChzZWxmIC0+ICdxdWlja3NlYXJjaF9mb3JtJykgLT4gdHlwZSA9
PSAnZm9ybSc7CgkJCSNvdXRwdXQgKz0gJzx0aCBjb2xzcGFuPSInICsgKCNm
aWVsZHMgLT4gc2l6ZSkgKyAnIiBjbGFzcz0icXVpY2tzZWFyY2gnOwoJCQkJ
KChzZWxmIC0+ICdxdWlja3NlYXJjaF9mb3JtJykgLT4gKGdldHZhbHVlOiAn
LXEnKSAhPSAnJykgPyAjb3V0cHV0ICs9ICcgaGlnaGxpZ2h0JzsKCQkJI291
dHB1dCArPSAnIj4nOwoKCQkJaWY6IChzZWxmIC0+ICdyYXdoZWFkZXInKSAt
PiBzaXplID4gMCA7CgkJCQkjb3V0cHV0ICs9IChzZWxmIC0+ICdyYXdoZWFk
ZXInKTsKCQkJL2lmOwoKCgkJCSNvdXRwdXQgKz0gKHNlbGYgLT4gJ3F1aWNr
c2VhcmNoX2Zvcm0nKSAtPiAocmVuZGVyZm9ybTogLXhodG1sID0gI194aHRt
bCk7CgkJCWlmOiAoc2VsZiAtPiAncXVpY2tzZWFyY2hfZm9ybV9yZXNldCcp
IC0+IHR5cGUgPT0nZm9ybSc7CgkJCQkjb3V0cHV0ICs9IChzZWxmIC0+ICdx
dWlja3NlYXJjaF9mb3JtX3Jlc2V0JykgLT4gKHJlbmRlcmZvcm06IC14aHRt
bCA9ICNfeGh0bWwpOwoJCQkvaWY7CgkJCSNvdXRwdXQgKz0gJzwvdGg+PC90
cj5cbjx0cj4nOwoJCWVsc2UoKHNlbGYgLT4gJ3Jhd2hlYWRlcicpIC0+IHNp
emUgPiAwKTsKCQkJI291dHB1dCArPSAnPHRoIGNvbHNwYW49IicgKyAoI2Zp
ZWxkcyAtPiBzaXplKSArICciPic7CgkJCSNvdXRwdXQgKz0gKHNlbGYgLT4g
J3Jhd2hlYWRlcicpOwoJCQkjb3V0cHV0ICs9ICc8L3RoPjwvdHI+XG48dHI+
JzsKCQkvaWY7CgoJCWlmKCNzdGFydHdpdGhmb290ZXIpOwoJCQkjb3V0cHV0
ICs9IHNlbGYgLT4gJ2Zvb3Rlcic7CgkJL2lmOwoKCQlpdGVyYXRlOiAjZmll
bGRzLCAjZmllbGQ7CgkJCSNjbGFzc2FycmF5PWFycmF5OwoJCQkvLyhzZWxm
IC0+ICdxdWlja3NlYXJjaF9mb3JtJykgLT4gdHlwZSA9PSAnZm9ybScgPyAj
Y2xhc3NhcnJheSAtPiAoaW5zZXJ0OiAnbm90b3Bib3JkZXInKTsKCQkJaWY6
ICEoc2VsZiAtPiAnbm9zb3J0Jyk7CgkJCQkoc2VsZiAtPiAnc29ydGZpZWxk
JykgPT0gKCNmaWVsZCAtPiAoZmluZDogJ25hbWUnKSkgCgkJCQkJJiYgISgj
ZmllbGQgLT4gKGZpbmQ6ICdub3NvcnQnKSkgPyAjY2xhc3NhcnJheSAtPiAo
aW5zZXJ0OiAnc29ydCcpOwoJCQkvaWY7CgkJCSNvdXRwdXQgKz0gJzx0aCc7
CgkJCWlmOiAjZmllbGQgLT4gKGZpbmQ6ICd3aWR0aCcpID4gMDsKCQkJCSNv
dXRwdXQgKz0gJyBzdHlsZT0id2lkdGg6ICcgKyAoaW50ZWdlcjogI2ZpZWxk
IC0+IChmaW5kOiAnd2lkdGgnKSkgKyAncHg7Iic7CgkJCS9pZjsKCQkJLy8g
QWRkZWQgYnkgSm9sbGUgMDgxMTI3IHRvIGhhbmRsZSB0ZCBzcGVjaWZpYyBj
bGFzc2VzCgkJCSgjZmllbGQgLT4gZmluZCgnY2xhc3MnKSAtPiBzaXplID8g
I2NsYXNzYXJyYXkgLT4gaW5zZXJ0KCAjZmllbGQgLT4gZmluZCgnY2xhc3Mn
KSkpOwoJCQlpZjogI2NsYXNzYXJyYXkgLT4gc2l6ZTsKCQkJCSNvdXRwdXQg
Kz0gJyBjbGFzcz0iJyArICNjbGFzc2FycmF5IC0+IChqb2luOiAnICcpICsg
JyInOwoJCQkvaWY7CgkJCSNvdXRwdXQgKz0gJz4nOwoJCQlpZjogKCNmaWVs
ZCAtPiAoZmluZDogJ25vc29ydCcpKSB8fCAoc2VsZiAtPiAnbm9zb3J0Jyk7
CgkJCQkjb3V0cHV0ICs9ICc8ZGl2PicgKyAoI2ZpZWxkIC0+IChmaW5kOiAn
bGFiZWwnKSkgJzwvZGl2Pic7CgkJCWVsc2U7CgkJCQlpZjogKCNjbGFzc2Fy
cmF5ID4+ICdzb3J0JyAmJiAoc2VsZiAtPiAnc29ydGRlc2NlbmRpbmcnKSAm
JiAoc2VsZiAtPiAnZGVmYXVsdHNvcnQnKSA9PSAnJyk7CgkJCQkJLy8gY3Jl
YXRlIGxpbmsgdG8gY2hhbmdlIHRvIHVuc29ydGVkCgkJCQkJaWY6ICNuYXYg
LT4gaXNhKCduYXYnKTsKCQkJCQkJI291dHB1dCArPSAnPGEgaHJlZj0iJyAr
ICNuYXYgLT4gdXJsKC1hdXRvcGFyYW1zLCAtZ2V0YXJncywgLWV4Y2VwdD0o
YXJyYXk6IC1zb3J0LCAtZGVzYywgLXBhZ2UsIC1wYXRoKSkgKyAnIicKCQkJ
CQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0bGVfc2hvd3Vu
c29ydGVkKSArICciPic7CgkJCQkJZWxzZTsKCQkJCQkJI291dHB1dCArPSAn
PGEgaHJlZj0iLi8nCgkJCQkJCQkrIChzZWxmIC0+ICh1cmxhcmdzOiAtZXhj
ZXB0PShhcnJheTogLXNvcnQsIC1kZXNjLCAtcGFnZSksIC1wcmVmaXg9Jz8n
KSkgKyAnIicKCQkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5r
dGl0bGVfc2hvd3Vuc29ydGVkKSArICciPic7CgkJCQkJL2lmOwoJCQkJZWxz
ZTsKCQkJCQkvLyBjcmVhdGUgbGluayB0byB0b2dnbGUgc29ydCBtb2RlCgkJ
CQkJaWY6ICNuYXYgLT4gaXNhKCduYXYnKTsKCQkJCQkJI291dHB1dCArPSAn
PGEgaHJlZj0iJyArICNuYXYgLT4gdXJsKC1hdXRvcGFyYW1zLCAtZ2V0YXJn
cywgLWV4Y2VwdD0oYXJyYXk6IC1zb3J0LCAtZGVzYywgLXBhZ2UsIC1wYXRo
KSwgCgkJCQkJCQktdXJsYXJncz0nLXNvcnQ9JyArICgjZmllbGQgLT4gKGZp
bmQ6ICduYW1lJykpCgkJCQkJCQkJKyAoI2NsYXNzYXJyYXkgPj4gJ3NvcnQn
ICYmICEoc2VsZiAtPiAnc29ydGRlc2NlbmRpbmcnKSA/ICcmYW1wOy1kZXNj
JykpICsgJyInCgkJCQkJCQkrICcgdGl0bGU9IicgKyAoI2NsYXNzYXJyYXkg
Pj4gJ3NvcnQnIAoJCQkJCQkJCT8gICgjbGFuZyAtPiBsaW5rdGl0bGVfY2hh
bmdlc29ydCkgKyAnICcgCgkJCQkJCQkJCSsgKChzZWxmIC0+ICdzb3J0ZGVz
Y2VuZGluZycpID8gKCNsYW5nIC0+IGxpbmt0aXRsZV9hc2NlbmRpbmcpIHwg
KCNsYW5nIC0+IGxpbmt0aXRsZV9kZXNjZW5kaW5nKSkKCQkJCQkJCQl8ICgj
bGFuZyAtPiBsaW5rdGl0bGVfc29ydGFzY2J5KSArICcgJyArIChlbmNvZGVf
aHRtbDogKCNmaWVsZCAtPiAoZmluZDogJ2xhYmVsJykpKSApICsgJyI+JzsK
CQkJCQllbHNlOwoJCQkJCQkjb3V0cHV0ICs9ICc8YSBocmVmPSIuLz8tc29y
dD0nICsgKCNmaWVsZCAtPiAoZmluZDogJ25hbWUnKSkgCgkJCQkJCQkrICgj
Y2xhc3NhcnJheSA+PiAnc29ydCcgJiYgIShzZWxmIC0+ICdzb3J0ZGVzY2Vu
ZGluZycpID8gJyZhbXA7LWRlc2MnKSAKCQkJCQkJCSsgKHNlbGYgLT4gKHVy
bGFyZ3M6IC1leGNlcHQ9KGFycmF5OiAtc29ydCwgLWRlc2MsIC1wYWdlKSwg
LXByZWZpeD0nJmFtcDsnKSkgKyAnIicKCQkJCQkJCSsgJyB0aXRsZT0iJyAr
ICgjY2xhc3NhcnJheSA+PiAnc29ydCcgCgkJCQkJCQkJPyAgKCNsYW5nIC0+
IGxpbmt0aXRsZV9jaGFuZ2Vzb3J0KSArICcgJyAKCQkJCQkJCQkJKyAoKHNl
bGYgLT4gJ3NvcnRkZXNjZW5kaW5nJykgPyAoI2xhbmcgLT4gbGlua3RpdGxl
X2FzY2VuZGluZykgfCAoI2xhbmcgLT4gbGlua3RpdGxlX2Rlc2NlbmRpbmcp
KQoJCQkJCQkJCXwgKCNsYW5nIC0+IGxpbmt0aXRsZV9zb3J0YXNjYnkpICsg
JyAnICsgKGVuY29kZV9odG1sOiAoI2ZpZWxkIC0+IChmaW5kOiAnbGFiZWwn
KSkpICkgKyAnIj4nOwoJCQkJCS9pZjsKCQkJCS9pZjsKCQkJCSNvdXRwdXQg
Kz0gKCNmaWVsZCAtPiAoZmluZDogJ2xhYmVsJykpOwoJCQkJaWY6IChzdHJp
bmdfZmluZHJlZ2V4cDogKCNmaWVsZCAtPiAoZmluZDogJ2xhYmVsJykpLCAt
ZmluZD0nXFxTJykgLT4gc2l6ZSA9PSAwOwoJCQkJCSNvdXRwdXQgKz0gJyZu
YnNwOyc7IC8vIHRvIHNob3cgc29ydCBsaW5rIGFzIGJsb2NrIGVsZW1lbnQg
cHJvcGVybHkgZXZlbiBmb3IgZW1wdHkgbGFiZWwKCQkJCS9pZjsKCQkJCWlm
OiAjY2xhc3NhcnJheSA+PiAnc29ydCc7CgkJCQkJI291dHB1dCArPSAnIDxz
cGFuIGNsYXNzPSJzb3J0bWFya2VyIj4gJyArICgoc2VsZiAtPiAnc29ydGRl
c2NlbmRpbmcnKSA/ICcmIzk2NjA7JyB8ICcmIzk2NTA7JykgKyAnPC9zcGFu
Pic7CgkJCQkvaWY7CgkJCQkjb3V0cHV0ICs9ICc8L2E+JzsKCQkJIC9pZjsK
CQkJICNvdXRwdXQgKz0gJzwvdGg+XG4nOwoJCS9pdGVyYXRlOwoJCSNvdXRw
dXQgKz0gJzwvdHI+XG48L3RoZWFkPlxuJzsKCQlzZWxmIC0+ICd0YWd0aW1l
X3RhZ25hbWUnPXRhZ19uYW1lOwoJCXNlbGYgLT4gJ3RhZ3RpbWUnPWludGVn
ZXI6ICN0aW1lcjsgLy8gY2FzdCB0byBpbnRlZ2VyIHRvIHRyaWdnZXIgb25j
b252ZXJ0IGFuZCB0byAic3RvcCB0aW1lciIKCQlyZXR1cm46IEAjb3V0cHV0
OwoJL2RlZmluZV90YWc7CgoJZGVmaW5lX3RhZzogJ3JlbmRlcmZvb3Rlcics
IC1kZXNjcmlwdGlvbj0nT3V0cHV0cyB0aGUgZm9vdGVyIG9mIHRoZSBncmlk
IHdpdGggdGhlIHByZXYvbmV4dCBsaW5rcyBhbmQgaW5mb3JtYXRpb24gYWJv
dXQgZm91bmQgY291bnQuIFwKCQkJQXV0b21hdGljYWxseSBpbmNsdWRlZCBi
eSAtPnJlbmRlcmh0bWxcblwKCQkJUGFyYW1ldGVyczpcblwKCQkJLWVuZCAo
b3B0aW9uYWwgZmxhZykgQWxzbyBvdXRwdXQgY2xvc2luZyA8L3RhYmxlPiB0
YWdcblwKCQkJLW51bWJlcmVkIChvcHRpb25hbCBmbGFnIG9yIGludGVnZXIp
IElmIHNwZWNpZmllZCwgcGFnaW5hdGlvbiBsaW5rcyB3aWxsIGJlIHNob3du
IGFzIHBhZ2UgbnVtYmVycyBpbnN0ZWFkIG9mIHJlZ3VsYXIgcHJldi9uZXh0
IGxpbmtzLiBEZWZhdWx0cyB0byA2IGxpbmtzLCBzcGVjaWZ5IGFub3RoZXIg
bnVtYmVyIChtaW5pbXVtIDYpIGlmIG1vcmUgbnVtYmVycyBhcmUgd2FudGVk
LicsCgkJLW9wdGlvbmFsPSdlbmQnLAoJCS1vcHRpb25hbD0nbnVtYmVyZWQn
LAoJCS1vcHRpb25hbD0neGh0bWwnOwoJCWxvY2FsOiAndGltZXInPWtub3Bf
dGltZXI7IAoJCWxvY2FsOiAnb3V0cHV0Jz1zdHJpbmcsIAoJCQknZGInPUAo
c2VsZiAtPiAnZGF0YWJhc2UnKSwgCgkJCSduYXYnPUAoc2VsZiAtPiAnbmF2
JyksCgkJCSdmaWVsZHMnPUAoc2VsZiAtPiAnZmllbGRzJyksIAoJCQknZmll
bGQnPXN0cmluZywKCQkJLy8nbnVtYmVyZWRwYWdpbmcnPSgoKGxvY2FsX2Rl
ZmluZWQ6ICdudW1iZXJlZCcpICYmICNudW1iZXJlZCAhPT0gZmFsc2UpID8g
aW50ZWdlcigjbnVtYmVyZWQpIHwgZmFsc2UpLAoJCQknX3hodG1sJyA9ICgo
bG9jYWxfZGVmaW5lZDogJ3hodG1sJykgJiYgI3hodG1sICE9IGZhbHNlKSA/
IHRydWUgfCBmYWxzZSwKCQkJJ2xhbmcnPUAoc2VsZiAtPiAnbGFuZycpLAoJ
CQkncGFnZSc9KHNlbGYgLT4gcGFnZSksCgkJCSdsYXN0cGFnZSc9KHNlbGYg
LT4gbGFzdHBhZ2UpLAoJCQkndXJsX2NhY2hlZCcsCgkJCSd1cmxfY2FjaGVk
X3RlbXAnOwoJCWlmKGxvY2FsX2RlZmluZWQoJ251bWJlcmVkJykpOwoJCQls
b2NhbCgnbnVtYmVyZWRwYWdpbmcnPSgoI251bWJlcmVkICE9PSBmYWxzZSkg
PyBpbnRlZ2VyKCNudW1iZXJlZCkgfCBmYWxzZSkpOwoJCWVsc2U7CgkJCWxv
Y2FsKCdudW1iZXJlZHBhZ2luZyc9KCgoc2VsZiAtPiAnbnVtYmVyZWQnKSAh
PT0gZmFsc2UpID8gaW50ZWdlcihzZWxmIC0+ICdudW1iZXJlZCcpIHwgZmFs
c2UpKTsKCQkvaWY7CgkJCQoJCWlmKCNuYXYgLT4gaXNhKCduYXYnKSk7CgkJ
CSN1cmxfY2FjaGVkPSNuYXYgLT4gdXJsKC1hdXRvcGFyYW1zLCAtZ2V0YXJn
cywgLWV4Y2VwdD0oYXJyYXk6IC1wYWdlLCAtcGF0aCksIAoJCQkJCS11cmxh
cmdzPSctcGFnZT0jIyNwYWdlIyMjJyk7CgkJL2lmOwoJCWlmOiAjbnVtYmVy
ZWRwYWdpbmcgIT09IGZhbHNlICYmICNudW1iZXJlZHBhZ2luZyA8IDY7CgkJ
CS8vIHNob3cgMTAgcGFnZSBudW1iZXJzIGFzIGRlZmF1bHQKCQkJI251bWJl
cmVkcGFnaW5nID0gNjsKCQkvaWY7CgkJaWY6ICNudW1iZXJlZHBhZ2luZzsK
CQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gZXZlbiBudW1iZXIKCQkJI251
bWJlcmVkcGFnaW5nICs9ICNudW1iZXJlZHBhZ2luZyAlIDI7CgkJL2lmOwoJ
CQoJCSNvdXRwdXQgKz0gJzx0Ym9keT5cbjx0cj48dGggY29sc3Bhbj0iJyAr
ICgjZmllbGRzIC0+IHNpemUpICsgJyIgY2xhc3M9ImZvb3RlciBmaXJzdCcg
ICsgJyI+JzsKCQkvKiBub3QgdXNlZAoJCWlmOiAjbmF2IC0+IGlzYSgnbmF2
Jyk7CgkJCWxvY2FsOiAndXJsJz0jbmF2IC0+IHVybCgtYXV0b3BhcmFtcywg
LWdldGFyZ3MsIC1leGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAtdXJs
YXJncz0nLXBhZ2U9JyksCgkJCQkndXJsX3ByZWZpeCc9KCNuYXYgLT4gJ25h
dm1ldGhvZCcgPT0gJ3BhcmFtJyA/ICcmYW1wOycgfCAnPycpOwoJCWVsc2U7
CgkJCWxvY2FsOiAndXJsJz0nLi8nICsgKHNlbGYgLT4gKHVybGFyZ3M6IC1l
eGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAtc3VmZml4PScmYW1wOycp
KSwKCQkJCSd1cmxfcHJlZml4Jz0nPyc7CgkJL2lmOwoJCSovCi8vIEpDIDIw
MTAtMDUtMTQgYWRkZWQgc3BhbiBzZXBhcmF0aW9uIGZvciBiZXR0ZXIgc3R5
bGluZwoJCWlmOiAjbnVtYmVyZWRwYWdpbmc7CgkJCWxvY2FsOiAncGFnZV9m
cm9tJz0xLAoJCQkJJ3BhZ2VfdG8nPSNsYXN0cGFnZTsKCQkJaWY6ICNsYXN0
cGFnZSA+ICNudW1iZXJlZHBhZ2luZzsKCQkJCSNwYWdlX2Zyb209I3BhZ2Ug
LSAoI251bWJlcmVkcGFnaW5nLzIgLSAxKTsKCQkJCSNwYWdlX3RvPSNwYWdl
ICsgKCNudW1iZXJlZHBhZ2luZy8yKTsKCQkJCWlmOiAjcGFnZV9mcm9tIDwg
MTsKCQkJCQkjcGFnZV90byArPSAoMSAtICNwYWdlX2Zyb20pOwoJCQkJCSNw
YWdlX2Zyb20gPSAxOwoJCQkJL2lmOwoJCQkJaWY6ICNwYWdlX3RvID4gI2xh
c3RwYWdlOwoJCQkJCSNwYWdlX2Zyb20gPSAjbGFzdHBhZ2UgLSAoI251bWJl
cmVkcGFnaW5nIC0gMSk7CgkJCQkJI3BhZ2VfdG8gPSAjbGFzdHBhZ2U7CgkJ
CQkvaWY7CgkJCS9pZjsKCQkJI291dHB1dCArPSAnPHNwYW4gY2xhc3M9ImZv
dW5kY291bnQiPicgKyAjZGIgLT4gZm91bmRfY291bnQgKyAnICcgKyAoI2xh
bmcgLT4gZm9vdGVyX2ZvdW5kKSArICc8L3NwYW4+ICYjODIxMjsgPHNwYW4g
Y2xhc3M9InBhZ2luYXRpb24iPicgKyAoI2xhbmcgLT4gZ290b3BhZ2UpICsg
JzogJzsgLy8gU1AgY3VzdG9taXphdGlvbgoJCQlpZjogI3BhZ2UgPiAxOwoJ
CQkJaWY6ICN1cmxfY2FjaGVkIC0+IHNpemU7CgkJCQkJI3VybF9jYWNoZWRf
dGVtcD0jdXJsX2NhY2hlZDsKCQkJCQkvLyAyMDEwLTEyLTIzCVNQCUNvcnJl
Y3RlZCBwYWdpbmF0aW9uIGJ1ZyBmb3IgLW51bWJlcmVkLgoJCQkJCSN1cmxf
Y2FjaGVkX3RlbXAgLT4gcmVwbGFjZSgnLXBhZ2U9IyMjcGFnZSMjIycsICct
cGFnZT0nICsgMSk7CgkJCQkJLyojb3V0cHV0ICs9ICcgPGEgaHJlZj0iJyAr
ICNuYXYgLT4gdXJsKC1hdXRvcGFyYW1zLCAtZ2V0YXJncywgLWV4Y2VwdD0o
YXJyYXk6IC1wYWdlLCAtcGF0aCksIAoJCQkJCQktdXJsYXJncz0nLXBhZ2U9
JyArICgjcGFnZSAtIDEpKSArICciIGNsYXNzPSJwcmV2bmV4dCBwcmV2IicK
CQkJCQkJKyAnIHRpdGxlPSInICsgKCNsYW5nIC0+IGxpbmt0aXRsZV9nb3By
ZXYpICsgJyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9wcmV2KSArICc8L2E+
ICc7Ki8KCQkJCQkjb3V0cHV0ICs9ICcgPGEgaHJlZj0iJyArICN1cmxfY2Fj
aGVkX3RlbXAgKyAnIiBjbGFzcz0icHJldm5leHQgZmlyc3QiJwoJCQkJCQkr
ICcgdGl0bGU9IicgKyAoI2xhbmcgLT4gbGlua3RpdGxlX2dvZmlyc3QpICsg
JyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9maXJzdCkgKyAnPC9hPiAnOwoK
CQkJCQkjdXJsX2NhY2hlZF90ZW1wPSN1cmxfY2FjaGVkOwoJCQkJCSN1cmxf
Y2FjaGVkX3RlbXAgLT4gcmVwbGFjZSgnLXBhZ2U9IyMjcGFnZSMjIycsICct
cGFnZT0nICsgKCNwYWdlIC0gMSkpOwoJCQkJCSNvdXRwdXQgKz0gJyA8YSBo
cmVmPSInICsgI3VybF9jYWNoZWRfdGVtcCArICciIGNsYXNzPSJwcmV2bmV4
dCBwcmV2IicKCQkJCQkJKyAnIHRpdGxlPSInICsgKCNsYW5nIC0+IGxpbmt0
aXRsZV9nb3ByZXYpICsgJyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9wcmV2
KSArICc8L2E+ICc7CgkJCQllbHNlOwoJCQkJCSNvdXRwdXQgKz0gJyA8YSBo
cmVmPSIuLz8nICsgKHNlbGYgLT4gKHVybGFyZ3M6IC1leGNlcHQ9KGFycmF5
OiAtcGFnZSwgLXBhdGgpLCAtc3VmZml4PScmYW1wOycpKSAKCQkJCQkJKyAn
LXBhZ2U9MSIgY2xhc3M9InByZXZuZXh0IGZpcnN0IicKCQkJCQkJKyAnIHRp
dGxlPSInICsgKCNsYW5nIC0+IGxpbmt0aXRsZV9nb2ZpcnN0KSArICciPicg
KyAoI2xhbmcgLT4gbGlua3RleHRfZmlyc3QpICsgJzwvYT4gJzsKCQkJCQkj
b3V0cHV0ICs9ICcgPGEgaHJlZj0iLi8/JyArIChzZWxmIC0+ICh1cmxhcmdz
OiAtZXhjZXB0PShhcnJheTogLXBhZ2UsIC1wYXRoKSwgLXN1ZmZpeD0nJmFt
cDsnKSkgCgkJCQkJCSsgJy1wYWdlPScgKyAoI3BhZ2UgLSAxKSArICciIGNs
YXNzPSJwcmV2bmV4dCBwcmV2IicKCQkJCQkJKyAnIHRpdGxlPSInICsgKCNs
YW5nIC0+IGxpbmt0aXRsZV9nb3ByZXYpICsgJyI+JyArICgjbGFuZyAtPiBs
aW5rdGV4dF9wcmV2KSArICc8L2E+ICc7CgkJCQkvaWY7CgkJCWVsc2U7CgkJ
CQkvLyNvdXRwdXQgKz0gJyA8c3BhbiBjbGFzcz0icHJldm5leHQgcHJldiBk
aW0iPicgKyAoI2xhbmcgLT4gbGlua3RleHRfcHJldikgKyAnPC9zcGFuPiAn
OwoJCQkvaWY7CgkJCWlmOiAjcGFnZV9mcm9tID4gMTsKCQkJCWlmOiAjdXJs
X2NhY2hlZCAtPiBzaXplOwoJCQkJCSN1cmxfY2FjaGVkX3RlbXA9I3VybF9j
YWNoZWQ7CgkJCQkJI3VybF9jYWNoZWRfdGVtcCAtPiByZXBsYWNlKCctcGFn
ZT0jIyNwYWdlIyMjJywgJy1wYWdlPScgKyAxKTsKCQkJCQkvKiNvdXRwdXQg
Kz0gJyA8YSBocmVmPSInICsgI25hdiAtPiB1cmwoLWF1dG9wYXJhbXMsIC1n
ZXRhcmdzLCAtZXhjZXB0PShhcnJheTogLXBhZ2UsIC1wYXRoKSwKCQkJCQkJ
LXVybGFyZ3M9Jy1wYWdlPTEnKSArICciIGNsYXNzPSJwcmV2bmV4dCBudW1i
ZXJlZCBmaXJzdCI+MTwvYT4nOyovCgkJCQkJI291dHB1dCArPSAnIDxhIGhy
ZWY9IicgKyAjdXJsX2NhY2hlZF90ZW1wICsgJyIgY2xhc3M9InByZXZuZXh0
IG51bWJlcmVkIGZpcnN0Ij4xPC9hPic7CgkJCQllbHNlOwoJCQkJCSNvdXRw
dXQgKz0gJyA8YSBocmVmPSIuLz8nICsgKHNlbGYgLT4gKHVybGFyZ3M6IC1l
eGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAtc3VmZml4PScmYW1wOycp
KSAKCQkJCQkJKyAnLXBhZ2U9MSIgY2xhc3M9InByZXZuZXh0IG51bWJlcmVk
IGZpcnN0Ij4xPC9hPiAnOwoJCQkJL2lmOwoJCQkJaWY6ICNwYWdlX2Zyb20g
PiAyOwoJCQkJCSNvdXRwdXQgKz0nLi4uJzsKCQkJCS9pZjsKCQkJL2lmOwoJ
CQlsb29wOiAtZnJvbT0jcGFnZV9mcm9tLCAtdG89I3BhZ2VfdG87CgkJCQlp
ZjogbG9vcF9jb3VudCA9PSAjcGFnZTsKCQkJCQkjb3V0cHV0ICs9ICcgPHNw
YW4gY2xhc3M9Im51bWJlcmVkIGN1cnJlbnQiPicgKyBsb29wX2NvdW50ICsg
Jzwvc3Bhbj4gJzsKCQkJCWVsc2U7CgkJCQkJaWY6ICN1cmxfY2FjaGVkIC0+
IHNpemU7CgkJCQkJCSN1cmxfY2FjaGVkX3RlbXA9I3VybF9jYWNoZWQ7CgkJ
CQkJCSN1cmxfY2FjaGVkX3RlbXAgLT4gcmVwbGFjZSgnLXBhZ2U9IyMjcGFn
ZSMjIycsICctcGFnZT0nICsgbG9vcF9jb3VudCk7CgkJCQkJCS8qI291dHB1
dCArPSAnIDxhIGhyZWY9IicgKyAjbmF2IC0+IHVybCgtYXV0b3BhcmFtcywg
LWdldGFyZ3MsIC1leGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLAoJCQkJ
CQkJLXVybGFyZ3M9Jy1wYWdlPScgKyBsb29wX2NvdW50KSArICciIGNsYXNz
PSJwcmV2bmV4dCBudW1iZXJlZCI+JyArIGxvb3BfY291bnQgKyAnPC9hPiAn
OyovCgkJCQkJCSNvdXRwdXQgKz0gJyA8YSBocmVmPSInICsgI3VybF9jYWNo
ZWRfdGVtcCArICciIGNsYXNzPSJwcmV2bmV4dCBudW1iZXJlZCI+JyArIGxv
b3BfY291bnQgKyAnPC9hPiAnOwoJCQkJCWVsc2U7CgkJCQkJCSNvdXRwdXQg
Kz0gJyA8YSBocmVmPSIuLz8nICsgKHNlbGYgLT4gKHVybGFyZ3M6IC1leGNl
cHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAtc3VmZml4PScmYW1wOycpKSAK
CQkJCQkJCSsgJy1wYWdlPScgKyBsb29wX2NvdW50ICsgJyIgY2xhc3M9InBy
ZXZuZXh0IG51bWJlcmVkIj4nICsgbG9vcF9jb3VudCArICc8L2E+ICc7CgkJ
CQkJL2lmOwoJCQkJL2lmOwoJCQkvbG9vcDsKCQkJaWY6ICNwYWdlX3RvIDwg
I2xhc3RwYWdlOwoJCQkJaWY6ICNwYWdlX3RvIDwgKCNsYXN0cGFnZSAtIDEp
OwoJCQkJCSNvdXRwdXQgKz0gJy4uLic7CgkJCQkvaWY7CgkJCQlpZjogI3Vy
bF9jYWNoZWQgLT4gc2l6ZTsKCQkJCQkjdXJsX2NhY2hlZF90ZW1wPSN1cmxf
Y2FjaGVkOwoJCQkJCSN1cmxfY2FjaGVkX3RlbXAgLT4gcmVwbGFjZSgnLXBh
Z2U9IyMjcGFnZSMjIycsICctcGFnZT0nICsgI2xhc3RwYWdlKTsKCQkJCQkv
KiNvdXRwdXQgKz0gJyA8YSBocmVmPSInICsgI25hdiAtPiB1cmwoLWF1dG9w
YXJhbXMsIC1nZXRhcmdzLCAtZXhjZXB0PShhcnJheTogLXBhZ2UsIC1wYXRo
KSwKCQkJCQkJLXVybGFyZ3M9Jy1wYWdlPScgKyAjbGFzdHBhZ2UpICsgJyIg
Y2xhc3M9InByZXZuZXh0IG51bWJlcmVkIGxhc3QiPicgKyAjbGFzdHBhZ2Ug
KyAnPC9hPiAnOyovCgkJCQkJI291dHB1dCArPSAnIDxhIGhyZWY9IicgKyAj
dXJsX2NhY2hlZF90ZW1wICsgJyIgY2xhc3M9InByZXZuZXh0IG51bWJlcmVk
IGxhc3QiPicgKyAjbGFzdHBhZ2UgKyAnPC9hPiAnOwoJCQkJZWxzZTsKCQkJ
CQkjb3V0cHV0ICs9ICcgPGEgaHJlZj0iLi8/JyArIChzZWxmIC0+ICh1cmxh
cmdzOiAtZXhjZXB0PShhcnJheTogLXBhZ2UsIC1wYXRoKSwgLXN1ZmZpeD0n
JmFtcDsnKSkgCgkJCQkJCSsgJy1wYWdlPScgKyAjbGFzdHBhZ2UgKyAnIiBj
bGFzcz0icHJldm5leHQgbnVtYmVyZWQgbGFzdCI+JyArICNsYXN0cGFnZSAr
ICc8L2E+ICc7CgkJCQkvaWY7CgkJCS9pZjsKCQoJCQlpZjogI3BhZ2UgPCAj
bGFzdHBhZ2U7CgkJCQlpZjogI3VybF9jYWNoZWQgLT4gc2l6ZTsKCQkJCQkj
dXJsX2NhY2hlZF90ZW1wPSN1cmxfY2FjaGVkOwoJCQkJCSN1cmxfY2FjaGVk
X3RlbXAgLT4gcmVwbGFjZSgnLXBhZ2U9IyMjcGFnZSMjIycsICctcGFnZT0n
ICsgKCNwYWdlICsgMSkpOwoJCQkJCS8qI291dHB1dCArPSAnIDxhIGhyZWY9
IicgKyAjbmF2IC0+IHVybCgtYXV0b3BhcmFtcywgLWdldGFyZ3MsIC1leGNl
cHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAKCQkJCQkJLXVybGFyZ3M9Jy1w
YWdlPScgKyAoI3BhZ2UgKyAxKSkgKyAnIiBjbGFzcz0icHJldm5leHQgbmV4
dCInCgkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0bGVf
Z29uZXh0KSArICciPicgKyAoI2xhbmcgLT4gbGlua3RleHRfbmV4dCkgKyAn
PC9hPiAnOyovCgkJCQkJI291dHB1dCArPSAnIDxhIGhyZWY9IicgKyAjdXJs
X2NhY2hlZF90ZW1wICsgJyIgY2xhc3M9InByZXZuZXh0IG5leHQiJwoJCQkJ
CQkrICcgdGl0bGU9IicgKyAoI2xhbmcgLT4gbGlua3RpdGxlX2dvbmV4dCkg
KyAnIj4nICsgKCNsYW5nIC0+IGxpbmt0ZXh0X25leHQpICsgJzwvYT4gJzsK
CgkJCQkJI3VybF9jYWNoZWRfdGVtcD0jdXJsX2NhY2hlZDsKCQkJCQkjdXJs
X2NhY2hlZF90ZW1wIC0+IHJlcGxhY2UoJy1wYWdlPSMjI3BhZ2UjIyMnLCAn
LXBhZ2U9JyArICNsYXN0cGFnZSk7CgkJCQkJI291dHB1dCArPSAnIDxhIGhy
ZWY9IicgKyAjdXJsX2NhY2hlZF90ZW1wICsgJyIgY2xhc3M9InByZXZuZXh0
IGxhc3QiJwoJCQkJCQkrICcgdGl0bGU9IicgKyAoI2xhbmcgLT4gbGlua3Rp
dGxlX2dvbGFzdCkgKyAnIj4nICsgKCNsYW5nIC0+IGxpbmt0ZXh0X2xhc3Qp
ICsgJzwvYT4gJzsKCQkJCWVsc2U7CgkJCQkJI291dHB1dCArPSAnIDxhIGhy
ZWY9Ii4vPycgKyAoc2VsZiAtPiAodXJsYXJnczogLWV4Y2VwdD0oYXJyYXk6
IC1wYWdlLCAtcGF0aCksIC1zdWZmaXg9JyZhbXA7JykpIAoJCQkJCQkrICct
cGFnZT0nICsgKCNwYWdlICsgMSkgKyAnIiBjbGFzcz0icHJldm5leHQgbmV4
dCInCgkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0bGVf
Z29uZXh0KSArICciPicgKyAoI2xhbmcgLT4gbGlua3RleHRfbmV4dCkgKyAn
PC9hPiAnOwoJCQkJCSNvdXRwdXQgKz0gJyA8YSBocmVmPSIuLz8nICsgKHNl
bGYgLT4gKHVybGFyZ3M6IC1leGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgp
LCAtc3VmZml4PScmYW1wOycpKSAKCQkJCQkJKyAnLXBhZ2U9JyArICNsYXN0
cGFnZSArICciIGNsYXNzPSJwcmV2bmV4dCBsYXN0IicKCQkJCQkJKyAnIHRp
dGxlPSInICsgKCNsYW5nIC0+IGxpbmt0aXRsZV9nb2xhc3QpICsgJyI+JyAr
ICgjbGFuZyAtPiBsaW5rdGV4dF9sYXN0KSArICc8L2E+ICc7CgkJCQkvaWY7
CgkJCWVsc2U7CgkJCQkvLyNvdXRwdXQgKz0gJyA8c3BhbiBjbGFzcz0icHJl
dm5leHQgbmV4dCBkaW0iPicgKyAoI2xhbmcgLT4gbGlua3RleHRfbmV4dCkg
KyAnPC9zcGFuPiAnOwoJCQkvaWY7CgkJCgkJCSNvdXRwdXQgKz0gJzwvc3Bh
bj4gJzsKCQkKCQkKCQllbHNlOyAgLy8gcmVndWxhciBwcmV2L25leHQgbGlu
a3MKCQkKCQkKCQkJaWY6ICNwYWdlID4gMTsKCQkJCWlmOiAjdXJsX2NhY2hl
ZCAtPiBzaXplOwoJCQkJCSN1cmxfY2FjaGVkX3RlbXA9I3VybF9jYWNoZWQ7
CgkJCQkJI3VybF9jYWNoZWRfdGVtcCAtPiByZXBsYWNlKCctcGFnZT0jIyNw
YWdlIyMjJywgJy1wYWdlPScgKyAxKTsKCQkJCQkvKiNvdXRwdXQgKz0gJyA8
YSBocmVmPSInICsgI25hdiAtPiB1cmwoLWF1dG9wYXJhbXMsIC1nZXRhcmdz
LCAtZXhjZXB0PShhcnJheTogLXBhZ2UsIC1wYXRoKSwKCQkJCQkJLXVybGFy
Z3M9Jy1wYWdlPTEnKSArICciIGNsYXNzPSJwcmV2bmV4dCBmaXJzdCInCgkJ
CQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0bGVfZ29maXJz
dCkgKyAnIj4nICsgKCNsYW5nIC0+IGxpbmt0ZXh0X2ZpcnN0KSArICc8L2E+
ICc7Ki8KCQkJCQkjb3V0cHV0ICs9ICcgPGEgaHJlZj0iJyArICN1cmxfY2Fj
aGVkX3RlbXAgKyAnIiBjbGFzcz0icHJldm5leHQgZmlyc3QiJwoJCQkJCQkr
ICcgdGl0bGU9IicgKyAoI2xhbmcgLT4gbGlua3RpdGxlX2dvZmlyc3QpICsg
JyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9maXJzdCkgKyAnPC9hPiAnOwoJ
CQoJCQkJCSN1cmxfY2FjaGVkX3RlbXA9I3VybF9jYWNoZWQ7CgkJCQkJI3Vy
bF9jYWNoZWRfdGVtcCAtPiByZXBsYWNlKCctcGFnZT0jIyNwYWdlIyMjJywg
Jy1wYWdlPScgKyAoI3BhZ2UgLSAxKSk7CgkJCQkJI291dHB1dCArPSAnIDxh
IGhyZWY9IicgKyAjdXJsX2NhY2hlZF90ZW1wICsgJyIgY2xhc3M9InByZXZu
ZXh0IHByZXYiJwoJCQkJCQkrICcgdGl0bGU9IicgKyAoI2xhbmcgLT4gbGlu
a3RpdGxlX2dvcHJldikgKyAnIj4nICsgKCNsYW5nIC0+IGxpbmt0ZXh0X3By
ZXYpICsgJzwvYT4gJzsKCQkJCWVsc2U7CgkJCQkJI291dHB1dCArPSAnIDxh
IGhyZWY9Ii4vPycgKyAoc2VsZiAtPiAodXJsYXJnczogLWV4Y2VwdD0oYXJy
YXk6IC1wYWdlLCAtcGF0aCksIC1zdWZmaXg9JyZhbXA7JykpIAoJCQkJCQkr
ICctcGFnZT0xIiBjbGFzcz0icHJldm5leHQgZmlyc3QiJwoJCQkJCQkrICcg
dGl0bGU9IicgKyAoI2xhbmcgLT4gbGlua3RpdGxlX2dvZmlyc3QpICsgJyI+
JyArICgjbGFuZyAtPiBsaW5rdGV4dF9maXJzdCkgKyAnPC9hPiAnOwoJCQoJ
CQkJCSNvdXRwdXQgKz0gJyA8YSBocmVmPSIuLz8nICsgKHNlbGYgLT4gKHVy
bGFyZ3M6IC1leGNlcHQ9KGFycmF5OiAtcGFnZSwgLXBhdGgpLCAtc3VmZml4
PScmYW1wOycpKSAKCQkJCQkJKyAnLXBhZ2U9JyArICgjcGFnZSAtIDEpICsg
JyIgY2xhc3M9InByZXZuZXh0IHByZXYiJwoJCQkJCQkrICcgdGl0bGU9Iicg
KyAoI2xhbmcgLT4gbGlua3RpdGxlX2dvcHJldikgKyAnIj4nICsgKCNsYW5n
IC0+IGxpbmt0ZXh0X3ByZXYpICsgJzwvYT4gJzsKCQkJCS9pZjsKCQkJZWxz
ZTsKCQkJCSNvdXRwdXQgKz0gJyA8c3BhbiBjbGFzcz0icHJldm5leHQgZmly
c3QgZGltIj4nICsgKCNsYW5nIC0+IGxpbmt0ZXh0X2ZpcnN0KSArICc8L3Nw
YW4+IFwKCQkJCQkJCTxzcGFuIGNsYXNzPSJwcmV2bmV4dCBwcmV2IGRpbSI+
JyArICgjbGFuZyAtPiBsaW5rdGV4dF9wcmV2KSArICc8L3NwYW4+ICc7CgkJ
CS9pZjsKCQkJaWY6ICNkYiAtPiBmb3VuZF9jb3VudCA+ICNkYiAtPiBzaG93
bl9jb3VudDsKCQkJCSNvdXRwdXQgKz0gKCNsYW5nIC0+IChmb290ZXJfc2hv
d246IC1yZXBsYWNlPShhcnJheTogKCNkYiAtPiBzaG93bl9maXJzdCksICgj
ZGIgLT4gc2hvd25fbGFzdCkpKSkgKyAnICc7CgkJCS9pZjsKCQkJI291dHB1
dCArPSAjZGIgLT4gZm91bmRfY291bnQgKyAnICcgKyAoI2xhbmcgLT4gZm9v
dGVyX2ZvdW5kKTsKCQkJaWY6ICgjZGIgLT4gc2hvd25fbGFzdCkgPCAoI2Ri
IC0+IGZvdW5kX2NvdW50KTsKCQkJCWlmOiAjdXJsX2NhY2hlZCAtPiBzaXpl
OwoJCQkJCSN1cmxfY2FjaGVkX3RlbXA9I3VybF9jYWNoZWQ7CgkJCQkJI3Vy
bF9jYWNoZWRfdGVtcCAtPiByZXBsYWNlKCctcGFnZT0jIyNwYWdlIyMjJywg
Jy1wYWdlPScgKyAoI3BhZ2UgKyAxKSk7CgkJCQkJLyojb3V0cHV0ICs9ICcg
PGEgaHJlZj0iJyArICNuYXYgLT4gdXJsKC1hdXRvcGFyYW1zLCAtZ2V0YXJn
cywgLWV4Y2VwdD0oYXJyYXk6IC1wYWdlLCAtcGF0aCksIAoJCQkJCQktdXJs
YXJncz0nLXBhZ2U9JyArICgjcGFnZSArIDEpKSArICciIGNsYXNzPSJwcmV2
bmV4dCBuZXh0IicKCQkJCQkJKyAnIHRpdGxlPSInICsgKCNsYW5nIC0+IGxp
bmt0aXRsZV9nb25leHQpICsgJyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9u
ZXh0KSArICc8L2E+ICc7Ki8KCQkJCQkjb3V0cHV0ICs9ICcgPGEgaHJlZj0i
JyArICN1cmxfY2FjaGVkX3RlbXAgKyAnIiBjbGFzcz0icHJldm5leHQgbmV4
dCInCgkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0bGVf
Z29uZXh0KSArICciPicgKyAoI2xhbmcgLT4gbGlua3RleHRfbmV4dCkgKyAn
PC9hPiAnOwoKCQkJCQkjdXJsX2NhY2hlZF90ZW1wPSN1cmxfY2FjaGVkOwoJ
CQkJCSN1cmxfY2FjaGVkX3RlbXAgLT4gcmVwbGFjZSgnLXBhZ2U9IyMjcGFn
ZSMjIycsICctcGFnZT0nICsgI2xhc3RwYWdlKTsKCQkJCQkjb3V0cHV0ICs9
ICcgPGEgaHJlZj0iJyArICN1cmxfY2FjaGVkX3RlbXAgKyAnIiBjbGFzcz0i
cHJldm5leHQgbGFzdCInCgkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAt
PiBsaW5rdGl0bGVfZ29sYXN0KSArICciPicgKyAoI2xhbmcgLT4gbGlua3Rl
eHRfbGFzdCkgKyAnPC9hPiAnOwoJCQkJZWxzZTsKCQkJCQkjb3V0cHV0ICs9
ICcgPGEgaHJlZj0iLi8/JyArIChzZWxmIC0+ICh1cmxhcmdzOiAtZXhjZXB0
PShhcnJheTogLXBhZ2UsIC1wYXRoKSwgLXN1ZmZpeD0nJmFtcDsnKSkgCgkJ
CQkJCSsgJy1wYWdlPScgKyAoI3BhZ2UgKyAxKSArICciIGNsYXNzPSJwcmV2
bmV4dCBuZXh0IicKCQkJCQkJKyAnIHRpdGxlPSInICsgKCNsYW5nIC0+IGxp
bmt0aXRsZV9nb25leHQpICsgJyI+JyArICgjbGFuZyAtPiBsaW5rdGV4dF9u
ZXh0KSArICc8L2E+ICc7CgkJCQkJI291dHB1dCArPSAnIDxhIGhyZWY9Ii4v
PycgKyAoc2VsZiAtPiAodXJsYXJnczogLWV4Y2VwdD0oYXJyYXk6IC1wYWdl
LCAtcGF0aCksIC1zdWZmaXg9JyZhbXA7JykpIAoJCQkJCQkrICctcGFnZT0n
ICsgKChzZWxmIC0+IGxhc3RwYWdlKSkgKyAnIiBjbGFzcz0icHJldm5leHQg
bGFzdCInCgkJCQkJCSsgJyB0aXRsZT0iJyArICgjbGFuZyAtPiBsaW5rdGl0
bGVfZ29sYXN0KSArICciPicgKyAoI2xhbmcgLT4gbGlua3RleHRfbGFzdCkg
KyAnPC9hPiAnOwoJCQkJL2lmOwoJCQllbHNlOwoJCQkJI291dHB1dCArPSAn
IDxzcGFuIGNsYXNzPSJwcmV2bmV4dCBuZXh0IGRpbSI+JyArICgjbGFuZyAt
PiBsaW5rdGV4dF9uZXh0KSArICc8L3NwYW4+ICBcCgkJCQkJCQk8c3BhbiBj
bGFzcz0icHJldm5leHQgbGFzdCBkaW0iPicgKyAoI2xhbmcgLT4gbGlua3Rl
eHRfbGFzdCkgKyAnPC9zcGFuPiAnOwoJCQkvaWY7CgkJL2lmOwoJCSNvdXRw
dXQgKz0gJzwvdGg+PC90cj5cbjwvdGJvZHk+JzsKCQkobG9jYWxfZGVmaW5l
ZDogJ2VuZCcpID8gI291dHB1dCArPSAnPC90YWJsZT5cbic7CgkJc2VsZiAt
PiAndGFndGltZV90YWduYW1lJz10YWdfbmFtZTsKCQlzZWxmIC0+ICd0YWd0
aW1lJz1pbnRlZ2VyOiAjdGltZXI7IC8vIGNhc3QgdG8gaW50ZWdlciB0byB0
cmlnZ2VyIG9uY29udmVydCBhbmQgdG8gInN0b3AgdGltZXIiCgkJcmV0dXJu
OiBAI291dHB1dDsKCS9kZWZpbmVfdGFnOwoJCglkZWZpbmVfdGFnOiAncGFn
ZScsIC1kZXNjcmlwdGlvbj0nUmV0dXJucyB0aGUgY3VycmVudCBwYWdlIG51
bWJlcic7CgkJcmV0dXJuOiAoc2VsZiAtPiAncGFnZScpOwoJL2RlZmluZV90
YWc7CgkKCWRlZmluZV90YWc6ICdsYXN0cGFnZScsIC1kZXNjcmlwdGlvbj0n
UmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBsYXN0IHBhZ2UgZm9yIHRoZSBm
b3VuZCByZWNvcmRzJzsKCQlpZjogKHNlbGYgLT4gJ2RhdGFiYXNlJykgLT4g
J2ZvdW5kX2NvdW50JyA+IDA7CgkJCXJldHVybjogKCgoc2VsZiAtPiAnZGF0
YWJhc2UnKSAtPiAnZm91bmRfY291bnQnIC0gMSkgLyAoc2VsZiAtPiAnZGF0
YWJhc2UnKSAtPiAnbWF4cmVjb3Jkc192YWx1ZScpICsgMTsKCQllbHNlOwoJ
CQlyZXR1cm46IDE7CgkJL2lmOwoJL2RlZmluZV90YWc7CgkKCWRlZmluZV90
YWc6ICdwYWdlX3NraXByZWNvcmRzJywgLWRlc2NyaXB0aW9uPSdDb252ZXJ0
cyBjdXJlbnQgcGFnZSB2YWx1ZSB0byBhIHNraXByZWNvcmRzIHZhbHVlIHRv
IHVzZSBpbiBhIHNlYXJjaC4gXG5cCgkJCVBhcmFtZXRlcnM6XG5cCgkJCS1t
YXhyZWNvcmRzIChyZXF1aXJlZCBpbnRlZ2VyKSBOZWVkZWQgdG8gYmUgYWJs
ZSB0byBkbyB0aGUgY2FsY3VsYXRpb24uIE1heHJlY29yZHNfdmFsdWUgY2Fu
IG5vdCBiZSB0YWtlbiBmcm9tIHRoZSBkYXRhYmFzZSBvYmplY3Qgc2luY2Ug
dGFodCB2YWx1ZSBpcyBub3QgYXZhaWxhYmxlIHVudGlsIGFmdGV0ciBwZXJm
b3JtaW5nIHRoZSBzZWFyY2gnLAoJCS1yZXF1aXJlZD0nbWF4cmVjb3Jkcycs
IC10eXBlPSdpbnRlZ2VyJzsgLy8gVE9ETzogbWF4cmVjb3Jkc192YWx1ZSBj
YW4gYmUgdGFrZW4gZnJvbSB0aGUgZGF0YWJhc2Ugb2JqZWN0IHNvIHNob3Vs
ZCBub3QgYmUgcmVxdWlyZWQKCQlyZXR1cm46ICgoc2VsZiAtPiAncGFnZScp
IC0gMSkgKiAjbWF4cmVjb3JkczsKCS9kZWZpbmVfdGFnOwoJCgovZGVmaW5l
X3R5cGU7Cgo/Pg==
--Mailsmith-5189706E-683D-4C44-8902-A98A55DE44AE--
--
#############################################################
This message is sent to you because you are subscribed to
the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
Project homepage http://montania.se/projects/knop/
Google Code has the latest downloads at http://code.google.com/p/knop/

grid.inc (72K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Correction of pagination bug in grid when using -numbered

list
I'd like that too.

Tried to do it myself but looks like I don't have the right to it:

Description : An error occurred while contacting the repository.
 Suggestion : The server may be unreachable or the URL may be incorrect.
 
Technical Information
=====================

      Error : V4CommunicationError
  Exception : ZSVNCommunicationException

Causal Information
==================

Description : Commit failed (details follow):
     Status : 175002
       File : subversion/libsvn_client/commit.c, 867

Description : Server sent unexpected return value (405 Method Not Allowed) in response to MKACTIVITY request for '/svn/!svn/act/d3fd72f6-c09b-429a-be88-5acb0d1e6d18'
     Status : 175002
       File : subversion/libsvn_ra_neon/util.c, 563


HDB
Jolle

29 dec 2010 kl. 13.31 skrev Steve Piercy - Web Site Builder:

> Is there a chance that this will make it into the repo as well?


--
#############################################################
This message is sent to you because you are subscribed to
the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
Project homepage http://montania.se/projects/knop/
Google Code has the latest downloads at http://code.google.com/p/knop/
Reply | Threaded
Open this post in threaded view
|

Re: Correction of pagination bug in grid when using -numbered

stevepiercy
Bummer.

I might still have commit permission to the repo, but I wanted
to get Johan's blessing before trying to commit.

I've also been getting certificate errors, and I can't figure
out how to force Eclipse to store an exception permanently.  meh.

--steve


On 12/29/10 at 1:59 PM, [hidden email] pronounced:

>I'd like that too.
>
>Tried to do it myself but looks like I don't have the right to it:
>
>Description : An error occurred while contacting the repository.
>Suggestion : The server may be unreachable or the URL may be incorrect.
>
>Technical Information
>=====================
>
>Error : V4CommunicationError
>Exception : ZSVNCommunicationException
>
>Causal Information
>==================
>
>Description : Commit failed (details follow):
>Status : 175002
>File : subversion/libsvn_client/commit.c, 867
>
>Description : Server sent unexpected return value (405 Method
>Not Allowed) in response to MKACTIVITY request for '/svn/!svn/act/d3fd72f6-c09b-429a-be88-5acb0d1e6d18'
>Status : 175002
>File : subversion/libsvn_ra_neon/util.c, 563
>
>
>HDB
>Jolle
>
>29 dec 2010 kl. 13.31 skrev Steve Piercy - Web Site Builder:
>
>>Is there a chance that this will make it into the repo as well?
>
>

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- --
Steve Piercy               Web Site Builder              
Soquel, CA
<[hidden email]>                  <http://www.StevePiercy.com/>


--
#############################################################
This message is sent to you because you are subscribed to
the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
Project homepage http://montania.se/projects/knop/
Google Code has the latest downloads at http://code.google.com/p/knop/
Reply | Threaded
Open this post in threaded view
|

Re: Correction of pagination bug in grid when using -numbered

Johan Solve-2
I've merged it in now. Thanks for the contributions!

Btw I changed the gotopage lang key to linktext_gotopage for consistency.



At 05.21 -0800 2010-12-29, Steve Piercy - Web Site Builder wrote:

>Bummer.
>
>I might still have commit permission to the repo, but I wanted to get Johan's blessing before trying to commit.
>
>I've also been getting certificate errors, and I can't figure out how to force Eclipse to store an exception permanently.  meh.
>
>--steve
>
>
>On 12/29/10 at 1:59 PM, [hidden email] pronounced:
>
>>I'd like that too.
>>
>>Tried to do it myself but looks like I don't have the right to it:
>>
>>Description : An error occurred while contacting the repository.
>>Suggestion : The server may be unreachable or the URL may be incorrect.
>>
>>Technical Information
>>=====================
>>
>>Error : V4CommunicationError
>>Exception : ZSVNCommunicationException
>>
>>Causal Information
>>==================
>>
>>Description : Commit failed (details follow):
>>Status : 175002
>>File : subversion/libsvn_client/commit.c, 867
>>
>>Description : Server sent unexpected return value (405 Method Not Allowed) in response to MKACTIVITY request for '/svn/!svn/act/d3fd72f6-c09b-429a-be88-5acb0d1e6d18'
>>Status : 175002
>>File : subversion/libsvn_ra_neon/util.c, 563
>>
>>
>>HDB
>>Jolle
>>
>>29 dec 2010 kl. 13.31 skrev Steve Piercy - Web Site Builder:
>>
>>>Is there a chance that this will make it into the repo as well?
>>
>>
>
>-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>Steve Piercy               Web Site Builder
>Soquel, CA
><[hidden email]>                  <http://www.StevePiercy.com/>
>
>
>--
>#############################################################
>This message is sent to you because you are subscribed to
>the mailing list <[hidden email]>.
>To unsubscribe, E-mail to: <[hidden email]>
>Send administrative queries to  <[hidden email]>
>List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
>Project homepage http://montania.se/projects/knop/
>Google Code has the latest downloads at http://code.google.com/p/knop/


--
     Johan Sölve    [FSA Member, Lasso Partner]
     Web Application/Lasso/FileMaker Developer
     MONTANIA SOFTWARE & SOLUTIONS
http://www.montania.se   mailto:[hidden email]
 (spam-safe email address, replace '-' with 'a')

--
#############################################################
This message is sent to you because you are subscribed to
the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
Project homepage http://montania.se/projects/knop/
Google Code has the latest downloads at http://code.google.com/p/knop/
Reply | Threaded
Open this post in threaded view
|

Re: Correction of pagination bug in grid when using -numbered

stevepiercy
Thank you!

--steve


On 12/29/10 at 4:01 PM, [hidden email] (Johan Solve) pronounced:

> I've merged it in now. Thanks for the contributions!
>
> Btw I changed the gotopage lang key to linktext_gotopage for consistency.
>
>
>
> At 05.21 -0800 2010-12-29, Steve Piercy - Web Site Builder wrote:
> >Bummer.
> >
> >I might still have commit permission to the repo, but I wanted to get Johan's
> blessing before trying to commit.
> >
> >I've also been getting certificate errors, and I can't figure out how to force
> Eclipse to store an exception permanently.  meh.
> >
> >--steve
> >
> >
> >On 12/29/10 at 1:59 PM, [hidden email] pronounced:
> >
> >>I'd like that too.
> >>
> >>Tried to do it myself but looks like I don't have the right to it:
> >>
> >>Description : An error occurred while contacting the repository.
> >>Suggestion : The server may be unreachable or the URL may be incorrect.
> >>
> >>Technical Information
> >>=====================
> >>
> >>Error : V4CommunicationError
> >>Exception : ZSVNCommunicationException
> >>
> >>Causal Information
> >>==================
> >>
> >>Description : Commit failed (details follow):
> >>Status : 175002
> >>File : subversion/libsvn_client/commit.c, 867
> >>
> >>Description : Server sent unexpected return value (405 Method Not Allowed) in
> response to MKACTIVITY request for
> '/svn/!svn/act/d3fd72f6-c09b-429a-be88-5acb0d1e6d18'
> >>Status : 175002
> >>File : subversion/libsvn_ra_neon/util.c, 563
> >>
> >>
> >>HDB
> >>Jolle
> >>
> >>29 dec 2010 kl. 13.31 skrev Steve Piercy - Web Site Builder:
> >>
> >>>Is there a chance that this will make it into the repo as well?
> >>
> >>
> >
> >-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
> >Steve Piercy               Web Site Builder
> >Soquel, CA
> ><[hidden email]>                  <http://www.StevePiercy.com/>
> >
> >
> >--
> >#############################################################
> >This message is sent to you because you are subscribed to
> >the mailing list <[hidden email]>.
> >To unsubscribe, E-mail to: <[hidden email]>
> >Send administrative queries to  <[hidden email]>
> >List archive
> http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
> >Project homepage http://montania.se/projects/knop/
> >Google Code has the latest downloads at http://code.google.com/p/knop/
>
>
> --
>      Johan Sölve    [FSA Member, Lasso Partner]
>      Web Application/Lasso/FileMaker Developer
>      MONTANIA SOFTWARE & SOLUTIONS
> http://www.montania.se   mailto:[hidden email]
>  (spam-safe email address, replace '-' with 'a')
>

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Steve Piercy               Web Site Builder               Soquel, CA
<[hidden email]>                  <http://www.StevePiercy.com/>


--
#############################################################
This message is sent to you because you are subscribed to
the mailing list <[hidden email]>.
To unsubscribe, E-mail to: <[hidden email]>
Send administrative queries to  <[hidden email]>
List archive http://lasso.2283332.n4.nabble.com/Knop-Framework-Discussion-f3157831.html
Project homepage http://montania.se/projects/knop/
Google Code has the latest downloads at http://code.google.com/p/knop/