<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>168968</bug_id>
          
          <creation_ts>2017-02-28 06:18:27 -0800</creation_ts>
          <short_desc>[JSC] Allow UnlinkedCodeBlock to dump its bytecode sequence</short_desc>
          <delta_ts>2017-03-01 00:17:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281759</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-28 06:18:27 -0800</bug_when>
    <thetext>[JSC] Allow UnlinkedCodeBlock to dump its bytecode sequence</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281760</commentid>
    <comment_count>1</comment_count>
      <attachid>302933</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-28 06:25:20 -0800</bug_when>
    <thetext>Created attachment 302933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281764</commentid>
    <comment_count>2</comment_count>
      <attachid>302935</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-28 06:32:54 -0800</bug_when>
    <thetext>Created attachment 302935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281770</commentid>
    <comment_count>3</comment_count>
      <attachid>302935</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-02-28 08:38:33 -0800</bug_when>
    <thetext>Comment on attachment 302935
Patch

Nice. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282180</commentid>
    <comment_count>4</comment_count>
      <attachid>302935</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-28 23:49:48 -0800</bug_when>
    <thetext>Comment on attachment 302935
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282181</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-28 23:50:24 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 302935 [details]
&gt; Patch
&gt; 
&gt; r=me

Oops, incorrect message. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282182</commentid>
    <comment_count>6</comment_count>
      <attachid>302935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-01 00:17:39 -0800</bug_when>
    <thetext>Comment on attachment 302935
Patch

Clearing flags on attachment: 302935

Committed r213209: &lt;http://trac.webkit.org/changeset/213209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282183</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-01 00:17:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302933</attachid>
            <date>2017-02-28 06:25:20 -0800</date>
            <delta_ts>2017-02-28 06:32:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168968-20170228232223.patch</filename>
            <type>text/plain</type>
            <size>162304</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NzY2NWFkZTc3YzE1ZDYxMDlmOTUyMzczZDQwY2YyMTE0NWY3NjkwLi41ZDgxMTllNDdmMTQyOGVl
MDdmYmJhZTY0MDk0NWVmN2U1ZDg3MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzQgQEAKKzIwMTctMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWxsb3cgVW5saW5rZWRDb2RlQmxvY2sgdG8gZHVtcCBp
dHMgYnl0ZWNvZGUgc2VxdWVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZGVjb3VwbGVzIGR1bXBpbmcgYnl0ZWNvZGUgc2VxdWVu
Y2UgZnJvbSBDb2RlQmxvY2suCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyBVbmxpbmtlZENv
ZGVCbG9jayB0byBkdW1wIGl0cyBieXRlY29kZSBzZXF1ZW5jZS4KKyAgICAgICAgSXQgaXMgdXNl
ZnVsIGJlY2F1c2Ugd2Ugbm93IGhhdmUgY29tcGxleCBwaGFzZSBiZXR3ZWVuIFVubGlua2VkQ29k
ZUJsb2NrIGFuZCBDb2RlQmxvY2ssCisgICAgICAgIGNhbGxlZCBHZW5lcmF0b3JpZmljYXRpb24u
CisKKyAgICAgICAgV2UgaW50cm9kdWNlIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPi4gQm90aCBDb2Rl
QmxvY2sgYW5kIFVubGlua2VkQ29kZUJsb2NrIGNhbiB1c2UKKyAgICAgICAgdGhpcyBjbGFzcyB0
byBkdW1wIGJ5dGVjb2RlIHNlcXVlbmNlLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28g
YWRkcyBPcHRpb246OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24sCisgICAg
ICAgIHdoaWNoIGR1bXBzIHVubGlua2VkIGJ5dGVjb2RlIHNlcXVlbmNlIGJlZm9yZSBnZW5lcmF0
b3JpZmljYXRpb24gaWYgaXQgaXMgZW5hYmxlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OmdldFN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6Z2V0U3BlY2lhbFBvaW50ZXIp
OgorICAgICAgICAoSlNDOjpnZXRQdXRCeUlkRmxhZ3MpOgorICAgICAgICAoSlNDOjpnZXRUb1Ro
aXNTdGF0dXMpOgorICAgICAgICAoSlNDOjpnZXRQb2ludGVyKToKKyAgICAgICAgKEpTQzo6Z2V0
U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAoSlNDOjpnZXRTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpnZXRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpnZXRCYXNpY0Jsb2NrTG9jYXRp
b24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmFjdHVhbFBvaW50ZXJG
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjphY3R1YWxQb2lu
dGVyRm9yKToKKyAgICAgICAgKEpTQzo6YmVnaW5EdW1wUHJvZmlsaW5nKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wVmFsdWVQcm9maWxpbmcpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wVmFsdWVQcm9maWxpbmcpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBBcnJheVByb2ZpbGluZyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBBcnJheVByb2ZpbGlu
Zyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFByb2ZpbGVzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpkdW1wUmFyZUNhc2VQcm9maWxlKToKKyAg
ICAgICAgKEpTQzo6ZHVtcEFyaXRoUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVt
cGVyPENvZGVCbG9jaz46OmR1bXBQcm9maWxlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojp2bSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6aWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OnJlZ2V4cFRvU291cmNl
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6cmVnZXhwTmFtZSk6CisgICAgICAgIChKU0M6OnByaW50
TG9jYXRpb25BbmRPcCk6CisgICAgICAgIChKU0M6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToK
KyAgICAgICAgKEpTQzo6ZGVidWdIb29rTmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cmVnaXN0ZXJOYW1lKToKKyAgICAgICAgKEpTQzo6aWROYW1lKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpjb25zdGFudE5hbWUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50VW5hcnlPcCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRCaW5hcnlPcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDb25kaXRpb25hbEp1bXApOgorICAgICAgICAoSlND
OjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZE9wKToKKyAgICAgICAgKEpTQzo6
ZHVtcFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmR1bXBDaGFpbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2FsbE9w
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRPcCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRMb2NhdGlvbk9wQW5k
UmVnaXN0ZXJPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBJ
ZGVudGlmaWVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENv
bnN0YW50cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFJlZ0V4
cHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBFeGNlcHRpb25I
YW5kbGVycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN3aXRj
aEp1bXBUYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBT
dHJpbmdTd2l0Y2hKdW1wVGFibGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjo6Qnl0ZWNvZGVEdW1wZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjo6YmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUR1bXBlcjo6aW5zdHJ1Y3Rpb25zQmVnaW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6cGVy
Zm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcm9wYWdhdGVU
cmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGlu
ZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3BEZWJ1Z0ZvckxpbmVBbmRD
b2x1bW4pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVzZXNPcGNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjphcml0aFByb2ZpbGVGb3JQQyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToK
KyAgICAgICAgKEpTQzo6aWROYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpyZWdpc3Rlck5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvbnN0
YW50TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJlZ2V4cFRvU291cmNlU3RyaW5nKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cmVnZXhwTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmRlYnVnSG9va05hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnBy
aW50VW5hcnlPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRCaW5h
cnlPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRDb25kaXRpb25h
bEp1bXApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZE9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZHVtcFN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmR1bXBDaGFpbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpwcmludENhbGxPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJpbnRQdXRCeUlkT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBF
eGNlcHRpb25IYW5kbGVycyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmVn
aW5EdW1wUHJvZmlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1w
VmFsdWVQcm9maWxpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBB
cnJheVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcFJh
cmVDYXNlUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFy
aXRoUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRMb2Nh
dGlvbkFuZE9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludExvY2F0
aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvbnN0YW50UmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlJlZ0V4cHMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmJpdFZlY3RvcnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJpdFZl
Y3Rvcik6CisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpTQzo6
SGFuZGxlckluZm9CYXNlOjp0eXBlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6ZHVtcCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmdldENvbnN0YW50KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbTo6VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtOjpSZWFkZXI6Om5leHQpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5o
OgorCiAyMDE3LTAyLTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQmVnaW4gZW5hYmxpbmcgV2ViUlRDIG9uIDY0LWJpdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5NzVkZjBmMzFlNzMxNzdjMDNiYTk3YWM2Zjli
Mjk0ZmE4MjdiN2QuLjFlMWE0YzQ1MjRhY2IzY2VlZjNhYzU0ZjViMzE1OTA5MzM1YWFmN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5NCw2ICsxOTQsNyBAQCBzZXQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKICAgICBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKICAgICBieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhYjE2MmVkYjQwOGY5ZTA5M2FmNzIyN2Y3MTUyMmUy
MWYxNmNkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0wLDAgKzEsMTc5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgorCisj
aW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkhlYXBJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiUG9s
eW1vcnBoaWNBY2Nlc3MuaCIKKyNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCisjaW5jbHVkZSAi
VW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBTdHJ1Y3R1
cmVJRCBnZXRTdHJ1Y3R1cmVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7Cisg
ICAgcmV0dXJuIGluc3RydWN0aW9uLnUuc3RydWN0dXJlSUQ7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1
cmVJRCBnZXRTdHJ1Y3R1cmVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworc3RhdGljIFNwZWNpYWw6OlBvaW50ZXIgZ2V0U3BlY2lhbFBvaW50ZXIo
Y29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlv
bi51LnNwZWNpYWxQb2ludGVyOworfQorCitzdGF0aWMgU3BlY2lhbDo6UG9pbnRlciBnZXRTcGVj
aWFsUG9pbnRlcihjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U3BlY2lhbDo6UG9pbnRlcj4oaW5zdHJ1Y3Rpb24udS5vcGVy
YW5kKTsKK30KKworc3RhdGljIFB1dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3QgSW5z
dHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnB1dEJ5
SWRGbGFnczsKK30KKworc3RhdGljIFB1dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3Qg
VW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFB1dEJ5SWRGbGFncz4oaW5zdHJ1Y3Rpb24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIFRv
VGhpc1N0YXR1cyBnZXRUb1RoaXNTdGF0dXMoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9u
KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnRvVGhpc1N0YXR1czsKK30KKworc3RhdGlj
IFRvVGhpc1N0YXR1cyBnZXRUb1RoaXNTdGF0dXMoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYg
aW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvVGhpc1N0YXR1cz4oaW5z
dHJ1Y3Rpb24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIHZvaWQqIGdldFBvaW50ZXIoY29uc3Qg
SW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnBv
aW50ZXI7Cit9CisKK3N0YXRpYyB2b2lkKiBnZXRQb2ludGVyKGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24mKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgU3RydWN0dXJlQ2hh
aW4qIGdldFN0cnVjdHVyZUNoYWluKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKK30KKworc3Rh
dGljIFN0cnVjdHVyZUNoYWluKiBnZXRTdHJ1Y3R1cmVDaGFpbihjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uJikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFN0cnVjdHVyZSog
Z2V0U3RydWN0dXJlKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1
cm4gaW5zdHJ1Y3Rpb24udS5zdHJ1Y3R1cmUuZ2V0KCk7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1cmUq
IGdldFN0cnVjdHVyZShjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworc3RhdGljIExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0luZm8o
Y29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlv
bi51LmNhbGxMaW5rSW5mbzsKK30KKworc3RhdGljIExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxs
TGlua0luZm8oY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3N0YXRpYyBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxvY2tMb2NhdGlv
bihjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0
aW9uLnUuYmFzaWNCbG9ja0xvY2F0aW9uOworfQorCitzdGF0aWMgQmFzaWNCbG9ja0xvY2F0aW9u
KiBnZXRCYXNpY0Jsb2NrTG9jYXRpb24oY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCogQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjphY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQqIEJ5dGVj
b2RlRHVtcGVyPENvZGVCbG9jaz46OmFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBw
b2ludGVyKSBjb25zdAoreworICAgIHJldHVybiBibG9jaygpLT5nbG9iYWxPYmplY3QoKS0+YWN0
dWFsUG9pbnRlckZvcihwb2ludGVyKTsKK30KKworc3RhdGljIHZvaWQgYmVnaW5EdW1wUHJvZmls
aW5nKFByaW50U3RyZWFtJiBvdXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAg
aWYgKGhhc1ByaW50ZWRQcm9maWxpbmcpIHsKKyAgICAgICAgb3V0LnByaW50KCI7ICIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgb3V0LnByaW50KCIgICAgIik7CisgICAgaGFzUHJp
bnRlZFByb2ZpbGluZyA9IHRydWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNv
bnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBib29sJikKK3sKKyAgICArK2l0
OworfQorCit0ZW1wbGF0ZTw+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBDb2RlQmxvY2s6
Okluc3RydWN0aW9uKiYgaXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihibG9jaygpLT5tX2xvY2spOworCisgICAgKytpdDsKKyAg
ICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gaXQtPnUucHJvZmlsZS0+YnJpZWZEZXNjcmlwdGlvbihs
b2NrZXIpOworICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBiZWdpbkR1bXBQcm9maWxpbmcob3V0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICBv
dXQucHJpbnQoZGVzY3JpcHRpb24pOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBj
b25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgYm9vbCYpCit7CisgICAgKytp
dDsKK30KKwordGVtcGxhdGU8Pgordm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1w
QXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQ29kZUJsb2Nr
OjpJbnN0cnVjdGlvbiomIGl0LCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKQoreworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmxvY2soKS0+bV9sb2NrKTsKKworICAgICsraXQ7Cisg
ICAgaWYgKCFpdC0+dS5hcnJheVByb2ZpbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDU3RyaW5n
IGRlc2NyaXB0aW9uID0gaXQtPnUuYXJyYXlQcm9maWxlLT5icmllZkRlc2NyaXB0aW9uKGxvY2tl
ciwgYmxvY2soKSk7CisgICAgaWYgKCFkZXNjcmlwdGlvbi5sZW5ndGgoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGJlZ2luRHVtcFByb2ZpbGluZyhvdXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwor
ICAgIG91dC5wcmludChkZXNjcmlwdGlvbik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBQcm9maWxlc0ZvckJ5dGVjb2RlT2Zmc2V0
KFByaW50U3RyZWFtJiwgdW5zaWduZWQsIGJvb2wmKQoreworfQorCitzdGF0aWMgdm9pZCBkdW1w
UmFyZUNhc2VQcm9maWxlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFJhcmVD
YXNlUHJvZmlsZSogcHJvZmlsZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZykKK3sKKyAgICBp
ZiAoIXByb2ZpbGUgfHwgIXByb2ZpbGUtPm1fY291bnRlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYmVnaW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgb3V0
LnByaW50KG5hbWUsIHByb2ZpbGUtPm1fY291bnRlcik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBB
cml0aFByb2ZpbGUoUHJpbnRTdHJlYW0mIG91dCwgQXJpdGhQcm9maWxlKiBwcm9maWxlLCBib29s
JiBoYXNQcmludGVkUHJvZmlsaW5nKQoreworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYmVnaW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7
CisgICAgb3V0LnByaW50KCJyZXN1bHRzOiAiLCAqcHJvZmlsZSk7Cit9CisKK3RlbXBsYXRlPD4K
K3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVP
ZmZzZXQoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbG9jYXRpb24sIGJvb2wmIGhhc1ByaW50
ZWRQcm9maWxpbmcpCit7CisgICAgZHVtcFJhcmVDYXNlUHJvZmlsZShvdXQsICJyYXJlIGNhc2U6
ICIsIGJsb2NrKCktPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwg
aGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgeworICAgICAgICBkdW1wQXJpdGhQcm9maWxlKG91
dCwgYmxvY2soKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pLCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBWZWN0
b3I8REZHOjpGcmVxdWVudEV4aXRTaXRlPiBleGl0U2l0ZXMgPSBibG9jaygpLT5leGl0UHJvZmls
ZSgpLmV4aXRTaXRlc0Zvcihsb2NhdGlvbik7CisgICAgaWYgKCFleGl0U2l0ZXMuaXNFbXB0eSgp
KSB7CisgICAgICAgIG91dC5wcmludCgiICEhIGZyZXF1ZW50IGV4aXRzOiAiKTsKKyAgICAgICAg
Q29tbWFQcmludGVyIGNvbW1hOworICAgICAgICBmb3IgKGF1dG8mIGV4aXRTaXRlIDogZXhpdFNp
dGVzKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBleGl0U2l0ZS5raW5kKCksICIgIiwg
ZXhpdFNpdGUuaml0VHlwZSgpKTsKKyAgICB9CisjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKKyAg
ICBVTlVTRURfUEFSQU0obG9jYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorfQor
Cit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK1ZNKiBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnZtKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gYmxvY2soKS0+dm0oKTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+Citjb25zdCBJZGVudGlmaWVyJiBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmlkZW50aWZp
ZXIoaW50IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBibG9jaygpLT5pZGVudGlmaWVyKGlu
ZGV4KTsKK30KKworc3RhdGljIENTdHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiBy
ZWdFeHApCit7CisgICAgY2hhciBwb3N0Zml4WzVdID0geyAnLycsIDAsIDAsIDAsIDAgfTsKKyAg
ICBpbnQgaW5kZXggPSAxOworICAgIGlmIChyZWdFeHAtPmdsb2JhbCgpKQorICAgICAgICBwb3N0
Zml4W2luZGV4KytdID0gJ2cnOworICAgIGlmIChyZWdFeHAtPmlnbm9yZUNhc2UoKSkKKyAgICAg
ICAgcG9zdGZpeFtpbmRleCsrXSA9ICdpJzsKKyAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkK
KyAgICAgICAgcG9zdGZpeFtpbmRleF0gPSAnbSc7CisgICAgaWYgKHJlZ0V4cC0+c3RpY2t5KCkp
CisgICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAneSc7CisgICAgaWYgKHJlZ0V4cC0+dW5pY29k
ZSgpKQorICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ3UnOworCisgICAgcmV0dXJuIHRvQ1N0
cmluZygiLyIsIHJlZ0V4cC0+cGF0dGVybigpLmltcGwoKSwgcG9zdGZpeCk7Cit9CisKK3N0YXRp
YyBDU3RyaW5nIHJlZ2V4cE5hbWUoaW50IHJlLCBSZWdFeHAqIHJlZ2V4cCkKK3sKKyAgICByZXR1
cm4gdG9DU3RyaW5nKHJlZ2V4cFRvU291cmNlU3RyaW5nKHJlZ2V4cCksICIoQHJlIiwgcmUsICIp
Iik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgcHJpbnRM
b2NhdGlvbkFuZE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApCit7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJS0xN3Mg
IiwgbG9jYXRpb24sIG9wKTsKK30KKworc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpCit7CisgICAgcmV0dXJuIGluZGV4ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OworfQorCitORVZFUl9JTkxJTkUgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnSG9va05hbWUoaW50IGRlYnVnSG9va1R5cGUpCit7CisgICAgc3dpdGNoIChzdGF0
aWNfY2FzdDxEZWJ1Z0hvb2tUeXBlPihkZWJ1Z0hvb2tUeXBlKSkgeworICAgIGNhc2UgRGlkRW50
ZXJDYWxsRnJhbWU6CisgICAgICAgIHJldHVybiAiZGlkRW50ZXJDYWxsRnJhbWUiOworICAgIGNh
c2UgV2lsbExlYXZlQ2FsbEZyYW1lOgorICAgICAgICByZXR1cm4gIndpbGxMZWF2ZUNhbGxGcmFt
ZSI7CisgICAgY2FzZSBXaWxsRXhlY3V0ZVN0YXRlbWVudDoKKyAgICAgICAgcmV0dXJuICJ3aWxs
RXhlY3V0ZVN0YXRlbWVudCI7CisgICAgY2FzZSBXaWxsRXhlY3V0ZUV4cHJlc3Npb246CisgICAg
ICAgIHJldHVybiAid2lsbEV4ZWN1dGVFeHByZXNzaW9uIjsKKyAgICBjYXNlIFdpbGxFeGVjdXRl
UHJvZ3JhbToKKyAgICAgICAgcmV0dXJuICJ3aWxsRXhlY3V0ZVByb2dyYW0iOworICAgIGNhc2Ug
RGlkRXhlY3V0ZVByb2dyYW06CisgICAgICAgIHJldHVybiAiZGlkRXhlY3V0ZVByb2dyYW0iOwor
ICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgorICAgICAgICByZXR1cm4gImRpZFJlYWNoQnJl
YWtwb2ludCI7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gIiI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgorQ1N0cmluZyBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OnJlZ2lzdGVyTmFtZShpbnQgcikgY29uc3QKK3sKKyAgICBpZiAoaXND
b25zdGFudFJlZ2lzdGVySW5kZXgocikpCisgICAgICAgIHJldHVybiBjb25zdGFudE5hbWUocik7
CisKKyAgICByZXR1cm4gdG9DU3RyaW5nKFZpcnR1YWxSZWdpc3RlcihyKSk7Cit9CisKK3N0YXRp
YyBDU3RyaW5nIGlkTmFtZShpbnQgaWQwLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAg
ICByZXR1cm4gdG9DU3RyaW5nKGlkZW50LmltcGwoKSwgIihAaWQiLCBpZDAsICIpIik7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIEJsb2NrPgorQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmNv
bnN0YW50TmFtZShpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGJsb2Nr
KCktPmdldENvbnN0YW50KGluZGV4KTsKKyAgICByZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIs
IFZpcnR1YWxSZWdpc3RlcihpbmRleCksICIpIik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2Nr
Pgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50VW5hcnlPcChQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBjaGFyKiBvcCkKK3sKKyAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKworICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50QmluYXJ5T3Ao
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit7CisgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCBvcCk7CisgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkp
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBC
bG9jazo6SW5zdHJ1Y3Rpb24qLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBp
dCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCkKK3sKKyAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCBvcCk7CisgICAgb3V0LnByaW50Zigi
JXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24g
KyBvZmZzZXQpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0KQoreworICAgIGNvbnN0IGNo
YXIqIG9wOworICAgIHN3aXRjaCAodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppdCkp
IHsKKyAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICAgICAg
b3AgPSAiZ2V0X2J5X2lkX3Byb3RvX2xvYWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9w
X2dldF9ieV9pZF91bnNldDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Vuc2V0IjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICBvcCA9ICJh
cnJheV9sZW5ndGgiOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19V
TlJFQUNIQUJMRV9DT0RFKQorICAgICAgICBvcCA9IDA7CisjZW5kaWYKKyAgICB9CisgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShp
ZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAgICBpdCArPSA0OyAvLyBJbmNyZW1lbnQg
dXAgdG8gdGhlIHZhbHVlIHByb2ZpbGVyLgorfQorCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJl
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgb3V0LnByaW50ZigiJXMgPSAlcCIsIG5hbWUsIHN0cnVjdHVyZSk7
CisKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRs
eShpZGVudC5pbXBsKCkpOworICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKKyAgICAg
ICAgb3V0LnByaW50ZigiIChvZmZzZXQgPSAlZCkiLCBvZmZzZXQpOworfQorCitzdGF0aWMgdm9p
ZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBvdXQucHJpbnRmKCJjaGFpbiA9ICVwOiBbIiwg
Y2hhaW4pOworICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGN1cnJlbnRTdHJ1Y3R1cmUgPSBjaGFpbi0+aGVhZCgpOyAqY3VycmVudFN0cnVj
dHVyZTsgKytjdXJyZW50U3RydWN0dXJlKSB7CisgICAgICAgIGlmIChmaXJzdCkKKyAgICAgICAg
ICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYo
IiwgIik7CisgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgY3VycmVudFN0cnVj
dHVyZS0+Z2V0KCksIGlkZW50KTsKKyAgICB9CisgICAgb3V0LnByaW50ZigiXSIpOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdl
dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJiBtYXApCit7CisgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVj
dGlvbnNCZWdpbigpICsgbG9jYXRpb247CisKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGlkZW50aWZpZXIoaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKworICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7IC8vIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0
Zm9ybSBjb25maWd1cmF0aW9ucy4KKworICAgIGlmICh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25bMF0pID09IG9wX2dldF9hcnJheV9sZW5ndGgpCisgICAgICAgIG91
dC5wcmludGYoIiBsbGludChhcnJheV9sZW5ndGgpIik7CisgICAgZWxzZSBpZiAoU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQgPSBnZXRTdHJ1Y3R1cmVJRChpbnN0cnVjdGlvbls0XSkpIHsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5n
ZXQoc3RydWN0dXJlSUQpOworICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoIik7CisgICAgICAg
IGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3RydWN0dXJlLCBpZGVudCk7CisgICAgICAg
IG91dC5wcmludGYoIikiKTsKKyAgICAgICAgaWYgKHZtKCktPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvblswXSkgPT0gb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQpCisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIgcHJvdG8oJXApIiwgZ2V0UG9pbnRlcihpbnN0cnVjdGlvbls2XSkp
OworICAgIH0KKworI2lmIEVOQUJMRShKSVQpCisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViUHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CisgICAgICAgIGlmIChzdHViSW5mby5y
ZXNldEJ5R0MpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CisKKyAg
ICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKKworICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1
Y3R1cmUgPSBudWxscHRyOworICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YiA9IG51bGxw
dHI7CisKKyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgorICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZiIp
OworICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9i
amVjdFN0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENh
Y2hlVHlwZTo6U3R1YjoKKyAgICAgICAgICAgIG91dC5wcmludGYoInN0dWIiKTsKKyAgICAgICAg
ICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDYWNoZVR5cGU6OlVuc2V0OgorICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6
CisgICAgICAgICAgICBvdXQucHJpbnRmKCJBcnJheUxlbmd0aCIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFz
ZVN0cnVjdHVyZSkgeworICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAg
IGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKHN0dWIpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwg
KnN0dWIpOworCisgICAgICAgIG91dC5wcmludGYoIikiKTsKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShtYXApOworI2VuZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3sKKyAgICBj
b25zdCBhdXRvKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsK
KworICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOworCisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29t
cGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgorCisg
ICAgb3V0LnByaW50KCIsICIsIGdldFB1dEJ5SWRGbGFncyhpbnN0cnVjdGlvbls4XSkpOworCisg
ICAgaWYgKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gZ2V0U3RydWN0dXJlSUQoaW5zdHJ1Y3Rp
b25bNF0pKSB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0oKS0+aGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKKyAgICAgICAgb3V0LnByaW50KCIgbGxp
bnQoIik7CisgICAgICAgIGlmIChTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGdldFN0cnVj
dHVyZUlEKGluc3RydWN0aW9uWzZdKSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSB2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQp
OworICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJwcmV2Iiwgc3RydWN0dXJlLCBpZGVu
dCk7CisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0
dXJlKG91dCwgIm5leHQiLCBuZXdTdHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBnZXRTdHJ1Y3R1cmVDaGFpbihpbnN0cnVjdGlvbls3XSkp
IHsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICAgICAgZHVt
cENoYWluKG91dCwgY2hhaW4sIGlkZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIHN0cnVjdHVyZSwgaWRl
bnQpOworICAgICAgICBvdXQucHJpbnQoIikiKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoSklUKQor
ICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpKSB7CisgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHVi
UHRyOworICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnBy
aW50KCIgKFJlc2V0IEJ5IEdDKSIpOworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisK
KyAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNo
ZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgorICAgICAgICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAi
KTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5i
eUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLCBpZGVudCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgICAgIG91dC5w
cmludCgic3R1YiwgIiwgKnN0dWJJbmZvLnUuc3R1Yik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJ1bnNldCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgb3V0LnByaW50ZigiKSIpOworICAgIH0KKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKG1hcCk7CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShKSVQpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JikKK3sKK30KKwordGVtcGxhdGU8Pgordm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+Ojpk
dW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbG9jYXRpb24sIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgbWFwKQoreworICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkg
IT0gSklUQ29kZTo6RlRMSklUKQorICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7Cit9Cisj
ZW5kaWYKKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBtYXApCit7CisgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
IGludCBmdW5jID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IGFyZ0NvdW50ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCBvcCk7CisgICAgb3V0
LnByaW50KHJlZ2lzdGVyTmFtZShkc3QpLCAiLCAiLCByZWdpc3Rlck5hbWUoZnVuYyksICIsICIs
IGFyZ0NvdW50LCAiLCAiLCByZWdpc3Rlck9mZnNldCk7CisgICAgb3V0LnByaW50KCIgKHRoaXMg
YXQgIiwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgLXJlZ2lzdGVyT2Zmc2V0KSwgIiki
KTsKKyAgICBpZiAoY2FjaGVEdW1wTW9kZSA9PSBEdW1wQ2FjaGVzKSB7CisgICAgICAgIExMSW50
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBnZXRDYWxsTGlua0luZm8oaXRbMV0pOworICAg
ICAgICBpZiAoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZSkgeworICAgICAgICAgICAgb3V0
LnByaW50ZigKKyAgICAgICAgICAgICAgICAiIGxsaW50KCVwLCBleGVjICVwKSIsCisgICAgICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKKyAgICAgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxlKCkpOworICAgICAg
ICB9CisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IG1h
cC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0
YXJnZXQgPSBpbmZvLT5sYXN0U2VlbkNhbGxlZSgpOworICAgICAgICAgICAgaWYgKHRhcmdldCkK
KyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCVwLCBleGVjICVwKSIsIHRhcmdldCwg
dGFyZ2V0LT5leGVjdXRhYmxlKCkpOworICAgICAgICB9CisKKyAgICAgICAgZHVtcENhbGxMaW5r
U3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0o
bWFwKTsKKyNlbmRpZgorICAgIH0KKyAgICArK2l0OworICAgICsraXQ7CisgICAgZHVtcEFycmF5
UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgIGR1bXBWYWx1ZVBy
b2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkT3AoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3ApCit7CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgb3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKKyAgICBpdCArPSA1OworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJh
bmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIGludCBvcGVyYW5kKQoreworICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYo
IiVzIiwgcmVnaXN0ZXJOYW1lKG9wZXJhbmQpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0
cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25z
dCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0
dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAgIGlu
dCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47CisgICAgYm9vbCBoYXNQcmludGVkUHJvZmlsaW5nID0g
ZmFsc2U7CisgICAgT3Bjb2RlSUQgb3Bjb2RlID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKCppdCk7CisgICAgc3dpdGNoIChvcGNvZGUpIHsKKyAgICBjYXNlIG9wX2VudGVyOiB7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImVudGVyIik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9zY29wZTogeworICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVn
aXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOiB7Cisg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVu
dHM6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9jbG9uZWRfYXJndW1lbnRz
Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9hcmd1bWVudF9jb3VudDogeworICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9w
QW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAiYXJndW1lbnRfY291bnQiLCBy
MCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9hcmd1bWVudDogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGluZGV4ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3Bl
cmFuZChvdXQsIGxvY2F0aW9uLCBpdCwgImFyZ3VtZW50IiwgcjApOworICAgICAgICBvdXQucHJp
bnRmKCIsICVkIiwgaW5kZXgpOworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwg
aGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2NyZWF0ZV9yZXN0OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJndW1l
bnRPZmZzZXQgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3Jlc3QiKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCJBcmd1bWVudHNPZmZzZXQ6ICV1IiwgYXJn
dW1lbnRPZmZzZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfcmVz
dF9sZW5ndGg6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9yZXN0X2xlbmd0aCIp
OworICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOwor
ICAgICAgICB1bnNpZ25lZCBhcmd1bWVudE9mZnNldCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVl
OworICAgICAgICBvdXQucHJpbnRmKCJBcmd1bWVudHNPZmZzZXQ6ICV1IiwgYXJndW1lbnRPZmZz
ZXQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIGluZmVycmVkSW5saW5lQ2FwYWNpdHkg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgY2FjaGVkRnVuY3Rpb24gPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRp
b24sIGl0LCAiY3JlYXRlX3RoaXMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAldSwg
JXUiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlu
ZmVycmVkSW5saW5lQ2FwYWNpdHksIGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfdG9fdGhpczogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
bG9jYXRpb24sIGl0LCAidG9fdGhpcyIsIHIwKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnZXRTdHJ1Y3R1cmUoKigrK2l0KSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUpCisgICAg
ICAgICAgICBvdXQucHJpbnQoIiwgY2FjaGUoc3RydWN0ID0gIiwgUmF3UG9pbnRlcihzdHJ1Y3R1
cmUpLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiwgIiwgZ2V0VG9UaGlzU3RhdHVzKCooKytp
dCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfY2hlY2tfdGR6OiB7Cisg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9u
T3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJvcF9jaGVja190ZHoiLCBy
MCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKKyAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIGluZmVy
cmVkSW5saW5lQ2FwYWNpdHkgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X29iamVjdCIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXUiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVD
YXBhY2l0eSk7CisgICAgICAgICsraXQ7IC8vIFNraXAgb2JqZWN0IGFsbG9jYXRpb24gcHJvZmls
ZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CisgICAg
ICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZ3YgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FycmF5Iik7
CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShhcmd2KS5kYXRhKCksIGFyZ2MpOworICAgICAgICArK2l0OyAvLyBT
a2lwIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc3ByZWFkOiB7CisgICAgICAgIGludCBkc3QgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FycmF5X3dpdGhfc3ByZWFkIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGFyZ3YpLmRhdGEoKSwgYXJnYyk7CisgICAgICAgIHVuc2lnbmVkIGJpdFZl
Y3RvckluZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNvbnN0IEJpdFZl
Y3RvciYgYml0VmVjdG9yID0gYmxvY2soKS0+Yml0VmVjdG9yKGJpdFZlY3RvckluZGV4KTsKKyAg
ICAgICAgb3V0LnByaW50KCJCaXRWZWN0b3I6IiwgYml0VmVjdG9ySW5kZXgsICI6Iik7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJnYyk7
IGkrKykgeworICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci5nZXQoaSkpCisgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCIxIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0
LnByaW50KCIwIik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3Bfc3ByZWFkOiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IGFyZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzcHJlYWQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYXJnKS5kYXRhKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXpl
OiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGxl
bmd0aCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJuZXdfYXJyYXlfd2l0aF9zaXplIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGxlbmd0
aCkuZGF0YSgpKTsKKyAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGUuCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6
IHsKKyAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgYXJn
diA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdf
YXJyYXlfYnVmZmVyIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCwgJWQiLCByZWdpc3Rl
ck5hbWUoZHN0KS5kYXRhKCksIGFyZ3YsIGFyZ2MpOworICAgICAgICArK2l0OyAvLyBTa2lwIGFy
cmF5IGFsbG9jYXRpb24gcHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfbmV3X3JlZ2V4cDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdfcmVnZXhwIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAgICAgIGlmIChyMCA+PTAg
JiYgcjAgPCAoaW50KWJsb2NrKCktPm51bWJlck9mUmVnRXhwcygpKQorICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMiLCByZWdleHBOYW1lKHJlMCwgYmxvY2soKS0+cmVnZXhwKHJlMCkpLmRhdGEo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoImJhZF9yZWdleHAoJWQp
IiwgcmUwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbW92OiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAibW92Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX3Byb2ZpbGVfdHlwZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgKytpdDsKKyAg
ICAgICAgKytpdDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAib3BfcHJvZmlsZV90eXBlIik7CisgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdzogeworICAgICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxv
Y2tMb2NhdGlvbiA9IGdldEJhc2ljQmxvY2tMb2NhdGlvbigqKCsraXQpKTsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jb250cm9sX2Zsb3ci
KTsKKyAgICAgICAgaWYgKGJhc2ljQmxvY2tMb2NhdGlvbikKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIlslZCwgJWRdIiwgYmFzaWNCbG9ja0xvY2F0aW9uLT5zdGFydE9mZnNldCgpLCBiYXNpY0Js
b2NrTG9jYXRpb24tPmVuZE9mZnNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3Bfbm90OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5v
dCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9lcTogeworICAgICAgICBw
cmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiZXEiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfZXFfbnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJlcV9udWxsIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IG9wX25lcTogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibmVx
Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25lcV9udWxsOiB7CisgICAg
ICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5lcV9udWxsIik7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3N0cmljdGVxOiB7CisgICAgICAgIHByaW50Qmlu
YXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9uc3RyaWN0ZXE6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQs
IGxvY2F0aW9uLCBpdCwgIm5zdHJpY3RlcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9sZXNzOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJsZXNzIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2xlc3NlcTogewor
ICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibGVzc2VxIik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dyZWF0ZXI6IHsKKyAgICAgICAgcHJpbnRC
aW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXIiKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfZ3JlYXRlcmVxOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJncmVhdGVyZXEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaW5jOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQs
ICJpbmMiLCByMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlYzogewor
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAiZGVjIiwgcjApOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF90b19udW1iZXI6IHsKKyAgICAgICAgcHJp
bnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAidG9fbnVtYmVyIik7CisgICAgICAgIGR1bXBW
YWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfdG9fc3RyaW5nOiB7CisgICAgICAgIHByaW50VW5hcnlP
cChvdXQsIGxvY2F0aW9uLCBpdCwgInRvX3N0cmluZyIpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9uZWdhdGU6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRp
b24sIGl0LCAibmVnYXRlIik7CisgICAgICAgICsraXQ7IC8vIG9wX25lZ2F0ZSBoYXMgYW4gZXh0
cmEgb3BlcmFuZCBmb3IgdGhlIEFyaXRoUHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfYWRkOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJhZGQiKTsKKyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfbXVsOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJt
dWwiKTsKKyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
ZGl2OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkaXYiKTsK
KyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbW9kOiB7
CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJtb2QiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcG93OiB7CisgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwb3ciKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3Bfc3ViOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJzdWIiKTsKKyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfbHNoaWZ0OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJs
c2hpZnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcnNoaWZ0OiB7Cisg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJyc2hpZnQiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdXJzaGlmdDogeworICAgICAgICBwcmludEJp
bmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAidXJzaGlmdCIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9iaXRhbmQ6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImJpdGFuZCIpOworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9iaXR4b3I6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImJpdHhvciIpOworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9iaXRvcjogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9j
YXRpb24sIGl0LCAiYml0b3IiKTsKKyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJvdmVycmlkZXNfaGFzX2luc3RhbmNlIik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaW5zdGFuY2VvZjogeworICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbnN0YW5jZW9mIik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206IHsKKyAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIzID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0
aW9uLCBpdCwgImluc3RhbmNlb2ZfY3VzdG9tIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF91bnNpZ25lZDogeworICAgICAgICBw
cmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ1bnNpZ25lZCIpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBvcF90eXBlb2Y6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91
dCwgbG9jYXRpb24sIGl0LCAidHlwZW9mIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX2lzX2VtcHR5OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImlzX2VtcHR5Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX3Vu
ZGVmaW5lZDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc191
bmRlZmluZWQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNfYm9vbGVh
bjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19ib29sZWFu
Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX251bWJlcjogeworICAg
ICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKKyAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgdHlwZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19jZWxsX3dpdGhfdHlw
ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCB0eXBlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfaXNfb2JqZWN0OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQs
IGxvY2F0aW9uLCBpdCwgImlzX29iamVjdCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9pc19vYmplY3Rfb3JfbnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpc19vYmplY3Rfb3JfbnVsbCIpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9pc19mdW5jdGlvbjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9pbjogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAi
aW4iKTsKKyAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9m
aWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lk
OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0cnlfZ2V0
X2J5X2lkIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICBjYXNlIG9w
X2dldF9ieV9pZF91bnNldDoKKyAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6IHsKKyAgICAg
ICAgcHJpbnRHZXRCeUlkT3Aob3V0LCBsb2NhdGlvbiwgaXQpOworICAgICAgICBwcmludEdldEJ5
SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBkdW1wVmFs
dWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX3dpdGhfdGhpcyIp
OworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmll
cihpZDApKS5kYXRhKCkpOworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFz
UHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dl
dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfdmFs
X3dpdGhfdGhpcyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVl
UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKKyAgICAgICAgcHJpbnRQdXRCeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF93aXRoX3RoaXMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIp
LmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9ieV92YWxf
d2l0aF90aGlzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX3dpdGhfdGhp
cyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1
dF9nZXR0ZXJfYnlfaWQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRh
KCksIG4wLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfaWQ6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJwdXRfc2V0dGVyX2J5X2lkIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDogeworICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfZ2V0
dGVyX3NldHRlcl9ieV9pZCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkLCAlcywg
JXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDAp
KS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5k
YXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5
X3ZhbDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBuMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2dldHRlcl9ieV92YWwiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOiB7
CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfc2V0dGVyX2J5X3ZhbCIpOworICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIzKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVf
YWNjZXNzb3JfcHJvcGVydHk6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyNCkuZGF0YSgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZGVsX2J5X2lkOiB7CisgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkZWxfYnlfaWQiKTsKKyAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsOiB7CisgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9ieV92YWwiKTsKKyAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICBkdW1w
QXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGR1
bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsIik7CisgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgZHVtcEFycmF5
UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX2RpcmVjdCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgIGR1
bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkZWxfYnlfdmFsIik7CisgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X2luZGV4OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2luZGV4Iik7CisgICAgICAgIG91dC5w
cmludGYoIiVzLCAldSwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfam1w
OiB7CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiam1wIik7CisgICAgICAgIG91dC5w
cmludGYoIiVkKC0+JWQpIiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2p0cnVlOiB7CisgICAgICAgIHByaW50Q29uZGl0aW9u
YWxKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImp0cnVlIik7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX2pmYWxzZTogeworICAgICAgICBwcmludENvbmRpdGlvbmFs
SnVtcChvdXQsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqZmFsc2UiKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3BfamVxX251bGw6IHsKKyAgICAgICAgcHJpbnRDb25kaXRpb25h
bEp1bXAob3V0LCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamVxX251bGwiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3Bfam5lcV9udWxsOiB7CisgICAgICAgIHByaW50Q29uZGl0
aW9uYWxKdW1wKG91dCwgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpuZXFfbnVsbCIpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qbmVxX3B0cjogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyID0g
Z2V0U3BlY2lhbFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiam5lcV9wdHIiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVkICglcCksICVkKC0+JWQp
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHBvaW50ZXIsIGFjdHVhbFBvaW50ZXJGb3IocG9p
bnRlciksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworICAgICAgICArK2l0OworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9qbGVzczogeworICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiamxlc3MiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX2psZXNzZXE6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImpsZXNzZXEiKTsKKyAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX2pncmVhdGVyOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJqZ3JlYXRlciIpOworICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfamdyZWF0ZXJlcTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiamdyZWF0ZXJlcSIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3Bfam5sZXNzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJqbmxlc3MiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX2pubGVzc2VxOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJqbmxlc3NlcSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJqbmdyZWF0ZXIiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJqbmdyZWF0ZXJlcSIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3BfbG9vcF9oaW50OiB7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImxvb3BfaGludCIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9jaGVja190cmFwczogeworICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjaGVja190cmFwcyIpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKKyAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImxvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6IHsKKyAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJsb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CisgICAgICAgIGlu
dCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBkZWZhdWx0VGFy
Z2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJzd2l0Y2hfaW1tIik7CisgICAgICAgIG91dC5wcmludGYoIiVkLCAlZCgtPiVk
KSwgJXMiLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJn
ZXQsIHJlZ2lzdGVyTmFtZShzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgaW50IHRhYmxl
SW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgInN3aXRjaF9jaGFyIik7CisgICAgICAgIG91dC5wcmludGYoIiVkLCAlZCgtPiVkKSwgJXMi
LCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJl
Z2lzdGVyTmFtZShzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICBpbnQgdGFibGVJbmRl
eCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAi
c3dpdGNoX3N0cmluZyIpOworICAgICAgICBvdXQucHJpbnRmKCIlZCwgJWQoLT4lZCksICVzIiwg
dGFibGVJbmRleCwgZGVmYXVsdFRhcmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdp
c3Rlck5hbWUoc2NydXRpbmVlUmVnaXN0ZXIpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX25ld19mdW5jOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgIm5ld19mdW5jIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywg
ZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBm
MCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVu
YzogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdfZ2Vu
ZXJhdG9yX2Z1bmMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rl
ck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6IHsKKyAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0
aW9uLCBpdCwgIm5ld19mdW5jX2V4cCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYl
ZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjAp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19n
ZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7Cisg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5j
X2V4cCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9zZXRfZnVuY3Rpb25fbmFtZTogeworICAgICAgICBpbnQgZnVu
Y1JlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJzZXRfZnVuY3Rpb25fbmFtZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdp
c3Rlck5hbWUoZnVuY1JlZykuZGF0YSgpLCByZWdpc3Rlck5hbWUobmFtZVJlZykuZGF0YSgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfY2FsbDogeworICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfdGFpbF9jYWxsOiB7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJ
bmZvcyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NhbGxfZXZhbDogewor
ICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxfZXZhbCIsIERvbnRE
dW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKKyAgICBjYXNl
IG9wX2NhbGxfdmFyYXJnczoKKyAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNh
c2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOiB7CisgICAgICAgIGludCByZXN1bHQg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGNhbGxlZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgdGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBhcmd1bWVudHMgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGZpcnN0RnJl
ZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCB2YXJBcmdPZmZzZXQg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgY29uc3QgY2hhciog
b3BOYW1lOworICAgICAgICBpZiAob3Bjb2RlID09IG9wX2NhbGxfdmFyYXJncykKKyAgICAgICAg
ICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0g
b3BfY29uc3RydWN0X3ZhcmFyZ3MpCisgICAgICAgICAgICBvcE5hbWUgPSAiY29uc3RydWN0X3Zh
cmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3Mp
CisgICAgICAgICAgICBvcE5hbWUgPSAidGFpbF9jYWxsX3ZhcmFyZ3MiOworICAgICAgICBlbHNl
IGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAgICAgICAg
ICAgb3BOYW1lID0gInRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyI7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCBvcE5hbWUpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsICVzLCAlcywgJWQsICVkIiwgcmVnaXN0ZXJOYW1lKHJlc3VsdCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoY2FsbGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZSh0aGlzVmFsdWUp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3Rl
ciwgdmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9w
X3JldDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAicmV0Iiwg
cjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IGNvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGxvY2F0aW9uLCBpdCwgInN0cmNhdCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgp
LCBjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3RvX3ByaW1pdGl2
ZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgInRvX3ByaW1pdGl2ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6IHsK
KyAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGJhc2UgPSBp
dFsyXS51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9u
LCBpdCwgIm9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCIpOworICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRh
KCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0
aCkgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9oYXNfaW5kZXhlZF9w
cm9wZXJ0eTogeworICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBiYXNlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBwcm9wZXJ0eU5hbWUg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAib3BfaGFzX2luZGV4ZWRfcHJvcGVydHkiKTsKKyAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJh
c2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHByb3BlcnR5TmFtZSkuZGF0YSgpKTsKKyAgICAgICAg
ZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OiB7Cisg
ICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gaXRb
Ml0udS5vcGVyYW5kOworICAgICAgICBpbnQgcHJvcGVydHlOYW1lID0gaXRbM10udS5vcGVyYW5k
OworICAgICAgICBpbnQgZW51bWVyYXRvciA9IGl0WzRdLnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfaGFzX3N0cnVjdHVyZV9wcm9w
ZXJ0eSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFt
ZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHBy
b3BlcnR5TmFtZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZW51bWVyYXRvcikuZGF0YSgpKTsKKyAg
ICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KSAtIDE7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5
OiB7CisgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNl
ID0gaXRbMl0udS5vcGVyYW5kOworICAgICAgICBpbnQgcHJvcGVydHlOYW1lID0gaXRbM10udS5v
cGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJv
cF9oYXNfZ2VuZXJpY19wcm9wZXJ0eSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocHJvcGVydHlOYW1lKS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVf
TEVOR1RIKG9wX2hhc19nZW5lcmljX3Byb3BlcnR5KSAtIDE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX2dldF9kaXJlY3RfcG5hbWU6IHsKKyAgICAgICAgaW50IGRzdCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgYmFzZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBpbnQgcHJvcGVydHlOYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGlu
dCBpbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgZW51bWVyYXRvciA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJvcF9nZXRfZGlyZWN0X3BuYW1lIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJh
c2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHByb3BlcnR5TmFtZSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoaW5kZXgpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGVudW1lcmF0b3IpLmRhdGEoKSk7CisgICAg
ICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRv
cjogeworICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5kOworICAgICAgICBpbnQgYmFz
ZSA9IGl0WzJdLnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAib3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3IiKTsKKyAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFz
ZSkuZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcikgLSAxOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9lbnVt
ZXJhdG9yX3N0cnVjdHVyZV9wbmFtZTogeworICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVy
YW5kOworICAgICAgICBpbnQgZW51bWVyYXRvciA9IGl0WzJdLnUub3BlcmFuZDsKKyAgICAgICAg
aW50IGluZGV4ID0gaXRbM10udS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZW51bWVyYXRvcikuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEo
KSk7CisgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVf
cG5hbWUpIC0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZW51bWVyYXRv
cl9nZW5lcmljX3BuYW1lOiB7CisgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBlbnVtZXJhdG9yID0gaXRbMl0udS5vcGVyYW5kOworICAgICAgICBpbnQgaW5k
ZXggPSBpdFszXS51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgIm9wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZSIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUoZW51bWVyYXRvcikuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEoKSk7CisgICAg
ICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKSAtIDE7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzogewor
ICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5kOworICAgICAgICBpbnQgaW5kZXggPSBp
dFsyXS51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9u
LCBpdCwgIm9wX3RvX2luZGV4X3N0cmluZyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMi
LCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0YSgpKTsK
KyAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF90b19pbmRleF9zdHJpbmcpIC0gMTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOiB7CisgICAg
ICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG5ld1Njb3BlID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBjdXJyZW50U2NvcGUgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAi
cHVzaF93aXRoX3Njb3BlIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdp
c3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShuZXdTY29wZSkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoY3VycmVudFNjb3BlKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IHBhcmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9wYXJl
bnRfc2NvcGUiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRz
dCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocGFyZW50U2NvcGUpLmRhdGEoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiB7Cisg
ICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHNjb3BlID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBzeW1ib2xUYWJsZSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgaW5pdGlhbFZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwK
KyAgICAgICAgICAgIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHNjb3Bl
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShzeW1ib2xUYWJsZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
aW5pdGlhbFZhbHVlKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF9jYXRjaDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImNhdGNoIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3Rocm93OiB7CisgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9w
ZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOiB7CisgICAgICAgIGludCBrMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBFcnJvclR5cGUgazEgPSBzdGF0aWNfY2FzdDxF
cnJvclR5cGU+KCgrK2l0KS0+dS51bnNpZ25lZFZhbHVlKTsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGhyb3dfc3RhdGljX2Vycm9yIik7CisgICAgICAg
IG91dC5wcmludGYoIiVzLCAiLCBjb25zdGFudE5hbWUoazApLmRhdGEoKSk7CisgICAgICAgIG91
dC5wcmludChrMSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlYnVnOiB7
CisgICAgICAgIGludCBkZWJ1Z0hvb2tUeXBlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBoYXNCcmVha3BvaW50RmxhZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkZWJ1ZyIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va1R5cGUpLCBoYXNCcmVha3Bv
aW50RmxhZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2Fzc2VydDogewor
ICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBs
aW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgImFzc2VydCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBy
ZWdpc3Rlck5hbWUoY29uZGl0aW9uKS5kYXRhKCksIGxpbmUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9lbmQ6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGxvY2F0
aW9uLCBpdCwgImVuZCIsIHIwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
cmVzb2x2ZV9zY29wZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlVHlwZT4oKCsraXQpLT51Lm9wZXJhbmQpOworICAgICAgICBpbnQgZGVw
dGggPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50
ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgInJlc29sdmVfc2NvcGUiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgPCVz
PiwgJWQsICVwIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShzY29wZSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVzb2x2ZVR5cGVO
YW1lKHJlc29sdmVUeXBlKSwgZGVwdGgsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJ
bmZvID0gR2V0UHV0SW5mbygoKytpdCktPnUub3BlcmFuZCk7CisgICAgICAgICsraXQ7IC8vIFN0
cnVjdHVyZQorICAgICAgICBpbnQgb3BlcmFuZCA9ICgrK2l0KS0+dS5vcGVyYW5kOyAvLyBPcGVy
YW5kCisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9m
cm9tX3Njb3BlIik7CisgICAgICAgIG91dC5wcmludChyZWdpc3Rlck5hbWUocjApLCAiLCAiLCBy
ZWdpc3Rlck5hbWUocjEpKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZDAp
ID09IFVJTlRfTUFYKQorICAgICAgICAgICAgb3V0LnByaW50KCIsIGFub255bW91cyIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgaWROYW1lKGlkMCwgaWRlbnRp
ZmllcihpZDApKSk7CisgICAgICAgIG91dC5wcmludCgiLCAiLCBnZXRQdXRJbmZvLm9wZXJhbmQo
KSwgIjwiLCByZXNvbHZlTW9kZU5hbWUoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpKSwgInwiLCBy
ZXNvbHZlVHlwZU5hbWUoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKSwgInwiLCBpbml0aWFsaXph
dGlvbk1vZGVOYW1lKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLCAiPiwgIiwgb3Bl
cmFuZCk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaWQw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKCgrK2l0KS0+dS5v
cGVyYW5kKTsKKyAgICAgICAgKytpdDsgLy8gU3RydWN0dXJlCisgICAgICAgIGludCBvcGVyYW5k
ID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X3RvX3Njb3BlIik7CisgICAgICAgIG91dC5wcmlu
dChyZWdpc3Rlck5hbWUocjApKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
ZDApID09IFVJTlRfTUFYKQorICAgICAgICAgICAgb3V0LnByaW50KCIsIGFub255bW91cyIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgaWROYW1lKGlkMCwgaWRl
bnRpZmllcihpZDApKSk7CisgICAgICAgIG91dC5wcmludCgiLCAiLCByZWdpc3Rlck5hbWUocjEp
LCAiLCAiLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZU5hbWUoZ2V0UHV0
SW5mby5yZXNvbHZlTW9kZSgpKSwgInwiLCByZXNvbHZlVHlwZU5hbWUoZ2V0UHV0SW5mby5yZXNv
bHZlVHlwZSgpKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGVOYW1lKGdldFB1dEluZm8uaW5pdGlh
bGl6YXRpb25Nb2RlKCkpLCAiPiwgPHN0cnVjdHVyZT4sICIsIG9wZXJhbmQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKKyAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9mcm9tX2FyZ3VtZW50
cyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQpOworICAgICAgICBkdW1wVmFs
dWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6IHsKKyAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF90b19hcmd1bWVudHMiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBv
ZmZzZXQsIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfeWllbGQ6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIHVuc2lnbmVkIHlpZWxkUG9pbnQgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInlpZWxkIik7CisgICAgICAgIG91dC5wcmludGYo
IiVzLCAldSwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgeWllbGRQb2ludCwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgZHVtcFBy
b2ZpbGVzRm9yQnl0ZWNvZGVPZmZzZXQob3V0LCBsb2NhdGlvbiwgaGFzUHJpbnRlZFByb2ZpbGlu
Zyk7CisgICAgb3V0LnByaW50KCJcbiIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBj
b25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAm
IHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAg
IEJ5dGVjb2RlRHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOworICAgIGR1bXBlci5kdW1wQnl0
ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBJZGVu
dGlmaWVycyhQcmludFN0cmVhbSYgb3V0KQoreworICAgIGlmIChzaXplX3QgY291bnQgPSBibG9j
aygpLT5udW1iZXJPZklkZW50aWZpZXJzKCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5JZGVu
dGlmaWVyczpcbiIpOworICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiAgaWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aSksIGlkZW50aWZpZXIoaSkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAr
K2k7CisgICAgICAgIH0gd2hpbGUgKGkgIT0gY291bnQpOworICAgIH0KK30KKwordGVtcGxhdGU8
Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cyhQ
cmludFN0cmVhbSYgb3V0KQoreworICAgIGlmICghYmxvY2soKS0+Y29uc3RhbnRSZWdpc3RlcnMo
KS5pc0VtcHR5KCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5Db25zdGFudHM6XG4iKTsKKyAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnN0YW50IDog
YmxvY2soKS0+Y29uc3RhbnRSZWdpc3RlcnMoKSkgeworICAgICAgICAgICAgY29uc3QgY2hhciog
c291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSBudWxscHRyOworICAgICAgICAg
ICAgc3dpdGNoIChibG9jaygpLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKVtp
XSkgeworICAgICAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToK
KyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbiA9ICI6
IGluIHNvdXJjZSBhcyBkb3VibGUiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkludGVnZXI6CisgICAgICAgICAgICAg
ICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBzb3VyY2UgYXMg
aW50ZWdlciI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbjo6T3RoZXI6CisgICAgICAgICAgICAgICAgc291cmNlQ29kZVJl
cHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgIGsldSA9ICVzJXNcbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgpKS5kYXRhKCks
IHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICsraTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFJlZ0V4cHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gYmxvY2soKS0+bnVtYmVyT2ZSZWdFeHBzKCkpIHsKKyAgICAgICAg
b3V0LnByaW50ZigiXG5tX3JlZ2V4cHM6XG4iKTsKKyAgICAgICAgc2l6ZV90IGkgPSAwOworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGkpLCByZWdleHBUb1NvdXJjZVN0cmluZyhibG9jaygpLT5yZWdleHAo
aSkpLmRhdGEoKSk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBjb3Vu
dCk7CisgICAgfQorfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAg
ICBpZiAodW5zaWduZWQgY291bnQgPSBibG9jaygpLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJz
KCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5FeGNlcHRpb24gSGFuZGxlcnM6XG4iKTsKKyAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNvbnN0IGF1
dG8mIGhhbmRsZXIgPSBibG9jaygpLT5leGNlcHRpb25IYW5kbGVyKGkpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBbJTRk
XSB9ICVzXG4iLCBpICsgMSwgaGFuZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFy
Z2V0LCBoYW5kbGVyLnR5cGVOYW1lKCkpOworICAgICAgICAgICAgKytpOworICAgICAgICB9IHdo
aWxlIChpIDwgY291bnQpOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMoUHJpbnRTdHJlYW0m
IG91dCkKK3sKKyAgICBpZiAodW5zaWduZWQgY291bnQgPSBibG9jaygpLT5udW1iZXJPZlN3aXRj
aEp1bXBUYWJsZXMoKSkgeworICAgICAgICBvdXQucHJpbnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6
XG4iKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBz
d2l0Y2hKdW1wVGFibGUgPSBibG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoaSk7CisgICAgICAgICAg
ICBpbnQgZW50cnkgPSAwOworICAgICAgICAgICAgYXV0byBlbmQgPSBzd2l0Y2hKdW1wVGFibGUu
YnJhbmNoT2Zmc2V0cy5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3dpdGNo
SnVtcFRhYmxlLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytl
bnRyeSkgeworICAgICAgICAgICAgICAgIGlmICghKml0ZXIpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHQlNGQgPT4gJTA0ZFxu
IiwgZW50cnkgKyBzd2l0Y2hKdW1wVGFibGUubWluLCAqaXRlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgICsraTsKKyAg
ICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJs
b2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzKFByaW50U3RyZWFtJiBvdXQpCit7CisgICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gYmxvY2so
KS0+bnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkpIHsKKyAgICAgICAgb3V0LnByaW50
ZigiXG5TdHJpbmcgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkg
PSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgICUxZCA9IHtcbiIs
IGkpOworICAgICAgICAgICAgY29uc3QgYXV0byYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlID0gYmxv
Y2soKS0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpOworICAgICAgICAgICAgYXV0byBlbmQgPSBz
dHJpbmdTd2l0Y2hKdW1wVGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3Ig
KGF1dG8gaXRlciA9IHN0cmluZ1N3aXRjaEp1bXBUYWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHRcIiVz
XCIgPT4gJTA0ZFxuIiwgaXRlci0+a2V5LT51dGY4KCkuZGF0YSgpLCBpdGVyLT52YWx1ZS5icmFu
Y2hPZmZzZXQpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICAgICAgfVxuIik7CisgICAgICAg
ICAgICArK2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBjb3VudCk7CisgICAgfQorfQorCit0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2so
QmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
IGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJ
bmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAgIFZNJiB2
bSA9ICpibG9jay0+dm0oKTsKKyAgICBzaXplX3QgaW5zdHJ1Y3Rpb25Db3VudCA9IDA7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucy5zaXplKCk7IGkgKz0gb3Bjb2Rl
TGVuZ3Roc1t2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2ldKV0pCisg
ICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKKworICAgIG91dC5wcmludCgqYmxvY2spOworICAg
IG91dC5wcmludGYoCisgICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAl
ZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAor
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMuc2l6ZSgpKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zLnNpemUoKSAq
IHNpemVvZihJbnN0cnVjdGlvbikpLAorICAgICAgICBibG9jay0+bnVtUGFyYW1ldGVycygpLCBi
bG9jay0+bnVtQ2FsbGVlTG9jYWxzKCksIGJsb2NrLT5tX251bVZhcnMpOworICAgIG91dC5wcmlu
dCgiOyBzY29wZSBhdCAiLCBibG9jay0+c2NvcGVSZWdpc3RlcigpKTsKKyAgICBvdXQucHJpbnRm
KCJcbiIpOworCisgICAgY29uc3QgYXV0byogYmVnaW4gPSBpbnN0cnVjdGlvbnMuYmVnaW4oKTsK
KyAgICBjb25zdCBhdXRvKiBlbmQgPSBpbnN0cnVjdGlvbnMuZW5kKCk7CisgICAgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+IGR1bXBlcihibG9jaywgYmVnaW4pOworICAgIGZvciAoY29uc3QgYXV0byog
aXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBkdW1wZXIuZHVtcEJ5dGVjb2Rl
KG91dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworCisgICAgZHVtcGVy
LmR1bXBJZGVudGlmaWVycyhvdXQpOworICAgIGR1bXBlci5kdW1wQ29uc3RhbnRzKG91dCk7Cisg
ICAgZHVtcGVyLmR1bXBSZWdFeHBzKG91dCk7CisgICAgZHVtcGVyLmR1bXBFeGNlcHRpb25IYW5k
bGVycyhvdXQpOworICAgIGR1bXBlci5kdW1wU3dpdGNoSnVtcFRhYmxlcyhvdXQpOworICAgIGR1
bXBlci5kdW1wU3RyaW5nU3dpdGNoSnVtcFRhYmxlcyhvdXQpOworCisgICAgb3V0LnByaW50Zigi
XG4iKTsKK30KKwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRDb2RlQmxv
Y2s+OwordGVtcGxhdGUgY2xhc3MgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMWZhMTFlYjE0NTNiNGZiYWY2YzBhMWM3MmViZWRkMWZjYjQ1N2U2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgK
QEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQ2FsbExpbmtJbmZvLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0
cnVjdCBJbnN0cnVjdGlvbjsKKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+CitjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CisKKyAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKworcHJpdmF0ZToKKyAg
ICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbikKKyAgICAgICAgOiBtX2Jsb2NrKGJsb2NrKQorICAgICAgICAsIG1faW5zdHJ1
Y3Rpb25zQmVnaW4oaW5zdHJ1Y3Rpb25zQmVnaW4pCisgICAgeworICAgIH0KKworICAgIEJsb2Nr
KiBibG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2s7IH0KKyAgICBjb25zdCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uc0JlZ2lu
OyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFZNKiB2bSgpIGNvbnN0OworCisgICAgQ1N0cmluZyBy
ZWdpc3Rlck5hbWUoaW50IHIpIGNvbnN0OworICAgIENTdHJpbmcgY29uc3RhbnROYW1lKGludCBp
bmRleCkgY29uc3Q7CisKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRl
eCkgY29uc3Q7CisKKyAgICB2b2lkIGR1bXBJZGVudGlmaWVycyhQcmludFN0cmVhbSYgb3V0KTsK
KyAgICB2b2lkIGR1bXBDb25zdGFudHMoUHJpbnRTdHJlYW0mIG91dCk7CisgICAgdm9pZCBkdW1w
UmVnRXhwcyhQcmludFN0cmVhbSYgb3V0KTsKKyAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVy
cyhQcmludFN0cmVhbSYgb3V0KTsKKyAgICB2b2lkIGR1bXBTd2l0Y2hKdW1wVGFibGVzKFByaW50
U3RyZWFtJiBvdXQpOworICAgIHZvaWQgZHVtcFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoUHJpbnRT
dHJlYW0mIG91dCk7CisKKyAgICB2b2lkIHByaW50VW5hcnlPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKKyAg
ICB2b2lkIHByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CisgICAgdm9pZCBwcmludENvbmRp
dGlvbmFsSnVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGludCBsb2NhdGlvbiwgY29uc3QgY2hhciogb3ApOworICAgIHZvaWQg
cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0
cnVjdGlvbiomIGl0KTsKKyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHBy
aW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29u
c3QgU3R1YkluZm9NYXAmKTsKKyAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBE
b250RHVtcENhY2hlcyB9OworICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2Fj
aGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZv
TWFwJik7CisgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICB2b2lk
IHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBpbnQgb3Bl
cmFuZCk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01h
cCYsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOworCisgICAgdm9pZCBkdW1wVmFsdWVQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKKyAgICB2b2lkIGR1bXBBcnJheVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0
IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgIHZvaWQgZHVt
cFByb2ZpbGVzRm9yQnl0ZWNvZGVPZmZzZXQoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlv
biwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisKKyAgICB2b2lkKiBhY3R1YWxQb2ludGVy
Rm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0OworCisjaWYgRU5BQkxFKEpJVCkKKyAgICB2b2lk
IGR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25z
dCBDYWxsTGlua0luZm9NYXAmKTsKKyNlbmRpZgorCisgICAgQmxvY2sqIG1fYmxvY2s7CisgICAg
Y29uc3QgSW5zdHJ1Y3Rpb24qIG1faW5zdHJ1Y3Rpb25zQmVnaW47Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmNwcAppbmRleCBmN2UxZTlhM2Q2ZDliZThlODczYzZmNzI4MDg1MTU4MTU0
MWZiYTgzLi45NDlhZmE2ZjlkNDg2MTQyMjk2ZWZkMzNlMjUwMWIzYTRkMTAxMjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogCisjaW5jbHVkZSAi
Qnl0ZWNvZGVEdW1wZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCkBAIC02Niw3ICs2Nyw3IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uIHsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBjYXNlIG9wX3lpZWxk
OiB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7
CiAgICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07CkBAIC0yNjEsNiArMjYyLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6cnVuKCkKIAogdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKIHsKKyAgICBpZiAoT3B0
aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKQorICAgICAgICBC
eXRlY29kZUR1bXBlcjxVbmxpbmtlZENvZGVCbG9jaz46OmR1bXBCbG9jayhjb2RlQmxvY2ssIGlu
c3RydWN0aW9ucywgV1RGOjpkYXRhRmlsZSgpKTsKKwogICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAgICAgcGFzcy5ydW4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggNjBlZWI3MTc0ZDQwN2I1ZjEzYzdhMGNmNmRi
YTU0YjVjMzYyMThlMC4uODE2OGQ4NzI5MDdmNGQ3MDU1NmRmNTJjNDI4OTg3ODkwYzM2NGE3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgRmFzdEJpdFZlY3Rv
ciBsaXZlQmVmb3JlID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7CiAgICAgICAgICAgICBkdW1wQml0VmVjdG9yKGxpdmVCZWZvcmUpOwogICAgICAgICAg
ICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShX
VEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2Rl
QmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGluc3RydWN0aW9uc0JlZ2luLCBj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IGNkOTdmMzRlODY2YWM2YWJmYjA4MmQxODZhZmMzNjYyOGE3NmJiMDQuLjYx
NjFmMWIxMGY3YzVmNTA3Mjk4MjY1Y2Q0ZTJkMGIxMGMwZTU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
bmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIK
KyNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVVc2VEZWYuaCIKQEAgLTQ5LDcgKzUwLDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1
dGFibGVEdW1wLmgiCiAjaW5jbHVkZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIklubGluZUNh
bGxGcmFtZS5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMjA0LDMyNCArMjA1LDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBkdW1wQXNzdW1pbmdKSVRUeXBl
KG91dCwgaml0VHlwZSgpKTsKIH0KIAotc3RhdGljIENTdHJpbmcgaWROYW1lKGludCBpZDAsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoaWRlbnQuaW1w
bCgpLCAiKEBpZCIsIGlkMCwgIikiKTsKLX0KLQotQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVy
TmFtZShpbnQgcikgY29uc3QKLXsKLSAgICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgocikp
Ci0gICAgICAgIHJldHVybiBjb25zdGFudE5hbWUocik7Ci0KLSAgICByZXR1cm4gdG9DU3RyaW5n
KFZpcnR1YWxSZWdpc3RlcihyKSk7Ci19Ci0KLUNTdHJpbmcgQ29kZUJsb2NrOjpjb25zdGFudE5h
bWUoaW50IGluZGV4KSBjb25zdAotewotICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRDb25zdGFudChp
bmRleCk7Ci0gICAgcmV0dXJuIHRvQ1N0cmluZyh2YWx1ZSwgIigiLCBWaXJ0dWFsUmVnaXN0ZXIo
aW5kZXgpLCAiKSIpOwotfQotCi1zdGF0aWMgQ1N0cmluZyByZWdleHBUb1NvdXJjZVN0cmluZyhS
ZWdFeHAqIHJlZ0V4cCkKLXsKLSAgICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwg
MCB9OwotICAgIGludCBpbmRleCA9IDE7Ci0gICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpCi0gICAg
ICAgIHBvc3RmaXhbaW5kZXgrK10gPSAnZyc7Ci0gICAgaWYgKHJlZ0V4cC0+aWdub3JlQ2FzZSgp
KQotICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ2knOwotICAgIGlmIChyZWdFeHAtPm11bHRp
bGluZSgpKQotICAgICAgICBwb3N0Zml4W2luZGV4XSA9ICdtJzsKLSAgICBpZiAocmVnRXhwLT5z
dGlja3koKSkKLSAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9ICd5JzsKLSAgICBpZiAocmVnRXhw
LT51bmljb2RlKCkpCi0gICAgICAgIHBvc3RmaXhbaW5kZXgrK10gPSAndSc7Ci0KLSAgICByZXR1
cm4gdG9DU3RyaW5nKCIvIiwgcmVnRXhwLT5wYXR0ZXJuKCkuaW1wbCgpLCBwb3N0Zml4KTsKLX0K
LQotc3RhdGljIENTdHJpbmcgcmVnZXhwTmFtZShpbnQgcmUsIFJlZ0V4cCogcmVnZXhwKQotewot
ICAgIHJldHVybiB0b0NTdHJpbmcocmVnZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUi
LCByZSwgIikiKTsKLX0KLQotTkVWRVJfSU5MSU5FIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z0hv
b2tOYW1lKGludCBkZWJ1Z0hvb2tUeXBlKQotewotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8RGVi
dWdIb29rVHlwZT4oZGVidWdIb29rVHlwZSkpIHsKLSAgICAgICAgY2FzZSBEaWRFbnRlckNhbGxG
cmFtZToKLSAgICAgICAgICAgIHJldHVybiAiZGlkRW50ZXJDYWxsRnJhbWUiOwotICAgICAgICBj
YXNlIFdpbGxMZWF2ZUNhbGxGcmFtZToKLSAgICAgICAgICAgIHJldHVybiAid2lsbExlYXZlQ2Fs
bEZyYW1lIjsKLSAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0YXRlbWVudDoKLSAgICAgICAgICAg
IHJldHVybiAid2lsbEV4ZWN1dGVTdGF0ZW1lbnQiOwotICAgICAgICBjYXNlIFdpbGxFeGVjdXRl
RXhwcmVzc2lvbjoKLSAgICAgICAgICAgIHJldHVybiAid2lsbEV4ZWN1dGVFeHByZXNzaW9uIjsK
LSAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVByb2dyYW06Ci0gICAgICAgICAgICByZXR1cm4gIndp
bGxFeGVjdXRlUHJvZ3JhbSI7Ci0gICAgICAgIGNhc2UgRGlkRXhlY3V0ZVByb2dyYW06Ci0gICAg
ICAgICAgICByZXR1cm4gImRpZEV4ZWN1dGVQcm9ncmFtIjsKLSAgICAgICAgY2FzZSBEaWRSZWFj
aEJyZWFrcG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gImRpZFJlYWNoQnJlYWtwb2ludCI7Ci0g
ICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7
Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpwcmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhl
Y1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IGNoYXIqIG9wKQotewotICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotCi0gICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCBvcCk7Ci0gICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLX0KLQotdm9pZCBDb2Rl
QmxvY2s6OnByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQotewot
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCByMSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgb3ApOwotICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByaW50
Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IGNoYXIqIG9wKQotewotICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsIG9wKTsKLSAgICBvdXQucHJpbnRmKCIlcywgJWQoLT4lZCkiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci19Ci0K
LXZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3Rh
dGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkKLXsKLSAgICBj
b25zdCBjaGFyKiBvcDsKLSAgICBzd2l0Y2ggKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29k
ZUlEKGl0LT51Lm9wY29kZSkpIHsKLSAgICBjYXNlIG9wX2dldF9ieV9pZDoKLSAgICAgICAgb3Ag
PSAiZ2V0X2J5X2lkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJv
dG9fbG9hZDoKLSAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Byb3RvX2xvYWQiOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoKLSAgICAgICAgb3AgPSAiZ2V0X2J5
X2lkX3Vuc2V0IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3Ro
OgotICAgICAgICBvcCA9ICJhcnJheV9sZW5ndGgiOwotICAgICAgICBicmVhazsKLSAgICBkZWZh
dWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIENPTVBJTEVS
X1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9DT0RFKQotICAgICAgICBvcCA9IDA7Ci0jZW5k
aWYKLSAgICB9Ci0gICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgb3ApOwotICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAg
ICBpdCArPSA0OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZhbHVlIHByb2ZpbGVyLgotfQotCi1z
dGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5h
bWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsKLSAg
ICBpZiAoIXN0cnVjdHVyZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG91dC5wcmludGYo
IiVzID0gJXAiLCBuYW1lLCBzdHJ1Y3R1cmUpOwotICAgIAotICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KGlkZW50LmltcGwoKSk7Ci0gICAgaWYg
KG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQotICAgICAgICBvdXQucHJpbnRmKCIgKG9mZnNldCA9
ICVkKSIsIG9mZnNldCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmludFN0cmVhbSYg
b3V0LCBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewot
ICAgIG91dC5wcmludGYoImNoYWluID0gJXA6IFsiLCBjaGFpbik7Ci0gICAgYm9vbCBmaXJzdCA9
IHRydWU7Ci0gICAgZm9yIChXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogY3VycmVudFN0cnVjdHVy
ZSA9IGNoYWluLT5oZWFkKCk7Ci0gICAgICAgICAqY3VycmVudFN0cnVjdHVyZTsKLSAgICAgICAg
ICsrY3VycmVudFN0cnVjdHVyZSkgewotICAgICAgICBpZiAoZmlyc3QpCi0gICAgICAgICAgICBm
aXJzdCA9IGZhbHNlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIsICIp
OwotICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIGN1cnJlbnRTdHJ1Y3R1cmUt
PmdldCgpLCBpZGVudCk7Ci0gICAgfQotICAgIG91dC5wcmludGYoIl0iKTsKLX0KLQotdm9pZCBD
b2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNT
dGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQotewotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBsb2Nh
dGlvbjsKLQotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpOwotICAgIAotICAgIFVOVVNFRF9QQVJBTShpZGVudCk7IC8vIHRl
bGwgdGhlIGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25maWd1cmF0
aW9ucy4KLSAgICAKLSAgICBpZiAoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX2dldF9hcnJheV9sZW5ndGgpCi0gICAgICAgIG91
dC5wcmludGYoIiBsbGludChhcnJheV9sZW5ndGgpIik7Ci0gICAgZWxzZSBpZiAoU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZUlEKSB7Ci0gICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KHN0cnVjdHVyZUlEKTsKLSAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCIpOwotICAgICAgICBk
dW1wU3RydWN0dXJlKG91dCwgInN0cnVjdCIsIHN0cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICBv
dXQucHJpbnRmKCIpIik7Ci0gICAgICAgIGlmIChleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQp
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgcHJvdG8oJXApIiwgaW5zdHJ1Y3Rpb25bNl0udS5w
b2ludGVyKTsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7Ci0gICAgICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwotICAgICAgICBpZiAoc3R1
YkluZm8ucmVzZXRCeUdDKQotICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIp
OwotICAgICAgICAKLSAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKLSAgICAgICAgICAgIAot
ICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBudWxscHRyOwotICAgICAgICBQb2x5
bW9ycGhpY0FjY2Vzcyogc3R1YiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAKLSAgICAgICAgc3dp
dGNoIChzdHViSW5mby5jYWNoZVR5cGUpIHsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5
SWRTZWxmOgotICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZiIpOwotICAgICAgICAgICAgYmFz
ZVN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAg
ICAgICAgICAgIG91dC5wcmludGYoInN0dWIiKTsKLSAgICAgICAgICAgIHN0dWIgPSBzdHViSW5m
by51LnN0dWI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVu
c2V0OgotICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCJBcnJheUxlbmd0aCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBpZiAoYmFzZVN0cnVj
dHVyZSkgewotICAgICAgICAgICAgb3V0LnByaW50ZigiLCAiKTsKLSAgICAgICAgICAgIGR1bXBT
dHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHN0dWIpCi0gICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIp
OwotCi0gICAgICAgIG91dC5wcmludGYoIikiKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShtYXApOwotI2VuZGlmCi19Ci0KLXZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRDYWNo
ZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFw
JiBtYXApCi17Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSArIGxvY2F0aW9uOwotCi0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVu
dGlmaWVyKGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Ci0gICAgCi0gICAgVU5VU0VEX1BBUkFN
KGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRm
b3JtIGNvbmZpZ3VyYXRpb25zLgotCi0gICAgb3V0LnByaW50KCIsICIsIGluc3RydWN0aW9uWzhd
LnUucHV0QnlJZEZsYWdzKTsKLSAgICAKLSAgICBpZiAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQg
PSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZUlEKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsK
LSAgICAgICAgb3V0LnByaW50KCIgbGxpbnQoIik7Ci0gICAgICAgIGlmIChTdHJ1Y3R1cmVJRCBu
ZXdTdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlSUQpIHsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG5ld1N0cnVjdHVyZUlEKTsKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
cHJldiIsIHN0cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICAgICAgb3V0LnByaW50KCIsICIpOwot
ICAgICAgICAgICAgZHVtcFN0cnVjdHVyZShvdXQsICJuZXh0IiwgbmV3U3RydWN0dXJlLCBpZGVu
dCk7Ci0gICAgICAgICAgICBpZiAoU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkgewotICAgICAgICAgICAgICAgIG91dC5wcmludCgi
LCAiKTsKLSAgICAgICAgICAgICAgICBkdW1wQ2hhaW4ob3V0LCBjaGFpbiwgaWRlbnQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0
LCAic3RydWN0Iiwgc3RydWN0dXJlLCBpZGVudCk7Ci0gICAgICAgIG91dC5wcmludCgiKSIpOwot
ICAgIH0KLQotI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
UHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKLSAgICAgICAgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7Ci0gICAgICAgIGlmIChzdHViSW5mby5yZXNl
dEJ5R0MpCi0gICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7Ci0gICAgICAg
IAotICAgICAgICBvdXQucHJpbnRmKCIgaml0KCIpOwotICAgICAgICAKLSAgICAgICAgc3dpdGNo
IChzdHViSW5mby5jYWNoZVR5cGUpIHsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRS
ZXBsYWNlOgotICAgICAgICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAiKTsKLSAgICAgICAgICAg
IGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2Jq
ZWN0U3RydWN0dXJlLmdldCgpLCBpZGVudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDYWNoZVR5cGU6OlN0dWI6IHsKLSAgICAgICAgICAgIG91dC5wcmludCgic3R1YiwgIiwg
KnN0dWJJbmZvLnUuc3R1Yik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgb3V0LnByaW50ZigiKSIpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KG1hcCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKFByaW50U3Ry
ZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29s
JiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKLXsKLSAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgaW50IGZ1bmMgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICBpbnQgYXJnQ291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBpbnQg
cmVnaXN0ZXJPZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wKTsKLSAgICBvdXQucHJpbnQocmVnaXN0ZXJO
YW1lKGRzdCksICIsICIsIHJlZ2lzdGVyTmFtZShmdW5jKSwgIiwgIiwgYXJnQ291bnQsICIsICIs
IHJlZ2lzdGVyT2Zmc2V0KTsKLSAgICBvdXQucHJpbnQoIiAodGhpcyBhdCAiLCB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgwLCAtcmVnaXN0ZXJPZmZzZXQpLCAiKSIpOwotICAgIGlmIChjYWNo
ZUR1bXBNb2RlID09IER1bXBDYWNoZXMpIHsKLSAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9IGl0WzFdLnUuY2FsbExpbmtJbmZvOwotICAgICAgICBpZiAoY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZSkgewotICAgICAgICAgICAgb3V0LnByaW50ZigKLSAgICAgICAg
ICAgICAgICAiIGxsaW50KCVwLCBleGVjICVwKSIsCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8t
Pmxhc3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKEpJ
VCkKLSAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpKSB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBpbmZvLT5sYXN0
U2VlbkNhbGxlZSgpOwotICAgICAgICAgICAgaWYgKHRhcmdldCkKLSAgICAgICAgICAgICAgICBv
dXQucHJpbnRmKCIgaml0KCVwLCBleGVjICVwKSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxl
KCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaml0VHlwZSgpICE9IEpJVENv
ZGU6OkZUTEpJVCkKLSAgICAgICAgICAgIG91dC5wcmludCgiIHN0YXR1cygiLCBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcih0aGlzLCBsb2NhdGlvbiwgbWFwKSwgIikiKTsKLSNlbHNlCi0gICAg
ICAgIFVOVVNFRF9QQVJBTShtYXApOwotI2VuZGlmCi0gICAgfQotICAgICsraXQ7Ci0gICAgKytp
dDsKLSAgICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7
Ci0gICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwot
fQotCi12b2lkIENvZGVCbG9jazo6cHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhl
Y1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IGNoYXIqIG9wKQotewotICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wKTsKLSAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFt
ZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7
Ci0gICAgaXQgKz0gNTsKLX0KLQogdm9pZCBDb2RlQmxvY2s6OmR1bXBTb3VyY2UoKQogewogICAg
IGR1bXBTb3VyY2UoV1RGOjpkYXRhRmlsZSgpKTsKQEAgLTU0OSwxMjQ0ICsyMzIsMjQgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICAvLyBXZSBvbmx5IHVzZSB0aGUgRXhlY1N0YXRl
KiBmb3IgdGhpbmdzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgbGVhZCB0byBKUyBleGVjdXRpb24sCi0g
ICAgLy8gbGlrZSBjb252ZXJ0aW5nIGEgSlNTdHJpbmcgdG8gYSBTdHJpbmcuIEhlbmNlIHRoZSBn
bG9iYWxFeGVjIGlzIGFwcHJvcHJpYXRlLgotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0gICAgCi0gICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQg
PSAwOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7
IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQotICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7Ci0K
LSAgICBvdXQucHJpbnQoKnRoaXMpOwotICAgIG91dC5wcmludGYoCi0gICAgICAgICI6ICVsdSBt
X2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdp
c3RlcihzKTsgJWQgdmFyaWFibGUocykiLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAg
ICAgICAgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJzKTsKLSAg
ICBvdXQucHJpbnQoIjsgc2NvcGUgYXQgIiwgc2NvcGVSZWdpc3RlcigpKTsKLSAgICBvdXQucHJp
bnRmKCJcbiIpOwotICAgIAogICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKICAgICBDYWxsTGlu
a0luZm9NYXAgY2FsbExpbmtJbmZvczsKICAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwog
ICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICAKLSAgICBjb25zdCBJ
bnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGNvbnN0IElu
c3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKLSAgICBmb3IgKGNvbnN0IElu
c3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBCeXRl
Y29kZShvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKLSAg
ICAKLSAgICBpZiAobnVtYmVyT2ZJZGVudGlmaWVycygpKSB7Ci0gICAgICAgIG91dC5wcmludGYo
IlxuSWRlbnRpZmllcnM6XG4iKTsKLSAgICAgICAgc2l6ZV90IGkgPSAwOwotICAgICAgICBkbyB7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGkpLCBpZGVudGlmaWVyKGkpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChpICE9IG51bWJlck9mSWRlbnRpZmllcnMoKSk7
Ci0gICAgfQotCi0gICAgaWYgKCFtX2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAg
ICAgICBvdXQucHJpbnRmKCJcbkNvbnN0YW50czpcbiIpOwotICAgICAgICBzaXplX3QgaSA9IDA7
Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZUNvZGVSZXByZXNl
bnRhdGlvbkRlc2NyaXB0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAobV9jb25z
dGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baV0pIHsKLSAgICAgICAgICAgIGNhc2UgU291
cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgc291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBzb3VyY2UgYXMgZG91YmxlIjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOjpJbnRlZ2VyOgotICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
bkRlc2NyaXB0aW9uID0gIjogaW4gc291cmNlIGFzIGludGVnZXIiOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVy
OgotICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0g
IiI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIgICBrJXUgPSAlcyVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRv
Q1N0cmluZyhtX2NvbnN0YW50UmVnaXN0ZXJzW2ldLmdldCgpKS5kYXRhKCksIHNvdXJjZUNvZGVS
ZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3
aGlsZSAoaSA8IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAo
c2l6ZV90IGNvdW50ID0gbV91bmxpbmtlZENvZGUtPm51bWJlck9mUmVnRXhwcygpKSB7Ci0gICAg
ICAgIG91dC5wcmludGYoIlxubV9yZWdleHBzOlxuIik7Ci0gICAgICAgIHNpemVfdCBpID0gMDsK
LSAgICAgICAgZG8gewotICAgICAgICAgICAgb3V0LnByaW50ZigiICByZSV1ID0gJXNcbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpKSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtlZENv
ZGUtPnJlZ2V4cChpKSkuZGF0YSgpKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGls
ZSAoaSA8IGNvdW50KTsKLSAgICB9Ci0KLSAgICBkdW1wRXhjZXB0aW9uSGFuZGxlcnMob3V0KTsK
LSAgICAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6
XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7Ci0gICAgICAgICAgICBpbnQgZW50cnkgPSAw
OwotICAgICAgICAgICAgVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3Jh
cmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKLSAgICAg
ICAgICAgIGZvciAoVmVjdG9yPGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJl
RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAh
PSBlbmQ7ICsraXRlciwgKytlbnRyeSkgewotICAgICAgICAgICAgICAgIGlmICghKml0ZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG91dC5wcmludGYo
Ilx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXNbaV0ubWluLCAqaXRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIgICAgICB9XG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1f
cmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmlz
RW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcblN0cmluZyBTd2l0Y2ggSnVtcCBUYWJs
ZXM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiAgJTFkID0ge1xuIiwgaSk7Ci0gICAgICAgICAgICBTdHJpbmdKdW1w
VGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7Ci0gICAgICAg
ICAgICBmb3IgKFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0
VGFibGUuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnRmKCJcdFx0XCIlc1wiID0+ICUwNGRcbiIsIGl0ZXItPmtleS0+dXRmOCgpLmRhdGEoKSwg
aXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAg
IH1cbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7Ci0gICAgfQotCi0gICAgb3V0LnBy
aW50ZigiXG4iKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmR1bXBFeGNlcHRpb25IYW5kbGVycyhQ
cmludFN0cmVhbSYgb3V0KQotewotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5t
X2V4Y2VwdGlvbkhhbmRsZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkV4
Y2VwdGlvbiBIYW5kbGVyczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRhLT5tX2V4
Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3Rh
cnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBbJTRkXSB9ICVzXG4iLAotICAgICAgICAgICAg
ICAgIGkgKyAxLCBoYW5kbGVyLnN0YXJ0LCBoYW5kbGVyLmVuZCwgaGFuZGxlci50YXJnZXQsIGhh
bmRsZXIudHlwZU5hbWUoKSk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkg
PCBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKSk7Ci0gICAgfQotfQotCi12
b2lkIENvZGVCbG9jazo6YmVnaW5EdW1wUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGJvb2wm
IGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0gICAgaWYgKGhhc1ByaW50ZWRQcm9maWxpbmcpIHsK
LSAgICAgICAgb3V0LnByaW50KCI7ICIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIG91dC5wcmludCgiICAgICIpOwotICAgIGhhc1ByaW50ZWRQcm9maWxpbmcgPSB0cnVlOwot
fQotCi12b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0g
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAotICAgICsraXQ7Ci0g
ICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGl0LT51LnByb2ZpbGUtPmJyaWVmRGVzY3JpcHRpb24o
bG9ja2VyKTsKLSAgICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgYmVnaW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAg
b3V0LnByaW50KGRlc2NyaXB0aW9uKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmR1bXBBcnJheVBy
b2ZpbGluZyhQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nKQotewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKLSAgICAKLSAgICArK2l0OwotICAgIGlmICghaXQtPnUuYXJyYXlQcm9maWxlKQotICAg
ICAgICByZXR1cm47Ci0gICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGl0LT51LmFycmF5UHJvZmls
ZS0+YnJpZWZEZXNjcmlwdGlvbihsb2NrZXIsIHRoaXMpOwotICAgIGlmICghZGVzY3JpcHRpb24u
bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBiZWdpbkR1bXBQcm9maWxpbmcob3V0LCBo
YXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICBvdXQucHJpbnQoZGVzY3JpcHRpb24pOwotfQotCi12
b2lkIENvZGVCbG9jazo6ZHVtcFJhcmVDYXNlUHJvZmlsZShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBuYW1lLCBSYXJlQ2FzZVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wmIGhhc1ByaW50ZWRQ
cm9maWxpbmcpCi17Ci0gICAgaWYgKCFwcm9maWxlIHx8ICFwcm9maWxlLT5tX2NvdW50ZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGJlZ2luRHVtcFByb2ZpbGluZyhvdXQsIGhhc1ByaW50ZWRQ
cm9maWxpbmcpOwotICAgIG91dC5wcmludChuYW1lLCBwcm9maWxlLT5tX2NvdW50ZXIpOwotfQot
Ci12b2lkIENvZGVCbG9jazo6ZHVtcEFyaXRoUHJvZmlsZShQcmludFN0cmVhbSYgb3V0LCBBcml0
aFByb2ZpbGUqIHByb2ZpbGUsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0gICAgaWYg
KCFwcm9maWxlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYmVnaW5EdW1wUHJvZmlsaW5n
KG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgb3V0LnByaW50KCJyZXN1bHRzOiAiLCAq
cHJvZmlsZSk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpwcmludExvY2F0aW9uQW5kT3AoUHJpbnRT
dHJlYW0mIG91dCwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiom
LCBjb25zdCBjaGFyKiBvcCkKLXsKLSAgICBvdXQucHJpbnRmKCJbJTRkXSAlLTE3cyAiLCBsb2Nh
dGlvbiwgb3ApOwotfQotCi12b2lkIENvZGVCbG9jazo6cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0
ZXJPcGVyYW5kKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9u
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpCi17
Ci0gICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcCk7Ci0g
ICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUob3BlcmFuZCkuZGF0YSgpKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKLSAgICBQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwKLSAgICBjb25zdCBT
dHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5rSW5m
b3MpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQog
ewotICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVnaW47Ci0gICAgYm9vbCBoYXNQcmludGVkUHJv
ZmlsaW5nID0gZmFsc2U7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlID0gZXhlYy0+aW50ZXJwcmV0ZXIo
KS0+Z2V0T3Bjb2RlSUQoaXQtPnUub3Bjb2RlKTsKLSAgICBzd2l0Y2ggKG9wY29kZSkgewotICAg
ICAgICBjYXNlIG9wX2VudGVyOiB7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJlbnRlciIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9nZXRfc2NvcGU6IHsKLSAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0
ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0
X2FyZ3VtZW50czogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJj
cmVhdGVfZGlyZWN0X2FyZ3VtZW50cyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOiB7Ci0gICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAiY3JlYXRlX3Njb3BlZF9hcmd1bWVudHMiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfYXJndW1lbnRfY291bnQ6IHsKLSAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiYXJndW1lbnRf
Y291bnQiLCByMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2dldF9hcmd1bWVudDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImFyZ3VtZW50IiwgcjApOwotICAgICAgICAgICAgb3V0LnByaW50ZigiLCAlZCIsIGlu
ZGV4KTsKLSAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVk
UHJvZmlsaW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfY3JlYXRlX3Jlc3Q6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBhcmd1bWVudE9mZnNldCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRl
X3Jlc3QiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIkFyZ3VtZW50c09mZnNldDogJXUiLCBhcmd1bWVudE9mZnNldCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewot
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfcmVzdF9sZW5ndGgi
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudE9mZnNldCA9ICgrK2l0KS0+dS51bnNp
Z25lZFZhbHVlOwotICAgICAgICAgICAgb3V0LnByaW50ZigiQXJndW1lbnRzT2Zmc2V0OiAldSIs
IGFyZ3VtZW50T2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfY3JlYXRlX3RoaXM6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBjYWNoZWRGdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAiY3JlYXRlX3RoaXMiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXUsICV1
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpbmZl
cnJlZElubGluZUNhcGFjaXR5LCBjYWNoZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVn
aXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAidG9fdGhpcyIsIHIwKTsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gKCsraXQpLT51LnN0cnVjdHVyZS5nZXQo
KTsKLSAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KCIsIGNhY2hlKHN0cnVjdCA9ICIsIFJhd1BvaW50ZXIoc3RydWN0dXJlKSwgIikiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludCgiLCAiLCAoKytpdCktPnUudG9UaGlzU3RhdHVzKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY2hlY2tfdGR6OiB7Ci0gICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX2No
ZWNrX3RkeiIsIHIwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfbmV3X29iamVjdDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJuZXdfb2JqZWN0Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXUiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7Ci0g
ICAgICAgICAgICArK2l0OyAvLyBTa2lwIG9iamVjdCBhbGxvY2F0aW9uIHByb2ZpbGUuCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewot
ICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50
IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJuZXdfYXJyYXkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJWQiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd2KS5kYXRh
KCksIGFyZ2MpOwotICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHBy
b2ZpbGUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25l
d19hcnJheV93aXRoX3NwcmVhZDogewotICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXJyYXlfd2l0aF9zcHJl
YWQiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICIsIHJlZ2lzdGVyTmFt
ZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZ3YpLmRhdGEoKSwgYXJnYyk7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBiaXRWZWN0b3JJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwot
ICAgICAgICAgICAgY29uc3QgQml0VmVjdG9yJiBiaXRWZWN0b3IgPSBtX3VubGlua2VkQ29kZS0+
Yml0VmVjdG9yKGJpdFZlY3RvckluZGV4KTsKLSAgICAgICAgICAgIG91dC5wcmludCgiQml0VmVj
dG9yOiIsIGJpdFZlY3RvckluZGV4LCAiOiIpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhcmdjKTsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGJpdFZlY3Rvci5nZXQoaSkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmlu
dCgiMSIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIwIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX3NwcmVhZDogewotICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGFyZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic3By
ZWFkIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmcpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6IHsKLSAgICAg
ICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBsZW5n
dGggPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hcnJheV93aXRoX3NpemUiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGxlbmd0aCkuZGF0YSgpKTsKLSAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkg
YWxsb2NhdGlvbiBwcm9maWxlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOiB7Ci0gICAgICAgICAgICBpbnQgZHN0ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hcnJheV9i
dWZmZXIiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCwgJWQiLCByZWdpc3Rlck5h
bWUoZHN0KS5kYXRhKCksIGFyZ3YsIGFyZ2MpOwotICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBh
cnJheSBhbGxvY2F0aW9uIHByb2ZpbGUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX25ld19yZWdleHA6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bmV3X3JlZ2V4cCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KW1fdW5s
aW5rZWRDb2RlLT5udW1iZXJPZlJlZ0V4cHMoKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcyIsIHJlZ2V4cE5hbWUocmUwLCByZWdleHAocmUwKSkuZGF0YSgpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX21vdjogewot
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm1vdiIpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHJvZmls
ZV90eXBlOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgICsraXQ7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgKytpdDsKLSAgICAg
ICAgICAgICsraXQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJvcF9wcm9maWxlX3R5cGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzogewotICAgICAgICAg
ICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSAoKytpdCktPnUuYmFz
aWNCbG9ja0xvY2F0aW9uOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jb250cm9sX2Zsb3ciKTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIlslZCwgJWRdIiwgYmFzaWNCbG9ja0xvY2F0aW9uLT5zdGFydE9mZnNldCgpLCBi
YXNpY0Jsb2NrTG9jYXRpb24tPmVuZE9mZnNldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfbm90OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJub3QiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJlcSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9lcV9udWxsOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJlcV9udWxsIik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25lcTogewotICAgICAgICAgICAgcHJpbnRC
aW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5lcSIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXFfbnVsbDogewotICAgICAgICAgICAg
cHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmVxX251bGwiKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6IHsKLSAg
ICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3Rl
cSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uc3Ry
aWN0ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJuc3RyaWN0ZXEiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfbGVzczogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImxlc3MiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfbGVzc2VxOiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibGVzc2VxIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX2dyZWF0ZXI6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJncmVhdGVyIik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dyZWF0ZXJlcTogewotICAgICAgICAgICAgcHJp
bnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9pbmM6IHsKLSAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiaW5jIiwgcjAp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9kZWM6IHsK
LSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
ZGVjIiwgcjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF90b19udW1iZXI6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInRvX251bWJlciIpOwotICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91
dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF90b19zdHJpbmc6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRvX3N0cmluZyIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZWdhdGU6IHsKLSAgICAgICAgICAgIHBy
aW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5lZ2F0ZSIpOwotICAgICAgICAg
ICAgKytpdDsgLy8gb3BfbmVnYXRlIGhhcyBhbiBleHRyYSBvcGVyYW5kIGZvciB0aGUgQXJpdGhQ
cm9maWxlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9h
ZGQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJhZGQiKTsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX211bDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm11bCIpOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZGl2OiB7Ci0gICAgICAgICAg
ICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7Ci0gICAgICAg
ICAgICArK2l0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9tb2Q6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJtb2QiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfcG93OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicG93Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX3N1YjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInN1YiIpOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFy
eU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibHNoaWZ0Iik7Ci0gICAgICAgICAgICBicmVh
azsgICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3JzaGlmdDogewotICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF91cnNoaWZ0
OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
dXJzaGlmdCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9iaXRhbmQ6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJiaXRhbmQiKTsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2JpdHhvcjogewotICAgICAgICAgICAgcHJpbnRC
aW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIpOwotICAgICAgICAgICAg
KytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfYml0
b3I6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJiaXRvciIpOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogewotICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbnN0YW5jZW9mIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2Zf
Y3VzdG9tOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImluc3RhbmNlb2ZfY3VzdG9tIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdW5zaWduZWQ6IHsK
LSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInVuc2ln
bmVkIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3R5
cGVvZjogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAidHlwZW9mIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2lzX2VtcHR5OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJpc19lbXB0eSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBvcF9pc191bmRlZmluZWQ6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX3VuZGVmaW5lZCIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9pc19ib29sZWFuOiB7Ci0gICAgICAgICAg
ICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19ib29sZWFuIik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2lzX251bWJlcjog
ewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiaXNf
bnVtYmVyIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2lzX2NlbGxfd2l0aF90eXBlOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHR5cGUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX2NlbGxfd2l0aF90eXBlIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0OiB7Ci0gICAgICAgICAgICBwcmlu
dFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19vYmplY3QiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6
IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlz
X29iamVjdF9vcl9udWxsIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX2lzX2Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJpc19mdW5jdGlvbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9pbjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImluIik7Ci0gICAgICAgICAgICBkdW1wQXJyYXlQ
cm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6IHsKLSAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJ0cnlfZ2V0X2J5X2lkIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUo
aWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wVmFsdWVQcm9m
aWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKLSAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWRfcHJvdG9fbG9hZDoKLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6Ci0g
ICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewotICAgICAgICAgICAgcHJpbnRHZXRC
eUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQpOwotICAgICAgICAgICAgcHJpbnRHZXRCeUlk
Q2FjaGVTdGF0dXMob3V0LCBleGVjLCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKLSAgICAgICAgICAg
IGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpczogewotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiZ2V0X2J5X2lkX3dpdGhfdGhpcyIpOwotICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
cjMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9ieV92YWxfd2l0aF90aGlzIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMykuZGF0YSgpKTsKLSAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQs
IGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICAgICAgcHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhp
czogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3dpdGhfdGhpcyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAl
cywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1
dF9ieV92YWxfd2l0aF90aGlzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV92YWxfd2l0aF90aGlzIik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MykuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfcHV0X2dldHRlcl9ieV9pZDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2dldHRlcl9ieV9pZCIpOwotICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1lKGlk
MCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9zZXR0
ZXJfYnlfaWQ6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IG4w
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9zZXR0ZXJfYnlfaWQiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9i
eV9pZDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgbjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfZ2V0dGVyX3Nl
dHRlcl9ieV9pZCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0
YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0
X2dldHRlcl9ieV92YWw6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2dldHRlcl9ieV92YWwiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDogewotICAg
ICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBuMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfc2V0dGVy
X2J5X3ZhbCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX2RlZmluZV9kYXRhX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMykuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByNCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Iik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHI0KS5kYXRhKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKLSAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJkZWxfYnlfaWQiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFt
ZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDogewotICAgICAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X3Zh
bCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRh
KCkpOwotICAgICAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQ
cm9maWxpbmcpOwotICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1By
aW50ZWRQcm9maWxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfdmFsOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGly
ZWN0OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX2RpcmVjdCIpOwotICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEFy
cmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7Ci0gICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJkZWxfYnlfdmFsIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pbmRleDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaW5kZXgiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAldSwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgbjAsIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam1wOiB7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJqbXAiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVkKC0+
JWQpIiwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX2p0cnVlOiB7Ci0gICAgICAgICAgICBwcmludENvbmRp
dGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKLSAg
ICAgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2Nh
dGlvbiwgImpmYWxzZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9qZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0
LCBleGVjLCBiZWdpbiwgaXQsIGxvY2F0aW9uLCAiamVxX251bGwiKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOiB7Ci0gICAgICAgICAg
ICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJq
bmVxX251bGwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3Bfam5lcV9wdHI6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyID0gKCsraXQpLT51LnNwZWNpYWxQ
b2ludGVyOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiam5l
cV9wdHIiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCAoJXApLCAlZCgtPiVkKSIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBwb2ludGVyLCBtX2dsb2JhbE9iamVjdC0+YWN0dWFs
UG9pbnRlckZvcihwb2ludGVyKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAg
ICAgICArK2l0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9qbGVzczogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImpsZXNzIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfamxlc3NlcTogewotICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImpsZXNzZXEiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9qZ3JlYXRlcjogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImpncmVhdGVyIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJl
cTogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgImpncmVhdGVyZXEiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJWQoLT4lZCkiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qbmxlc3M6IHsKLSAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJq
bmxlc3MiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwgbG9j
YXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9qbmxlc3NlcTogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImpubGVzc2VxIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiam5ncmVhdGVyIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6IHsKLSAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJq
bmdyZWF0ZXJlcSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIG9wX2xvb3BfaGludDogewotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibG9vcF9oaW50Iik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2NoZWNrX3RyYXBzOiB7Ci0gICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjaGVja190cmFw
cyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAibG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6
IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJsb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbTogewotICAgICAgICAgICAgaW50IHRhYmxlSW5k
ZXggPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInN3aXRjaF9pbW0iKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVkLCAlZCgtPiVkKSwgJXMiLCB0YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiAr
IGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2No
YXI6IHsKLSAgICAgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzd2l0Y2hf
Y2hhciIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJWQsICVkKC0+JWQpLCAlcyIsIHRhYmxl
SW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJO
YW1lKHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgICAgICBpbnQg
dGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGRlZmF1bHRU
YXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdp
c3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic3dpdGNoX3N0cmluZyIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJWQsICVkKC0+JWQpLCAlcyIsIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQs
IGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9uZXdfZnVuYzogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBm
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2Z1bmMiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBmMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5j
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogewotICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibmV3X2FzeW5jX2Z1bmMiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVk
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmV3X2Z1bmNfZXhwIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgZjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgZjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGYwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKLSAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2V0X2Z1bmN0aW9uX25hbWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cyIsIHJlZ2lzdGVyTmFtZShmdW5jUmVnKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShuYW1lUmVnKS5k
YXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9j
YWxsOiB7Ci0gICAgICAgICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxs
OiB7Ci0gICAgICAgICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRh
aWxfY2FsbCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3Mp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9jYWxsX2V2
YWw6IHsKLSAgICAgICAgICAgIHByaW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
Y2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5r
SW5mb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgotICAgICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKLSAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKLSAgICAgICAgY2FzZSBv
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6IHsKLSAgICAgICAgICAgIGludCByZXN1bHQg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBjYWxsZWUgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCB0aGlzVmFsdWUgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCBhcmd1bWVudHMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGludCBmaXJzdEZyZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHZhckFyZ09mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgKytp
dDsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIG9wTmFtZTsKLSAgICAgICAgICAgIGlmIChvcGNv
ZGUgPT0gb3BfY2FsbF92YXJhcmdzKQotICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3Zh
cmFyZ3MiOwotICAgICAgICAgICAgZWxzZSBpZiAob3Bjb2RlID09IG9wX2NvbnN0cnVjdF92YXJh
cmdzKQotICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjb25zdHJ1Y3RfdmFyYXJncyI7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCi0gICAgICAg
ICAgICAgICAgb3BOYW1lID0gInRhaWxfY2FsbF92YXJhcmdzIjsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKG9wY29kZSA9PSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCi0gICAgICAgICAg
ICAgICAgb3BOYW1lID0gInRhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyI7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBv
cE5hbWUpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVkLCAlZCIs
IHJlZ2lzdGVyTmFtZShyZXN1bHQpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGNhbGxlZSkuZGF0YSgp
LCByZWdpc3Rlck5hbWUodGhpc1ZhbHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd1bWVudHMp
LmRhdGEoKSwgZmlyc3RGcmVlUmVnaXN0ZXIsIHZhckFyZ09mZnNldCk7Ci0gICAgICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ugb3BfcmV0OiB7Ci0gICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRp
b25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJldCIsIHIw
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY29uc3Ry
dWN0OiB7Ci0gICAgICAgICAgICBwcmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImNvbnN0cnVjdCIsIER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5m
b3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zdHJj
YXQ6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInN0cmNhdCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgY291bnQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF90b19wcmltaXRpdmU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0b19wcmltaXRpdmUi
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aDogewotICAgICAgICAg
ICAgaW50IGRzdCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBiYXNlID0gaXRb
Ml0udS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAib3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShiYXNlKS5kYXRhKCkpOwotICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRf
ZW51bWVyYWJsZV9sZW5ndGgpIC0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfaGFzX2luZGV4ZWRfcHJvcGVydHk6IHsKLSAgICAgICAgICAgIGludCBk
c3QgPSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBwcm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGl0WzRdLnUuYXJyYXlQcm9m
aWxlOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAib3BfaGFzX2luZGV4ZWRfcHJvcGVydHkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMsICVwIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
YmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlOYW1lKS5kYXRhKCksIGFycmF5UHJv
ZmlsZSk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2hhc19pbmRleGVkX3By
b3BlcnR5KSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHk6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSBpdFsx
XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCBwcm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgZW51bWVyYXRvciA9IGl0WzRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocHJvcGVydHlOYW1lKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCkp
OwotICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5KSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2hhc19nZW5lcmljX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5v
cGVyYW5kOwotICAgICAgICAgICAgaW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgcHJvcGVydHlOYW1lID0gaXRbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3BfaGFzX2dlbmVyaWNf
cHJvcGVydHkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rl
ck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShwcm9wZXJ0eU5hbWUpLmRhdGEoKSk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RI
KG9wX2hhc19nZW5lcmljX3Byb3BlcnR5KSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX2dldF9kaXJlY3RfcG5hbWU6IHsKLSAgICAgICAgICAgIGlu
dCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCBwcm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpdFs0XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgZW51bWVyYXRvciA9IGl0WzVdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGl0WzZdLnUucHJvZmlsZTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX2dldF9kaXJlY3RfcG5hbWUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzLCAlcywgJXAiLCByZWdpc3Rlck5h
bWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShw
cm9wZXJ0eU5hbWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGluZGV4KS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShlbnVtZXJhdG9yKS5kYXRhKCksIHByb2ZpbGUpOwotICAgICAgICAgICAgaXQgKz0gT1BD
T0RFX0xFTkdUSChvcF9nZXRfZGlyZWN0X3BuYW1lKSAtIDE7Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6IHsK
LSAgICAgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
YmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCkpOwotICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xF
TkdUSChvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcikgLSAxOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZTog
ewotICAgICAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBlbnVtZXJhdG9yID0gaXRbMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGluZGV4ID0g
aXRbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAib3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9zdHJ1
Y3R1cmVfcG5hbWUpIC0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lOiB7Ci0gICAgICAgICAgICBpbnQgZHN0
ID0gaXRbMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGVudW1lcmF0b3IgPSBpdFsyXS51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9l
bnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9y
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGl0ICs9
IE9QQ09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKSAtIDE7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzog
ewotICAgICAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBpbmRleCA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX3RvX2luZGV4X3N0cmluZyIpOwotICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoaW5kZXgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RI
KG9wX3RvX2luZGV4X3N0cmluZykgLSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6IHsKLSAgICAgICAgICAgIGludCBkc3Qg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBuZXdTY29wZSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGN1cnJlbnRTY29wZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicHVzaF93aXRoX3Njb3BlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUobmV3U2NvcGUpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKGN1cnJlbnRTY29wZSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZTogewotICAg
ICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHBh
cmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfcGFyZW50X3Njb3BlIik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShwYXJlbnRTY29wZSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6IHsKLSAg
ICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBz
Y29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHN5bWJvbFRhYmxlID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaW5pdGlhbFZhbHVlID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCAKLSAgICAgICAgICAgICAgICByZWdpc3Rlck5h
bWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShzY29wZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
c3ltYm9sVGFibGUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGluaXRpYWxWYWx1ZSkuZGF0YSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsK
LSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjYXRjaCIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdGhy
b3c6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAidGhyb3ciLCByMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjogewotICAgICAgICAgICAgaW50IGswID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBFcnJvclR5cGUgazEgPSBzdGF0aWNfY2FzdDxF
cnJvclR5cGU+KCgrK2l0KS0+dS51bnNpZ25lZFZhbHVlKTsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRocm93X3N0YXRpY19lcnJvciIp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIGNvbnN0YW50TmFtZShrMCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIG91dC5wcmludChrMSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX2RlYnVnOiB7Ci0gICAgICAgICAgICBpbnQgZGVidWdIb29r
VHlwZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGhhc0JyZWFrcG9pbnRG
bGFnID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWJ1ZyIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tUeXBlKSwgaGFzQnJlYWtwb2ludEZs
YWcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9hc3Nl
cnQ6IHsKLSAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJhc3NlcnQiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIHJlZ2lzdGVyTmFtZShjb25kaXRpb24pLmRhdGEo
KSwgbGluZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2VuZDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJlbmQiLCByMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBSZXNv
bHZlVHlwZSByZXNvbHZlVHlwZSA9IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPigoKytpdCktPnUu
b3BlcmFuZCk7Ci0gICAgICAgICAgICBpbnQgZGVwdGggPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHZvaWQqIHBvaW50ZXIgPSAoKytpdCktPnUucG9pbnRlcjsKLSAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc29sdmVfc2Nv
cGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsIDwlcz4sICVkLCAlcCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoc2NvcGUpLmRhdGEoKSwgaWRO
YW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIHJlc29sdmVUeXBlTmFtZShyZXNvbHZl
VHlwZSksIGRlcHRoLCBwb2ludGVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBH
ZXRQdXRJbmZvIGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKCgrK2l0KS0+dS5vcGVyYW5kKTsKLSAg
ICAgICAgICAgICsraXQ7IC8vIFN0cnVjdHVyZQotICAgICAgICAgICAgaW50IG9wZXJhbmQgPSAo
KytpdCktPnUub3BlcmFuZDsgLy8gT3BlcmFuZAotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2Zyb21fc2NvcGUiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludChyZWdpc3Rlck5hbWUocjApLCAiLCAiLCByZWdpc3Rlck5hbWUocjEpKTsK
LSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaWQwKSA9PSBVSU5UX01BWCkK
LSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgYW5vbnltb3VzIik7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIsICIsIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkpOwotICAgICAgICAgICAgb3V0LnByaW50KCIsICIsIGdldFB1dEluZm8ub3BlcmFu
ZCgpLCAiPCIsIHJlc29sdmVNb2RlTmFtZShnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkpLCAifCIs
IHJlc29sdmVUeXBlTmFtZShnZXRQdXRJbmZvLnJlc29sdmVUeXBlKCkpLCAifCIsIGluaXRpYWxp
emF0aW9uTW9kZU5hbWUoZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSksICI+LCAiLCBv
cGVyYW5kKTsKLSAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmlu
dGVkUHJvZmlsaW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgR2V0UHV0SW5mbyBn
ZXRQdXRJbmZvID0gR2V0UHV0SW5mbygoKytpdCktPnUub3BlcmFuZCk7Ci0gICAgICAgICAgICAr
K2l0OyAvLyBTdHJ1Y3R1cmUKLSAgICAgICAgICAgIGludCBvcGVyYW5kID0gKCsraXQpLT51Lm9w
ZXJhbmQ7IC8vIE9wZXJhbmQKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF90b19zY29wZSIpOwotICAgICAgICAgICAgb3V0LnByaW50
KHJlZ2lzdGVyTmFtZShyMCkpOwotICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihpZDApID09IFVJTlRfTUFYKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCBhbm9ueW1v
dXMiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwg
aWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIiwg
IiwgcmVnaXN0ZXJOYW1lKHIxKSwgIiwgIiwgZ2V0UHV0SW5mby5vcGVyYW5kKCksICI8IiwgcmVz
b2x2ZU1vZGVOYW1lKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSksICJ8IiwgcmVzb2x2ZVR5cGVO
YW1lKGdldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSksICJ8IiwgaW5pdGlhbGl6YXRpb25Nb2RlTmFt
ZShnZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKSwgIj4sIDxzdHJ1Y3R1cmU+LCAiLCBv
cGVyYW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
Z2V0X2Zyb21fYXJndW1lbnRzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2Zyb21fYXJndW1lbnRzIik7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQpOwotICAgICAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X3RvX2FyZ3VtZW50cyIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBvZmZzZXQsIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLQotICAgIGR1bXBSYXJlQ2FzZVByb2ZpbGUob3V0LCAicmFyZSBjYXNlOiAiLCByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChsb2NhdGlvbiksIGhhc1ByaW50ZWRQcm9maWxpbmcp
OwotICAgIHsKLSAgICAgICAgZHVtcEFyaXRoUHJvZmlsZShvdXQsIGFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgfQotICAg
IAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFZlY3RvcjxERkc6OkZyZXF1ZW50RXhpdFNpdGU+
IGV4aXRTaXRlcyA9IGV4aXRQcm9maWxlKCkuZXhpdFNpdGVzRm9yKGxvY2F0aW9uKTsKLSAgICBp
ZiAoIWV4aXRTaXRlcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50KCIgISEgZnJlcXVl
bnQgZXhpdHM6ICIpOwotICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGZvciAo
YXV0byYgZXhpdFNpdGUgOiBleGl0U2l0ZXMpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IGV4aXRTaXRlLmtpbmQoKSwgIiAiLCBleGl0U2l0ZS5qaXRUeXBlKCkpOwotICAgIH0KLSNlbHNl
IC8vIEVOQUJMRShERkdfSklUKQotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0jZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCi0gICAgb3V0LnByaW50KCJcbiIpOworICAgIEJ5dGVjb2RlRHVt
cGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1Yklu
Zm9zLCBjYWxsTGlua0luZm9zKTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgK
ICAgICBQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjb25z
dCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5r
SW5mb3MpCiB7Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
ICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgZHVtcEJ5dGVjb2RlKG91dCwgZXhlYywgaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcEJ5
dGVjb2RlKG91dCwgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQsIHN0dWJJbmZvcywgY2FsbExp
bmtJbmZvcyk7CiB9CiAKICNkZWZpbmUgRk9SX0VBQ0hfTUVNQkVSX1ZFQ1RPUihtYWNybykgXApA
QCAtMjMyMCw3ICs3ODMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAK
ICAgICAgICAgY2FzZSBvcF9kZWJ1ZzogewotICAgICAgICAgICAgaWYgKHBjWzFdLnUuaW5kZXgg
PT0gRGlkUmVhY2hCcmVha3BvaW50KQorICAgICAgICAgICAgaWYgKHBjWzFdLnUudW5zaWduZWRW
YWx1ZSA9PSBEaWRSZWFjaEJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgbV9oYXNEZWJ1Z2dl
clN0YXRlbWVudCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjY0
Nyw3ICsxMTEwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgY29uc3QgVmVj
dG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29k
ZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgc3dp
dGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0pKSB7CiAgICAgICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0
dXJlSUQ7CkBAIC0yNzgxLDcgKzEyNDQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTElu
dElubGluZUNhY2hlcygpCiAgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnMoKTsKICAgICBmb3IgKHNpemVfdCBzaXplID0gcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBJbnN0cnVjdGlvbiogY3Vy
SW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dOwotICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVj
dGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0pKSB7CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgog
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF9wcm90b19sb2FkOgogICAgICAgICBjYXNlIG9wX2dl
dF9ieV9pZF91bnNldDogewpAQCAtMjg1OSw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKTsKKyAgICAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdKTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKG9wY29k
ZUlELCBmYWxzZSwgIlVuaGFuZGxlZCBvcGNvZGUgaW4gQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSwgJXMoJWQpIGF0IGJjICV1Iiwgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdLCBvcGNv
ZGVJRCwgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzI0MSw3ICsxNzA0LDcgQEAgYm9vbCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5k
Q29sdW1uKHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbikKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIGNvbnN0IEluc3RydWN0
aW9uKiBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKICAgICBmb3IgKGNvbnN0IEluc3RydWN0
aW9uKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSk7CisgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppdCk7CiAgICAgICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9kZWJ1ZykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBpdCAtIGJlZ2luOwogICAgICAgICAgICAgaW50IHVudXNlZDsKQEAgLTQxODgsNyAr
MjY1MSw3IEBAIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQog
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAg
ICAgCiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0
IDwgaW5zdHJ1Y3Rpb25Db3VudDsgKSB7Ci0gICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIHsK
KyAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdKSkgewogI2RlZmluZSBERUZJTkVfT1AoY3VyT3Bjb2RlLCBsZW5n
dGgpICAgICAgICBcCiAgICAgICAgIGNhc2UgY3VyT3Bjb2RlOiAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIGlmIChjdXJPcGNvZGUgPT0gb3Bjb2RlSUQpICAgICAgXApAQCAtNDIz
Myw3ICsyNjk2LDcgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldF0pOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CiAg
ICAgcmV0dXJuIGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5w
cm9maWxlOwogfQpAQCAtNDMyMiw3ICsyNzg1LDcgQEAgQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6
OmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIAogQXJp
dGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykK
IHsKLSAgICBhdXRvIG9wY29kZUlEID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBj
WzBdLnUub3Bjb2RlKTsKKyAgICBhdXRvIG9wY29kZUlEID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKHBjWzBdKTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9u
ZWdhdGU6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QXJpdGhQcm9maWxlKj4oJnBjWzNd
LnUub3BlcmFuZCk7CkBAIC00MzY5LDEyICsyODMyLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjppbnNl
cnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoUmVmQ291bnRlZEFy
cmF5CiAgICAgICAgIC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRl
ZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBmaW5kaW5nIAogICAgICAg
ICAvLyB0aGUgbmV4dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRl
eHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFzaWMgYmxvY2suCiAgICAgICAgIHNpemVfdCBzdGFydElk
eCA9IGJ5dGVjb2RlT2Zmc2V0c1tpXTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc1tzdGFydElkeF0udS5vcGNvZGUpID09
IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc1tzdGFydElkeF0pID09IG9wX3By
b2ZpbGVfY29udHJvbF9mbG93KTsKICAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9
IGluc3RydWN0aW9uc1tzdGFydElkeCArIDFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGJhc2lj
QmxvY2tFbmRPZmZzZXQ7CiAgICAgICAgIGlmIChpICsgMSA8IG9mZnNldHNMZW5ndGgpIHsKICAg
ICAgICAgICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOwotICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc1tlbmRJZHhdLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zW2VuZElkeF0pID09IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsKICAgICAg
ICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBpbnN0cnVjdGlvbnNbZW5kSWR4ICsgMV0udS5v
cGVyYW5kIC0gMTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRP
ZmZzZXQgPSBtX3NvdXJjZU9mZnNldCArIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2Uo
KS5sZW5ndGgoKSAtIDE7IC8vIE9mZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMTk0MmVhMjFjNjNi
MjUyOTlkOTZlMWU4ZGI4ZjU4N2U5NzE1NzMxNC4uYmRjMzNkNjY5MTA3YmUzODk3YTQyY2IyZjc3
NjgzNGFlNDgzZmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaApAQCAtMTkxLDkgKzE5MSw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKAotICAgICAgICBQcmludFN0cmVhbSYs
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBjb25zdCBTdHViSW5mb01hcCYgPSBT
dHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkp
OworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0
aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0g
U3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgp
KTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKwogICAgIHZvaWQgZHVtcEV4Y2Vw
dGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJp
bnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOwogICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUo
UHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBv
cGVyYW5kKTsKQEAgLTU0Miw2ICs1NDIsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBjb25zdCBWZWN0b3I8
V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2Nv
bnN0YW50UmVnaXN0ZXJzOyB9CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJl
Z2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBn
ZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNb
aW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KQEAgLTU1Miw2ICs1
NTMsMTAgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4cHIoaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRXhw
cnNbaW5kZXhdLmdldCgpOyB9CiAgICAgCiAgICAgUmVnRXhwKiByZWdleHAoaW50IGluZGV4KSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+cmVnZXhwKGluZGV4KTsgfQorICAgIHVuc2ln
bmVkIG51bWJlck9mUmVnRXhwcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1i
ZXJPZlJlZ0V4cHMoKTsgfQorCisgICAgY29uc3QgVmVjdG9yPEJpdFZlY3Rvcj4mIGJpdFZlY3Rv
cnMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Yml0VmVjdG9ycygpOyB9CisgICAg
Y29uc3QgQml0VmVjdG9yJiBiaXRWZWN0b3Ioc2l6ZV90IGkpIHsgcmV0dXJuIG1fdW5saW5rZWRD
b2RlLT5iaXRWZWN0b3IoaSk7IH0KIAogICAgIHVuc2lnbmVkIG51bWJlck9mQ29uc3RhbnRCdWZm
ZXJzKCkgY29uc3QKICAgICB7CkBAIC05MTcsMzAgKzkyMiw2IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLnNldChtX2dsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywg
dmFsdWUpOwogICAgIH0KIAotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKAotICAgICAgICBQcmludFN0
cmVhbSYsIEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiwKLSAgICAgICAgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLQotICAgIENTdHJpbmcg
cmVnaXN0ZXJOYW1lKGludCByKSBjb25zdDsKLSAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShpbnQg
aW5kZXgpIGNvbnN0OwotICAgIHZvaWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7
Ci0gICAgdm9pZCBwcmludEJpbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgdm9pZCBw
cmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBv
cCk7Ci0gICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJik7Ci0gICAgdm9pZCBwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3Qg
U3R1YkluZm9NYXAmKTsKLSAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250
RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3Rh
dGUqLCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBD
YWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKTsKLSAgICB2b2lkIHByaW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0g
ICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChQcmlu
dFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwg
Y29uc3QgY2hhciogb3ApOwotICAgIHZvaWQgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVy
YW5kKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotCi0gICAgdm9pZCBiZWdp
bkR1bXBQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsK
LSAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0
aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgIHZvaWQgZHVtcEFycmF5UHJv
ZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRl
ZFByb2ZpbGluZyk7Ci0gICAgdm9pZCBkdW1wUmFyZUNhc2VQcm9maWxlKFByaW50U3RyZWFtJiwg
Y29uc3QgY2hhciogbmFtZSwgUmFyZUNhc2VQcm9maWxlKiwgYm9vbCYgaGFzUHJpbnRlZFByb2Zp
bGluZyk7Ci0gICAgdm9pZCBkdW1wQXJpdGhQcm9maWxlKFByaW50U3RyZWFtJiwgQXJpdGhQcm9m
aWxlKiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0KICAgICBib29sIHNob3VsZFZpc2l0
U3Ryb25nbHkoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJik7CiAgICAgYm9vbCBzaG91bGRKZXR0
aXNvbkR1ZVRvV2Vha1JlZmVyZW5jZSgpOwogICAgIGJvb2wgc2hvdWxkSmV0dGlzb25EdWVUb09s
ZEFnZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKaW5kZXggNzUyZGVmZThhY2NhMjU4MDRmMzFkYzU4YWNh
NWZiMTc0Zjk0MGU0MS4uYWQ3ZTc0Y2QyMWVmYTBhNWMwYTUyMjdmMWQ4MTU0Y2ExZDU3MzkwOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTQ2
LDcgKzQ2LDcgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0K
ICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0eXBlKTsgfQogCi0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoKQorICAg
IGNvbnN0IGNoYXIqIHR5cGVOYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgSGFuZGxlclR5cGU6OkNhdGNoOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTNk
ZWZiZmIzZjM1YTk0YjIwOTY4OGVlN2ExZWZkNTU5MWQ0OTdkZS4uMWM3MWFhNmU0NTMzZDUzY2Qy
YzQ0ZmVlMDIxYWMzZWYzMzA5OWZiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC00MTMsNCArNDEzLDggQEAgdm9p
ZCBVbmxpbmtlZENvZGVCbG9jazo6c2hyaW5rVG9GaXQoKQogICAgIH0KIH0KIAordm9pZCBVbmxp
bmtlZENvZGVCbG9jazo6ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Cit7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAppbmRleCBmMDU3NDk3NmM0MWQ4Nzg2OGU4YTgwMmVhMTczYjExODI1Zjcx
ZTg0Li5mOWM5YzM3YTEwNWJmMGY4NWY4OTE2ZDY0NTJjNWJiMDc5NDFiOWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAt
MTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB1bmlvbiB7
CiAgICAgICAgIE9wY29kZUlEIG9wY29kZTsKICAgICAgICAgaW50MzJfdCBvcGVyYW5kOwotICAg
ICAgICB1bnNpZ25lZCBpbmRleDsKKyAgICAgICAgdW5zaWduZWQgdW5zaWduZWRWYWx1ZTsKICAg
ICB9IHU7CiB9OwogCkBAIC0yMTUsNiArMjE1LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+
PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAg
ICAgY29uc3QgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4XTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVn
aXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4OyB9CisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24+JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24o
KSB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsgfQogCiAgICAg
Ly8gSnVtcHMKQEAgLTM4MCw2ICszODEsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIFRyaVN0YXRlIGRpZE9wdGltaXplKCkgY29uc3QgeyByZXR1cm4g
bV9kaWRPcHRpbWl6ZTsgfQogICAgIHZvaWQgc2V0RGlkT3B0aW1pemUoVHJpU3RhdGUgZGlkT3B0
aW1pemUpIHsgbV9kaWRPcHRpbWl6ZSA9IGRpZE9wdGltaXplOyB9CiAKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFVubGlua2VkQ29kZUJsb2Nr
KFZNKiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwgRGVidWdn
ZXJNb2RlKTsKICAgICB+VW5saW5rZWRDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNw
cAppbmRleCBlODc2MmZmNjYzZTY5NzdkOGFjYmMyMzRiNGUwOWE0MzZhY2QzZjJlLi40OGM4MTZh
MTQ5YjFiZjQwNjA3NWYwMzU3MmViOTUyMDBlZDc4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0u
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlVubGlua2Vk
SW5zdHJ1Y3Rpb25TdHJlYW0oY29uc3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1CiAgICAgICAgIHVu
c2lnbmVkIG9wTGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZSk7CiAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMTsgaiA8IG9wTGVuZ3RoOyArK2opCi0gICAgICAgICAgICBhcHBlbmQzMihw
dHIsIHBjW2pdLnUuaW5kZXgpOworICAgICAgICAgICAgYXBwZW5kMzIocHRyLCBwY1tqXS51LnVu
c2lnbmVkVmFsdWUpOwogCiAgICAgICAgIGkgKz0gb3BMZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJl
YW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9u
U3RyZWFtLmgKaW5kZXggZWYxMzlhZGY3ODNjOTA5YzEyN2FkYTZjYTI3Mzc1ZjFhMDIyOTU5Mi4u
OGMwYmY1NzQyZGJmZGQ1MmJjNmVhODIyYzhiNzdlZmE1MDIxODg2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0
cmVhbS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgQUxXQVlTX0lOTElORSBjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uKiBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtOjpSZWFkZXI6Om5leHQKICAgICBt
X3VucGFja2VkQnVmZmVyWzBdLnUub3Bjb2RlID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KHJlYWQ4
KCkpOwogICAgIHVuc2lnbmVkIG9wTGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG1fdW5wYWNrZWRCdWZm
ZXJbMF0udS5vcGNvZGUpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBvcExlbmd0aDsg
KytpKQotICAgICAgICBtX3VucGFja2VkQnVmZmVyW2ldLnUuaW5kZXggPSByZWFkMzIoKTsKKyAg
ICAgICAgbV91bnBhY2tlZEJ1ZmZlcltpXS51LnVuc2lnbmVkVmFsdWUgPSByZWFkMzIoKTsKICAg
ICByZXR1cm4gbV91bnBhY2tlZEJ1ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCmluZGV4IGM0YmY4ZmFkZThhYWUzMTBmMmI2YTI3NzExMzFiYmVkYTIxYjJj
YmMuLjNkMTE5Zjg3YTczYTRkZGNhNWFhMzM3OTY5MDM3NWRjMTYzMjE5N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCB0eXBlZGVm
IGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGR1bXBCeXRlY29kZUxpdmVu
ZXNzUmVzdWx0cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdmFsaWRh
dGVCeXRlY29kZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZm9yY2VE
ZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAg
IHYoYm9vbCwgZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbiwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIFwKICAgICB2KGJvb2wsIHVzZUZ1bmN0aW9uRG90QXJndW1l
bnRzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVRhaWxDYWxscywg
dHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302935</attachid>
            <date>2017-02-28 06:32:54 -0800</date>
            <delta_ts>2017-03-01 00:17:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168968-20170228232956.patch</filename>
            <type>text/plain</type>
            <size>167185</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NzY2NWFkZTc3YzE1ZDYxMDlmOTUyMzczZDQwY2YyMTE0NWY3NjkwLi5mNGMxNTNlMzJjMTM5YjMy
MzRkNjE5NGIyNzZiOTQ5YmRjYTY3NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzUgQEAKKzIwMTctMDItMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0pTQ10gQWxsb3cgVW5saW5rZWRDb2RlQmxvY2sgdG8gZHVtcCBp
dHMgYnl0ZWNvZGUgc2VxdWVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2ODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggZGVjb3VwbGVzIGR1bXBpbmcgYnl0ZWNvZGUgc2VxdWVu
Y2UgZnJvbSBDb2RlQmxvY2suCisgICAgICAgIFRoaXMgY2hhbmdlIGFsbG93cyBVbmxpbmtlZENv
ZGVCbG9jayB0byBkdW1wIGl0cyBieXRlY29kZSBzZXF1ZW5jZS4KKyAgICAgICAgSXQgaXMgdXNl
ZnVsIGJlY2F1c2Ugd2Ugbm93IGhhdmUgY29tcGxleCBwaGFzZSBiZXR3ZWVuIFVubGlua2VkQ29k
ZUJsb2NrIGFuZCBDb2RlQmxvY2ssCisgICAgICAgIGNhbGxlZCBHZW5lcmF0b3JpZmljYXRpb24u
CisKKyAgICAgICAgV2UgaW50cm9kdWNlIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPi4gQm90aCBDb2Rl
QmxvY2sgYW5kIFVubGlua2VkQ29kZUJsb2NrIGNhbiB1c2UKKyAgICAgICAgdGhpcyBjbGFzcyB0
byBkdW1wIGJ5dGVjb2RlIHNlcXVlbmNlLgorCisgICAgICAgIEFuZCB0aGlzIHBhdGNoIGFsc28g
YWRkcyBPcHRpb246OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24sCisgICAg
ICAgIHdoaWNoIGR1bXBzIHVubGlua2VkIGJ5dGVjb2RlIHNlcXVlbmNlIGJlZm9yZSBnZW5lcmF0
b3JpZmljYXRpb24gaWYgaXQgaXMgZW5hYmxlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6Z2V0U3RydWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpnZXRTcGVjaWFsUG9pbnRlcik6Cisg
ICAgICAgIChKU0M6OmdldFB1dEJ5SWRGbGFncyk6CisgICAgICAgIChKU0M6OmdldFRvVGhpc1N0
YXR1cyk6CisgICAgICAgIChKU0M6OmdldFBvaW50ZXIpOgorICAgICAgICAoSlNDOjpnZXRTdHJ1
Y3R1cmVDaGFpbik6CisgICAgICAgIChKU0M6OmdldFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OmdldENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OmdldEJhc2ljQmxvY2tMb2NhdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6YWN0dWFsUG9pbnRlckZvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmFjdHVhbFBvaW50ZXJG
b3IpOgorICAgICAgICAoSlNDOjpiZWdpbkR1bXBQcm9maWxpbmcpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBWYWx1ZVByb2ZpbGluZyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBWYWx1ZVByb2ZpbGluZyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEFycmF5UHJvZmlsaW5nKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEFycmF5UHJvZmlsaW5nKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wUHJvZmlsZXNGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmR1bXBSYXJlQ2FzZVByb2ZpbGUpOgorICAgICAg
ICAoSlNDOjpkdW1wQXJpdGhQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8
Q29kZUJsb2NrPjo6ZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnZtKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjppZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6cmVnZXhwVG9Tb3VyY2VTdHJp
bmcpOgorICAgICAgICAoSlNDOjpyZWdleHBOYW1lKToKKyAgICAgICAgKEpTQzo6cHJpbnRMb2Nh
dGlvbkFuZE9wKToKKyAgICAgICAgKEpTQzo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAg
ICAgICAoSlNDOjpkZWJ1Z0hvb2tOYW1lKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpyZWdpc3Rlck5hbWUpOgorICAgICAgICAoSlNDOjppZE5hbWUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRVbmFyeU9wKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEJpbmFyeU9wKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpwcmludENvbmRpdGlvbmFsSnVtcCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAoSlNDOjpkdW1w
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6ZHVtcENoYWluKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3ApOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZE9wKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcElkZW50
aWZpZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ29uc3Rh
bnRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wUmVnRXhwcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEV4Y2VwdGlvbkhhbmRs
ZXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wU3dpdGNoSnVt
cFRhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcFN0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBCbG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyOjpCeXRlY29kZUR1bXBlcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlRHVtcGVyOjpibG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVt
cGVyOjppbnN0cnVjdGlvbnNCZWdpbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1
bXBSZXN1bHRzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5z
aXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2Fj
aGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcERlYnVnRm9yTGluZUFuZENvbHVt
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvclBDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIpOgorICAg
ICAgICAoSlNDOjppZE5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJl
Z2lzdGVyTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3RhbnRO
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cmVnZXhwVG9Tb3VyY2VTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpyZWdleHBOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZGVidWdIb29rTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRV
bmFyeU9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludEJpbmFyeU9w
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludENvbmRpdGlvbmFsSnVt
cCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3ApOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpkdW1wU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6ZHVtcENoYWluKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmlu
dEdldEJ5SWRDYWNoZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnByaW50Q2FsbE9wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmlu
dFB1dEJ5SWRPcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEV4Y2Vw
dGlvbkhhbmRsZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiZWdpbkR1
bXBQcm9maWxpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1
ZVByb2ZpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFycmF5
UHJvZmlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wUmFyZUNh
c2VQcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQXJpdGhQ
cm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpwcmludExvY2F0aW9u
QW5kT3ApOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y29uc3RhbnRSZWdpc3RlcnMpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mUmVnRXhwcyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Yml0VmVjdG9ycyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Yml0VmVjdG9y
KToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpIYW5k
bGVySW5mb0Jhc2U6OnR5cGVOYW1lKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpkdW1wKToKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6Z2V0Q29uc3RhbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0uY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEluc3RydWN0aW9uU3Ry
ZWFtOjpVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW06OlJlYWRlcjo6bmV4dCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisK
IDIwMTctMDItMjcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBCZWdpbiBlbmFibGluZyBXZWJSVEMgb24gNjQtYml0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzk3NWRmMGYzMWU3MzE3N2MwM2JhOTdhYzZmOWIyOTRm
YTgyN2I3ZC4uMWUxYTRjNDUyNGFjYjNjZWVmM2FjNTRmNWIzMTU5MDkzMzVhYWY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk0LDYgKzE5NCw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YTcwYjBlYTk1NzQ0MjNi
ODBmYmJkMmMyOWE3NzFlZTdmMmVmNzY4Li4yY2YyNzFjZWI3OWRkM2NjNTFhZWI3ZjYzMzcyYzZh
NDRmNWE2OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzNSw2ICsyMzM1
LDggQEAKIAkJRTNDNzlDQUIxREI5QTREQzAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDNzlDQUExREI5QTRE
NjAwRDFFQ0E0IC8qIERPTUpJVEVmZmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNw
cCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIz
OUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNEODc3NzMxRTY1QzA5RTAw
QkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDg3NzcxMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1
bXBlci5jcHAgKi87IH07CisJCUUzRDg3Nzc0MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1
bXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
ODc3NzIxRTY1QzA4OTAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmggKi87IH07CiAJCUUzRUY4
ODc0MUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJRTNFRjg4NzUx
QjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODczMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNGRjc1MzMxRDlDRUExODAwQzdFMTZEIC8qIERPTUpJ
VEdldHRlclNldHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGRjc1MkYxRDlDRUExMjAwQzdFMTZEIC8qIERPTUpJVEdldHRlclNldHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00ODczLDYg
KzQ4NzUsOCBAQAogCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5
dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyNjQy
QTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDg3NzcxMUU2NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUR1bXBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDg3NzcyMUU2NUMwODkwMEJFOTQ1QSAv
KiBCeXRlY29kZUR1bXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRl
Y29kZUR1bXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ZG
NzUyRjFEOUNFQTEyMDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUpJVEdldHRlclNldHRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzM4Niw2ICs3MzkwLDggQEAKIAkJCQlDMkZDQUUwQzE3QTlDMjRF
MDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCAqLywKIAkJCQlDMkZDQUUwRDE3QTlD
MjRFMDAzNEM3MzUgLyogQnl0ZWNvZGVCYXNpY0Jsb2NrLmggKi8sCiAJCQkJMEYyMUMyN0UxNEJF
QUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQlFM0Q4Nzc3MTFF
NjVDMDg5MDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1wZXIuY3BwICovLAorCQkJCUUzRDg3NzcyMUU2
NUMwODkwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oICovLAogCQkJCUUzRDI2NDI2MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCiAJCQkJRTNE
MjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8s
CiAJCQkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKQEAg
LTg0NzcsNiArODQ4Myw3IEBACiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJl
c3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM4MTdBREI1RjMwMDVB
QjE3NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1
RjMwMDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzRDg3Nzc0
MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNTUxM0E2MUQ1QTY4MkMwMEMzMkJEOCAvKiBGcmVlTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDM5NCw2ICsxMDQwMSw3IEBACiAJCQkJMkEwNUFCRDUxOTYxREYyNDAwMzQxNzUw
IC8qIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0VG
ODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjI1NTNEMTE2MTM2REE5MDA5RjE3RDAgLyogSlNQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFM0Q4Nzc3MzFFNjVDMDlFMDBCRTk0NUEgLyogQnl0ZWNvZGVEdW1w
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU1MkMzN0YxQUREQjhGRTAwMTM5NzI2IC8qIEpT
UmVtb3RlSW5zcGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5MjhGRjNCMThBQzRBRUMw
MEI4Q0YxMiAvKiBKU1JlcGxheUlucHV0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDg3NEFF
NTE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhYjE2MmVkYjQwOGY5ZTA5M2FmNzIyN2Y3MTUyMmUyMWYxNmNkM2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CkBAIC0wLDAgKzEsMTc5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCeXRlY29kZUR1bXBlci5oIgorCisjaW5jbHVkZSAiQXJpdGhQcm9maWxl
LmgiCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNp
bmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVG9UaGlzU3RhdHVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBTdHJ1Y3R1cmVJRCBnZXRTdHJ1Y3R1cmVJRChj
b25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9u
LnUuc3RydWN0dXJlSUQ7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1cmVJRCBnZXRTdHJ1Y3R1cmVJRChj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IFNwZWNpYWw6OlBvaW50ZXIgZ2V0U3BlY2lhbFBvaW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24mIGlu
c3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnNwZWNpYWxQb2ludGVyOwor
fQorCitzdGF0aWMgU3BlY2lhbDo6UG9pbnRlciBnZXRTcGVjaWFsUG9pbnRlcihjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
U3BlY2lhbDo6UG9pbnRlcj4oaW5zdHJ1Y3Rpb24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIFB1
dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9u
KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnB1dEJ5SWRGbGFnczsKK30KKworc3RhdGlj
IFB1dEJ5SWRGbGFncyBnZXRQdXRCeUlkRmxhZ3MoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYg
aW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFB1dEJ5SWRGbGFncz4oaW5z
dHJ1Y3Rpb24udS5vcGVyYW5kKTsKK30KKworc3RhdGljIFRvVGhpc1N0YXR1cyBnZXRUb1RoaXNT
dGF0dXMoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0
cnVjdGlvbi51LnRvVGhpc1N0YXR1czsKK30KKworc3RhdGljIFRvVGhpc1N0YXR1cyBnZXRUb1Ro
aXNTdGF0dXMoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRvVGhpc1N0YXR1cz4oaW5zdHJ1Y3Rpb24udS5vcGVyYW5kKTsK
K30KKworc3RhdGljIHZvaWQqIGdldFBvaW50ZXIoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0
aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LnBvaW50ZXI7Cit9CisKK3N0YXRpYyB2
b2lkKiBnZXRQb2ludGVyKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKQoreworICAgIHJldHVy
biBudWxscHRyOworfQorCitzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGdldFN0cnVjdHVyZUNoYWlu
KGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rp
b24udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKK30KKworc3RhdGljIFN0cnVjdHVyZUNoYWluKiBn
ZXRTdHJ1Y3R1cmVDaGFpbihjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworc3RhdGljIFN0cnVjdHVyZSogZ2V0U3RydWN0dXJlKGNvbnN0IElu
c3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5zdHJ1
Y3R1cmUuZ2V0KCk7Cit9CisKK3N0YXRpYyBTdHJ1Y3R1cmUqIGdldFN0cnVjdHVyZShjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uJikKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworc3RhdGlj
IExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0luZm8oY29uc3QgSW5zdHJ1Y3Rpb24mIGlu
c3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51LmNhbGxMaW5rSW5mbzsKK30K
Kworc3RhdGljIExMSW50Q2FsbExpbmtJbmZvKiBnZXRDYWxsTGlua0luZm8oY29uc3QgVW5saW5r
ZWRJbnN0cnVjdGlvbiYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBCYXNp
Y0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxvY2tMb2NhdGlvbihjb25zdCBJbnN0cnVjdGlvbiYg
aW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUuYmFzaWNCbG9ja0xvY2F0
aW9uOworfQorCitzdGF0aWMgQmFzaWNCbG9ja0xvY2F0aW9uKiBnZXRCYXNpY0Jsb2NrTG9jYXRp
b24oY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCogQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojph
Y3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQqIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46
OmFjdHVhbFBvaW50ZXJGb3IoU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyKSBjb25zdAoreworICAg
IHJldHVybiBibG9jaygpLT5nbG9iYWxPYmplY3QoKS0+YWN0dWFsUG9pbnRlckZvcihwb2ludGVy
KTsKK30KKworc3RhdGljIHZvaWQgYmVnaW5EdW1wUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQs
IGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAgaWYgKGhhc1ByaW50ZWRQcm9maWxp
bmcpIHsKKyAgICAgICAgb3V0LnByaW50KCI7ICIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgb3V0LnByaW50KCIgICAgIik7CisgICAgaGFzUHJpbnRlZFByb2ZpbGluZyA9IHRydWU7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJ
bnN0cnVjdGlvbiomIGl0LCBib29sJikKK3sKKyAgICArK2l0OworfQorCit0ZW1wbGF0ZTw+Cit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0
cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBDb2RlQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGJv
b2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihibG9jaygpLT5tX2xvY2spOworCisgICAgKytpdDsKKyAgICBDU3RyaW5nIGRlc2NyaXB0aW9u
ID0gaXQtPnUucHJvZmlsZS0+YnJpZWZEZXNjcmlwdGlvbihsb2NrZXIpOworICAgIGlmICghZGVz
Y3JpcHRpb24ubGVuZ3RoKCkpCisgICAgICAgIHJldHVybjsKKyAgICBiZWdpbkR1bXBQcm9maWxp
bmcob3V0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICBvdXQucHJpbnQoZGVzY3JpcHRpb24p
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgYm9vbCYpCit7CisgICAgKytpdDsKK30KKwordGVtcGxhdGU8Pgor
dm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQXJyYXlQcm9maWxpbmcoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBi
b29sJiBoYXNQcmludGVkUHJvZmlsaW5nKQoreworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoYmxvY2soKS0+bV9sb2NrKTsKKworICAgICsraXQ7CisgICAgaWYgKCFpdC0+dS5hcnJheVBy
b2ZpbGUpCisgICAgICAgIHJldHVybjsKKyAgICBDU3RyaW5nIGRlc2NyaXB0aW9uID0gaXQtPnUu
YXJyYXlQcm9maWxlLT5icmllZkRlc2NyaXB0aW9uKGxvY2tlciwgYmxvY2soKSk7CisgICAgaWYg
KCFkZXNjcmlwdGlvbi5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGJlZ2luRHVtcFBy
b2ZpbGluZyhvdXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgIG91dC5wcmludChkZXNjcmlw
dGlvbik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBQcm9maWxlc0ZvckJ5dGVjb2RlT2Zmc2V0KFByaW50U3RyZWFtJiwgdW5zaWdu
ZWQsIGJvb2wmKQoreworfQorCitzdGF0aWMgdm9pZCBkdW1wUmFyZUNhc2VQcm9maWxlKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFJhcmVDYXNlUHJvZmlsZSogcHJvZmlsZSwg
Ym9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZykKK3sKKyAgICBpZiAoIXByb2ZpbGUgfHwgIXByb2Zp
bGUtPm1fY291bnRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYmVnaW5EdW1wUHJvZmlsaW5n
KG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgb3V0LnByaW50KG5hbWUsIHByb2ZpbGUt
Pm1fY291bnRlcik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBBcml0aFByb2ZpbGUoUHJpbnRTdHJl
YW0mIG91dCwgQXJpdGhQcm9maWxlKiBwcm9maWxlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5n
KQoreworICAgIGlmICghcHJvZmlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYmVnaW5EdW1w
UHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgb3V0LnByaW50KCJyZXN1
bHRzOiAiLCAqcHJvZmlsZSk7Cit9CisKK3RlbXBsYXRlPD4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
Q29kZUJsb2NrPjo6ZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVPZmZzZXQoUHJpbnRTdHJlYW0mIG91
dCwgdW5zaWduZWQgbG9jYXRpb24sIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCit7CisgICAg
ZHVtcFJhcmVDYXNlUHJvZmlsZShvdXQsICJyYXJlIGNhc2U6ICIsIGJsb2NrKCktPnJhcmVDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9uKSwgaGFzUHJpbnRlZFByb2ZpbGluZyk7
CisgICAgeworICAgICAgICBkdW1wQXJpdGhQcm9maWxlKG91dCwgYmxvY2soKS0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobG9jYXRpb24pLCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAg
ICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBWZWN0b3I8REZHOjpGcmVxdWVudEV4aXRT
aXRlPiBleGl0U2l0ZXMgPSBibG9jaygpLT5leGl0UHJvZmlsZSgpLmV4aXRTaXRlc0Zvcihsb2Nh
dGlvbik7CisgICAgaWYgKCFleGl0U2l0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dC5wcmlu
dCgiICEhIGZyZXF1ZW50IGV4aXRzOiAiKTsKKyAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwor
ICAgICAgICBmb3IgKGF1dG8mIGV4aXRTaXRlIDogZXhpdFNpdGVzKQorICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBleGl0U2l0ZS5raW5kKCksICIgIiwgZXhpdFNpdGUuaml0VHlwZSgpKTsK
KyAgICB9CisjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKKyAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9j
az4KK1ZNKiBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnZtKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
YmxvY2soKS0+dm0oKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Citjb25zdCBJZGVudGlm
aWVyJiBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmlkZW50aWZpZXIoaW50IGluZGV4KSBjb25zdAor
eworICAgIHJldHVybiBibG9jaygpLT5pZGVudGlmaWVyKGluZGV4KTsKK30KKworc3RhdGljIENT
dHJpbmcgcmVnZXhwVG9Tb3VyY2VTdHJpbmcoUmVnRXhwKiByZWdFeHApCit7CisgICAgY2hhciBw
b3N0Zml4WzVdID0geyAnLycsIDAsIDAsIDAsIDAgfTsKKyAgICBpbnQgaW5kZXggPSAxOworICAg
IGlmIChyZWdFeHAtPmdsb2JhbCgpKQorICAgICAgICBwb3N0Zml4W2luZGV4KytdID0gJ2cnOwor
ICAgIGlmIChyZWdFeHAtPmlnbm9yZUNhc2UoKSkKKyAgICAgICAgcG9zdGZpeFtpbmRleCsrXSA9
ICdpJzsKKyAgICBpZiAocmVnRXhwLT5tdWx0aWxpbmUoKSkKKyAgICAgICAgcG9zdGZpeFtpbmRl
eF0gPSAnbSc7CisgICAgaWYgKHJlZ0V4cC0+c3RpY2t5KCkpCisgICAgICAgIHBvc3RmaXhbaW5k
ZXgrK10gPSAneSc7CisgICAgaWYgKHJlZ0V4cC0+dW5pY29kZSgpKQorICAgICAgICBwb3N0Zml4
W2luZGV4KytdID0gJ3UnOworCisgICAgcmV0dXJuIHRvQ1N0cmluZygiLyIsIHJlZ0V4cC0+cGF0
dGVybigpLmltcGwoKSwgcG9zdGZpeCk7Cit9CisKK3N0YXRpYyBDU3RyaW5nIHJlZ2V4cE5hbWUo
aW50IHJlLCBSZWdFeHAqIHJlZ2V4cCkKK3sKKyAgICByZXR1cm4gdG9DU3RyaW5nKHJlZ2V4cFRv
U291cmNlU3RyaW5nKHJlZ2V4cCksICIoQHJlIiwgcmUsICIpIik7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgcHJpbnRMb2NhdGlvbkFuZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciog
b3ApCit7CisgICAgb3V0LnByaW50ZigiWyU0ZF0gJS0xN3MgIiwgbG9jYXRpb24sIG9wKTsKK30K
Kworc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQg
aW5kZXgpCit7CisgICAgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
OworfQorCitORVZFUl9JTkxJTkUgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnSG9va05hbWUoaW50
IGRlYnVnSG9va1R5cGUpCit7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tUeXBl
PihkZWJ1Z0hvb2tUeXBlKSkgeworICAgIGNhc2UgRGlkRW50ZXJDYWxsRnJhbWU6CisgICAgICAg
IHJldHVybiAiZGlkRW50ZXJDYWxsRnJhbWUiOworICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZyYW1l
OgorICAgICAgICByZXR1cm4gIndpbGxMZWF2ZUNhbGxGcmFtZSI7CisgICAgY2FzZSBXaWxsRXhl
Y3V0ZVN0YXRlbWVudDoKKyAgICAgICAgcmV0dXJuICJ3aWxsRXhlY3V0ZVN0YXRlbWVudCI7Cisg
ICAgY2FzZSBXaWxsRXhlY3V0ZUV4cHJlc3Npb246CisgICAgICAgIHJldHVybiAid2lsbEV4ZWN1
dGVFeHByZXNzaW9uIjsKKyAgICBjYXNlIFdpbGxFeGVjdXRlUHJvZ3JhbToKKyAgICAgICAgcmV0
dXJuICJ3aWxsRXhlY3V0ZVByb2dyYW0iOworICAgIGNhc2UgRGlkRXhlY3V0ZVByb2dyYW06Cisg
ICAgICAgIHJldHVybiAiZGlkRXhlY3V0ZVByb2dyYW0iOworICAgIGNhc2UgRGlkUmVhY2hCcmVh
a3BvaW50OgorICAgICAgICByZXR1cm4gImRpZFJlYWNoQnJlYWtwb2ludCI7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gIiI7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEJsb2NrPgorQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnJlZ2lz
dGVyTmFtZShpbnQgcikgY29uc3QKK3sKKyAgICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgo
cikpCisgICAgICAgIHJldHVybiBjb25zdGFudE5hbWUocik7CisKKyAgICByZXR1cm4gdG9DU3Ry
aW5nKFZpcnR1YWxSZWdpc3RlcihyKSk7Cit9CisKK3N0YXRpYyBDU3RyaW5nIGlkTmFtZShpbnQg
aWQwLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gdG9DU3RyaW5nKGlk
ZW50LmltcGwoKSwgIihAaWQiLCBpZDAsICIpIik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2Nr
PgorQ1N0cmluZyBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmNvbnN0YW50TmFtZShpbnQgaW5kZXgp
IGNvbnN0Cit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGJsb2NrKCktPmdldENvbnN0YW50KGluZGV4
KTsKKyAgICByZXR1cm4gdG9DU3RyaW5nKHZhbHVlLCAiKCIsIFZpcnR1YWxSZWdpc3RlcihpbmRl
eCksICIpIik7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50VW5hcnlPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCkKK3sK
KyAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKKworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgb3Ap
OworICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50QmluYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgaW50
IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3Qg
Y2hhciogb3ApCit7CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCBvcCk7CisgICAgb3V0LnBy
aW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENvbmRpdGlvbmFsSnVt
cChQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qLCBj
b25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCkKK3sKKyAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICBpbnQg
b2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCBvcCk7CisgICAgb3V0LnByaW50ZigiJXMsICVkKC0+JWQpIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5
SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2Nr
OjpJbnN0cnVjdGlvbiomIGl0KQoreworICAgIGNvbnN0IGNoYXIqIG9wOworICAgIHN3aXRjaCAo
dm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppdCkpIHsKKyAgICBjYXNlIG9wX2dldF9i
eV9pZDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Byb3Rv
X2xvYWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoKKyAg
ICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Vuc2V0IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBv
cF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgICAgICBvcCA9ICJhcnJheV9sZW5ndGgiOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNIQUJMRV9DT0RFKQorICAg
ICAgICBvcCA9IDA7CisjZW5kaWYKKyAgICB9CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IGlkMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwg
b3ApOworICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpKTsKKyAgICBpdCArPSA0OyAvLyBJbmNyZW1lbnQgdXAgdG8gdGhlIHZhbHVlIHByb2Zp
bGVyLgorfQorCitzdGF0aWMgdm9pZCBkdW1wU3RydWN0dXJlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKK3sKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgb3V0
LnByaW50ZigiJXMgPSAlcCIsIG5hbWUsIHN0cnVjdHVyZSk7CisKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseShpZGVudC5pbXBsKCkpOworICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgb3V0LnByaW50ZigiIChvZmZz
ZXQgPSAlZCkiLCBvZmZzZXQpOworfQorCitzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJl
YW0mIG91dCwgU3RydWN0dXJlQ2hhaW4qIGNoYWluLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
K3sKKyAgICBvdXQucHJpbnRmKCJjaGFpbiA9ICVwOiBbIiwgY2hhaW4pOworICAgIGJvb2wgZmly
c3QgPSB0cnVlOworICAgIGZvciAoV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGN1cnJlbnRTdHJ1
Y3R1cmUgPSBjaGFpbi0+aGVhZCgpOyAqY3VycmVudFN0cnVjdHVyZTsgKytjdXJyZW50U3RydWN0
dXJlKSB7CisgICAgICAgIGlmIChmaXJzdCkKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CisgICAgICAgIGR1bXBT
dHJ1Y3R1cmUob3V0LCAic3RydWN0IiwgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCksIGlkZW50KTsK
KyAgICB9CisgICAgb3V0LnByaW50ZigiXSIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
K3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmlu
dFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit7Cisg
ICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRp
b247CisKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIoaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKKworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7IC8vIHRlbGwgdGhl
IGNvbXBpbGVyIHRvIHNodXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucy4K
KworICAgIGlmICh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0p
ID09IG9wX2dldF9hcnJheV9sZW5ndGgpCisgICAgICAgIG91dC5wcmludGYoIiBsbGludChhcnJh
eV9sZW5ndGgpIik7CisgICAgZWxzZSBpZiAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBnZXRT
dHJ1Y3R1cmVJRChpbnN0cnVjdGlvbls0XSkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpOworICAg
ICAgICBvdXQucHJpbnRmKCIgbGxpbnQoIik7CisgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
c3RydWN0Iiwgc3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgIG91dC5wcmludGYoIikiKTsKKyAg
ICAgICAgaWYgKHZtKCktPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXSkg
PT0gb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQpCisgICAgICAgICAgICBvdXQucHJpbnRmKCIgcHJv
dG8oJXApIiwgZ2V0UG9pbnRlcihpbnN0cnVjdGlvbls2XSkpOworICAgIH0KKworI2lmIEVOQUJM
RShKSVQpCisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChDb2Rl
T3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
ID0gKnN0dWJQdHI7CisgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCisgICAgICAgICAg
ICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CisKKyAgICAgICAgb3V0LnByaW50ZigiIGpp
dCgiKTsKKworICAgICAgICBTdHJ1Y3R1cmUqIGJhc2VTdHJ1Y3R1cmUgPSBudWxscHRyOworICAg
ICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YiA9IG51bGxwdHI7CisKKyAgICAgICAgc3dpdGNo
IChzdHViSW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRT
ZWxmOgorICAgICAgICAgICAgb3V0LnByaW50Zigic2VsZiIpOworICAgICAgICAgICAgYmFzZVN0
cnVjdHVyZSA9IHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKKyAgICAg
ICAgICAgIG91dC5wcmludGYoInN0dWIiKTsKKyAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51
LnN0dWI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0
OgorICAgICAgICAgICAgb3V0LnByaW50ZigidW5zZXQiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgICAgICAgICBvdXQucHJp
bnRmKCJBcnJheUxlbmd0aCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmFzZVN0cnVjdHVyZSkgeworICAgICAg
ICAgICAgb3V0LnByaW50ZigiLCAiKTsKKyAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
c3RydWN0IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHN0dWIpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIpOworCisgICAgICAgIG91
dC5wcmludGYoIikiKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXApOworI2Vu
ZGlmCit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3sKKyAgICBjb25zdCBhdXRvKiBpbnN0cnVjdGlv
biA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKKworICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworCisgICAg
VU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBj
ZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgorCisgICAgb3V0LnByaW50KCIsICIsIGdl
dFB1dEJ5SWRGbGFncyhpbnN0cnVjdGlvbls4XSkpOworCisgICAgaWYgKFN0cnVjdHVyZUlEIHN0
cnVjdHVyZUlEID0gZ2V0U3RydWN0dXJlSUQoaW5zdHJ1Y3Rpb25bNF0pKSB7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0
cnVjdHVyZUlEKTsKKyAgICAgICAgb3V0LnByaW50KCIgbGxpbnQoIik7CisgICAgICAgIGlmIChT
dHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGdldFN0cnVjdHVyZUlEKGluc3RydWN0aW9uWzZd
KSkgeworICAgICAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSB2bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobmV3U3RydWN0dXJlSUQpOworICAgICAgICAgICAgZHVtcFN0
cnVjdHVyZShvdXQsICJwcmV2Iiwgc3RydWN0dXJlLCBpZGVudCk7CisgICAgICAgICAgICBvdXQu
cHJpbnQoIiwgIik7CisgICAgICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgIm5leHQiLCBuZXdT
dHJ1Y3R1cmUsIGlkZW50KTsKKyAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmVDaGFpbiogY2hhaW4g
PSBnZXRTdHJ1Y3R1cmVDaGFpbihpbnN0cnVjdGlvbls3XSkpIHsKKyAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIiwgIik7CisgICAgICAgICAgICAgICAgZHVtcENoYWluKG91dCwgY2hhaW4sIGlk
ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBkdW1wU3Ry
dWN0dXJlKG91dCwgInN0cnVjdCIsIHN0cnVjdHVyZSwgaWRlbnQpOworICAgICAgICBvdXQucHJp
bnQoIikiKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoSklUKQorICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOworICAgICAgICBpZiAoc3R1
YkluZm8ucmVzZXRCeUdDKQorICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIp
OworCisgICAgICAgIG91dC5wcmludGYoIiBqaXQoIik7CisKKyAgICAgICAgc3dpdGNoIChzdHVi
SW5mby5jYWNoZVR5cGUpIHsKKyAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNl
OgorICAgICAgICAgICAgb3V0LnByaW50KCJyZXBsYWNlLCAiKTsKKyAgICAgICAgICAgIGR1bXBT
dHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpLCBpZGVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
YWNoZVR5cGU6OlN0dWI6IHsKKyAgICAgICAgICAgIG91dC5wcmludCgic3R1YiwgIiwgKnN0dWJJ
bmZvLnUuc3R1Yik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IENhY2hlVHlwZTo6VW5zZXQ6CisgICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgb3V0LnByaW50ZigiKSIpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisjZW5kaWYKK30KKworI2lmIEVOQUJMRShKSVQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4K
K3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJl
YW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3sKK30KKwordGVtcGxhdGU8
Pgordm9pZCBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbG9jYXRpb24sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
bWFwKQoreworICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6RlRMSklUKQor
ICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
YmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7Cit9CisjZW5kaWYKKwordGVtcGxhdGU8Y2xh
c3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRT
dHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9v
bCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit7Cisg
ICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCBmdW5jID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgaW50IGFyZ0NvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50
IHJlZ2lzdGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCBvcCk7CisgICAgb3V0LnByaW50KHJlZ2lzdGVyTmFtZShk
c3QpLCAiLCAiLCByZWdpc3Rlck5hbWUoZnVuYyksICIsICIsIGFyZ0NvdW50LCAiLCAiLCByZWdp
c3Rlck9mZnNldCk7CisgICAgb3V0LnByaW50KCIgKHRoaXMgYXQgIiwgdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoMCwgLXJlZ2lzdGVyT2Zmc2V0KSwgIikiKTsKKyAgICBpZiAoY2FjaGVEdW1w
TW9kZSA9PSBEdW1wQ2FjaGVzKSB7CisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSBnZXRDYWxsTGlua0luZm8oaXRbMV0pOworICAgICAgICBpZiAoY2FsbExpbmtJbmZv
LT5sYXN0U2VlbkNhbGxlZSkgeworICAgICAgICAgICAgb3V0LnByaW50ZigKKyAgICAgICAgICAg
ICAgICAiIGxsaW50KCVwLCBleGVjICVwKSIsCisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKKyAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxlKCkpOworICAgICAgICB9CisjaWYgRU5BQkxFKEpJVCkK
KyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2Nh
dGlvbikpKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBpbmZvLT5sYXN0U2Vl
bkNhbGxlZSgpOworICAgICAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIgaml0KCVwLCBleGVjICVwKSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkp
OworICAgICAgICB9CisKKyAgICAgICAgZHVtcENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24s
IG1hcCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0obWFwKTsKKyNlbmRpZgorICAgIH0K
KyAgICArK2l0OworICAgICsraXQ7CisgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hh
ciogb3ApCit7CisgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRl
bnRpZmllcihpZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKKyAgICBpdCAr
PSA1OworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgY2hhciogb3AsIGludCBvcGVyYW5kKQoreworICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGxvY2F0aW9uLCBpdCwgb3ApOworICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKG9w
ZXJhbmQpLmRhdGEoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVn
aW47CisgICAgYm9vbCBoYXNQcmludGVkUHJvZmlsaW5nID0gZmFsc2U7CisgICAgT3Bjb2RlSUQg
b3Bjb2RlID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppdCk7CisgICAgc3dpdGNo
IChvcGNvZGUpIHsKKyAgICBjYXNlIG9wX2VudGVyOiB7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImVudGVyIik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIG9wX2dldF9zY29wZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9j
YXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3Njb3BlZF9h
cmd1bWVudHMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25lZF9hcmd1bWVudHM6IHsKKyAgICAgICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImNyZWF0ZV9jbG9uZWRfYXJndW1lbnRzIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF9hcmd1bWVudF9jb3VudDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91
dCwgbG9jYXRpb24sIGl0LCAiYXJndW1lbnRfY291bnQiLCByMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX2dldF9hcmd1bWVudDogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGxvY2F0aW9uLCBp
dCwgImFyZ3VtZW50IiwgcjApOworICAgICAgICBvdXQucHJpbnRmKCIsICVkIiwgaW5kZXgpOwor
ICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRPZmZzZXQgPSAoKytpdCktPnUu
dW5zaWduZWRWYWx1ZTsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY3JlYXRlX3Jlc3QiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBv
dXQucHJpbnRmKCJBcmd1bWVudHNPZmZzZXQ6ICV1IiwgYXJndW1lbnRPZmZzZXQpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImdldF9yZXN0X2xlbmd0aCIpOworICAgICAgICBvdXQucHJpbnRm
KCIlcywgIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAgICAgICB1bnNpZ25lZCBhcmd1
bWVudE9mZnNldCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICBvdXQucHJpbnRm
KCJBcmd1bWVudHNPZmZzZXQ6ICV1IiwgYXJndW1lbnRPZmZzZXQpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9jcmVhdGVfdGhpczogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIHVuc2lnbmVkIGluZmVycmVkSW5saW5lQ2FwYWNpdHkgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgdW5zaWduZWQgY2FjaGVkRnVuY3Rpb24gPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3RoaXMi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAldSwgJXUiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGluZmVycmVkSW5saW5lQ2FwYWNpdHks
IGNhY2hlZEZ1bmN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdG9f
dGhpczogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAidG9fdGhp
cyIsIHIwKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRTdHJ1Y3R1cmUoKigr
K2l0KSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwg
Y2FjaGUoc3RydWN0ID0gIiwgUmF3UG9pbnRlcihzdHJ1Y3R1cmUpLCAiKSIpOworICAgICAgICBv
dXQucHJpbnQoIiwgIiwgZ2V0VG9UaGlzU3RhdHVzKCooKytpdCkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2Ugb3BfY2hlY2tfdGR6OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQo
b3V0LCBsb2NhdGlvbiwgaXQsICJvcF9jaGVja190ZHoiLCByMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX25ld19vYmplY3Q6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIGluZmVycmVkSW5saW5lQ2FwYWNpdHkgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRp
b24sIGl0LCAibmV3X29iamVjdCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXUiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7CisgICAgICAgICsr
aXQ7IC8vIFNraXAgb2JqZWN0IGFsbG9jYXRpb24gcHJvZmlsZS4KKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2Ugb3BfbmV3X2FycmF5OiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IGFyZ2MgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibmV3X2FycmF5Iik7CisgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJWQiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd2
KS5kYXRhKCksIGFyZ2MpOworICAgICAgICArK2l0OyAvLyBTa2lwIGFycmF5IGFsbG9jYXRpb24g
cHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dp
dGhfc3ByZWFkOiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZ2MgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAibmV3X2FycmF5X3dpdGhfc3ByZWFkIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJWQsICIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGFyZ3YpLmRh
dGEoKSwgYXJnYyk7CisgICAgICAgIHVuc2lnbmVkIGJpdFZlY3RvckluZGV4ID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNvbnN0IEJpdFZlY3RvciYgYml0VmVjdG9yID0gYmxv
Y2soKS0+Yml0VmVjdG9yKGJpdFZlY3RvckluZGV4KTsKKyAgICAgICAgb3V0LnByaW50KCJCaXRW
ZWN0b3I6IiwgYml0VmVjdG9ySW5kZXgsICI6Iik7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYXJnYyk7IGkrKykgeworICAgICAgICAgICAg
aWYgKGJpdFZlY3Rvci5nZXQoaSkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIxIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIwIik7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3ByZWFkOiB7CisgICAgICAg
IGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGFyZyA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJzcHJlYWQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRz
dCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYXJnKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOiB7CisgICAgICAgIGludCBkc3Qg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGxlbmd0aCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdf
YXJyYXlfd2l0aF9zaXplIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVy
TmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGxlbmd0aCkuZGF0YSgpKTsKKyAgICAgICAg
KytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGUuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6IHsKKyAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgYXJnYyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdfYXJyYXlfYnVmZmVyIik7CisgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlZCwgJWQiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIGFy
Z3YsIGFyZ2MpOworICAgICAgICArK2l0OyAvLyBTa2lwIGFycmF5IGFsbG9jYXRpb24gcHJvZmls
ZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDogeworICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHJlMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJuZXdfcmVnZXhwIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSk7CisgICAgICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KWJsb2NrKCkt
Pm51bWJlck9mUmVnRXhwcygpKQorICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdleHBO
YW1lKHJlMCwgYmxvY2soKS0+cmVnZXhwKHJlMCkpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG91dC5wcmludGYoImJhZF9yZWdleHAoJWQpIiwgcmUwKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfbW92OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAibW92Iik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3Byb2ZpbGVf
dHlwZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgKytp
dDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgKytpdDsKKyAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfcHJvZmlsZV90eXBlIik7
CisgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzogewor
ICAgICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGJhc2ljQmxvY2tMb2NhdGlvbiA9IGdldEJhc2lj
QmxvY2tMb2NhdGlvbigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAicHJvZmlsZV9jb250cm9sX2Zsb3ciKTsKKyAgICAgICAgaWYgKGJhc2lj
QmxvY2tMb2NhdGlvbikKKyAgICAgICAgICAgIG91dC5wcmludGYoIlslZCwgJWRdIiwgYmFzaWNC
bG9ja0xvY2F0aW9uLT5zdGFydE9mZnNldCgpLCBiYXNpY0Jsb2NrTG9jYXRpb24tPmVuZE9mZnNl
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfbm90OiB7CisgICAgICAg
IHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5vdCIpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9lcTogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9j
YXRpb24sIGl0LCAiZXEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZXFf
bnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJlcV9udWxs
Iik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25lcTogeworICAgICAgICBw
cmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibmVxIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX25lcV9udWxsOiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQs
IGxvY2F0aW9uLCBpdCwgIm5lcV9udWxsIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIG9wX3N0cmljdGVxOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJzdHJpY3RlcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uc3Ry
aWN0ZXE6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5zdHJp
Y3RlcSIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9sZXNzOiB7CisgICAg
ICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJsZXNzIik7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2xlc3NlcTogeworICAgICAgICBwcmludEJpbmFyeU9w
KG91dCwgbG9jYXRpb24sIGl0LCAibGVzc2VxIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIG9wX2dyZWF0ZXI6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9u
LCBpdCwgImdyZWF0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZ3Jl
YXRlcmVxOiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJncmVh
dGVyZXEiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaW5jOiB7CisgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uT3BB
bmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJpbmMiLCByMCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlYzogeworICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KG91dCwgbG9jYXRpb24sIGl0LCAiZGVjIiwgcjApOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF90b19udW1iZXI6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRp
b24sIGl0LCAidG9fbnVtYmVyIik7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0
LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfdG9fc3RyaW5nOiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwg
InRvX3N0cmluZyIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9uZWdhdGU6
IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAibmVnYXRlIik7Cisg
ICAgICAgICsraXQ7IC8vIG9wX25lZ2F0ZSBoYXMgYW4gZXh0cmEgb3BlcmFuZCBmb3IgdGhlIEFy
aXRoUHJvZmlsZS4KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfYWRkOiB7Cisg
ICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJhZGQiKTsKKyAgICAgICAg
KytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbXVsOiB7CisgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJtdWwiKTsKKyAgICAgICAgKytpdDsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZGl2OiB7CisgICAgICAgIHByaW50
QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJkaXYiKTsKKyAgICAgICAgKytpdDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbW9kOiB7CisgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJtb2QiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfcG93OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJwb3ciKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3ViOiB7CisgICAg
ICAgIHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzdWIiKTsKKyAgICAgICAgKytp
dDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbHNoaWZ0OiB7CisgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJsc2hpZnQiKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfcnNoaWZ0OiB7CisgICAgICAgIHByaW50QmluYXJ5T3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJyc2hpZnQiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfdXJzaGlmdDogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24s
IGl0LCAidXJzaGlmdCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXRh
bmQ6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImJpdGFuZCIp
OworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXR4
b3I6IHsKKyAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImJpdHhvciIp
OworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9iaXRv
cjogeworICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiYml0b3IiKTsK
KyAgICAgICAgKytpdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJvdmVycmlkZXNfaGFzX2luc3RhbmNlIik7CisgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaW5zdGFuY2VvZjogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJpbnN0YW5jZW9mIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
aW5zdGFuY2VvZl9jdXN0b206IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluc3RhbmNlb2Zf
Y3VzdG9tIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBvcF91bnNpZ25lZDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJ1bnNpZ25lZCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBv
cF90eXBlb2Y6IHsKKyAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAidHlw
ZW9mIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX2VtcHR5OiB7Cisg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX2VtcHR5Iik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2lzX3VuZGVmaW5lZDogeworICAgICAgICBw
cmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc191bmRlZmluZWQiKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNfYm9vbGVhbjogeworICAgICAgICBwcmludFVu
YXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19ib29sZWFuIik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX2lzX251bWJlcjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJpc19udW1iZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfaXNfY2VsbF93aXRoX3R5cGU6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgdHlwZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJpc19jZWxsX3dpdGhfdHlwZSIpOworICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCB0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfaXNf
b2JqZWN0OiB7CisgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGxvY2F0aW9uLCBpdCwgImlzX29i
amVjdCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pc19vYmplY3Rfb3Jf
bnVsbDogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19vYmpl
Y3Rfb3JfbnVsbCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pc19mdW5j
dGlvbjogeworICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpc19mdW5j
dGlvbiIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9pbjogeworICAgICAg
ICBwcmludEJpbmFyeU9wKG91dCwgbG9jYXRpb24sIGl0LCAiaW4iKTsKKyAgICAgICAgZHVtcEFy
cmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CisgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0cnlfZ2V0X2J5X2lkIik7CisgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAg
ICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDoKKyAg
ICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6IHsKKyAgICAgICAgcHJpbnRHZXRCeUlkT3Aob3V0
LCBsb2NhdGlvbiwgaXQpOworICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxv
Y2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwg
aGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX3dpdGhfdGhpcyIpOworICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjIpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAg
ICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7
CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfdmFsX3dpdGhfdGhpcyIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6IHsKKyAgICAgICAgcHJpbnRQdXRCeUlkT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJw
dXRfYnlfaWQiKTsKKyAgICAgICAgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlv
biwgc3R1YkluZm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3dpdGhfdGhpczogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF93aXRo
X3RoaXMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50
aWZpZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGlu
dCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX3dpdGhfdGhpcyIpOworICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMyku
ZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9i
eV9pZDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50
IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgbjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9nZXR0ZXJfYnlfaWQiKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3B1dF9zZXR0
ZXJfYnlfaWQ6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG4wID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfc2V0dGVyX2J5X2lkIik7
CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRf
Z2V0dGVyX3NldHRlcl9ieV9pZDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgbjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCIpOwor
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCksIG4wLCByZWdpc3Rl
ck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X3ZhbDogeworICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAicHV0X2dldHRlcl9ieV92YWwiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfdmFsOiB7CisgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJwdXRfc2V0dGVyX2J5X3ZhbCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVk
LCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwg
bjAsIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfZGVmaW5lX2RhdGFfcHJvcGVydHk6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIzID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwg
ImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9kZWZpbmVfYWNjZXNzb3JfcHJvcGVydHk6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByNCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJkZWZpbmVfYWNjZXNzb3JfcHJvcGVydHkiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyNCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2Ugb3BfZGVsX2J5X2lkOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGlkMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJkZWxfYnlfaWQiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaWROYW1l
KGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9nZXRfYnlfdmFsOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIy
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImdldF9ieV92YWwiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAl
cyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIyKS5kYXRhKCkpOworICAgICAgICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBp
dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQs
IGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfcHV0X2J5X3ZhbDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfdmFsIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhh
c1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9w
dXRfYnlfdmFsX2RpcmVjdDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfdmFsX2RpcmVjdCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQs
IGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfZGVsX2J5X3ZhbDogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlv
biwgaXQsICJkZWxfYnlfdmFsIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0
X2J5X2luZGV4OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICB1bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2luZGV4Iik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAldSwgJXMiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfam1wOiB7CisgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiam1wIik7CisgICAgICAgIG91dC5wcmludGYoIiVkKC0+JWQpIiwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IG9wX2p0cnVlOiB7CisgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgYmVnaW4sIGl0
LCBsb2NhdGlvbiwgImp0cnVlIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2pmYWxzZTogeworICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGJlZ2luLCBpdCwg
bG9jYXRpb24sICJqZmFsc2UiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
amVxX251bGw6IHsKKyAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBiZWdpbiwgaXQs
IGxvY2F0aW9uLCAiamVxX251bGwiKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3Bfam5lcV9udWxsOiB7CisgICAgICAgIHByaW50Q29uZGl0aW9uYWxKdW1wKG91dCwgYmVnaW4s
IGl0LCBsb2NhdGlvbiwgImpuZXFfbnVsbCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9qbmVxX3B0cjogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgU3BlY2lhbDo6UG9pbnRlciBwb2ludGVyID0gZ2V0U3BlY2lhbFBvaW50ZXIoKigr
K2l0KSk7CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiam5lcV9wdHIiKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVkICglcCksICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHBvaW50ZXIsIGFjdHVhbFBvaW50ZXJGb3IocG9pbnRlciksIG9mZnNldCwgbG9jYXRp
b24gKyBvZmZzZXQpOworICAgICAgICArK2l0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9qbGVzczogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRp
b24sIGl0LCAiamxlc3MiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X2psZXNzZXE6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImpsZXNzZXEiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2pn
cmVhdGVyOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJqZ3JlYXRlciIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfamdy
ZWF0ZXJlcTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiamdyZWF0ZXJlcSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
am5sZXNzOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJqbmxlc3MiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2pubGVz
c2VxOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJq
bmxlc3NlcSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfam5ncmVh
dGVyOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJq
bmdyZWF0ZXIiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJqbmdyZWF0ZXJlcSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
bG9vcF9oaW50OiB7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImxvb3BfaGludCIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jaGVj
a190cmFwczogeworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQs
ICJjaGVja190cmFwcyIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImxv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJsb2dfc2hhZG93X2NoaWNrZW5f
dGFpbCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9zd2l0Y2hfaW1tOiB7CisgICAgICAgIGludCB0YWJsZUluZGV4ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzd2l0Y2hfaW1t
Iik7CisgICAgICAgIG91dC5wcmludGYoIiVkLCAlZCgtPiVkKSwgJXMiLCB0YWJsZUluZGV4LCBk
ZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShzY3J1
dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
b3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgaW50IHNjcnV0aW5lZVJlZ2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInN3aXRjaF9jaGFyIik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVkLCAlZCgtPiVkKSwgJXMiLCB0YWJsZUluZGV4LCBkZWZhdWx0
VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lzdGVyTmFtZShzY3J1dGluZWVS
ZWdpc3RlcikuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogeworICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICBpbnQgZGVmYXVsdFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAic3dpdGNoX3N0cmluZyIpOworICAg
ICAgICBvdXQucHJpbnRmKCIlZCwgJWQoLT4lZCksICVzIiwgdGFibGVJbmRleCwgZGVmYXVsdFRh
cmdldCwgbG9jYXRpb24gKyBkZWZhdWx0VGFyZ2V0LCByZWdpc3Rlck5hbWUoc2NydXRpbmVlUmVn
aXN0ZXIpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX25ld19m
dW5jOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19m
dW5jIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIw
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmMiKTsKKyAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2Ugb3BfbmV3X2FzeW5jX2Z1bmM6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgZjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9j
YXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVz
LCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IGYwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7
CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19mdW5jX2V4
cCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOiB7CisgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnVuY19leHAiKTsK
KyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7CisgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9z
ZXRfZnVuY3Rpb25fbmFtZTogeworICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJzZXRfZnVuY3Rpb25fbmFtZSIp
OworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZnVuY1JlZykuZGF0
YSgpLCByZWdpc3Rlck5hbWUobmFtZVJlZykuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2Ugb3BfY2FsbDogeworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9u
LCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0lu
Zm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Cisg
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIG9wX2NhbGxfZXZhbDogeworICAgICAgICBwcmludENhbGxPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczoKKyAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKKyAg
ICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2Zvcndh
cmRfYXJndW1lbnRzOiB7CisgICAgICAgIGludCByZXN1bHQgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgaW50IGNhbGxlZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgdGhp
c1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBhcmd1bWVudHMgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGZpcnN0RnJlZVJlZ2lzdGVyID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCB2YXJBcmdPZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgKytpdDsKKyAgICAgICAgY29uc3QgY2hhciogb3BOYW1lOworICAgICAgICBpZiAo
b3Bjb2RlID09IG9wX2NhbGxfdmFyYXJncykKKyAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3Zh
cmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfY29uc3RydWN0X3ZhcmFyZ3Mp
CisgICAgICAgICAgICBvcE5hbWUgPSAiY29uc3RydWN0X3ZhcmFyZ3MiOworICAgICAgICBlbHNl
IGlmIChvcGNvZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCisgICAgICAgICAgICBvcE5hbWUg
PSAidGFpbF9jYWxsX3ZhcmFyZ3MiOworICAgICAgICBlbHNlIGlmIChvcGNvZGUgPT0gb3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQorICAgICAgICAgICAgb3BOYW1lID0gInRhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCBvcE5hbWUpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAl
cywgJWQsICVkIiwgcmVnaXN0ZXJOYW1lKHJlc3VsdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoY2Fs
bGVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZSh0aGlzVmFsdWUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGFyZ3VtZW50cykuZGF0YSgpLCBmaXJzdEZyZWVSZWdpc3RlciwgdmFyQXJnT2Zmc2V0KTsKKyAg
ICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIG9wX3JldDogeworICAgICAgICBpbnQg
cjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0
ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAicmV0IiwgcjApOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bf
c3RyY2F0OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IGNvdW50ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwg
InN0cmNhdCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBjb3VudCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZTogeworICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInRvX3ByaW1p
dGl2ZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6IHsKKyAgICAgICAgaW50IGRzdCA9IGl0
WzFdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX2dldF9lbnVtZXJh
YmxlX2xlbmd0aCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUo
ZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCkpOworICAgICAgICBpdCArPSBP
UENPREVfTEVOR1RIKG9wX2dldF9lbnVtZXJhYmxlX2xlbmd0aCkgLSAxOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eTogeworICAgICAgICBp
bnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgIGludCBwcm9wZXJ0eU5hbWUgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfaGFzX2lu
ZGV4ZWRfcHJvcGVydHkiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHByb3BlcnR5TmFtZSkuZGF0YSgpKTsKKyAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91
dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OiB7CisgICAgICAgIGludCBkc3QgPSBpdFsx
XS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gaXRbMl0udS5vcGVyYW5kOworICAgICAg
ICBpbnQgcHJvcGVydHlOYW1lID0gaXRbM10udS5vcGVyYW5kOworICAgICAgICBpbnQgZW51bWVy
YXRvciA9IGl0WzRdLnUub3BlcmFuZDsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
bG9jYXRpb24sIGl0LCAib3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eSIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHByb3BlcnR5TmFtZSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZW51bWVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RFX0xF
TkdUSChvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KSAtIDE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5OiB7CisgICAgICAgIGludCBkc3Qg
PSBpdFsxXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBiYXNlID0gaXRbMl0udS5vcGVyYW5kOwor
ICAgICAgICBpbnQgcHJvcGVydHlOYW1lID0gaXRbM10udS5vcGVyYW5kOworICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJvcF9oYXNfZ2VuZXJpY19wcm9wZXJ0
eSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlO
YW1lKS5kYXRhKCkpOworICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2hhc19nZW5lcmlj
X3Byb3BlcnR5KSAtIDE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2dldF9k
aXJlY3RfcG5hbWU6IHsKKyAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBpbnQgYmFzZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgcHJvcGVydHlO
YW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpbmRleCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICBpbnQgZW51bWVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJvcF9nZXRfZGlyZWN0
X3BuYW1lIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHByb3BlcnR5TmFtZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGVudW1lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGlu
ZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICB9
CisgICAgY2FzZSBvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcjogeworICAgICAgICBpbnQgZHN0
ID0gaXRbMV0udS5vcGVyYW5kOworICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsK
KyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAib3BfZ2V0X3By
b3BlcnR5X2VudW1lcmF0b3IiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0
ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpKTsKKyAgICAgICAg
aXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcHJvcGVydHlfZW51bWVyYXRvcikgLSAxOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFt
ZTogeworICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5kOworICAgICAgICBpbnQgZW51
bWVyYXRvciA9IGl0WzJdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGluZGV4ID0gaXRbM10udS5v
cGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJv
cF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZW51bWVyYXRv
cikuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEoKSk7CisgICAgICAgIGl0ICs9IE9Q
Q09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpIC0gMTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lOiB7Cisg
ICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBlbnVtZXJhdG9y
ID0gaXRbMl0udS5vcGVyYW5kOworICAgICAgICBpbnQgaW5kZXggPSBpdFszXS51Lm9wZXJhbmQ7
CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX2VudW1l
cmF0b3JfZ2VuZXJpY19wbmFtZSIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZW51bWVyYXRvcikuZGF0YSgp
LCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEoKSk7CisgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5H
VEgob3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKSAtIDE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzogeworICAgICAgICBpbnQgZHN0ID0gaXRb
MV0udS5vcGVyYW5kOworICAgICAgICBpbnQgaW5kZXggPSBpdFsyXS51Lm9wZXJhbmQ7CisgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgIm9wX3RvX2luZGV4X3N0
cmluZyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0YSgpKTsKKyAgICAgICAgaXQgKz0gT1BDT0RF
X0xFTkdUSChvcF90b19pbmRleF9zdHJpbmcpIC0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgaW50IG5ld1Njb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBjdXJyZW50U2NvcGUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHVzaF93aXRoX3Njb3BlIik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShuZXdTY29wZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoY3VycmVudFNjb3Bl
KS5kYXRhKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfcGFyZW50
X3Njb3BlOiB7CisgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IHBhcmVudFNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9wYXJlbnRfc2NvcGUiKTsKKyAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocGFyZW50U2NvcGUpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OiB7CisgICAgICAgIGludCBkc3QgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGludCBzeW1ib2xUYWJsZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
aW5pdGlhbFZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Iik7Cisg
ICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwKKyAgICAgICAgICAgIHJlZ2lzdGVy
TmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHNjb3BlKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShzeW1ib2xUYWJsZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5pdGlhbFZhbHVlKS5kYXRhKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9jYXRjaDogeworICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNh
dGNoIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIG9wX3Rocm93OiB7CisgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwg
aXQsICJ0aHJvdyIsIHIwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfdGhy
b3dfc3RhdGljX2Vycm9yOiB7CisgICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICBFcnJvclR5cGUgazEgPSBzdGF0aWNfY2FzdDxFcnJvclR5cGU+KCgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlKTsKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24s
IGl0LCAidGhyb3dfc3RhdGljX2Vycm9yIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBj
b25zdGFudE5hbWUoazApLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludChrMSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2RlYnVnOiB7CisgICAgICAgIGludCBkZWJ1Z0hv
b2tUeXBlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBoYXNCcmVha3BvaW50Rmxh
ZyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJkZWJ1ZyIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1
Z0hvb2tOYW1lKGRlYnVnSG9va1R5cGUpLCBoYXNCcmVha3BvaW50RmxhZyk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIG9wX2Fzc2VydDogeworICAgICAgICBpbnQgY29uZGl0aW9u
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFzc2Vy
dCIpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCByZWdpc3Rlck5hbWUoY29uZGl0aW9u
KS5kYXRhKCksIGxpbmUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9lbmQ6
IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9j
YXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGxvY2F0aW9uLCBpdCwgImVuZCIsIHIwKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZTogeworICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHNjb3BlID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlVHlwZT4o
KCsraXQpLT51Lm9wZXJhbmQpOworICAgICAgICBpbnQgZGVwdGggPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInJlc29sdmVfc2NvcGUiKTsK
KyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgPCVzPiwgJWQsICVwIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShzY29wZSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBp
ZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVzb2x2ZVR5cGVOYW1lKHJlc29sdmVUeXBlKSwgZGVw
dGgsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9nZXRfZnJv
bV9zY29wZTogeworICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5mbygoKytp
dCktPnUub3BlcmFuZCk7CisgICAgICAgICsraXQ7IC8vIFN0cnVjdHVyZQorICAgICAgICBpbnQg
b3BlcmFuZCA9ICgrK2l0KS0+dS5vcGVyYW5kOyAvLyBPcGVyYW5kCisgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImdldF9mcm9tX3Njb3BlIik7CisgICAgICAg
IG91dC5wcmludChyZWdpc3Rlck5hbWUocjApLCAiLCAiLCByZWdpc3Rlck5hbWUocjEpKTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZDApID09IFVJTlRfTUFYKQorICAgICAg
ICAgICAgb3V0LnByaW50KCIsIGFub255bW91cyIpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBvdXQucHJpbnQoIiwgIiwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKSk7CisgICAgICAg
IG91dC5wcmludCgiLCAiLCBnZXRQdXRJbmZvLm9wZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZU5h
bWUoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpKSwgInwiLCByZXNvbHZlVHlwZU5hbWUoZ2V0UHV0
SW5mby5yZXNvbHZlVHlwZSgpKSwgInwiLCBpbml0aWFsaXphdGlvbk1vZGVOYW1lKGdldFB1dElu
Zm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLCAiPiwgIiwgb3BlcmFuZCk7CisgICAgICAgIGR1bXBW
YWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CisgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBHZXRQdXRJbmZv
IGdldFB1dEluZm8gPSBHZXRQdXRJbmZvKCgrK2l0KS0+dS5vcGVyYW5kKTsKKyAgICAgICAgKytp
dDsgLy8gU3RydWN0dXJlCisgICAgICAgIGludCBvcGVyYW5kID0gKCsraXQpLT51Lm9wZXJhbmQ7
IC8vIE9wZXJhbmQKKyAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAicHV0X3RvX3Njb3BlIik7CisgICAgICAgIG91dC5wcmludChyZWdpc3Rlck5hbWUocjApKTsK
KyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZDApID09IFVJTlRfTUFYKQorICAg
ICAgICAgICAgb3V0LnByaW50KCIsIGFub255bW91cyIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBvdXQucHJpbnQoIiwgIiwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKSk7CisgICAg
ICAgIG91dC5wcmludCgiLCAiLCByZWdpc3Rlck5hbWUocjEpLCAiLCAiLCBnZXRQdXRJbmZvLm9w
ZXJhbmQoKSwgIjwiLCByZXNvbHZlTW9kZU5hbWUoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpKSwg
InwiLCByZXNvbHZlVHlwZU5hbWUoZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKSwgInwiLCBpbml0
aWFsaXphdGlvbk1vZGVOYW1lKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpLCAiPiwg
PHN0cnVjdHVyZT4sICIsIG9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBpbnQg
b2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImdldF9mcm9tX2FyZ3VtZW50cyIpOworICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBvZmZzZXQpOworICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwg
aGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9w
X3B1dF90b19hcmd1bWVudHM6IHsKKyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgInB1dF90b19hcmd1bWVudHMiKTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVkLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCBvZmZzZXQsIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3BfeWllbGQ6IHsK
KyAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHVuc2lnbmVkIHlp
ZWxkUG9pbnQgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9u
LCBpdCwgInlpZWxkIik7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAldSwgJXMiLCByZWdpc3Rl
ck5hbWUocjApLmRhdGEoKSwgeWllbGRQb2ludCwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVPZmZz
ZXQob3V0LCBsb2NhdGlvbiwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgb3V0LnByaW50KCJc
biIpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAgIEJ5dGVjb2RlRHVtcGVyIGR1bXBl
cihibG9jaywgYmVnaW4pOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQs
IHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBJZGVudGlmaWVycyhQcmludFN0cmVhbSYg
b3V0KQoreworICAgIGlmIChzaXplX3QgY291bnQgPSBibG9jaygpLT5udW1iZXJPZklkZW50aWZp
ZXJzKCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5JZGVudGlmaWVyczpcbiIpOworICAgICAg
ICBzaXplX3QgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAg
aWQldSA9ICVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIGlkZW50aWZpZXIoaSkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0gd2hpbGUg
KGkgIT0gY291bnQpOworICAgIH0KK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5
dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENvbnN0YW50cyhQcmludFN0cmVhbSYgb3V0KQorewor
ICAgIGlmICghYmxvY2soKS0+Y29uc3RhbnRSZWdpc3RlcnMoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgb3V0LnByaW50ZigiXG5Db25zdGFudHM6XG4iKTsKKyAgICAgICAgc2l6ZV90IGkgPSAwOwor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbnN0YW50IDogYmxvY2soKS0+Y29uc3RhbnRSZWdp
c3RlcnMoKSkgeworICAgICAgICAgICAgY29uc3QgY2hhciogc291cmNlQ29kZVJlcHJlc2VudGF0
aW9uRGVzY3JpcHRpb24gPSBudWxscHRyOworICAgICAgICAgICAgc3dpdGNoIChibG9jaygpLT5j
b25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKVtpXSkgeworICAgICAgICAgICAgY2Fz
ZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246OkRvdWJsZToKKyAgICAgICAgICAgICAgICBzb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb25EZXNjcmlwdGlvbiA9ICI6IGluIHNvdXJjZSBhcyBkb3VibGUi
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb246OkludGVnZXI6CisgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uRGVzY3JpcHRpb24gPSAiOiBpbiBzb3VyY2UgYXMgaW50ZWdlciI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjo6
T3RoZXI6CisgICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3JpcHRp
b24gPSAiIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiAgIGsldSA9ICVzJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KSwgdG9DU3RyaW5nKGNvbnN0YW50LmdldCgpKS5kYXRhKCksIHNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgIH0KK30K
KwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVt
cFJlZ0V4cHMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBpZiAoc2l6ZV90IGNvdW50ID0gYmxv
Y2soKS0+bnVtYmVyT2ZSZWdFeHBzKCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5tX3JlZ2V4
cHM6XG4iKTsKKyAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIgIHJlJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBy
ZWdleHBUb1NvdXJjZVN0cmluZyhibG9jaygpLT5yZWdleHAoaSkpLmRhdGEoKSk7CisgICAgICAg
ICAgICArK2k7CisgICAgICAgIH0gd2hpbGUgKGkgPCBjb3VudCk7CisgICAgfQorfQorCit0ZW1w
bGF0ZTxjbGFzcyBCbG9jaz4KK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wRXhjZXB0
aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBpZiAodW5zaWduZWQgY291bnQg
PSBibG9jaygpLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKKyAgICAgICAgb3V0LnBy
aW50ZigiXG5FeGNlcHRpb24gSGFuZGxlcnM6XG4iKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGhhbmRsZXIgPSBibG9jaygp
LT5leGNlcHRpb25IYW5kbGVyKGkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsg
c3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0gdGFyZ2V0OiBbJTRkXSB9ICVzXG4iLCBpICsgMSwgaGFu
ZGxlci5zdGFydCwgaGFuZGxlci5lbmQsIGhhbmRsZXIudGFyZ2V0LCBoYW5kbGVyLnR5cGVOYW1l
KCkpOworICAgICAgICAgICAgKytpOworICAgICAgICB9IHdoaWxlIChpIDwgY291bnQpOworICAg
IH0KK30KKwordGVtcGxhdGU8Y2xhc3MgQmxvY2s+Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcFN3aXRjaEp1bXBUYWJsZXMoUHJpbnRTdHJlYW0mIG91dCkKK3sKKyAgICBpZiAodW5z
aWduZWQgY291bnQgPSBibG9jaygpLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSkgeworICAg
ICAgICBvdXQucHJpbnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKKyAgICAgICAgdW5zaWdu
ZWQgaSA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAgJTFkID0g
e1xuIiwgaSk7CisgICAgICAgICAgICBjb25zdCBhdXRvJiBzd2l0Y2hKdW1wVGFibGUgPSBibG9j
aygpLT5zd2l0Y2hKdW1wVGFibGUoaSk7CisgICAgICAgICAgICBpbnQgZW50cnkgPSAwOworICAg
ICAgICAgICAgYXV0byBlbmQgPSBzd2l0Y2hKdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5lbmQoKTsK
KyAgICAgICAgICAgIGZvciAoYXV0byBpdGVyID0gc3dpdGNoSnVtcFRhYmxlLmJyYW5jaE9mZnNl
dHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRyeSkgeworICAgICAgICAgICAg
ICAgIGlmICghKml0ZXIpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIG91dC5wcmludGYoIlx0XHQlNGQgPT4gJTA0ZFxuIiwgZW50cnkgKyBzd2l0Y2hKdW1w
VGFibGUubWluLCAqaXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIgICAgICB9XG4iKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfSB3aGlsZSAoaSA8IGNv
dW50KTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPGNsYXNzIEJsb2NrPgordm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKFByaW50U3RyZWFtJiBvdXQp
Cit7CisgICAgaWYgKHVuc2lnbmVkIGNvdW50ID0gYmxvY2soKS0+bnVtYmVyT2ZTdHJpbmdTd2l0
Y2hKdW1wVGFibGVzKCkpIHsKKyAgICAgICAgb3V0LnByaW50ZigiXG5TdHJpbmcgU3dpdGNoIEp1
bXAgVGFibGVzOlxuIik7CisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBkbyB7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIgICUxZCA9IHtcbiIsIGkpOworICAgICAgICAgICAgY29u
c3QgYXV0byYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlID0gYmxvY2soKS0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGkpOworICAgICAgICAgICAgYXV0byBlbmQgPSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUu
b2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKGF1dG8gaXRlciA9IHN0cmluZ1N3
aXRjaEp1bXBUYWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQor
ICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHRcIiVzXCIgPT4gJTA0ZFxuIiwgaXRlci0+
a2V5LT51dGY4KCkuZGF0YSgpLCBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiICAgICAgfVxuIik7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0g
d2hpbGUgKGkgPCBjb3VudCk7CisgICAgfQorfQorCit0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQoreworICAgIFZNJiB2bSA9ICpibG9jay0+dm0oKTsKKyAg
ICBzaXplX3QgaW5zdHJ1Y3Rpb25Db3VudCA9IDA7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc3RydWN0aW9ucy5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1t2bS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2ldKV0pCisgICAgICAgICsraW5zdHJ1Y3Rpb25D
b3VudDsKKworICAgIG91dC5wcmludCgqYmxvY2spOworICAgIG91dC5wcmludGYoCisgICAgICAg
ICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocykiLAorICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMuc2l6ZSgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikp
LAorICAgICAgICBibG9jay0+bnVtUGFyYW1ldGVycygpLCBibG9jay0+bnVtQ2FsbGVlTG9jYWxz
KCksIGJsb2NrLT5tX251bVZhcnMpOworICAgIG91dC5wcmludCgiOyBzY29wZSBhdCAiLCBibG9j
ay0+c2NvcGVSZWdpc3RlcigpKTsKKyAgICBvdXQucHJpbnRmKCJcbiIpOworCisgICAgY29uc3Qg
YXV0byogYmVnaW4gPSBpbnN0cnVjdGlvbnMuYmVnaW4oKTsKKyAgICBjb25zdCBhdXRvKiBlbmQg
PSBpbnN0cnVjdGlvbnMuZW5kKCk7CisgICAgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+IGR1bXBlcihi
bG9jaywgYmVnaW4pOworICAgIGZvciAoY29uc3QgYXV0byogaXQgPSBiZWdpbjsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0LCBzdHVi
SW5mb3MsIGNhbGxMaW5rSW5mb3MpOworCisgICAgZHVtcGVyLmR1bXBJZGVudGlmaWVycyhvdXQp
OworICAgIGR1bXBlci5kdW1wQ29uc3RhbnRzKG91dCk7CisgICAgZHVtcGVyLmR1bXBSZWdFeHBz
KG91dCk7CisgICAgZHVtcGVyLmR1bXBFeGNlcHRpb25IYW5kbGVycyhvdXQpOworICAgIGR1bXBl
ci5kdW1wU3dpdGNoSnVtcFRhYmxlcyhvdXQpOworICAgIGR1bXBlci5kdW1wU3RyaW5nU3dpdGNo
SnVtcFRhYmxlcyhvdXQpOworCisgICAgb3V0LnByaW50ZigiXG4iKTsKK30KKwordGVtcGxhdGUg
Y2xhc3MgQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRDb2RlQmxvY2s+OwordGVtcGxhdGUgY2xhc3Mg
Qnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjI0NTNiZmU2YmI1MWEx
YTg2MmZkZDE2YTEyOWI4NTYxNTY5MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKwor
dGVtcGxhdGU8Y2xhc3MgQmxvY2s+CitjbGFzcyBCeXRlY29kZUR1bXBlciB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisKKyAg
ICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJ
bmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlu
a0luZm9NYXAoKSk7CisgICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlw
ZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9
IENhbGxMaW5rSW5mb01hcCgpKTsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUR1bXBlcihCbG9j
ayogYmxvY2ssIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbikKKyAgICAgICAg
OiBtX2Jsb2NrKGJsb2NrKQorICAgICAgICAsIG1faW5zdHJ1Y3Rpb25zQmVnaW4oaW5zdHJ1Y3Rp
b25zQmVnaW4pCisgICAgeworICAgIH0KKworICAgIEJsb2NrKiBibG9jaygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvY2s7IH0KKyAgICBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uc0JlZ2luOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIFZNKiB2bSgpIGNvbnN0OworCisgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoaW50IHIpIGNv
bnN0OworICAgIENTdHJpbmcgY29uc3RhbnROYW1lKGludCBpbmRleCkgY29uc3Q7CisKKyAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgY29uc3Q7CisKKyAgICB2b2lk
IGR1bXBJZGVudGlmaWVycyhQcmludFN0cmVhbSYgb3V0KTsKKyAgICB2b2lkIGR1bXBDb25zdGFu
dHMoUHJpbnRTdHJlYW0mIG91dCk7CisgICAgdm9pZCBkdW1wUmVnRXhwcyhQcmludFN0cmVhbSYg
b3V0KTsKKyAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVycyhQcmludFN0cmVhbSYgb3V0KTsK
KyAgICB2b2lkIGR1bXBTd2l0Y2hKdW1wVGFibGVzKFByaW50U3RyZWFtJiBvdXQpOworICAgIHZv
aWQgZHVtcFN0cmluZ1N3aXRjaEp1bXBUYWJsZXMoUHJpbnRTdHJlYW0mIG91dCk7CisKKyAgICB2
b2lkIHByaW50VW5hcnlPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICB2b2lkIHByaW50QmluYXJ5T3Ao
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCk7CisgICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiosIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGludCBs
b2NhdGlvbiwgY29uc3QgY2hhciogb3ApOworICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoUHJpbnRT
dHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KTsKKyAgICB2
b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAg
ICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OworICAg
IHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJ
bnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFz
UHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICB2b2lkIHByaW50TG9jYXRpb25PcEFuZFJl
Z2lzdGVyT3BlcmFuZChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCk7CisgICAgdm9pZCBkdW1w
Qnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYpOworCisgICAgdm9pZCBkdW1wVmFsdWVQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBjb25z
dCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICB2b2lkIGR1
bXBBcnJheVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wm
IGhhc1ByaW50ZWRQcm9maWxpbmcpOworICAgIHZvaWQgZHVtcFByb2ZpbGVzRm9yQnl0ZWNvZGVP
ZmZzZXQoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZyk7CisKKyAgICB2b2lkKiBhY3R1YWxQb2ludGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIp
IGNvbnN0OworCisjaWYgRU5BQkxFKEpJVCkKKyAgICB2b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsK
KyNlbmRpZgorCisgICAgQmxvY2sqIG1fYmxvY2s7CisgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIG1f
aW5zdHJ1Y3Rpb25zQmVnaW47Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRl
eCBmN2UxZTlhM2Q2ZDliZThlODczYzZmNzI4MDg1MTU4MTU0MWZiYTgzLi45NDlhZmE2ZjlkNDg2
MTQyMjk2ZWZkMzNlMjUwMWIzYTRkMTAxMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogCisjaW5jbHVkZSAiQnl0ZWNvZGVEdW1wZXIuaCIKICNp
bmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVSZXdyaXRlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCkBAIC02Niw3ICs2
Nyw3IEBAIGNsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBjYXNlIG9wX3lpZWxkOiB7Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUu
dW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxk
cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CiAgICAgICAgICAgICAgICAgICAg
IFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CkBAIC0y
NjEsNiArMjYyLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKIAog
dm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25z
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKIHsKKyAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0Jl
Zm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKQorICAgICAgICBCeXRlY29kZUR1bXBlcjxVbmxpbmtl
ZENvZGVCbG9jaz46OmR1bXBCbG9jayhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgV1RGOjpkYXRh
RmlsZSgpKTsKKwogICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCk7CiAgICAgcGFzcy5ydW4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKaW5kZXggNjBlZWI3MTc0ZDQwN2I1ZjEzYzdhMGNmNmRiYTU0YjVjMzYyMThlMC4uODE2OGQ4
NzI5MDdmNGQ3MDU1NmRmNTJjNDI4OTg3ODkwYzM2NGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVt
cFJlc3VsdHMoKQogICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlQmVmb3JlID0gZ2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICBk
dW1wQml0VmVjdG9yKGxpdmVCZWZvcmUpOwogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0g
ICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1
cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShX
VEY6OmRhdGFGaWxlKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
CiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGNkOTdmMzRl
ODY2YWM2YWJmYjA4MmQxODZhZmMzNjYyOGE3NmJiMDQuLjYxNjFmMWIxMGY3YzVmNTA3Mjk4MjY1
Y2Q0ZTJkMGIxMGMwZTU0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUu
aCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKKyNpbmNsdWRlICJCeXRlY29kZUR1
bXBlci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKQEAgLTQ5
LDcgKzUwLDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCiAjaW5jbHVk
ZSAiR2V0UHV0SW5mby5oIgogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZS5oIgotI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklUTWF0aElDLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgpAQCAtMjA0LDMyNCArMjA1LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKICAgICBkdW1wQXNzdW1pbmdKSVRUeXBlKG91dCwgaml0VHlwZSgpKTsKIH0K
IAotc3RhdGljIENTdHJpbmcgaWROYW1lKGludCBpZDAsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQotewotICAgIHJldHVybiB0b0NTdHJpbmcoaWRlbnQuaW1wbCgpLCAiKEBpZCIsIGlkMCwgIiki
KTsKLX0KLQotQ1N0cmluZyBDb2RlQmxvY2s6OnJlZ2lzdGVyTmFtZShpbnQgcikgY29uc3QKLXsK
LSAgICBpZiAoaXNDb25zdGFudFJlZ2lzdGVySW5kZXgocikpCi0gICAgICAgIHJldHVybiBjb25z
dGFudE5hbWUocik7Ci0KLSAgICByZXR1cm4gdG9DU3RyaW5nKFZpcnR1YWxSZWdpc3RlcihyKSk7
Ci19Ci0KLUNTdHJpbmcgQ29kZUJsb2NrOjpjb25zdGFudE5hbWUoaW50IGluZGV4KSBjb25zdAot
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRDb25zdGFudChpbmRleCk7Ci0gICAgcmV0dXJuIHRv
Q1N0cmluZyh2YWx1ZSwgIigiLCBWaXJ0dWFsUmVnaXN0ZXIoaW5kZXgpLCAiKSIpOwotfQotCi1z
dGF0aWMgQ1N0cmluZyByZWdleHBUb1NvdXJjZVN0cmluZyhSZWdFeHAqIHJlZ0V4cCkKLXsKLSAg
ICBjaGFyIHBvc3RmaXhbNV0gPSB7ICcvJywgMCwgMCwgMCwgMCB9OwotICAgIGludCBpbmRleCA9
IDE7Ci0gICAgaWYgKHJlZ0V4cC0+Z2xvYmFsKCkpCi0gICAgICAgIHBvc3RmaXhbaW5kZXgrK10g
PSAnZyc7Ci0gICAgaWYgKHJlZ0V4cC0+aWdub3JlQ2FzZSgpKQotICAgICAgICBwb3N0Zml4W2lu
ZGV4KytdID0gJ2knOwotICAgIGlmIChyZWdFeHAtPm11bHRpbGluZSgpKQotICAgICAgICBwb3N0
Zml4W2luZGV4XSA9ICdtJzsKLSAgICBpZiAocmVnRXhwLT5zdGlja3koKSkKLSAgICAgICAgcG9z
dGZpeFtpbmRleCsrXSA9ICd5JzsKLSAgICBpZiAocmVnRXhwLT51bmljb2RlKCkpCi0gICAgICAg
IHBvc3RmaXhbaW5kZXgrK10gPSAndSc7Ci0KLSAgICByZXR1cm4gdG9DU3RyaW5nKCIvIiwgcmVn
RXhwLT5wYXR0ZXJuKCkuaW1wbCgpLCBwb3N0Zml4KTsKLX0KLQotc3RhdGljIENTdHJpbmcgcmVn
ZXhwTmFtZShpbnQgcmUsIFJlZ0V4cCogcmVnZXhwKQotewotICAgIHJldHVybiB0b0NTdHJpbmco
cmVnZXhwVG9Tb3VyY2VTdHJpbmcocmVnZXhwKSwgIihAcmUiLCByZSwgIikiKTsKLX0KLQotTkVW
RVJfSU5MSU5FIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z0hvb2tOYW1lKGludCBkZWJ1Z0hvb2tU
eXBlKQotewotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8RGVidWdIb29rVHlwZT4oZGVidWdIb29r
VHlwZSkpIHsKLSAgICAgICAgY2FzZSBEaWRFbnRlckNhbGxGcmFtZToKLSAgICAgICAgICAgIHJl
dHVybiAiZGlkRW50ZXJDYWxsRnJhbWUiOwotICAgICAgICBjYXNlIFdpbGxMZWF2ZUNhbGxGcmFt
ZToKLSAgICAgICAgICAgIHJldHVybiAid2lsbExlYXZlQ2FsbEZyYW1lIjsKLSAgICAgICAgY2Fz
ZSBXaWxsRXhlY3V0ZVN0YXRlbWVudDoKLSAgICAgICAgICAgIHJldHVybiAid2lsbEV4ZWN1dGVT
dGF0ZW1lbnQiOwotICAgICAgICBjYXNlIFdpbGxFeGVjdXRlRXhwcmVzc2lvbjoKLSAgICAgICAg
ICAgIHJldHVybiAid2lsbEV4ZWN1dGVFeHByZXNzaW9uIjsKLSAgICAgICAgY2FzZSBXaWxsRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICByZXR1cm4gIndpbGxFeGVjdXRlUHJvZ3JhbSI7Ci0g
ICAgICAgIGNhc2UgRGlkRXhlY3V0ZVByb2dyYW06Ci0gICAgICAgICAgICByZXR1cm4gImRpZEV4
ZWN1dGVQcm9ncmFtIjsKLSAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFrcG9pbnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gImRpZFJlYWNoQnJlYWtwb2ludCI7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLXZvaWQgQ29kZUJsb2Nr
OjpwcmludFVuYXJ5T3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQotewotICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotCi0gICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcCk7
Ci0gICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByaW50QmluYXJ5T3Ao
UHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9jYXRpb24sIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQotewotICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCByMiA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgb3ApOwotICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMiku
ZGF0YSgpKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50
U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJ
bnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIqIG9wKQotewotICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9w
KTsKLSAgICBvdXQucHJpbnRmKCIlcywgJWQoLT4lZCkiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpwcmlu
dEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlv
biwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCkKLXsKLSAgICBjb25zdCBjaGFyKiBvcDsKLSAgICBz
d2l0Y2ggKGV4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGl0LT51Lm9wY29kZSkpIHsK
LSAgICBjYXNlIG9wX2dldF9ieV9pZDoKLSAgICAgICAgb3AgPSAiZ2V0X2J5X2lkIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoKLSAgICAgICAgb3Ag
PSAiZ2V0X2J5X2lkX3Byb3RvX2xvYWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX2dl
dF9ieV9pZF91bnNldDoKLSAgICAgICAgb3AgPSAiZ2V0X2J5X2lkX3Vuc2V0IjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgotICAgICAgICBvcCA9ICJhcnJh
eV9sZW5ndGgiOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJF
QUNIQUJMRV9DT0RFKQotICAgICAgICBvcCA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0gICAgaW50IHIw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgb3ApOwotICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFt
ZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICBpdCArPSA0OyAvLyBJbmNyZW1l
bnQgdXAgdG8gdGhlIHZhbHVlIHByb2ZpbGVyLgotfQotCi1zdGF0aWMgdm9pZCBkdW1wU3RydWN0
dXJlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIG5hbWUsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLXsKLSAgICBpZiAoIXN0cnVjdHVyZSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIG91dC5wcmludGYoIiVzID0gJXAiLCBuYW1lLCBzdHJ1
Y3R1cmUpOwotICAgIAotICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KGlkZW50LmltcGwoKSk7Ci0gICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zm
c2V0KQotICAgICAgICBvdXQucHJpbnRmKCIgKG9mZnNldCA9ICVkKSIsIG9mZnNldCk7Ci19Ci0K
LXN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmludFN0cmVhbSYgb3V0LCBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotewotICAgIG91dC5wcmludGYoImNoYWlu
ID0gJXA6IFsiLCBjaGFpbik7Ci0gICAgYm9vbCBmaXJzdCA9IHRydWU7Ci0gICAgZm9yIChXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiogY3VycmVudFN0cnVjdHVyZSA9IGNoYWluLT5oZWFkKCk7Ci0g
ICAgICAgICAqY3VycmVudFN0cnVjdHVyZTsKLSAgICAgICAgICsrY3VycmVudFN0cnVjdHVyZSkg
ewotICAgICAgICBpZiAoZmlyc3QpCi0gICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRmKCIsICIpOwotICAgICAgICBkdW1wU3RydWN0
dXJlKG91dCwgInN0cnVjdCIsIGN1cnJlbnRTdHJ1Y3R1cmUtPmdldCgpLCBpZGVudCk7Ci0gICAg
fQotICAgIG91dC5wcmludGYoIl0iKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0QnlJ
ZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0
aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQotewotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBsb2NhdGlvbjsKLQotICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwot
ICAgIAotICAgIFVOVVNFRF9QQVJBTShpZGVudCk7IC8vIHRlbGwgdGhlIGNvbXBpbGVyIHRvIHNo
dXQgdXAgaW4gY2VydGFpbiBwbGF0Zm9ybSBjb25maWd1cmF0aW9ucy4KLSAgICAKLSAgICBpZiAo
ZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUp
ID09IG9wX2dldF9hcnJheV9sZW5ndGgpCi0gICAgICAgIG91dC5wcmludGYoIiBsbGludChhcnJh
eV9sZW5ndGgpIik7Ci0gICAgZWxzZSBpZiAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBpbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZUlEKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKLSAgICAg
ICAgb3V0LnByaW50ZigiIGxsaW50KCIpOwotICAgICAgICBkdW1wU3RydWN0dXJlKG91dCwgInN0
cnVjdCIsIHN0cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICBvdXQucHJpbnRmKCIpIik7Ci0gICAg
ICAgIGlmIChleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvblswXS51
Lm9wY29kZSkgPT0gb3BfZ2V0X2J5X2lkX3Byb3RvX2xvYWQpCi0gICAgICAgICAgICBvdXQucHJp
bnRmKCIgcHJvdG8oJXApIiwgaW5zdHJ1Y3Rpb25bNl0udS5wb2ludGVyKTsKLSAgICB9Ci0KLSNp
ZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7Ci0gICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9ICpzdHViUHRyOwotICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQotICAg
ICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwotICAgICAgICAKLSAgICAgICAg
b3V0LnByaW50ZigiIGppdCgiKTsKLSAgICAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIGJh
c2VTdHJ1Y3R1cmUgPSBudWxscHRyOwotICAgICAgICBQb2x5bW9ycGhpY0FjY2Vzcyogc3R1YiA9
IG51bGxwdHI7Ci0gICAgICAgICAgICAKLSAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5
cGUpIHsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxmOgotICAgICAgICAgICAg
b3V0LnByaW50Zigic2VsZiIpOwotICAgICAgICAgICAgYmFzZVN0cnVjdHVyZSA9IHN0dWJJbmZv
LnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3R1YjoKLSAgICAgICAgICAgIG91dC5wcmludGYo
InN0dWIiKTsKLSAgICAgICAgICAgIHN0dWIgPSBzdHViSW5mby51LnN0dWI7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlVuc2V0OgotICAgICAgICAgICAgb3V0
LnByaW50ZigidW5zZXQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENhY2hl
VHlwZTo6QXJyYXlMZW5ndGg6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJBcnJheUxlbmd0aCIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgICAgIAotICAgICAgICBpZiAoYmFzZVN0cnVjdHVyZSkgewotICAgICAgICAgICAg
b3V0LnByaW50ZigiLCAiKTsKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0
IiwgYmFzZVN0cnVjdHVyZSwgaWRlbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0dWIp
Ci0gICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgKnN0dWIpOwotCi0gICAgICAgIG91dC5wcmlu
dGYoIikiKTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYXApOwotI2VuZGlmCi19
Ci0KLXZvaWQgQ29kZUJsb2NrOjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCi17Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGxvY2F0aW9uOwot
Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7Ci0gICAgCi0gICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUg
Y29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgot
Ci0gICAgb3V0LnByaW50KCIsICIsIGluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzKTsKLSAg
ICAKLSAgICBpZiAoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBpbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZUlEKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV92bS0+aGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKTsKLSAgICAgICAgb3V0LnByaW50KCIg
bGxpbnQoIik7Ci0gICAgICAgIGlmIChTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1cmVJRCA9IGluc3Ry
dWN0aW9uWzZdLnUuc3RydWN0dXJlSUQpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG5ld1N0cnVjdHVyZUlE
KTsKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAicHJldiIsIHN0cnVjdHVyZSwgaWRl
bnQpOwotICAgICAgICAgICAgb3V0LnByaW50KCIsICIpOwotICAgICAgICAgICAgZHVtcFN0cnVj
dHVyZShvdXQsICJuZXh0IiwgbmV3U3RydWN0dXJlLCBpZGVudCk7Ci0gICAgICAgICAgICBpZiAo
U3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5n
ZXQoKSkgewotICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsKLSAgICAgICAgICAgICAg
ICBkdW1wQ2hhaW4ob3V0LCBjaGFpbiwgaWRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAic3RydWN0Iiwgc3RydWN0dXJl
LCBpZGVudCk7Ci0gICAgICAgIG91dC5wcmludCgiKSIpOwotICAgIH0KLQotI2lmIEVOQUJMRShK
SVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChDb2RlT3Jp
Z2luKGxvY2F0aW9uKSkpIHsKLSAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0g
KnN0dWJQdHI7Ci0gICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCi0gICAgICAgICAgICBv
dXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7Ci0gICAgICAgIAotICAgICAgICBvdXQucHJpbnRm
KCIgaml0KCIpOwotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChzdHViSW5mby5jYWNoZVR5cGUp
IHsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOgotICAgICAgICAgICAg
b3V0LnByaW50KCJyZXBsYWNlLCAiKTsKLSAgICAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
c3RydWN0Iiwgc3R1YkluZm8udS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpLCBp
ZGVudCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDYWNoZVR5cGU6OlN0dWI6
IHsKLSAgICAgICAgICAgIG91dC5wcmludCgic3R1YiwgIiwgKnN0dWJJbmZvLnUuc3R1Yik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENhY2hlVHlwZTo6VW5z
ZXQ6Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJ1bnNldCIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgb3V0LnByaW50Zigi
KSIpOwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OnByaW50Q2FsbE9wKFByaW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSog
ZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5n
LCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKLXsKLSAgICBpbnQgZHN0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBpbnQgYXJn
Q291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBpbnQgcmVnaXN0ZXJPZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsIG9wKTsKLSAgICBvdXQucHJpbnQocmVnaXN0ZXJOYW1lKGRzdCksICIsICIsIHJlZ2lz
dGVyTmFtZShmdW5jKSwgIiwgIiwgYXJnQ291bnQsICIsICIsIHJlZ2lzdGVyT2Zmc2V0KTsKLSAg
ICBvdXQucHJpbnQoIiAodGhpcyBhdCAiLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCAt
cmVnaXN0ZXJPZmZzZXQpLCAiKSIpOwotICAgIGlmIChjYWNoZUR1bXBNb2RlID09IER1bXBDYWNo
ZXMpIHsKLSAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGl0WzFdLnUu
Y2FsbExpbmtJbmZvOwotICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZSkg
ewotICAgICAgICAgICAgb3V0LnByaW50ZigKLSAgICAgICAgICAgICAgICAiIGxsaW50KCVwLCBl
eGVjICVwKSIsCi0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5n
ZXQoKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLT5leGVj
dXRhYmxlKCkpOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgaWYgKENhbGxM
aW5rSW5mbyogaW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7Ci0gICAgICAg
ICAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBpbmZvLT5sYXN0U2VlbkNhbGxlZSgpOwotICAgICAg
ICAgICAgaWYgKHRhcmdldCkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIgaml0KCVwLCBl
eGVjICVwKSIsIHRhcmdldCwgdGFyZ2V0LT5leGVjdXRhYmxlKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoaml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAgICAgICAg
ICAgIG91dC5wcmludCgiIHN0YXR1cygiLCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcih0aGlz
LCBsb2NhdGlvbiwgbWFwKSwgIikiKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShtYXAp
OwotI2VuZGlmCi0gICAgfQotICAgICsraXQ7Ci0gICAgKytpdDsKLSAgICBkdW1wQXJyYXlQcm9m
aWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgZHVtcFZhbHVlUHJvZmls
aW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotfQotCi12b2lkIENvZGVCbG9jazo6
cHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRlKiBleGVjLCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wKQotewotICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsIG9wKTsKLSAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQw
KSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Ci0gICAgaXQgKz0gNTsKLX0KLQog
dm9pZCBDb2RlQmxvY2s6OmR1bXBTb3VyY2UoKQogewogICAgIGR1bXBTb3VyY2UoV1RGOjpkYXRh
RmlsZSgpKTsKQEAgLTU0OSwxMjQ0ICsyMzIsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgpCiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkK
IHsKLSAgICAvLyBXZSBvbmx5IHVzZSB0aGUgRXhlY1N0YXRlKiBmb3IgdGhpbmdzIHRoYXQgZG9u
J3QgYWN0dWFsbHkgbGVhZCB0byBKUyBleGVjdXRpb24sCi0gICAgLy8gbGlrZSBjb252ZXJ0aW5n
IGEgSlNTdHJpbmcgdG8gYSBTdHJpbmcuIEhlbmNlIHRoZSBnbG9iYWxFeGVjIGlzIGFwcHJvcHJp
YXRlLgotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
Ci0gICAgCi0gICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tl
eGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29k
ZSldKQotICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7Ci0KLSAgICBvdXQucHJpbnQoKnRoaXMp
OwotICAgIG91dC5wcmludGYoCi0gICAgICAgICI6ICVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5
dGVzOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUo
cykiLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpLAotICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMo
KS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgbV9udW1QYXJhbWV0ZXJz
LCBtX251bUNhbGxlZUxvY2FscywgbV9udW1WYXJzKTsKLSAgICBvdXQucHJpbnQoIjsgc2NvcGUg
YXQgIiwgc2NvcGVSZWdpc3RlcigpKTsKLSAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgIAogICAg
IFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKICAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZv
czsKICAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwogICAgIGdldENhbGxMaW5rSW5mb01h
cChjYWxsTGlua0luZm9zKTsKLSAgICAKLSAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0
cnVjdGlvbnMoKS5lbmQoKTsKLSAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2lu
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBCeXRlY29kZShvdXQsIGV4ZWMsIGJlZ2lu
LCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKLSAgICAKLSAgICBpZiAobnVtYmVyT2ZJ
ZGVudGlmaWVycygpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuSWRlbnRpZmllcnM6XG4iKTsK
LSAgICAgICAgc2l6ZV90IGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIgIGlkJXUgPSAlc1xuIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGkpLCBpZGVudGlmaWVy
KGkpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9
IHdoaWxlIChpICE9IG51bWJlck9mSWRlbnRpZmllcnMoKSk7Ci0gICAgfQotCi0gICAgaWYgKCFt
X2NvbnN0YW50UmVnaXN0ZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkNv
bnN0YW50czpcbiIpOwotICAgICAgICBzaXplX3QgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0g
bnVsbHB0cjsKLSAgICAgICAgICAgIHN3aXRjaCAobV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb25baV0pIHsKLSAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9u
OjpEb3VibGU6Ci0gICAgICAgICAgICAgICAgc291cmNlQ29kZVJlcHJlc2VudGF0aW9uRGVzY3Jp
cHRpb24gPSAiOiBpbiBzb3VyY2UgYXMgZG91YmxlIjsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpJbnRlZ2VyOgotICAg
ICAgICAgICAgICAgIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIjogaW4g
c291cmNlIGFzIGludGVnZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb246Ok90aGVyOgotICAgICAgICAgICAgICAgIHNv
dXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0aW9uID0gIiI7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgICBrJXUgPSAl
cyVzXG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaSksIHRvQ1N0cmluZyhtX2NvbnN0YW50UmVn
aXN0ZXJzW2ldLmdldCgpKS5kYXRhKCksIHNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbkRlc2NyaXB0
aW9uKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fY29uc3RhbnRS
ZWdpc3RlcnMuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICBpZiAoc2l6ZV90IGNvdW50ID0gbV91bmxp
bmtlZENvZGUtPm51bWJlck9mUmVnRXhwcygpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxubV9y
ZWdleHBzOlxuIik7Ci0gICAgICAgIHNpemVfdCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAg
ICAgICAgb3V0LnByaW50ZigiICByZSV1ID0gJXNcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
KSwgcmVnZXhwVG9Tb3VyY2VTdHJpbmcobV91bmxpbmtlZENvZGUtPnJlZ2V4cChpKSkuZGF0YSgp
KTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IGNvdW50KTsKLSAgICB9
Ci0KLSAgICBkdW1wRXhjZXB0aW9uSGFuZGxlcnMob3V0KTsKLSAgICAKLSAgICBpZiAobV9yYXJl
RGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAg
ICAgICBvdXQucHJpbnRmKCJTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKLSAgICAgICAgdW5zaWdu
ZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgJTFkID0g
e1xuIiwgaSk7Ci0gICAgICAgICAgICBpbnQgZW50cnkgPSAwOwotICAgICAgICAgICAgVmVjdG9y
PGludDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoVmVjdG9yPGlu
dDMyX3Q+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzW2ldLmJyYW5jaE9mZnNldHMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlciwgKytlbnRy
eSkgewotICAgICAgICAgICAgICAgIGlmICghKml0ZXIpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIG91dC5wcmludGYoIlx0XHQlNGQgPT4gJTA0ZFxuIiwg
ZW50cnkgKyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNbaV0ubWluLCAqaXRlcik7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgICAgICB9XG4iKTsKLSAgICAg
ICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVt
cFRhYmxlcy5zaXplKCkpOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHkoKSkgewotICAgICAgICBv
dXQucHJpbnRmKCJcblN0cmluZyBTd2l0Y2ggSnVtcCBUYWJsZXM6XG4iKTsKLSAgICAgICAgdW5z
aWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgJTFk
ID0ge1xuIiwgaSk7Ci0gICAgICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRh
YmxlOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXNbaV0ub2Zmc2V0VGFibGUuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYmVnaW4oKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0XCIlc1wiID0+
ICUwNGRcbiIsIGl0ZXItPmtleS0+dXRmOCgpLmRhdGEoKSwgaXRlci0+dmFsdWUuYnJhbmNoT2Zm
c2V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgICAgIH1cbiIpOwotICAgICAgICAgICAg
KytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLnNpemUoKSk7Ci0gICAgfQotCi0gICAgb3V0LnByaW50ZigiXG4iKTsKLX0KLQotdm9p
ZCBDb2RlQmxvY2s6OmR1bXBFeGNlcHRpb25IYW5kbGVycyhQcmludFN0cmVhbSYgb3V0KQotewot
ICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLmlz
RW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkV4Y2VwdGlvbiBIYW5kbGVyczpcbiIp
OwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgSGFu
ZGxlckluZm8mIGhhbmRsZXIgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzW2ldOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiXHQgJWQ6IHsgc3RhcnQ6IFslNGRdIGVuZDogWyU0ZF0g
dGFyZ2V0OiBbJTRkXSB9ICVzXG4iLAotICAgICAgICAgICAgICAgIGkgKyAxLCBoYW5kbGVyLnN0
YXJ0LCBoYW5kbGVyLmVuZCwgaGFuZGxlci50YXJnZXQsIGhhbmRsZXIudHlwZU5hbWUoKSk7Ci0g
ICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2V4Y2Vw
dGlvbkhhbmRsZXJzLnNpemUoKSk7Ci0gICAgfQotfQotCi12b2lkIENvZGVCbG9jazo6YmVnaW5E
dW1wUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcp
Ci17Ci0gICAgaWYgKGhhc1ByaW50ZWRQcm9maWxpbmcpIHsKLSAgICAgICAgb3V0LnByaW50KCI7
ICIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIG91dC5wcmludCgiICAgICIp
OwotICAgIGhhc1ByaW50ZWRQcm9maWxpbmcgPSB0cnVlOwotfQotCi12b2lkIENvZGVCbG9jazo6
ZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiYg
aXQsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwotICAgIAotICAgICsraXQ7Ci0gICAgQ1N0cmluZyBkZXNjcmlwdGlv
biA9IGl0LT51LnByb2ZpbGUtPmJyaWVmRGVzY3JpcHRpb24obG9ja2VyKTsKLSAgICBpZiAoIWRl
c2NyaXB0aW9uLmxlbmd0aCgpKQotICAgICAgICByZXR1cm47Ci0gICAgYmVnaW5EdW1wUHJvZmls
aW5nKG91dCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgb3V0LnByaW50KGRlc2NyaXB0aW9u
KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmR1bXBBcnJheVByb2ZpbGluZyhQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKQot
ewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKLSAgICArK2l0
OwotICAgIGlmICghaXQtPnUuYXJyYXlQcm9maWxlKQotICAgICAgICByZXR1cm47Ci0gICAgQ1N0
cmluZyBkZXNjcmlwdGlvbiA9IGl0LT51LmFycmF5UHJvZmlsZS0+YnJpZWZEZXNjcmlwdGlvbihs
b2NrZXIsIHRoaXMpOwotICAgIGlmICghZGVzY3JpcHRpb24ubGVuZ3RoKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBiZWdpbkR1bXBQcm9maWxpbmcob3V0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsK
LSAgICBvdXQucHJpbnQoZGVzY3JpcHRpb24pOwotfQotCi12b2lkIENvZGVCbG9jazo6ZHVtcFJh
cmVDYXNlUHJvZmlsZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBuYW1lLCBSYXJlQ2Fz
ZVByb2ZpbGUqIHByb2ZpbGUsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0gICAgaWYg
KCFwcm9maWxlIHx8ICFwcm9maWxlLT5tX2NvdW50ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGJlZ2luRHVtcFByb2ZpbGluZyhvdXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgIG91dC5w
cmludChuYW1lLCBwcm9maWxlLT5tX2NvdW50ZXIpOwotfQotCi12b2lkIENvZGVCbG9jazo6ZHVt
cEFyaXRoUHJvZmlsZShQcmludFN0cmVhbSYgb3V0LCBBcml0aFByb2ZpbGUqIHByb2ZpbGUsIGJv
b2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpCi17Ci0gICAgaWYgKCFwcm9maWxlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgYmVnaW5EdW1wUHJvZmlsaW5nKG91dCwgaGFzUHJpbnRlZFByb2Zp
bGluZyk7Ci0gICAgb3V0LnByaW50KCJyZXN1bHRzOiAiLCAqcHJvZmlsZSk7Ci19Ci0KLXZvaWQg
Q29kZUJsb2NrOjpwcmludExvY2F0aW9uQW5kT3AoUHJpbnRTdHJlYW0mIG91dCwgRXhlY1N0YXRl
KiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCkKLXsK
LSAgICBvdXQucHJpbnRmKCJbJTRkXSAlLTE3cyAiLCBsb2NhdGlvbiwgb3ApOwotfQotCi12b2lk
IENvZGVCbG9jazo6cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKFByaW50U3RyZWFt
JiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiom
IGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpCi17Ci0gICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcCk7Ci0gICAgb3V0LnByaW50ZigiJXMiLCBy
ZWdpc3Rlck5hbWUob3BlcmFuZCkuZGF0YSgpKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxv
Y2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxs
TGlua0luZm9zKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKLSAgICBQcmlu
dFN0cmVhbSYgb3V0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwKLSAgICBjb25zdCBTdHViSW5mb01hcCYgc3R1YkluZm9z
LCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5rSW5mb3MpCit2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQogewotICAgIGludCBsb2NhdGlvbiA9
IGl0IC0gYmVnaW47Ci0gICAgYm9vbCBoYXNQcmludGVkUHJvZmlsaW5nID0gZmFsc2U7Ci0gICAg
T3Bjb2RlSUQgb3Bjb2RlID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaXQtPnUu
b3Bjb2RlKTsKLSAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgICAgICBjYXNlIG9wX2VudGVyOiB7
Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJlbnRlciIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9nZXRfc2NvcGU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiZ2V0X3Njb3BlIiwgcjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9jcmVhdGVfZGlyZWN0X2FyZ3VtZW50czogewotICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVfZGlyZWN0X2FyZ3VtZW50
cyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2NyZWF0
ZV9zY29wZWRfYXJndW1lbnRzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3Nj
b3BlZF9hcmd1bWVudHMiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1l
bnRzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNyZWF0ZV9j
bG9uZWRfYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfYXJndW1lbnRfY291bnQ6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiYXJndW1lbnRfY291bnQiLCByMCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDogewot
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
aW5kZXggPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFu
ZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImFyZ3VtZW50IiwgcjAp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiLCAlZCIsIGluZGV4KTsKLSAgICAgICAgICAgIGR1
bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6IHsKLSAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudE9mZnNl
dCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3Jlc3QiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlcywgIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIkFyZ3VtZW50c09mZnNl
dDogJXUiLCBhcmd1bWVudE9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewotICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfcmVzdF9sZW5ndGgiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudE9mZnNldCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAg
ICAgb3V0LnByaW50ZigiQXJndW1lbnRzT2Zmc2V0OiAldSIsIGFyZ3VtZW50T2Zmc2V0KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY3JlYXRlX3RoaXM6
IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmZlcnJl
ZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBjYWNoZWRGdW5jdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY3JlYXRlX3RoaXMiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXUsICV1IiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBj
YWNoZWRGdW5jdGlvbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3RvX3RoaXM6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAidG9fdGhpcyIsIHIwKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gKCsraXQpLT51LnN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChz
dHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIGNhY2hlKHN0cnVjdCA9ICIs
IFJhd1BvaW50ZXIoc3RydWN0dXJlKSwgIikiKTsKLSAgICAgICAgICAgIG91dC5wcmludCgiLCAi
LCAoKytpdCktPnUudG9UaGlzU3RhdHVzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfY2hlY2tfdGR6OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3Bl
cmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm9wX2NoZWNrX3RkeiIsIHIwKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbmV3X29iamVjdDogewot
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfb2Jq
ZWN0Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXUiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgaW5mZXJyZWRJbmxpbmVDYXBhY2l0eSk7Ci0gICAgICAgICAgICArK2l0OyAvLyBT
a2lwIG9iamVjdCBhbGxvY2F0aW9uIHByb2ZpbGUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX25ld19hcnJheTogewotICAgICAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGFyZ3YgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBhcmdjID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXJy
YXkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQiLCByZWdpc3Rlck5hbWUo
ZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd2KS5kYXRhKCksIGFyZ2MpOwotICAgICAgICAg
ICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGUuCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NwcmVhZDog
ewotICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
aW50IGFyZ3YgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBhcmdjID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJuZXdfYXJyYXlfd2l0aF9zcHJlYWQiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJWQsICIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGFyZ3YpLmRhdGEoKSwgYXJnYyk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBiaXRWZWN0
b3JJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgY29uc3QgQml0
VmVjdG9yJiBiaXRWZWN0b3IgPSBtX3VubGlua2VkQ29kZS0+Yml0VmVjdG9yKGJpdFZlY3Rvcklu
ZGV4KTsKLSAgICAgICAgICAgIG91dC5wcmludCgiQml0VmVjdG9yOiIsIGJpdFZlY3RvckluZGV4
LCAiOiIpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihhcmdjKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJpdFZlY3Rvci5n
ZXQoaSkpCi0gICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiMSIpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIwIik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NwcmVh
ZDogewotICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IGFyZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic3ByZWFkIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShhcmcpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBsZW5ndGggPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm5ld19hcnJheV93aXRoX3NpemUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cyIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGxlbmd0aCkuZGF0YSgp
KTsKLSAgICAgICAgICAgICsraXQ7IC8vIFNraXAgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxlLgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXlf
YnVmZmVyOiB7Ci0gICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgYXJndiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGFy
Z2MgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hcnJheV9idWZmZXIiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlZCwgJWQiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIGFyZ3Ys
IGFyZ2MpOwotICAgICAgICAgICAgKytpdDsgLy8gU2tpcCBhcnJheSBhbGxvY2F0aW9uIHByb2Zp
bGUuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19y
ZWdleHA6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgaW50IHJlMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X3JlZ2V4cCIpOwotICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgIGlmIChyMCA+PTAgJiYgcjAgPCAoaW50KW1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJl
Z0V4cHMoKSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2V4cE5hbWUocmUw
LCByZWdleHAocmUwKSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBvdXQucHJpbnRmKCJiYWRfcmVnZXhwKCVkKSIsIHJlMCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX21vdjogewotICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm1vdiIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHJvZmlsZV90eXBlOiB7Ci0gICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAg
ICAgICArK2l0OwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9wcm9m
aWxlX3R5cGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzIiwgcmVnaXN0ZXJOYW1lKHIw
KS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9wcm9maWxlX2NvbnRyb2xfZmxvdzogewotICAgICAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9u
KiBiYXNpY0Jsb2NrTG9jYXRpb24gPSAoKytpdCktPnUuYmFzaWNCbG9ja0xvY2F0aW9uOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHJv
ZmlsZV9jb250cm9sX2Zsb3ciKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlslZCwgJWRdIiwg
YmFzaWNCbG9ja0xvY2F0aW9uLT5zdGFydE9mZnNldCgpLCBiYXNpY0Jsb2NrTG9jYXRpb24tPmVu
ZE9mZnNldCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3Bfbm90OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJub3QiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJlcSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9lcV9udWxsOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJlcV9udWxsIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX25lcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5lcSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9uZXFfbnVsbDogewotICAgICAgICAgICAgcHJpbnRVbmFyeU9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmVxX251bGwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3Bfc3RyaWN0ZXE6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzdHJpY3RlcSIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uc3RyaWN0ZXE6IHsKLSAgICAgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuc3RyaWN0ZXEiKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbGVzczogewotICAg
ICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImxlc3MiKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbGVzc2VxOiB7
Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibGVz
c2VxIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dy
ZWF0ZXI6IHsKLSAgICAgICAgICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJncmVhdGVyIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX2dyZWF0ZXJlcTogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgImdyZWF0ZXJlcSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9pbmM6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5k
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiaW5jIiwgcjApOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9kZWM6IHsKLSAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0
ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZGVjIiwgcjApOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKLSAgICAg
ICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRvX251bWJlciIp
OwotICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9m
aWxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF90
b19zdHJpbmc6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInRvX3N0cmluZyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9uZWdhdGU6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgIm5lZ2F0ZSIpOwotICAgICAgICAgICAgKytpdDsgLy8gb3BfbmVnYXRl
IGhhcyBhbiBleHRyYSBvcGVyYW5kIGZvciB0aGUgQXJpdGhQcm9maWxlLgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9hZGQ6IHsKLSAgICAgICAgICAgIHBy
aW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJhZGQiKTsKLSAgICAgICAgICAg
ICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX211
bDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
Im11bCIpOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfZGl2OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiZGl2Iik7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9tb2Q6IHsKLSAgICAgICAgICAg
IHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJtb2QiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcG93OiB7Ci0gICAgICAgICAg
ICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicG93Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3N1YjogewotICAgICAgICAg
ICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN1YiIpOwotICAgICAg
ICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfbHNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmludEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAibHNoaWZ0Iik7Ci0gICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX3JzaGlmdDogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJzaGlmdCIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF91cnNoaWZ0OiB7Ci0gICAgICAgICAgICBwcmlu
dEJpbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAidXJzaGlmdCIpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9iaXRhbmQ6IHsKLSAgICAgICAg
ICAgIHByaW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJiaXRhbmQiKTsKLSAg
ICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX2JpdHhvcjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImJpdHhvciIpOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfYml0b3I6IHsKLSAgICAgICAgICAgIHBy
aW50QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJiaXRvciIpOwotICAgICAgICAg
ICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
b3ZlcnJpZGVzX2hhc19pbnN0YW5jZTogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3ZlcnJpZGVzX2hhc19pbnN0YW5j
ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRh
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9pbnN0
YW5jZW9mOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJpbnN0YW5jZW9mIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX2luc3RhbmNlb2ZfY3VzdG9tOiB7Ci0gICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImluc3RhbmNlb2ZfY3VzdG9t
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdW5zaWduZWQ6IHsKLSAgICAgICAgICAgIHByaW50VW5h
cnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInVuc2lnbmVkIik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3R5cGVvZjogewotICAgICAgICAgICAg
cHJpbnRVbmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAidHlwZW9mIik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2lzX2VtcHR5OiB7Ci0gICAg
ICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpc19lbXB0eSIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9pc191bmRl
ZmluZWQ6IHsKLSAgICAgICAgICAgIHByaW50VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImlzX3VuZGVmaW5lZCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9pc19ib29sZWFuOiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJpc19ib29sZWFuIik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX2lzX251bWJlcjogewotICAgICAgICAgICAgcHJpbnRV
bmFyeU9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiaXNfbnVtYmVyIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2lzX2NlbGxfd2l0aF90eXBlOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHR5cGUgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImlzX2NlbGxfd2l0aF90eXBlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfaXNfb2JqZWN0OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJpc19vYmplY3QiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfaXNfb2JqZWN0X29yX251bGw6IHsKLSAgICAgICAgICAgIHByaW50
VW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImlzX29iamVjdF9vcl9udWxsIik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2lzX2Z1bmN0aW9u
OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJp
c19mdW5jdGlvbiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBvcF9pbjogewotICAgICAgICAgICAgcHJpbnRCaW5hcnlPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImluIik7Ci0gICAgICAgICAgICBkdW1wQXJyYXlQcm9maWxpbmcob3V0LCBpdCwgaGFz
UHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0cnlfZ2V0X2J5X2lkIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZDoKLSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfcHJvdG9fbG9hZDoK
LSAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfdW5zZXQ6Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2Fy
cmF5X2xlbmd0aDogewotICAgICAgICAgICAgcHJpbnRHZXRCeUlkT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQpOwotICAgICAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBleGVj
LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKLSAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhv
dXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogewotICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX3dp
dGhfdGhpcyIpOwotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMiku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0
aF90aGlzOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImdldF9ieV92YWxfd2l0aF90aGlzIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsK
LSAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7Ci0gICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICAgICAgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMo
b3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczogewotICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3dpdGhfdGhpcyIp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZp
ZXIoaWQwKSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV92YWxfd2l0aF90aGlzIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAl
cyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDog
ewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgbjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2dldHRlcl9ieV9pZCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihpZDApKS5k
YXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfaWQ6IHsKLSAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGlkMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IG4wID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9zZXR0ZXJfYnlf
aWQiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCBuMCwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDogewotICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgbjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIy
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCIpOwotICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCBuMCwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV92YWw6IHsKLSAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgbjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2dldHRl
cl9ieV92YWwiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQsICVzIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBuMCwgcmVnaXN0
ZXJOYW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X3ZhbDogewotICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50
IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfc2V0dGVyX2J5X3ZhbCIpOwotICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG4wLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2RlZmluZV9kYXRh
X3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIy
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgImRlZmluZV9kYXRhX3Byb3BlcnR5Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZGVmaW5l
X2FjY2Vzc29yX3Byb3BlcnR5OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjMgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByNCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
ZGVmaW5lX2FjY2Vzc29yX3Byb3BlcnR5Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHI0KS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWxfYnlfaWQiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQw
KSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfZ2V0X2J5X3ZhbDogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X3ZhbCIpOwotICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVt
cEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAg
ICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfdmFsIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0gICAgICAgICAgICBkdW1wQXJyYXlQcm9maWxpbmco
b3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OiB7Ci0gICAgICAgICAgICBp
bnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfdmFsX2RpcmVjdCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCkpOwotICAgICAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQs
IGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJkZWxfYnlfdmFsIik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pbmRleDog
ewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBuMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaW5kZXgiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAldSwgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgbjAsIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3Bfam1wOiB7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJq
bXAiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVkKC0+JWQpIiwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX2p0cnVlOiB7Ci0gICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVtcChvdXQsIGV4ZWMs
IGJlZ2luLCBpdCwgbG9jYXRpb24sICJqdHJ1ZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9qZmFsc2U6IHsKLSAgICAgICAgICAgIHByaW50Q29uZGl0
aW9uYWxKdW1wKG91dCwgZXhlYywgYmVnaW4sIGl0LCBsb2NhdGlvbiwgImpmYWxzZSIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDogewot
ICAgICAgICAgICAgcHJpbnRDb25kaXRpb25hbEp1bXAob3V0LCBleGVjLCBiZWdpbiwgaXQsIGxv
Y2F0aW9uLCAiamVxX251bGwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3Bfam5lcV9udWxsOiB7Ci0gICAgICAgICAgICBwcmludENvbmRpdGlvbmFsSnVt
cChvdXQsIGV4ZWMsIGJlZ2luLCBpdCwgbG9jYXRpb24sICJqbmVxX251bGwiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6IHsKLSAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgU3BlY2lhbDo6
UG9pbnRlciBwb2ludGVyID0gKCsraXQpLT51LnNwZWNpYWxQb2ludGVyOwotICAgICAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiam5lcV9wdHIiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlZCAoJXApLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCBwb2ludGVyLCBtX2dsb2JhbE9iamVjdC0+YWN0dWFsUG9pbnRlckZvcihwb2ludGVyKSwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qbGVzczogewotICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgImpsZXNzIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3Bfamxlc3NlcTogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImpsZXNzZXEiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjog
ewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgImpncmVhdGVyIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcTogewotICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImpn
cmVhdGVyZXEiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCBy
ZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9qbmxlc3M6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJqbmxlc3MiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlcywgJWQoLT4lZCkiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9qbmxlc3NlcTogewot
ICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
cjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgImpubGVzc2VxIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOiB7Ci0gICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiam5ncmVh
dGVyIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3Bfam5ncmVhdGVyZXE6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJqbmdyZWF0ZXJlcSIpOwotICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCgtPiVkKSIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2xvb3BfaGlu
dDogewotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAibG9vcF9oaW50Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX2NoZWNrX3RyYXBzOiB7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjaGVja190cmFwcyIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9n
dWU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6IHsKLSAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJsb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc3dp
dGNoX2ltbTogewotICAgICAgICAgICAgaW50IHRhYmxlSW5kZXggPSAoKytpdCktPnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGludCBkZWZhdWx0VGFyZ2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgc2NydXRpbmVlUmVnaXN0ZXIgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN3
aXRjaF9pbW0iKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVkLCAlZCgtPiVkKSwgJXMiLCB0
YWJsZUluZGV4LCBkZWZhdWx0VGFyZ2V0LCBsb2NhdGlvbiArIGRlZmF1bHRUYXJnZXQsIHJlZ2lz
dGVyTmFtZShzY3J1dGluZWVSZWdpc3RlcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgICAgIGlu
dCB0YWJsZUluZGV4ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgZGVmYXVs
dFRhcmdldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHNjcnV0aW5lZVJl
Z2lzdGVyID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzd2l0Y2hfY2hhciIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJWQsICVkKC0+JWQpLCAlcyIsIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQs
IGxvY2F0aW9uICsgZGVmYXVsdFRhcmdldCwgcmVnaXN0ZXJOYW1lKHNjcnV0aW5lZVJlZ2lzdGVy
KS5kYXRhKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgICAgICBpbnQgdGFibGVJbmRleCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGRlZmF1bHRUYXJnZXQgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGludCBzY3J1dGluZWVSZWdpc3RlciA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic3dpdGNoX3N0cmluZyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJWQsICVkKC0+
JWQpLCAlcyIsIHRhYmxlSW5kZXgsIGRlZmF1bHRUYXJnZXQsIGxvY2F0aW9uICsgZGVmYXVsdFRh
cmdldCwgcmVnaXN0ZXJOYW1lKHNjcnV0aW5lZVJlZ2lzdGVyKS5kYXRhKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXdfZnVuYzogewotICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibmV3X2Z1bmMiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVn
aXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnVuYzogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mdW5jIik7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5h
bWUocjEpLmRhdGEoKSwgZjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogewotICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewotICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3
X2Z1bmNfZXhwIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGYwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6IHsKLSAgICAgICAgICAgIGludCBy
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3lu
Y19mdW5jX2V4cCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdp
c3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25h
bWU6IHsKLSAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2V0X2Z1bmN0aW9uX25h
bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShmdW5j
UmVnKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShuYW1lUmVnKS5kYXRhKCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9jYWxsOiB7Ci0gICAgICAgICAgICBw
cmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBo
YXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0gICAgICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInRhaWxfY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIHBy
aW50Q2FsbE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBD
YWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIG9wX2NvbnN0cnVj
dF92YXJhcmdzOgotICAgICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKLSAgICAgICAgY2FzZSBv
cF90YWlsX2NhbGxfdmFyYXJnczoKLSAgICAgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9h
cmd1bWVudHM6IHsKLSAgICAgICAgICAgIGludCByZXN1bHQgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCBjYWxsZWUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGludCB0aGlzVmFsdWUgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBhcmd1
bWVudHMgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBmaXJzdEZyZWVSZWdp
c3RlciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHZhckFyZ09mZnNldCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG9wTmFtZTsKLSAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2FsbF92YXJhcmdz
KQotICAgICAgICAgICAgICAgIG9wTmFtZSA9ICJjYWxsX3ZhcmFyZ3MiOwotICAgICAgICAgICAg
ZWxzZSBpZiAob3Bjb2RlID09IG9wX2NvbnN0cnVjdF92YXJhcmdzKQotICAgICAgICAgICAgICAg
IG9wTmFtZSA9ICJjb25zdHJ1Y3RfdmFyYXJncyI7Ci0gICAgICAgICAgICBlbHNlIGlmIChvcGNv
ZGUgPT0gb3BfdGFpbF9jYWxsX3ZhcmFyZ3MpCi0gICAgICAgICAgICAgICAgb3BOYW1lID0gInRh
aWxfY2FsbF92YXJhcmdzIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKG9wY29kZSA9PSBvcF90YWls
X2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCi0gICAgICAgICAgICAgICAgb3BOYW1lID0gInRhaWxf
Y2FsbF9mb3J3YXJkX2FyZ3VtZW50cyI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCBvcE5hbWUpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMsICVkLCAlZCIsIHJlZ2lzdGVyTmFtZShyZXN1bHQp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGNhbGxlZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUodGhpc1Zh
bHVlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShhcmd1bWVudHMpLmRhdGEoKSwgZmlyc3RGcmVlUmVn
aXN0ZXIsIHZhckFyZ09mZnNldCk7Ci0gICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0
LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhc2Ugb3BfcmV0OiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJldCIsIHIwKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgICAgICBw
cmludENhbGxPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNvbnN0cnVjdCIsIER1bXBDYWNo
ZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKLSAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInN0
cmNhdCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlZCIsIHJlZ2lzdGVyTmFt
ZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgY291bnQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6IHsKLSAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJ0b19wcmltaXRpdmUiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2dldF9lbnVtZXJhYmxlX2xlbmd0aDogewotICAgICAgICAgICAgaW50IGRzdCA9IGl0WzFdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCBiYXNlID0gaXRbMl0udS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3BfZ2V0
X2VudW1lcmFibGVfbGVuZ3RoIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCBy
ZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5kYXRhKCkpOwotICAg
ICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGgpIC0g
MTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfaGFzX2lu
ZGV4ZWRfcHJvcGVydHk6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBwcm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSA9IGl0WzRdLnUuYXJyYXlQcm9maWxlOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3BfaGFzX2luZGV4ZWRf
cHJvcGVydHkiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVwIiwgcmVn
aXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocHJvcGVydHlOYW1lKS5kYXRhKCksIGFycmF5UHJvZmlsZSk7Ci0gICAgICAgICAgICBp
dCArPSBPUENPREVfTEVOR1RIKG9wX2hhc19pbmRleGVkX3Byb3BlcnR5KSAtIDE7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2hhc19zdHJ1Y3R1cmVfcHJv
cGVydHk6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBwcm9wZXJ0
eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgZW51bWVyYXRvciA9IGl0
WzRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgIm9wX2hhc19zdHJ1Y3R1cmVfcHJvcGVydHkiKTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoYmFzZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocHJvcGVydHlOYW1lKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgaXQgKz0g
T1BDT0RFX0xFTkdUSChvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5KSAtIDE7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2hhc19nZW5lcmljX3Byb3BlcnR5
OiB7Ci0gICAgICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5kOwotICAgICAgICAgICAg
aW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcHJvcGVydHlOYW1l
ID0gaXRbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAib3BfaGFzX2dlbmVyaWNfcHJvcGVydHkiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShwcm9wZXJ0eU5hbWUpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2hhc19nZW5lcmljX3Byb3Bl
cnR5KSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2dldF9kaXJlY3RfcG5hbWU6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSBpdFsxXS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAg
IGludCBwcm9wZXJ0eU5hbWUgPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaW5k
ZXggPSBpdFs0XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgZW51bWVyYXRvciA9IGl0WzVd
LnUub3BlcmFuZDsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGl0WzZdLnUu
cHJvZmlsZTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgIm9wX2dldF9kaXJlY3RfcG5hbWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMsICVzLCAlcywgJXAiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShiYXNlKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShwcm9wZXJ0eU5hbWUpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGluZGV4KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRh
KCksIHByb2ZpbGUpOwotICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfZGly
ZWN0X3BuYW1lKSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6IHsKLSAgICAgICAgICAgIGludCBkc3Qg
PSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYmFzZSA9IGl0WzJdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgIm9wX2dldF9wcm9wZXJ0eV9lbnVtZXJhdG9yIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShiYXNlKS5k
YXRhKCkpOwotICAgICAgICAgICAgaXQgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcHJvcGVydHlf
ZW51bWVyYXRvcikgLSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZTogewotICAgICAgICAgICAgaW50IGRz
dCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBlbnVtZXJhdG9yID0gaXRbMl0u
dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGluZGV4ID0gaXRbM10udS5vcGVyYW5kOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAib3Bf
ZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJh
dG9yKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShpbmRleCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGl0
ICs9IE9QQ09ERV9MRU5HVEgob3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUpIC0gMTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZW51bWVyYXRvcl9n
ZW5lcmljX3BuYW1lOiB7Ci0gICAgICAgICAgICBpbnQgZHN0ID0gaXRbMV0udS5vcGVyYW5kOwot
ICAgICAgICAgICAgaW50IGVudW1lcmF0b3IgPSBpdFsyXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpbnQgaW5kZXggPSBpdFszXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJvcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5h
bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUo
ZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShlbnVtZXJhdG9yKS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShpbmRleCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGl0ICs9IE9QQ09ERV9MRU5HVEgob3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lKSAtIDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzogewotICAgICAgICAgICAgaW50IGRz
dCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGl0WzJdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm9wX3RvX2luZGV4X3N0cmluZyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoaW5kZXgpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX3RvX2luZGV4X3N0cmluZykg
LSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXNo
X3dpdGhfc2NvcGU6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCBuZXdTY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IGN1cnJlbnRTY29wZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHVzaF93aXRoX3Njb3Bl
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKGRz
dCkuZGF0YSgpLCByZWdpc3Rlck5hbWUobmV3U2NvcGUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGN1
cnJlbnRTY29wZSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZTogewotICAgICAgICAgICAgaW50IGRzdCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHBhcmVudFNjb3BlID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJnZXRfcGFyZW50X3Njb3BlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJXMiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFtZShwYXJlbnRTY29w
ZSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6IHsKLSAgICAgICAgICAgIGludCBkc3QgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBzY29wZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IHN5bWJvbFRhYmxlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0g
ICAgICAgICAgICBpbnQgaW5pdGlhbFZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAl
cywgJXMiLCAKLSAgICAgICAgICAgICAgICByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShzY29wZSkuZGF0YSgpLCByZWdpc3Rlck5hbWUoc3ltYm9sVGFibGUpLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGluaXRpYWxWYWx1ZSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKLSAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJjYXRjaCIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfdGhyb3c6IHsKLSAgICAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5k
UmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAidGhyb3ciLCByMCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Rocm93X3N0YXRp
Y19lcnJvcjogewotICAgICAgICAgICAgaW50IGswID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBFcnJvclR5cGUgazEgPSBzdGF0aWNfY2FzdDxFcnJvclR5cGU+KCgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlKTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInRocm93X3N0YXRpY19lcnJvciIpOwotICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICIsIGNvbnN0YW50TmFtZShrMCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG91dC5w
cmludChrMSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X2RlYnVnOiB7Ci0gICAgICAgICAgICBpbnQgZGVidWdIb29rVHlwZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgaW50IGhhc0JyZWFrcG9pbnRGbGFnID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJkZWJ1ZyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29r
TmFtZShkZWJ1Z0hvb2tUeXBlKSwgaGFzQnJlYWtwb2ludEZsYWcpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKLSAgICAgICAgICAgIGlu
dCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBsaW5lID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJhc3NlcnQiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlZCIsIHJlZ2lzdGVyTmFtZShjb25kaXRpb24pLmRhdGEoKSwgbGluZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2VuZDogewotICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uT3BB
bmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJlbmQiLCByMCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc29sdmVfc2Nv
cGU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgaW50IHNjb3BlID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQwID0g
KCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9
IHN0YXRpY19jYXN0PFJlc29sdmVUeXBlPigoKytpdCktPnUub3BlcmFuZCk7Ci0gICAgICAgICAg
ICBpbnQgZGVwdGggPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHZvaWQqIHBvaW50
ZXIgPSAoKytpdCktPnUucG9pbnRlcjsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc29sdmVfc2NvcGUiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgJXMsIDwlcz4sICVkLCAlcCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoc2NvcGUpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihp
ZDApKS5kYXRhKCksIHJlc29sdmVUeXBlTmFtZShyZXNvbHZlVHlwZSksIGRlcHRoLCBwb2ludGVy
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2Zy
b21fc2NvcGU6IHsKLSAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgaWQw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8g
PSBHZXRQdXRJbmZvKCgrK2l0KS0+dS5vcGVyYW5kKTsKLSAgICAgICAgICAgICsraXQ7IC8vIFN0
cnVjdHVyZQotICAgICAgICAgICAgaW50IG9wZXJhbmQgPSAoKytpdCktPnUub3BlcmFuZDsgLy8g
T3BlcmFuZAotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiZ2V0X2Zyb21fc2NvcGUiKTsKLSAgICAgICAgICAgIG91dC5wcmludChyZWdpc3Rl
ck5hbWUocjApLCAiLCAiLCByZWdpc3Rlck5hbWUocjEpKTsKLSAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaWQwKSA9PSBVSU5UX01BWCkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIiwgYW5vbnltb3VzIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
b3V0LnByaW50KCIsICIsIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkpOwotICAgICAgICAg
ICAgb3V0LnByaW50KCIsICIsIGdldFB1dEluZm8ub3BlcmFuZCgpLCAiPCIsIHJlc29sdmVNb2Rl
TmFtZShnZXRQdXRJbmZvLnJlc29sdmVNb2RlKCkpLCAifCIsIHJlc29sdmVUeXBlTmFtZShnZXRQ
dXRJbmZvLnJlc29sdmVUeXBlKCkpLCAifCIsIGluaXRpYWxpemF0aW9uTW9kZU5hbWUoZ2V0UHV0
SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSksICI+LCAiLCBvcGVyYW5kKTsKLSAgICAgICAgICAg
IGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvID0gR2V0UHV0SW5m
bygoKytpdCktPnUub3BlcmFuZCk7Ci0gICAgICAgICAgICArK2l0OyAvLyBTdHJ1Y3R1cmUKLSAg
ICAgICAgICAgIGludCBvcGVyYW5kID0gKCsraXQpLT51Lm9wZXJhbmQ7IC8vIE9wZXJhbmQKLSAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF90b19zY29wZSIpOwotICAgICAgICAgICAgb3V0LnByaW50KHJlZ2lzdGVyTmFtZShyMCkpOwot
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpZDApID09IFVJTlRfTUFYKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCBhbm9ueW1vdXMiKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgaWROYW1lKGlkMCwgaWRlbnRpZmll
cihpZDApKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIiwgIiwgcmVnaXN0ZXJOYW1lKHIxKSwg
IiwgIiwgZ2V0UHV0SW5mby5vcGVyYW5kKCksICI8IiwgcmVzb2x2ZU1vZGVOYW1lKGdldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSksICJ8IiwgcmVzb2x2ZVR5cGVOYW1lKGdldFB1dEluZm8ucmVzb2x2
ZVR5cGUoKSksICJ8IiwgaW5pdGlhbGl6YXRpb25Nb2RlTmFtZShnZXRQdXRJbmZvLmluaXRpYWxp
emF0aW9uTW9kZSgpKSwgIj4sIDxzdHJ1Y3R1cmU+LCAiLCBvcGVyYW5kKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7
Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAiZ2V0X2Zyb21fYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsICVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBvZmZzZXQpOwotICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwg
aXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOiB7Ci0gICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X3Rv
X2FyZ3VtZW50cyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCBvZmZzZXQsIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIGR1bXBSYXJlQ2Fz
ZVByb2ZpbGUob3V0LCAicmFyZSBjYXNlOiAiLCByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChsb2NhdGlvbiksIGhhc1ByaW50ZWRQcm9maWxpbmcpOwotICAgIHsKLSAgICAgICAgZHVt
cEFyaXRoUHJvZmlsZShvdXQsIGFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGxvY2F0aW9u
KSwgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgfQotICAgIAotI2lmIEVOQUJMRShERkdfSklU
KQotICAgIFZlY3RvcjxERkc6OkZyZXF1ZW50RXhpdFNpdGU+IGV4aXRTaXRlcyA9IGV4aXRQcm9m
aWxlKCkuZXhpdFNpdGVzRm9yKGxvY2F0aW9uKTsKLSAgICBpZiAoIWV4aXRTaXRlcy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgb3V0LnByaW50KCIgISEgZnJlcXVlbnQgZXhpdHM6ICIpOwotICAgICAg
ICBDb21tYVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGZvciAoYXV0byYgZXhpdFNpdGUgOiBleGl0
U2l0ZXMpCi0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGV4aXRTaXRlLmtpbmQoKSwgIiAi
LCBleGl0U2l0ZS5qaXRUeXBlKCkpOwotICAgIH0KLSNlbHNlIC8vIEVOQUJMRShERkdfSklUKQot
ICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0g
ICAgb3V0LnByaW50KCJcbiIpOworICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBC
eXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsK
IH0KIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICBQcmludFN0cmVhbSYgb3V0
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwKICAgICBjb25zdCBTdHViSW5mb01hcCYgc3R1Yklu
Zm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5rSW5mb3MpCiB7Ci0gICAgRXhlY1N0
YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICBjb25zdCBJbnN0
cnVjdGlvbiogaXQgPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXQ7Ci0g
ICAgZHVtcEJ5dGVjb2RlKG91dCwgZXhlYywgaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgaXQsIHN0
dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcEJ5dGVjb2RlKG91dCwgaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CiB9CiAKICNkZWZp
bmUgRk9SX0VBQ0hfTUVNQkVSX1ZFQ1RPUihtYWNybykgXApAQCAtMjMyMCw3ICs3ODMsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9kZWJ1
ZzogewotICAgICAgICAgICAgaWYgKHBjWzFdLnUuaW5kZXggPT0gRGlkUmVhY2hCcmVha3BvaW50
KQorICAgICAgICAgICAgaWYgKHBjWzFdLnUudW5zaWduZWRWYWx1ZSA9PSBEaWRSZWFjaEJyZWFr
cG9pbnQpCiAgICAgICAgICAgICAgICAgbV9oYXNEZWJ1Z2dlclN0YXRlbWVudCA9IHRydWU7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjY0Nyw3ICsxMTEwLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFNsb3RWaXNpdG9yJiB2aXMKICAgICAgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3VubGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
XTsKLSAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0pKSB7CiAgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZDogewogICAgICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gaW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlSUQ7CkBAIC0yNzgxLDcgKzEy
NDQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMgPSBtX3Vu
bGlua2VkQ29kZS0+cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsKICAgICBmb3IgKHNpemVf
dCBzaXplID0gcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1
Y3Rpb25zKClbcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwotICAgICAgICBzd2l0Y2gg
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsK
KyAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25b
MF0pKSB7CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF9wcm90b19sb2FkOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF91bnNldDogewpAQCAt
Mjg1OSw3ICsxMzIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZXMoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1
ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdKTsKICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKG9wY29kZUlELCBmYWxzZSwgIlVuaGFuZGxl
ZCBvcGNvZGUgaW4gQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSwgJXMoJWQpIGF0
IGJjICV1Iiwgb3Bjb2RlTmFtZXNbb3Bjb2RlSURdLCBvcGNvZGVJRCwgcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnNbaV0pOwogICAgICAgICB9CiAgICAgfQpAQCAtMzI0MSw3ICsxNzA0LDcgQEAg
Ym9vbCBDb2RlQmxvY2s6Omhhc09wRGVidWdGb3JMaW5lQW5kQ29sdW1uKHVuc2lnbmVkIGxpbmUs
IHVuc2lnbmVkIGNvbHVtbikKICAgICBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIGNvbnN0IEluc3RydWN0aW9uKiBlbmQgPSBpbnN0cnVjdGlv
bnMoKS5lbmQoKTsKICAgICBmb3IgKGNvbnN0IEluc3RydWN0aW9uKiBpdCA9IGJlZ2luOyBpdCAh
PSBlbmQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGl0LT51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKCppdCk7CiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9kZWJ1
ZykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBpdCAtIGJlZ2luOwog
ICAgICAgICAgICAgaW50IHVudXNlZDsKQEAgLTQxODgsNyArMjY1MSw3IEBAIGJvb2wgQ29kZUJs
b2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogICAgIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQgPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDsg
KSB7Ci0gICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIHsKKyAgICAgICAgc3dpdGNoIChpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKSkg
ewogI2RlZmluZSBERUZJTkVfT1AoY3VyT3Bjb2RlLCBsZW5ndGgpICAgICAgICBcCiAgICAgICAg
IGNhc2UgY3VyT3Bjb2RlOiAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGlmIChj
dXJPcGNvZGUgPT0gb3Bjb2RlSUQpICAgICAgXApAQCAtNDIzMyw3ICsyNjk2LDcgQEAgU3RyaW5n
IENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3Zt
LT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0pOwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CiAgICAgcmV0dXJuIGluc3RydWN0aW9u
cygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQpAQCAtNDMyMiw3
ICsyNzg1LDcgQEAgQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6OmFyaXRoUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIAogQXJpdGhQcm9maWxlKiBDb2RlQmxvY2s6
OmFyaXRoUHJvZmlsZUZvclBDKEluc3RydWN0aW9uKiBwYykKIHsKLSAgICBhdXRvIG9wY29kZUlE
ID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKTsKKyAgICBh
dXRvIG9wY29kZUlEID0gdm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdKTsKICAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9uZWdhdGU6CiAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8QXJpdGhQcm9maWxlKj4oJnBjWzNdLnUub3BlcmFuZCk7CkBAIC00MzY5
LDEyICsyODMyLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmll
c0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoUmVmQ291bnRlZEFycmF5CiAgICAgICAgIC8vIEJlY2F1
c2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVnaW5uaW5nIG9m
IGV2ZXJ5IGJhc2ljIGJsb2NrLCBmaW5kaW5nIAogICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9m
aWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUg
YmFzaWMgYmxvY2suCiAgICAgICAgIHNpemVfdCBzdGFydElkeCA9IGJ5dGVjb2RlT2Zmc2V0c1tp
XTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc1tzdGFydElkeF0udS5vcGNvZGUpID09IG9wX3Byb2ZpbGVfY29udHJvbF9m
bG93KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc1tzdGFydElkeF0pID09IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsK
ICAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IGluc3RydWN0aW9uc1tzdGFydElk
eCArIDFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGJhc2ljQmxvY2tFbmRPZmZzZXQ7CiAgICAg
ICAgIGlmIChpICsgMSA8IG9mZnNldHNMZW5ndGgpIHsKICAgICAgICAgICAgIHNpemVfdCBlbmRJ
ZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
dm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc1tlbmRJZHhdLnUub3Bj
b2RlKSA9PSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2VuZElkeF0p
ID09IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsKICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRP
ZmZzZXQgPSBpbnN0cnVjdGlvbnNbZW5kSWR4ICsgMV0udS5vcGVyYW5kIC0gMTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBtX3NvdXJjZU9mZnNl
dCArIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKS5sZW5ndGgoKSAtIDE7IC8vIE9m
ZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggMTk0MmVhMjFjNjNiMjUyOTlkOTZlMWU4ZGI4ZjU4N2U5
NzE1NzMxNC4uYmRjMzNkNjY5MTA3YmUzODk3YTQyY2IyZjc3NjgzNGFlNDgzZmYxNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMTkxLDkgKzE5MSw5
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgdm9pZCBkdW1wQnl0
ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQg
ZHVtcEJ5dGVjb2RlKAotICAgICAgICBQcmludFN0cmVhbSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LAotICAgICAgICBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVj
b2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgU3R1
YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxM
aW5rSW5mb01hcCgpKTsKKwogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3Ry
ZWFtJik7CiAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0
cnVjdGlvbiopOwogICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoUHJpbnRTdHJlYW0mLCBjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKTsKQEAgLTU0Miw2ICs1
NDIsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKKyAgICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+
PiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyBy
ZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4XTsgfQogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KQEAgLTU1Miw2ICs1NTMsMTAgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
cHIoaW50IGluZGV4KSB7IHJldHVybiBtX2Z1bmN0aW9uRXhwcnNbaW5kZXhdLmdldCgpOyB9CiAg
ICAgCiAgICAgUmVnRXhwKiByZWdleHAoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+cmVnZXhwKGluZGV4KTsgfQorICAgIHVuc2lnbmVkIG51bWJlck9mUmVnRXhwcygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlJlZ0V4cHMoKTsgfQorCisg
ICAgY29uc3QgVmVjdG9yPEJpdFZlY3Rvcj4mIGJpdFZlY3RvcnMoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+Yml0VmVjdG9ycygpOyB9CisgICAgY29uc3QgQml0VmVjdG9yJiBiaXRW
ZWN0b3Ioc2l6ZV90IGkpIHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5iaXRWZWN0b3IoaSk7IH0K
IAogICAgIHVuc2lnbmVkIG51bWJlck9mQ29uc3RhbnRCdWZmZXJzKCkgY29uc3QKICAgICB7CkBA
IC05MTcsMzAgKzkyMiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXhdLnNldChtX2dsb2JhbE9iamVjdC0+dm0oKSwgdGhpcywgdmFsdWUpOwogICAgIH0KIAotICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKAotICAgICAgICBQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNv
bnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwKLSAgICAgICAgY29u
c3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9
IENhbGxMaW5rSW5mb01hcCgpKTsKLQotICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKGludCByKSBj
b25zdDsKLSAgICBDU3RyaW5nIGNvbnN0YW50TmFtZShpbnQgaW5kZXgpIGNvbnN0OwotICAgIHZv
aWQgcHJpbnRVbmFyeU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgdm9pZCBwcmludEJpbmFy
eU9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVj
dGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChQ
cmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgdm9pZCBwcmludEdl
dEJ5SWRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJik7Ci0gICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYsIEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmKTsKLSAgICBl
bnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZv
aWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIGNv
bnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKLSAgICB2b2lkIHBy
aW50UHV0QnlJZE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCk7Ci0gICAgdm9pZCBwcmludFB1dEJ5SWRD
YWNoZVN0YXR1cyhQcmludFN0cmVhbSYsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAm
KTsKLSAgICB2b2lkIHByaW50TG9jYXRpb25BbmRPcChQcmludFN0cmVhbSYsIEV4ZWNTdGF0ZSos
IGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgY29uc3QgY2hhciogb3ApOwotICAg
IHZvaWQgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKFByaW50U3RyZWFtJiwgRXhl
Y1N0YXRlKiwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotCi0gICAgdm9pZCBiZWdpbkR1bXBQcm9maWxpbmcoUHJpbnRT
dHJlYW0mLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nKTsKLSAgICB2b2lkIGR1bXBWYWx1ZVBy
b2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50
ZWRQcm9maWxpbmcpOwotICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgdm9p
ZCBkdW1wUmFyZUNhc2VQcm9maWxlKFByaW50U3RyZWFtJiwgY29uc3QgY2hhciogbmFtZSwgUmFy
ZUNhc2VQcm9maWxlKiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7Ci0gICAgdm9pZCBkdW1w
QXJpdGhQcm9maWxlKFByaW50U3RyZWFtJiwgQXJpdGhQcm9maWxlKiwgYm9vbCYgaGFzUHJpbnRl
ZFByb2ZpbGluZyk7Ci0KICAgICBib29sIHNob3VsZFZpc2l0U3Ryb25nbHkoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJik7CiAgICAgYm9vbCBzaG91bGRKZXR0aXNvbkR1ZVRvV2Vha1JlZmVyZW5j
ZSgpOwogICAgIGJvb2wgc2hvdWxkSmV0dGlzb25EdWVUb09sZEFnZShjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZv
LmgKaW5kZXggNzUyZGVmZThhY2NhMjU4MDRmMzFkYzU4YWNhNWZiMTc0Zjk0MGU0MS4uYWQ3ZTc0
Y2QyMWVmYTBhNWMwYTUyMjdmMWQ4MTU0Y2ExZDU3MzkwOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IEhh
bmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFu
ZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsg
fQogCi0gICAgY29uc3QgY2hhciogdHlwZU5hbWUoKQorICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1l
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
SGFuZGxlclR5cGU6OkNhdGNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTNkZWZiZmIzZjM1YTk0YjIwOTY4OGVl
N2ExZWZkNTU5MWQ0OTdkZS4uMWM3MWFhNmU0NTMzZDUzY2QyYzQ0ZmVlMDIxYWMzZWYzMzA5OWZi
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCkBAIC00MTMsNCArNDEzLDggQEAgdm9pZCBVbmxpbmtlZENvZGVCbG9jazo6
c2hyaW5rVG9GaXQoKQogICAgIH0KIH0KIAordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6ZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0Cit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBm
MDU3NDk3NmM0MWQ4Nzg2OGU4YTgwMmVhMTczYjExODI1ZjcxZTg0Li5mOWM5YzM3YTEwNWJmMGY4
NWY4OTE2ZDY0NTJjNWJiMDc5NDFiOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVj
dCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB1bmlvbiB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZTsKICAgICAgICAgaW50MzJfdCBvcGVyYW5kOwotICAgICAgICB1bnNpZ25lZCBpbmRleDsK
KyAgICAgICAgdW5zaWduZWQgdW5zaWduZWRWYWx1ZTsKICAgICB9IHU7CiB9OwogCkBAIC0yMTUs
NiArMjE1LDcgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBjb25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+PiYgY29uc3RhbnRSZWdpc3RlcnMo
KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CiAgICAgY29uc3QgV3JpdGVCYXJyaWVy
PFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9Cisg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4XS5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24+
JiBjb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX2NvbnN0YW50
c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbjsgfQogCiAgICAgLy8gSnVtcHMKQEAgLTM4MCw2ICsz
ODEsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFRy
aVN0YXRlIGRpZE9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gbV9kaWRPcHRpbWl6ZTsgfQogICAg
IHZvaWQgc2V0RGlkT3B0aW1pemUoVHJpU3RhdGUgZGlkT3B0aW1pemUpIHsgbV9kaWRPcHRpbWl6
ZSA9IGRpZE9wdGltaXplOyB9CiAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogICAgIFVubGlua2VkQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgQ29k
ZVR5cGUsIGNvbnN0IEV4ZWN1dGFibGVJbmZvJiwgRGVidWdnZXJNb2RlKTsKICAgICB+VW5saW5r
ZWRDb2RlQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmNwcAppbmRleCBlODc2MmZmNjYzZTY5
NzdkOGFjYmMyMzRiNGUwOWE0MzZhY2QzZjJlLi40OGM4MTZhMTQ5YjFiZjQwNjA3NWYwMzU3MmVi
OTUyMDBlZDc4NjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uY3BwCkBAIC05NSw3ICs5NSw3IEBA
IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW06OlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0oY29u
c3QgVmVjdG9yPFVubGlua2VkSW5zdHJ1CiAgICAgICAgIHVuc2lnbmVkIG9wTGVuZ3RoID0gb3Bj
b2RlTGVuZ3RoKG9wY29kZSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IG9w
TGVuZ3RoOyArK2opCi0gICAgICAgICAgICBhcHBlbmQzMihwdHIsIHBjW2pdLnUuaW5kZXgpOwor
ICAgICAgICAgICAgYXBwZW5kMzIocHRyLCBwY1tqXS51LnVuc2lnbmVkVmFsdWUpOwogCiAgICAg
ICAgIGkgKz0gb3BMZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgKaW5kZXggZWYxMzlh
ZGY3ODNjOTA5YzEyN2FkYTZjYTI3Mzc1ZjFhMDIyOTU5Mi4uOGMwYmY1NzQyZGJmZGQ1MmJjNmVh
ODIyYzhiNzdlZmE1MDIxODg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oCkBAIC0xNDIsNyArMTQy
LDcgQEAgQUxXQVlTX0lOTElORSBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBVbmxpbmtlZElu
c3RydWN0aW9uU3RyZWFtOjpSZWFkZXI6Om5leHQKICAgICBtX3VucGFja2VkQnVmZmVyWzBdLnUu
b3Bjb2RlID0gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KHJlYWQ4KCkpOwogICAgIHVuc2lnbmVkIG9w
TGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG1fdW5wYWNrZWRCdWZmZXJbMF0udS5vcGNvZGUpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBvcExlbmd0aDsgKytpKQotICAgICAgICBtX3VucGFj
a2VkQnVmZmVyW2ldLnUuaW5kZXggPSByZWFkMzIoKTsKKyAgICAgICAgbV91bnBhY2tlZEJ1ZmZl
cltpXS51LnVuc2lnbmVkVmFsdWUgPSByZWFkMzIoKTsKICAgICByZXR1cm4gbV91bnBhY2tlZEJ1
ZmZlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IGM0
YmY4ZmFkZThhYWUzMTBmMmI2YTI3NzExMzFiYmVkYTIxYjJjYmMuLjNkMTE5Zjg3YTczYTRkZGNh
NWFhMzM3OTY5MDM3NWRjMTYzMjE5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0
cmluZzsKICAgICB2KGJvb2wsIGR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cywgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdmFsaWRhdGVCeXRlY29kZSwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJh
dGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgZHVtcEJ5dGVjb2Rl
c0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IFwKICAgICB2KGJvb2wsIHVzZUZ1bmN0aW9uRG90QXJndW1lbnRzLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVRhaWxDYWxscywgdHJ1ZSwgTm9ybWFsLCBudWxscHRy
KSBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>