<?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>38174</bug_id>
          
          <creation_ts>2010-04-26 23:19:05 -0700</creation_ts>
          <short_desc>Add CallWith=DynamicFrame to CodeGenerator</short_desc>
          <delta_ts>2010-04-27 14:47:45 -0700</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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yaar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217529</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:19:05 -0700</bug_when>
    <thetext>Add CallWith=DynamicFrame to CodeGenerator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217532</commentid>
    <comment_count>1</comment_count>
      <attachid>54385</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:20:31 -0700</bug_when>
    <thetext>Created attachment 54385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217534</commentid>
    <comment_count>2</comment_count>
      <attachid>54385</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:21:40 -0700</bug_when>
    <thetext>Comment on attachment 54385
Patch

Go, go EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217535</commentid>
    <comment_count>3</comment_count>
      <attachid>54385</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-26 23:24:30 -0700</bug_when>
    <thetext>Comment on attachment 54385
Patch

You need to check the return of toDynamicFrame().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217536</commentid>
    <comment_count>4</comment_count>
      <attachid>54386</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:26:57 -0700</bug_when>
    <thetext>Created attachment 54386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217540</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-26 23:32:23 -0700</bug_when>
    <thetext>Attachment 54386 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:140:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:142:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:149:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:151:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:158:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:160:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:167:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:169:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:176:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:178:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:71:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:74:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:77:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h:83:  Extra space before ( in function call  [whitespace/parens] [4]
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:140:  Missing spaces around |  [whitespace/operators] [3]
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:141:  Missing spaces around |  [whitespace/operators] [3]
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:142:  Missing spaces around |  [whitespace/operators] [3]
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:143:  Missing spaces around |  [whitespace/operators] [3]
WebCore/bindings/scripts/test/JS/JSTestObj.cpp:144:  Missing spaces around |  [whitespace/operators] [3]
Total errors found: 20 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217542</commentid>
    <comment_count>6</comment_count>
      <attachid>54386</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-26 23:38:15 -0700</bug_when>
    <thetext>Comment on attachment 54386
Patch

Looks sane.  I look forward to a patch with wider deployment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217543</commentid>
    <comment_count>7</comment_count>
      <attachid>54386</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:40:56 -0700</bug_when>
    <thetext>Comment on attachment 54386
Patch

Moving back to r? to get input from chromium-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217546</commentid>
    <comment_count>8</comment_count>
      <attachid>54387</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-26 23:52:06 -0700</bug_when>
    <thetext>Created attachment 54387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217554</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-27 00:02:00 -0700</bug_when>
    <thetext>Attachment 54386 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1786142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217560</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 00:15:55 -0700</bug_when>
    <thetext>Committed r58295: &lt;http://trac.webkit.org/changeset/58295&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217594</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-27 01:55:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58295 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217595</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 01:57:18 -0700</bug_when>
    <thetext>Looks like the bot is just upset at itself.  I don&apos;t think this change is actually causing the failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217743</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 09:53:08 -0700</bug_when>
    <thetext>The failures have persisted.  Either this was a real Gtk-only regession, or the Gtk bot is still wedged somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217748</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 10:03:45 -0700</bug_when>
    <thetext>Maybe a dependency issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217751</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-27 10:04:31 -0700</bug_when>
    <thetext>Kov says this is a known problem and his bot is just mad at the world.  He&apos;s fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217951</commentid>
    <comment_count>16</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-27 14:34:50 -0700</bug_when>
    <thetext>Awesomeness!

Can you elaborate where CallWith=DynamicFrame is going to be used? Is this for places we are currently passing ScriptExecutionContext, or also for security checks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217964</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 14:47:45 -0700</bug_when>
    <thetext>&gt; Can you elaborate where CallWith=DynamicFrame is going to be used?

It&apos;s for places that need to pass a Frame* to WebCore and were they need the frame to come from the dynamic scope (instead of the lexical scope).  LexicalFrame should be more common, but the first example I happened to see was the DynamicFrame.

&gt; Is this for
&gt; places we are currently passing ScriptExecutionContext, or also for security
&gt; checks?

No.  ScriptExecutionContext is a Document-lifetime object (actually, it often is the document).  Frame is a Frame-lifetime object.  These objects hare highly not interchangeable.  :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54385</attachid>
            <date>2010-04-26 23:20:31 -0700</date>
            <delta_ts>2010-04-26 23:26:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38174-20100426232030.patch</filename>
            <type>text/plain</type>
            <size>28370</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTgzYzliY2EzNTcyZDNkY2NkYmYyODJlMjZhYzkzYzJlMjM4ZjdkMC4uMDQ0MTBjYjUwODRkNTQ0
NGJiYzFlMjFiYjAzZmJlY2Y5ZDExMDE0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MiBAQAogMjAxMC0wNC0yNiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDYWxsV2l0aD1EeW5hbWljRnJhbWUgdG8gQ29kZUdl
bmVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzgxNzQKKworICAgICAgICBJJ3ZlIG9ubHkgdXNlZCB0aGlzIGluIG9uZSBpbnN0YW5jZSwgYnV0
IHRoaXMgaXMgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBJCisgICAgICAgIHRoaW5rIHdpbGwgaGVscCBy
ZW1vdmUgYSBidW5jaCBvZiBjdXN0b20gYmluZGluZ3MgY29kZS4gIEFsc28sIGFkZGVkIGEKKyAg
ICAgICAgZmV3IHRlc3RzIG9mIHRyaWNreSBhcmd1bWVudCBjYXNlcy4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
d2l0aF9keW5hbWljX2ZyYW1lKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9k
eW5hbWljX2ZyYW1lX2FuZF9hcmcpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93aXRo
X2R5bmFtaWNfZnJhbWVfYW5kX29wdGlvbmFsX2FyZyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVfYXNh
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9u
YWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
RHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RP
Ymogd2l0aER5bmFtaWNGcmFtZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhEeW5hbWlj
RnJhbWVBbmRBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aER5bmFtaWNGcmFtZUFu
ZE9wdGlvbmFsQXJnOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhE
eW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB3aXRo
RHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZEFyZ0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJn
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
SW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
OgorCisyMDEwLTA0LTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFVwZGF0ZSBjb21tZW50IHRvIGJldHRlciByZWZsZWN0IHJlYWxpdHku
CiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDJlNzUy
MmMzNGM0ZTUyNTczMDMyZDEwZDc2M2FhMjgwMWZiMjI3N2EuLjRkZDBiODFiMzk0ZDlkMTY1NzE2
NmU2MTA3MzJjNzE5NDI0NTcwOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Rm9ybUVsZW1lbnRDdXN0b20uY3BwCkBAIC02MSwxMyArNjEsNCBAQCBKU1ZhbHVlIEpTSFRNTEZv
cm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSQogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzRm9ybS0+Z2xvYmFsT2JqZWN0KCksIFN0
YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKLUpTVmFsdWUgSlNI
VE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQot
ewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxl
bWVudCo+KGltcGwoKSktPnN1Ym1pdChhY3RpdmVGcmFtZSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDNjYzNjYzVkMjMzNTAyNDZkNmI4M2E1OTJlZWViOTcxYmM4ZjI2MzYuLjlkNmJl
MzI2OWI1ZmQ2N2JhZWRiYTFhNTNmYjNhNzA2MTUyMTMxZGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY5MSw2ICsxNjkxLDE0IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICBpZiAoJGNhbGxXaXRoICYmICRj
YWxsV2l0aCBlcSAiRHluYW1pY0ZyYW1lIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJhbWUoZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYg
JHBhcmFtSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiZHlu
YW1pY0ZyYW1lIjsKKyAgICAgICAgICAgICAgICAgICAgJHBhcmFtSW5kZXgrKzsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoISRoYXNPcHRp
b25hbEFyZ3VtZW50cyAmJiAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT3B0aW9u
YWwifSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAg
ICBpbnQgYXJnc0NvdW50ID0gYXJncy5zaXplKCk7XG4iKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGYyYjk2MDQwNDI2YjlkY2M3MGRmMGYwMGE4
Y2QwZTBjYWM3MzQ5YWEuLjczZjE1ZWU4Nzc1OGQxM2RmOTYwZjA5MjhjMzExMTdlOWUzMWI3ZTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjMz
MiwxNSArMjMzMiwyMiBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogICAgICAg
ICAkZnVuY3Rpb25TdHJpbmcgPSAibGlzdEltcC0+JHtuYW1lfSgiOwogICAgIH0KIAotICAgIG15
ICRmaXJzdCA9IDE7CiAgICAgbXkgJGluZGV4ID0gMDsKIAorICAgIG15ICRjYWxsV2l0aCA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAg
ICBpZiAoJGNhbGxXaXRoICYmICRjYWxsV2l0aCBlcSAiRHluYW1pY0ZyYW1lIikgeworICAgICAg
ICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJl
dHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpO1xuIjsKKyAgICAgICAgJGZ1bmN0aW9uU3Ry
aW5nIC49ICIsICIgaWYgJGluZGV4OworICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImVudGVy
ZWRGcmFtZSI7CisgICAgICAgICRpbmRleCsrOworICAgICAgICAkbnVtYmVyT2ZQYXJhbWV0ZXJz
KysKKyAgICB9CisKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgewogICAgICAgICBpZiAoJGluZGV4IGVxICRudW1iZXJPZlBhcmFtZXRlcnMpIHsK
ICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRmaXJzdCkgeyAkZmly
c3QgPSAwOyB9Ci0gICAgICAgIGVsc2UgeyAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIjsgfQorICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiAkaW5kZXg7CiAgICAgICAgIG15ICRwYXJh
bU5hbWUgPSAkcGFyYW1ldGVyLT5uYW1lOwogICAgICAgICBteSAkcGFyYW1UeXBlID0gJHBhcmFt
ZXRlci0+dHlwZTsKIApAQCAtMjM1OSwyMSArMjM2NiwxOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhbGxTdHJpbmcoKQogICAgIH0KIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewotICAgICAgICAk
ZnVuY3Rpb25TdHJpbmcgLj0gIiwgIiBpZiBub3QgJGZpcnN0OworICAgICAgICAkZnVuY3Rpb25T
dHJpbmcgLj0gIiwgIiBpZiAkaW5kZXg7CiAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiY2Fs
bFN0YWNrLmdldCgpIjsKLSAgICAgICAgaWYgKCRmaXJzdCkgeyAkZmlyc3QgPSAwOyB9CiAgICAg
fQogCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TmVlZHNVc2VyR2VzdHVyZUNoZWNrIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIs
ICIgaWYgbm90ICRmaXJzdDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGlu
ZGV4OwogICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRvIHBhc3MgRE9NV3JhcHBlcldvcmxkIGFz
IGEgcGFyYW1ldGVyLgogICAgICAgICAjIFNlZSBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC81NDE4MgogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gInByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpIjsKLSAgICAgICAgaWYgKCRmaXJzdCkgeyAkZmlyc3QgPSAwOyB9CiAgICAgfQogCiAg
ICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewotICAgICAgICAkZnVuY3Rp
b25TdHJpbmcgLj0gIiwgIiBpZiBub3QgJGZpcnN0OworICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIiwgIiBpZiAkaW5kZXg7CiAgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiZWMiOwogICAg
IH0KICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIikiOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXgg
ZTI2NGRhNjU2ZTQzMzRkMTE3MjQ4MTA0YjE3MmU3NTk1MDdjYzdmMS4uMjYwNGRkYWUxYjg3OTUz
NDQxODc1MjY1ZDgxZWVkMWU2YWEyZmRjNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0xMzcs
NiArMTM3LDUxIEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZXhjZXB0aW9uIChX
ZWJLaXRET01UZXN0T2JqICpzZWxmLCBHRXJyb3IgKiplcnJvCiB9CiAKIHZvaWQKK3dlYmtpdF9k
b21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lIChXZWJLaXRET01UZXN0T2JqICpzZWxmKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBp
dGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPndpdGhEeW5hbWljRnJhbWUoKTsK
KworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRf
YXJnIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9uZyBpbnRfYXJnKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwgKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPndpdGhEeW5hbWljRnJhbWVBbmRBcmcoaW50X2FyZyk7
CisKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5k
X29wdGlvbmFsX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZywgZ2xv
bmcgb3B0aW9uYWxfYXJnKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOworICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPndp
dGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhpbnRfYXJnLCBvcHRpb25hbF9hcmcpOworCit9
CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2Vy
X2dlc3R1cmUgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcpCit7CisgICAg
Z19yZXR1cm5faWZfZmFpbCAoc2VsZik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0
dXJlKGludF9hcmcpOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5h
bWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVfYXNhZCAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwg
Z2xvbmcgaW50X2FyZywgZ2xvbmcgb3B0aW9uYWxfYXJnKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwgKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGl0ZW0tPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQoaW50X2Fy
Zywgb3B0aW9uYWxfYXJnKTsKKworfQorCit2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhv
ZF93aXRoX29wdGlvbmFsX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgb3B0KQog
ewogICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCBhZWI1
NzNhZDY5MDQ2YjAwNGRiNDk1OTEwY2RhMTc3ZDFmZGJlYjU0Li5lMTMyOWE2ZWZmZTExY2JiZmEy
MWI1MzFjODkwOTMxNjgyYjAwYTU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtNjgsNiArNjgsMjEg
QEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2V4Y2Vw
dGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgR0Vycm9yICoqZXJyb3IpOwogCiBXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lIChXZWJLaXRE
T01UZXN0T2JqICpzZWxmKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3dpdGhfZHluYW1pY19mcmFtZV9hbmRfYXJnIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9u
ZyBpbnRfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhf
ZHluYW1pY19mcmFtZV9hbmRfb3B0aW9uYWxfYXJnIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBn
bG9uZyBpbnRfYXJnLCBnbG9uZyBvcHRpb25hbF9hcmcpOworCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmUgKFdl
YktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcpOworCitXRUJLSVRfQVBJIHZvaWQK
K3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVf
YXNhZCAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZywgZ2xvbmcgb3B0aW9u
YWxfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93
aXRoX29wdGlvbmFsX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgb3B0KTsKIAog
V0VCS0lUX0FQSSB2b2lkCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAppbmRleCA4ZjhkYTdkMzQ4Y2JjODc2MDAzMDU2M2JlZDg1Yzc3MzczMTFlMDBl
Li40MGI1ZDFhNGVmM2ZmMzM0YjM2YmEzZTE4YTEzNzA4NWU4YTJmODRmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTEyNiw3ICsxMjYs
NyBAQCBib29sIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudAogI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2Vu
ZXJhdG9yKQogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQ
cm90b3R5cGVUYWJsZVZhbHVlc1sxM10gPQorc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzWzE4XSA9CiB7CiAgICAgeyAidm9pZE1ldGhvZCIs
IERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKSwgKGludHB0cl90KTAgVEhV
TktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAidm9pZE1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0
ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzIFRIVU5L
X0dFTkVSQVRPUigwKSB9LApAQCAtMTM3LDYgKzEzNywxMSBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbMTNdID0KICAgICB7ICJtZXRo
b2RXaXRoRXhjZXB0aW9uIiwgRG9udERlbGV0ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb24pLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJjdXN0
b21NZXRob2QiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kKSwgKGlu
dHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAiY3VzdG9tTWV0aG9kV2l0aEFy
Z3MiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MpLCAo
aW50cHRyX3QpMyBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJ3aXRoRHluYW1pY0ZyYW1l
IiwgRG9udERlbGV0ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWUpLCAoaW50cHRy
X3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJ3aXRoRHluYW1pY0ZyYW1lQW5kQXJn
IiwgRG9udERlbGV0ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcpLCAo
aW50cHRyX3QpMSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7ICJ3aXRoRHluYW1pY0ZyYW1l
QW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNG
cmFtZUFuZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KTIgVEhVTktfR0VORVJBVE9SKDApIH0sCisg
ICAgeyAid2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlIiwgRG9udERlbGV0ZXxGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSksIChpbnRwdHJfdCkxIFRI
VU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgIndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVy
ZUFTQUQiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVz
ZXJHZXN0dXJlQVNBRCksIChpbnRwdHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsg
Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpMSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAg
ICB7ICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIsIERvbnREZWxldGV8
RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyks
IChpbnRwdHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsgIm1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpLCAoaW50cHRyX3Qp
MyBUSFVOS19HRU5FUkFUT1IoMCkgfSwKQEAgLTE0Niw5ICsxNTEsOSBAQCBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbMTNdID0KICN1bmRl
ZiBUSFVOS19HRU5FUkFUT1IKIHN0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBK
U1Rlc3RPYmpQcm90b3R5cGVUYWJsZSA9CiAjaWYgRU5BQkxFKFBFUkZFQ1RfSEFTSF9TSVpFKQot
ICAgIHsgMjA0NywgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKKyAgICB7IDgx
OTEsIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CiAjZWxzZQotICAgIHsgMzUs
IDMxLCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OworICAgIHsgNjYsIDYzLCBK
U1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwogI2VuZGlmCiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RPYmpQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPYmpQcm90b3R5cGUiLCAw
LCAmSlNUZXN0T2JqUHJvdG90eXBlVGFibGUsIDAgfTsKQEAgLTQ2Miw2ICs0NjcsOTEgQEAgSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0YXRlKgogICAgIHJldHVybiBjYXN0ZWRUaGlzT2JqLT5jdXN0b21NZXRo
b2RXaXRoQXJncyhleGVjLCBhcmdzKTsKIH0KIAorSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
VU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RP
Ymo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7
CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9
IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworCisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lKGR5bmFt
aWNGcmFtZSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmco
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQoreworICAgIFVOVVNFRF9QQVJBTShhcmdzKTsKKyAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRp
Y19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEZy
YW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFtaWNGcmFtZShleGVjKTsKKyAgICBpbnQgaW50QXJn
ID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworCisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1l
QW5kQXJnKGR5bmFtaWNGcmFtZSwgaW50QXJnKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKworSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBVTlVTRURfUEFS
QU0oYXJncyk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZv
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKyAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2Fz
dGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWlj
RnJhbWUoZXhlYyk7CisgICAgaW50IGludEFyZyA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsK
KworICAgIGludCBhcmdzQ291bnQgPSBhcmdzLnNpemUoKTsKKyAgICBpZiAoYXJnc0NvdW50IDwg
MykgeworICAgICAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhkeW5hbWlj
RnJhbWUsIGludEFyZyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKwor
ICAgIGludCBvcHRpb25hbEFyZyA9IGFyZ3MuYXQoMikudG9JbnQzMihleGVjKTsKKworICAgIGlt
cC0+d2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnKGR5bmFtaWNGcmFtZSwgaW50QXJnLCBv
cHRpb25hbEFyZyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRV
c2VyR2VzdHVyZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
T2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAg
VGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwo
KSk7CisgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworICAg
IGludCBpbnRBcmcgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisKKyAgICBpbXAtPndpdGhE
eW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShkeW5hbWljRnJhbWUsIGludEFyZywgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKGV4ZWMpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNG
cmFtZUFuZFVzZXJHZXN0dXJlQVNBRChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGFy
Z3MpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1Zh
bHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXNPYmotPmltcGwoKSk7CisgICAgRnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1l
KGV4ZWMpOworICAgIGludCBpbnRBcmcgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisKKyAg
ICBpbnQgYXJnc0NvdW50ID0gYXJncy5zaXplKCk7CisgICAgaWYgKGFyZ3NDb3VudCA8IDMpIHsK
KyAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGR5bmFtaWNG
cmFtZSwgaW50QXJnKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgaW50IG9wdGlvbmFsQXJnID0gYXJncy5hdCgyKS50b0ludDMyKGV4ZWMpOworCisgICAgaW1w
LT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGR5bmFtaWNGcmFtZSwgaW50QXJn
LCBvcHRpb25hbEFyZywgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpKTsKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKwogSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBVTlVT
RURfUEFSQU0oYXJncyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCmluZGV4IGU3NDE3OGY5NzlhYTYwYjJkYTlkY2U4YjZjYWRlNjQ0YWQyYTAyZDEuLmJi
YTFjMjU5MTBkOWViMDljZDBmOTlmMzBmMDQ0NWM4YjYxYmE3MDYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC05NCw2ICs5NCwxMSBAQCBKU0M6
OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhv
ZFdpdGhBcmdzKEpTQzo6RXhlYwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CiBKU0M6OkpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhv
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpT
Qzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworSlNDOjpKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1l
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0Jik7CitKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKK0pTQzo6SlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFt
ZUFuZE9wdGlvbmFsQXJnKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CitKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6
QXJnTGlzdCYpOworSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CiBK
U0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpT
VmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNv
bnN0IEpTQzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3MoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OkFyZ0xpc3QmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLmgKaW5kZXggOGJlODA3YjBkY2I3YTRjNWRmYzkwMGYzZjUzN2UwOGU5MDljNmI4
Ny4uOWRiOTI1YWIwNWE1NTQ0YjMwNDlhYzVkMjcyODk3ZTcyYmY5MTcyMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTU4LDYgKzU4
LDExIEBACiAtICh2b2lkKW1ldGhvZFdpdGhFeGNlcHRpb247CiAtICh2b2lkKWN1c3RvbU1ldGhv
ZDsKIC0gKHZvaWQpY3VzdG9tTWV0aG9kV2l0aEFyZ3M6KGludClpbnRBcmcgc3RyQXJnOihOU1N0
cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CistICh2b2lkKXdpdGhE
eW5hbWljRnJhbWU7CistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVBbmRBcmc6KGludClpbnRBcmc7
CistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZzooaW50KWludEFyZyBvcHRp
b25hbEFyZzooaW50KW9wdGlvbmFsQXJnOworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lQW5kVXNl
ckdlc3R1cmU6KGludClpbnRBcmc7CistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2Vz
dHVyZUFTQUQ6KGludClpbnRBcmcgb3B0aW9uYWxBcmc6KGludClvcHRpb25hbEFyZzsKIC0gKHZv
aWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0OwogLSAodm9pZCltZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZzooaW50KW5vbk9wdCBvcHQ6KGludClvcHQ7CiAtICh2
b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnczooaW50KW5vbk9w
dCBvcHQxOihpbnQpb3B0MSBvcHQyOihpbnQpb3B0MjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbSBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCA1N2E5ZmZhYTQ1M2M0ZmExMGM1
N2QyZmQwMjkyOGY0YmNlMGRhZTlmLi40YzYwZDA5NTExOThkYjM2OTMyYmIxMjQ1YmI1Mzk1NTA2
NzhmMzkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmoubW0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCkBAIC0xOTksNiArMTk5LDMxIEBACiAgICAgSU1QTC0+Y3VzdG9tTWV0aG9kV2l0
aEFyZ3MoaW50QXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSk7CiB9CiAKKy0gKHZvaWQpd2l0aER5
bmFtaWNGcmFtZQoreworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWUoKTsKK30KKworLSAodm9p
ZCl3aXRoRHluYW1pY0ZyYW1lQW5kQXJnOihpbnQpaW50QXJnCit7CisgICAgSU1QTC0+d2l0aER5
bmFtaWNGcmFtZUFuZEFyZyhpbnRBcmcpOworfQorCistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVB
bmRPcHRpb25hbEFyZzooaW50KWludEFyZyBvcHRpb25hbEFyZzooaW50KW9wdGlvbmFsQXJnCit7
CisgICAgSU1QTC0+d2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnKGludEFyZywgb3B0aW9u
YWxBcmcpOworfQorCistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZTooaW50
KWludEFyZworeworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShpbnRB
cmcpOworfQorCistICh2b2lkKXdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQ6KGlu
dClpbnRBcmcgb3B0aW9uYWxBcmc6KGludClvcHRpb25hbEFyZworeworICAgIElNUEwtPndpdGhE
eW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQoaW50QXJnLCBvcHRpb25hbEFyZyk7Cit9CisK
IC0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0CiB7CiAgICAgSU1QTC0+bWV0
aG9kV2l0aE9wdGlvbmFsQXJnKG9wdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RPYmouaWRsCmluZGV4IGQyZjQwMjdlZWYwOWUxOWUyZDZmMGEyNzI2Y2UzMTk0OTVmOGI5ODIu
LjU5ZDUxNGY0NmNlYTlkZGMzNmJjZTcwODM1ZDdiZGU2MjZkMjZhMDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC01Nyw2ICs1NywxMyBAQCBtb2R1bGUg
dGVzdCB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgY3VzdG9tTWV0aG9kKCk7CiAgICAgICAgIFtD
dXN0b21dIHZvaWQgY3VzdG9tTWV0aG9kV2l0aEFyZ3MoaW4gbG9uZyBpbnRBcmcsIGluIERPTVN0
cmluZyBzdHJBcmcsIGluIFRlc3RPYmogb2JqQXJnKTsKIAorICAgICAgICAvLyAnQ2FsbFdpdGgn
IGV4dGVuZGVkIGF0dHJpYnV0ZQorICAgICAgICBbQ2FsbFdpdGg9RHluYW1pY0ZyYW1lXSB2b2lk
IHdpdGhEeW5hbWljRnJhbWUoKTsKKyAgICAgICAgW0NhbGxXaXRoPUR5bmFtaWNGcmFtZV0gdm9p
ZCB3aXRoRHluYW1pY0ZyYW1lQW5kQXJnKGluIGxvbmcgaW50QXJnKTsKKyAgICAgICAgW0NhbGxX
aXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoaW4g
bG9uZyBpbnRBcmcsIGluIFtPcHRpb25hbF0gbG9uZyBvcHRpb25hbEFyZyk7CisgICAgICAgIFtO
ZWVkc1VzZXJHZXN0dXJlQ2hlY2ssIENhbGxXaXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmUoaW4gbG9uZyBpbnRBcmcpOworICAgICAgICBbTmVlZHNV
c2VyR2VzdHVyZUNoZWNrLCBDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNG
cmFtZUFuZFVzZXJHZXN0dXJlQVNBRChpbiBsb25nIGludEFyZywgaW4gW09wdGlvbmFsXSBsb25n
IG9wdGlvbmFsQXJnKTsKKwogICAgICAgICAvLyAnT3B0aW9uYWwnIGV4dGVuZGVkIGF0dHJpYnV0
ZQogICAgICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEFyZyhpbiBbT3B0aW9uYWxdIGxv
bmcgb3B0KTsKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyhpbiBsb25nIG5vbk9wdCwgaW4gW09wdGlvbmFsXSBsb25nIG9wdCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBkNTE4ODRl
NmZlOTU2OTAxMmNlOWQ2YzE2Zjg1YTE3OTA5OTk2OTkxLi4xNTBiOWVlYTRiNmU3NTdlOWU2MjU3
Njc1MDdhNWYxOTgwNzJkZjQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIzMyw2ICsyMzMsNjcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBtZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXIKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoRHluYW1p
Y0ZyYW1lIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKyAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFt
ZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lKGVudGVyZWRG
cmFtZSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWljRnJhbWVBbmRBcmdDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0
aER5bmFtaWNGcmFtZUFuZEFyZyIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFyZyA9IHRvSW50MzIoYXJnc1swXSk7
CisgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRl
cmVkQ29udGV4dCgpOworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZEFyZyhlbnRlcmVkRnJh
bWUsIGludEFyZyk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFy
Z0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJE
T00uVGVzdE9iai53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmciKTsKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBpbnRB
cmcgPSB0b0ludDMyKGFyZ3NbMF0pOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKKyAg
ICAgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRl
cmVkQ29udGV4dCgpOworICAgICAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFy
ZyhlbnRlcmVkRnJhbWUsIGludEFyZyk7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICB9CisgICAgaW50IG9wdGlvbmFsQXJnID0gdG9JbnQzMihhcmdzWzFdKTsK
KyAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVy
ZWRDb250ZXh0KCk7CisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50
ZXJlZEZyYW1lLCBpbnRBcmcsIG9wdGlvbmFsQXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFt
aWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2Vz
dHVyZSIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CisgICAgaW50IGludEFyZyA9IHRvSW50MzIoYXJnc1swXSk7CisgICAgRnJhbWUqIGVu
dGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOwor
ICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKGVudGVyZWRGcmFtZSwgaW50
QXJnLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWlj
RnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZFVzZXJH
ZXN0dXJlQVNBRCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFyZyA9IHRvSW50MzIoYXJnc1swXSk7CisgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPD0gMSkgeworICAgICAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQ
cm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgICAgIGltcC0+d2l0
aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRChlbnRlcmVkRnJhbWUsIGludEFyZywgcHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgfQorICAgIGludCBvcHRpb25hbEFyZyA9IHRvSW50MzIoYXJnc1sxXSk7Cisg
ICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVk
Q29udGV4dCgpOworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRChl
bnRlcmVkRnJhbWUsIGludEFyZywgb3B0aW9uYWxBcmcsIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdp
dGhPcHRpb25hbEFyZyIpOwpAQCAtMzYzLDYgKzQyNCwxMSBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZENhbGxiYWNrIFRlc3RPYmpDYWxsYmFja3NbXSA9IHsKICAgICB7Im1ldGhvZFdpdGhFeGNlcHRp
b24iLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhFeGNlcHRpb25DYWxsYmFja30sCiAgICAg
eyJjdXN0b21NZXRob2QiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZENhbGxiYWNrfSwKICAgICB7
ImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgVjhUZXN0T2JqOjpjdXN0b21NZXRob2RXaXRoQXJnc0Nh
bGxiYWNrfSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWUiLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhE
eW5hbWljRnJhbWVDYWxsYmFja30sCisgICAgeyJ3aXRoRHluYW1pY0ZyYW1lQW5kQXJnIiwgVGVz
dE9iakludGVybmFsOjp3aXRoRHluYW1pY0ZyYW1lQW5kQXJnQ2FsbGJhY2t9LAorICAgIHsid2l0
aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjp3aXRoRHluYW1p
Y0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFja30sCisgICAgeyJ3aXRoRHluYW1pY0ZyYW1lQW5k
VXNlckdlc3R1cmUiLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2Vz
dHVyZUNhbGxiYWNrfSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQi
LCBUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxs
YmFja30sCiAgICAgeyJtZXRob2RXaXRoT3B0aW9uYWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6Om1l
dGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgICB7Im1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrfSwKICAgICB7Im1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJncyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2FsbGJhY2t9LApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDBh
OWU4ZGRjMjRiYmUzOGU0NmMxNWZiYWQ4ZWY4NmQwZTIwYjkxYzIuLjc4NmE5NmE5ZTVhMGZhMTEx
Yzc0Mzk2NWVhMzQ1NjUxNGE3NmEzNGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTgxLDE2ICs4MSw0IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluCiAgICAgcmV0dXJuIHRvVjgoY29sbGVjdGlvbik7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtRWxlbWVudDo6c3VibWl0Q2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5IVE1M
Rm9ybUVsZW1lbnQuc3VibWl0KCkiKTsKLSAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBWOEhU
TUxGb3JtRWxlbWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7Ci0gICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgIGZvcm0tPnN1Ym1p
dChmcmFtZSk7Ci0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5pZGwg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAppbmRleCBkNjM5YzM0MWQ2ZWUyYjlj
OTM4ZGNiMTM5ZDM1M2RlNjE1Yzc3MTNkLi4wNjU0YTdkMjI4NTIyOTI1OTdmOWI5MWZhYzJmNWMy
NTU2NWI1OWIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbApAQCAtMzUsNyArMzUsNyBAQCBt
b2R1bGUgaHRtbCB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyAgICAgICBtZXRob2Q7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICB0YXJnZXQ7CiAg
ICAgICAgIAotICAgICAgICBbQ3VzdG9tXSB2b2lkIHN1Ym1pdCgpOworICAgICAgICBbQ2FsbFdp
dGg9RHluYW1pY0ZyYW1lXSB2b2lkIHN1Ym1pdCgpOwogICAgICAgICB2b2lkIHJlc2V0KCk7CiAg
ICAgICAgIGJvb2xlYW4gIGNoZWNrVmFsaWRpdHkoKTsKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54386</attachid>
            <date>2010-04-26 23:26:57 -0700</date>
            <delta_ts>2010-04-26 23:52:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38174-20100426232655.patch</filename>
            <type>text/plain</type>
            <size>29323</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTgzYzliY2EzNTcyZDNkY2NkYmYyODJlMjZhYzkzYzJlMjM4ZjdkMC4uMDQ0MTBjYjUwODRkNTQ0
NGJiYzFlMjFiYjAzZmJlY2Y5ZDExMDE0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MiBAQAogMjAxMC0wNC0yNiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDYWxsV2l0aD1EeW5hbWljRnJhbWUgdG8gQ29kZUdl
bmVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzgxNzQKKworICAgICAgICBJJ3ZlIG9ubHkgdXNlZCB0aGlzIGluIG9uZSBpbnN0YW5jZSwgYnV0
IHRoaXMgaXMgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBJCisgICAgICAgIHRoaW5rIHdpbGwgaGVscCBy
ZW1vdmUgYSBidW5jaCBvZiBjdXN0b20gYmluZGluZ3MgY29kZS4gIEFsc28sIGFkZGVkIGEKKyAg
ICAgICAgZmV3IHRlc3RzIG9mIHRyaWNreSBhcmd1bWVudCBjYXNlcy4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
d2l0aF9keW5hbWljX2ZyYW1lKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9k
eW5hbWljX2ZyYW1lX2FuZF9hcmcpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93aXRo
X2R5bmFtaWNfZnJhbWVfYW5kX29wdGlvbmFsX2FyZyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVfYXNh
ZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9u
YWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
RHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RP
Ymogd2l0aER5bmFtaWNGcmFtZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhEeW5hbWlj
RnJhbWVBbmRBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aER5bmFtaWNGcmFtZUFu
ZE9wdGlvbmFsQXJnOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhE
eW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB3aXRo
RHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZEFyZ0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJn
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
SW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxG
b3JtRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
OgorCisyMDEwLTA0LTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAg
ICAgVW5yZXZpZXdlZC4gIFVwZGF0ZSBjb21tZW50IHRvIGJldHRlciByZWZsZWN0IHJlYWxpdHku
CiAKICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDJlNzUy
MmMzNGM0ZTUyNTczMDMyZDEwZDc2M2FhMjgwMWZiMjI3N2EuLjRkZDBiODFiMzk0ZDlkMTY1NzE2
NmU2MTA3MzJjNzE5NDI0NTcwOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Rm9ybUVsZW1lbnRDdXN0b20uY3BwCkBAIC02MSwxMyArNjEsNCBAQCBKU1ZhbHVlIEpTSFRNTEZv
cm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSQogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzRm9ybS0+Z2xvYmFsT2JqZWN0KCksIFN0
YXRpY05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKLUpTVmFsdWUgSlNI
VE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQot
ewotICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0g
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxl
bWVudCo+KGltcGwoKSktPnN1Ym1pdChhY3RpdmVGcmFtZSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDNjYzNjYzVkMjMzNTAyNDZkNmI4M2E1OTJlZWViOTcxYmM4ZjI2MzYuLmE3ZTc5
NWJlZDkyYjFiYjBlZTE1ZTQ2MDYwMzZjZmE5ZGE0OGZjNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY5MSw2ICsxNjkxLDE2IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IlNjcmlwdENhbGxTdGFjay5oIn0gPSAxOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICBpZiAoJGNhbGxXaXRoICYmICRj
YWxsV2l0aCBlcSAiRHluYW1pY0ZyYW1lIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJhbWUoZXhl
Yyk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFkeW5hbWljRnJhbWUpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OworICAgICAgICAgICAg
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImR5bmFtaWNGcmFtZSI7CisgICAgICAgICAgICAg
ICAgICAgICRwYXJhbUluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAg
ICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCEkaGFzT3B0aW9uYWxBcmd1bWVudHMgJiYgJHBhcmFtZXRl
ci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4gICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6
ZSgpO1xuIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpp
bmRleCBmMmI5NjA0MDQyNmI5ZGNjNzBkZjBmMDBhOGNkMGUwY2FjNzM0OWFhLi4zZmM4ZTdjYjNm
NGQ5ZmM0ZDZiMTg0Y2I5YTcxZTRjM2Q5MTRjMDFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTIzMzIsMTUgKzIzMzIsMjQgQEAgc3ViIEdlbmVy
YXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gImxpc3RJ
bXAtPiR7bmFtZX0oIjsKICAgICB9CiAKLSAgICBteSAkZmlyc3QgPSAxOwogICAgIG15ICRpbmRl
eCA9IDA7CiAKKyAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgaWYgKCRjYWxsV2l0aCAmJiAkY2FsbFdp
dGggZXEgIkR5bmFtaWNGcmFtZSIpIHsKKyAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIkZy
YW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRl
eHQoKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJpZiAoIWVudGVyZWRGcmFt
ZSlcbiI7CisgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTtcbiI7CisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRpbmRleDsK
KyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJlbnRlcmVkRnJhbWUiOworICAgICAgICAkaW5k
ZXgrKzsKKyAgICAgICAgJG51bWJlck9mUGFyYW1ldGVycysrCisgICAgfQorCiAgICAgZm9yZWFj
aCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgaWYg
KCRpbmRleCBlcSAkbnVtYmVyT2ZQYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICBsYXN0OwogICAg
ICAgICB9Ci0gICAgICAgIGlmICgkZmlyc3QpIHsgJGZpcnN0ID0gMDsgfQotICAgICAgICBlbHNl
IHsgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICI7IH0KKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49
ICIsICIgaWYgJGluZGV4OwogICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtZXRlci0+bmFt
ZTsKICAgICAgICAgbXkgJHBhcmFtVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAKQEAgLTIzNTks
MjEgKzIzNjgsMTkgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICB9CiAK
ICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIg
aWYgbm90ICRmaXJzdDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4
OwogICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImNhbGxTdGFjay5nZXQoKSI7Ci0gICAgICAg
IGlmICgkZmlyc3QpIHsgJGZpcnN0ID0gMDsgfQogICAgIH0KIAogICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9
KSB7Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmIG5vdCAkZmlyc3Q7CisgICAg
ICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRpbmRleDsKICAgICAgICAgIyBGSVhNRTog
V2UgbmVlZCB0byBwYXNzIERPTVdyYXBwZXJXb3JsZCBhcyBhIHBhcmFtZXRlci4KICAgICAgICAg
IyBTZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTQxODIKICAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nIC49ICJwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSI7Ci0gICAgICAgIGlmICgk
Zmlyc3QpIHsgJGZpcnN0ID0gMDsgfQogICAgIH0KIAogICAgIGlmIChAeyRmdW5jdGlvbi0+cmFp
c2VzRXhjZXB0aW9uc30pIHsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgbm90
ICRmaXJzdDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImVjIjsKICAgICB9CiAgICAgJGZ1bmN0aW9uU3RyaW5n
IC49ICIpIjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IGUyNjRkYTY1NmU0MzM0ZDExNzI0ODEw
NGIxNzJlNzU5NTA3Y2M3ZjEuLjI2MDRkZGFlMWI4Nzk1MzQ0MTg3NTI2NWQ4MWVlZDFlNmFhMmZk
YzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMTM3LDYgKzEzNyw1MSBAQCB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX21ldGhvZF93aXRoX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwg
R0Vycm9yICoqZXJybwogfQogCiB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1p
Y19mcmFtZSAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
IChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBpdGVtLT53aXRoRHluYW1pY0ZyYW1lKCk7CisKK30KKwordm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAq
c2VsZiwgZ2xvbmcgaW50X2FyZykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVt
LT53aXRoRHluYW1pY0ZyYW1lQW5kQXJnKGludF9hcmcpOworCit9CisKK3ZvaWQKK3dlYmtpdF9k
b21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF9vcHRpb25hbF9hcmcgKFdlYktpdERP
TVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9wdGlvbmFsX2FyZykKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9u
YWxBcmcoaW50X2FyZywgb3B0aW9uYWxfYXJnKTsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlIChXZWJLaXRET01UZXN0
T2JqICpzZWxmLCBnbG9uZyBpbnRfYXJnKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYp
OworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IGl0ZW0tPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShpbnRfYXJnKTsKKworfQorCit2
b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0
dXJlX2FzYWQgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9w
dGlvbmFsX2FyZykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53aXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGludF9hcmcsIG9wdGlvbmFsX2FyZyk7CisKK30K
Kwordm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmcgKFdl
YktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIG9wdCkKIHsKICAgICBnX3JldHVybl9pZl9mYWls
IChzZWxmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggYWViNTczYWQ2OTA0NmIwMDRkYjQ5NTkxMGNk
YTE3N2QxZmRiZWI1NC4uZTEzMjlhNmVmZmUxMWNiYmZhMjFiNTMxYzg5MDkzMTY4MmIwMGE1OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmgKQEAgLTY4LDYgKzY4LDIxIEBAIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmog
KnNlbGYsIEdFcnJvciAqKmVycm9yKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZSAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZik7CisKK1dF
QktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5k
X2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZyk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX29wdGlv
bmFsX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZywgZ2xvbmcgb3B0
aW9uYWxfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhf
ZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBn
bG9uZyBpbnRfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dp
dGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlX2FzYWQgKFdlYktpdERPTVRlc3RPYmog
KnNlbGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9wdGlvbmFsX2FyZyk7CisKK1dFQktJVF9BUEkg
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmcgKFdlYktp
dERPTVRlc3RPYmogKnNlbGYsIGdsb25nIG9wdCk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOGY4ZGE3
ZDM0OGNiYzg3NjAwMzA1NjNiZWQ4NWM3NzM3MzExZTAwZS4uODQ5OWNiZTRkNzQ2Njc1MzVlNjNi
YzEyODFiYzM5MzQzNDZkYmJjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnQKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikKICNlbmRpZgogCi1zdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbMTNd
ID0KK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZh
bHVlc1sxOF0gPQogewogICAgIHsgInZvaWRNZXRob2QiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVm9pZE1ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAg
IHsgInZvaWRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lk
TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMyBUSFVOS19HRU5FUkFUT1IoMCkgfSwKQEAgLTEz
Nyw2ICsxMzcsMTEgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3Rv
dHlwZVRhYmxlVmFsdWVzWzEzXSA9CiAgICAgeyAibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIERvbnRE
ZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKSwgKGludHB0cl90KTAg
VEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAiY3VzdG9tTWV0aG9kIiwgRG9udERlbGV0ZXxG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRP
UigwKSB9LAogICAgIHsgImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZXxGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMgVEhVTktfR0VORVJB
VE9SKDApIH0sCisgICAgeyAid2l0aER5bmFtaWNGcmFtZSIsIERvbnREZWxldGV8RnVuY3Rpb24s
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDAp
IH0sCisgICAgeyAid2l0aER5bmFtaWNGcmFtZUFuZEFyZyIsIERvbnREZWxldGV8RnVuY3Rpb24s
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kQXJnKSwgKGludHB0cl90KTEgVEhVTktfR0VORVJB
VE9SKDApIH0sCisgICAgeyAid2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnIiwgRG9udERl
bGV0ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyksIChp
bnRwdHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgIndpdGhEeW5hbWljRnJhbWVB
bmRVc2VyR2VzdHVyZSIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0Zy
YW1lQW5kVXNlckdlc3R1cmUpLCAoaW50cHRyX3QpMSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAg
ICB7ICJ3aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEIiwgRG9udERlbGV0ZXxGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQpLCAoaW50cHRy
X3QpMiBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBcmci
LCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKSwgKGlu
dHB0cl90KTEgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAibWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpMiBUSFVOS19HRU5F
UkFUT1IoMCkgfSwKICAgICB7ICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3MiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZl
RnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzKSwgKGludHB0cl90KTMgVEhVTktfR0VORVJBVE9SKDApIH0s
CkBAIC0xNDYsOSArMTUxLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alByb3RvdHlwZVRhYmxlVmFsdWVzWzEzXSA9CiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0
aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUg
PQogI2lmIEVOQUJMRShQRVJGRUNUX0hBU0hfU0laRSkKLSAgICB7IDIwNDcsIEpTVGVzdE9ialBy
b3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07CisgICAgeyA4MTkxLCBKU1Rlc3RPYmpQcm90b3R5cGVU
YWJsZVZhbHVlcywgMCB9OwogI2Vsc2UKLSAgICB7IDM1LCAzMSwgSlNUZXN0T2JqUHJvdG90eXBl
VGFibGVWYWx1ZXMsIDAgfTsKKyAgICB7IDY2LCA2MywgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVW
YWx1ZXMsIDAgfTsKICNlbmRpZgogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqUHJvdG90eXBl
OjpzX2luZm8gPSB7ICJUZXN0T2JqUHJvdG90eXBlIiwgMCwgJkpTVGVzdE9ialByb3RvdHlwZVRh
YmxlLCAwIH07CkBAIC00NjIsNiArNDY3LDEwMSBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqCiAg
ICAgcmV0dXJuIGNhc3RlZFRoaXNPYmotPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGV4ZWMsIGFyZ3Mp
OwogfQogCitKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoRHluYW1pY0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBVTlVTRURfUEFSQU0oYXJncyk7Cisg
ICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsK
KyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+
aW1wbCgpKTsKKyAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7
CisgICAgaWYgKCFkeW5hbWljRnJhbWUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
CisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lKGR5bmFtaWNGcmFtZSk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIFVOVVNF
RF9QQVJBTShhcmdzKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5
bmFtaWNGcmFtZShleGVjKTsKKyAgICBpZiAoIWR5bmFtaWNGcmFtZSkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgaW50IGludEFyZyA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVj
KTsKKworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZEFyZyhkeW5hbWljRnJhbWUsIGludEFy
Zyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFR5cGVFcnJvcik7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiog
aW1wID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAg
RnJhbWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworICAgIGlmICghZHlu
YW1pY0ZyYW1lKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQgaW50QXJn
ID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworCisgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Mu
c2l6ZSgpOworICAgIGlmIChhcmdzQ291bnQgPCAzKSB7CisgICAgICAgIGltcC0+d2l0aER5bmFt
aWNGcmFtZUFuZE9wdGlvbmFsQXJnKGR5bmFtaWNGcmFtZSwgaW50QXJnKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgaW50IG9wdGlvbmFsQXJnID0gYXJncy5h
dCgyKS50b0ludDMyKGV4ZWMpOworCisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9u
YWxBcmcoZHluYW1pY0ZyYW1lLCBpbnRBcmcsIG9wdGlvbmFsQXJnKTsKKyAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oYXJncyk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVz
dE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9y
KTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoq
Pihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBGcmFtZSogZHluYW1pY0ZyYW1l
ID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7CisgICAgaWYgKCFkeW5hbWljRnJhbWUpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGludCBpbnRBcmcgPSBhcmdzLmF0KDEpLnRvSW50
MzIoZXhlYyk7CisKKyAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShkeW5h
bWljRnJhbWUsIGludEFyZywgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFR5cGVFcnJvcik7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8
SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgRnJhbWUqIGR5
bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworICAgIGlmICghZHluYW1pY0ZyYW1l
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQgaW50QXJnID0gYXJncy5h
dCgxKS50b0ludDMyKGV4ZWMpOworCisgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6ZSgpOwor
ICAgIGlmIChhcmdzQ291bnQgPCAzKSB7CisgICAgICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFu
ZFVzZXJHZXN0dXJlQVNBRChkeW5hbWljRnJhbWUsIGludEFyZyk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGludCBvcHRpb25hbEFyZyA9IGFyZ3MuYXQoMiku
dG9JbnQzMihleGVjKTsKKworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJl
QVNBRChkeW5hbWljRnJhbWUsIGludEFyZywgb3B0aW9uYWxBcmcsIHByb2Nlc3NpbmdVc2VyR2Vz
dHVyZShleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBlNzQxNzhmOTc5YWE2MGIyZGE5
ZGNlOGI2Y2FkZTY0NGFkMmEwMmQxLi5iYmExYzI1OTEwZDllYjA5Y2QwZjk5ZjMwZjA0NDVjOGI2
MWJhNzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aApAQCAtOTQsNiArOTQsMTEgQEAgSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWMKIEpTQzo6SlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0
IEpTQzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpTQzo6SlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3Mo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6
OkFyZ0xpc3QmKTsKK0pTQzo6SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3Qq
LCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworSlNDOjpKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kQXJn
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0Jik7CitKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworSlND
OjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKK0pTQzo6SlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJH
ZXN0dXJlQVNBRChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUs
IGNvbnN0IEpTQzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpT
Qzo6SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpTQzo6SlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDhiZTgwN2IwZGNiN2E0
YzVkZmM5MDBmM2Y1MzdlMDhlOTA5YzZiODcuLjlkYjkyNWFiMDVhNTU0NGIzMDQ5YWM1ZDI3Mjg5
N2U3MmJmOTE3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCkBAIC01OCw2ICs1OCwxMSBAQAogLSAodm9pZCltZXRob2RXaXRoRXhjZXB0
aW9uOwogLSAodm9pZCljdXN0b21NZXRob2Q7CiAtICh2b2lkKWN1c3RvbU1ldGhvZFdpdGhBcmdz
OihpbnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2Jq
ICopb2JqQXJnOworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lOworLSAodm9pZCl3aXRoRHluYW1p
Y0ZyYW1lQW5kQXJnOihpbnQpaW50QXJnOworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lQW5kT3B0
aW9uYWxBcmc6KGludClpbnRBcmcgb3B0aW9uYWxBcmc6KGludClvcHRpb25hbEFyZzsKKy0gKHZv
aWQpd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlOihpbnQpaW50QXJnOworLSAodm9pZCl3
aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEOihpbnQpaW50QXJnIG9wdGlvbmFsQXJn
OihpbnQpb3B0aW9uYWxBcmc7CiAtICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEFyZzooaW50KW9w
dDsKIC0gKHZvaWQpbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmc6KGludClu
b25PcHQgb3B0OihpbnQpb3B0OwogLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3M6KGludClub25PcHQgb3B0MTooaW50KW9wdDEgb3B0MjooaW50KW9wdDI7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmoubW0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0K
aW5kZXggNTdhOWZmYWE0NTNjNGZhMTBjNTdkMmZkMDI5MjhmNGJjZTBkYWU5Zi4uNGM2MGQwOTUx
MTk4ZGIzNjkzMmJiMTI0NWJiNTM5NTUwNjc4ZjM5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTk5LDYgKzE5OSwzMSBAQAog
ICAgIElNUEwtPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCBjb3JlKG9iakFy
ZykpOwogfQogCistICh2b2lkKXdpdGhEeW5hbWljRnJhbWUKK3sKKyAgICBJTVBMLT53aXRoRHlu
YW1pY0ZyYW1lKCk7Cit9CisKKy0gKHZvaWQpd2l0aER5bmFtaWNGcmFtZUFuZEFyZzooaW50KWlu
dEFyZworeworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWVBbmRBcmcoaW50QXJnKTsKK30KKwor
LSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmc6KGludClpbnRBcmcgb3B0aW9u
YWxBcmc6KGludClvcHRpb25hbEFyZworeworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWVBbmRP
cHRpb25hbEFyZyhpbnRBcmcsIG9wdGlvbmFsQXJnKTsKK30KKworLSAodm9pZCl3aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmU6KGludClpbnRBcmcKK3sKKyAgICBJTVBMLT53aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmUoaW50QXJnKTsKK30KKworLSAodm9pZCl3aXRoRHluYW1pY0Zy
YW1lQW5kVXNlckdlc3R1cmVBU0FEOihpbnQpaW50QXJnIG9wdGlvbmFsQXJnOihpbnQpb3B0aW9u
YWxBcmcKK3sKKyAgICBJTVBMLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGlu
dEFyZywgb3B0aW9uYWxBcmcpOworfQorCiAtICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEFyZzoo
aW50KW9wdAogewogICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBkMmY0MDI3ZWVmMDllMTll
MmQ2ZjBhMjcyNmNlMzE5NDk1ZjhiOTgyLi41OWQ1MTRmNDZjZWE5ZGRjMzZiY2U3MDgzNWQ3YmRl
NjI2ZDI2YTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApA
QCAtNTcsNiArNTcsMTMgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGN1
c3RvbU1ldGhvZCgpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGN1c3RvbU1ldGhvZFdpdGhBcmdz
KGluIGxvbmcgaW50QXJnLCBpbiBET01TdHJpbmcgc3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZyk7
CiAKKyAgICAgICAgLy8gJ0NhbGxXaXRoJyBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgW0Nh
bGxXaXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHluYW1pY0ZyYW1lKCk7CisgICAgICAgIFtD
YWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNGcmFtZUFuZEFyZyhpbiBsb25n
IGludEFyZyk7CisgICAgICAgIFtDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFt
aWNGcmFtZUFuZE9wdGlvbmFsQXJnKGluIGxvbmcgaW50QXJnLCBpbiBbT3B0aW9uYWxdIGxvbmcg
b3B0aW9uYWxBcmcpOworICAgICAgICBbTmVlZHNVc2VyR2VzdHVyZUNoZWNrLCBDYWxsV2l0aD1E
eW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKGluIGxvbmcg
aW50QXJnKTsKKyAgICAgICAgW05lZWRzVXNlckdlc3R1cmVDaGVjaywgQ2FsbFdpdGg9RHluYW1p
Y0ZyYW1lXSB2b2lkIHdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQoaW4gbG9uZyBp
bnRBcmcsIGluIFtPcHRpb25hbF0gbG9uZyBvcHRpb25hbEFyZyk7CisKICAgICAgICAgLy8gJ09w
dGlvbmFsJyBleHRlbmRlZCBhdHRyaWJ1dGUKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0
aW9uYWxBcmcoaW4gW09wdGlvbmFsXSBsb25nIG9wdCk7CiAgICAgICAgIHZvaWQgICAgbWV0aG9k
V2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoaW4gbG9uZyBub25PcHQsIGluIFtPcHRp
b25hbF0gbG9uZyBvcHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggZDUxODg0ZTZmZTk1NjkwMTJjZTlkNmMxNmY4NWExNzkwOTk5Njk5
MS4uOGUzZWNmMzk3OGUxMzI5NGE5NmZjMzZiNzk4Njc1ZGFlYmU5Y2I5NSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0yMzMsNiArMjMz
LDgxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWlj
RnJhbWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZSIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRnJhbWUqIGVudGVyZWRGcmFt
ZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICgh
ZW50ZXJlZEZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIGltcC0+
d2l0aER5bmFtaWNGcmFtZShlbnRlcmVkRnJhbWUpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1p
Y0ZyYW1lQW5kQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRBcmciKTsKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBp
bnRBcmcgPSB0b0ludDMyKGFyZ3NbMF0pOworICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFBy
b3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBpZiAoIWVudGVyZWRG
cmFtZSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpbXAtPndpdGhEeW5h
bWljRnJhbWVBbmRBcmcoZW50ZXJlZEZyYW1lLCBpbnRBcmcpOworICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
RHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZE9w
dGlvbmFsQXJnIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKyAgICBpbnQgaW50QXJnID0gdG9JbnQzMihhcmdzWzBdKTsKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA8PSAxKSB7CisgICAgICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFBy
b3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFlbnRl
cmVkRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBp
bXAtPndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhlbnRlcmVkRnJhbWUsIGludEFyZyk7
CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9CisgICAgaW50
IG9wdGlvbmFsQXJnID0gdG9JbnQzMihhcmdzWzFdKTsKKyAgICBGcmFtZSogZW50ZXJlZEZyYW1l
ID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgaWYgKCFl
bnRlcmVkRnJhbWUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgaW1wLT53
aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50ZXJlZEZyYW1lLCBpbnRBcmcsIG9wdGlv
bmFsQXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSIpOworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFyZyA9
IHRvSW50MzIoYXJnc1swXSk7CisgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJl
dHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICghZW50ZXJlZEZyYW1lKQor
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIGltcC0+d2l0aER5bmFtaWNGcmFt
ZUFuZFVzZXJHZXN0dXJlKGVudGVyZWRGcmFtZSwgaW50QXJnLCBwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRCIpOworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGlu
dEFyZyA9IHRvSW50MzIoYXJnc1swXSk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewor
ICAgICAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVu
dGVyZWRDb250ZXh0KCk7CisgICAgICAgIGlmICghZW50ZXJlZEZyYW1lKQorICAgICAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5k
VXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJnLCBwcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSk7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9Cisg
ICAgaW50IG9wdGlvbmFsQXJnID0gdG9JbnQzMihhcmdzWzFdKTsKKyAgICBGcmFtZSogZW50ZXJl
ZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAg
aWYgKCFlbnRlcmVkRnJhbWUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
aW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50
QXJnLCBvcHRpb25hbEFyZywgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7
CkBAIC0zNjMsNiArNDM4LDExIEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9i
akNhbGxiYWNrc1tdID0gewogICAgIHsibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIFRlc3RPYmpJbnRl
cm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrfSwKICAgICB7ImN1c3RvbU1ldGhvZCIs
IFY4VGVzdE9iajo6Y3VzdG9tTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsiY3VzdG9tTWV0aG9kV2l0
aEFyZ3MiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2t9LAorICAgIHsi
d2l0aER5bmFtaWNGcmFtZSIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUNhbGxi
YWNrfSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWVBbmRBcmciLCBUZXN0T2JqSW50ZXJuYWw6Ondp
dGhEeW5hbWljRnJhbWVBbmRBcmdDYWxsYmFja30sCisgICAgeyJ3aXRoRHluYW1pY0ZyYW1lQW5k
T3B0aW9uYWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25h
bEFyZ0NhbGxiYWNrfSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSIsIFRl
c3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2t9LAor
ICAgIHsid2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRCIsIFRlc3RPYmpJbnRlcm5h
bDo6d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRENhbGxiYWNrfSwKICAgICB7Im1l
dGhvZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFs
QXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxB
cmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9u
YWxBcmdzIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3NDYWxsYmFja30sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMGE5ZThkZGMyNGJiZTM4ZTQ2
YzE1ZmJhZDhlZjg2ZDBlMjBiOTFjMi4uNzg2YTk2YTllNWEwZmExMTFjNzQzOTY1ZWEzNDU2NTE0
YTc2YTM0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcApAQCAtODEsMTYgKzgxLDQgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW4KICAgICByZXR1cm4gdG9WOChjb2xsZWN0aW9uKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxGb3JtRWxlbWVudC5zdWJt
aXQoKSIpOwotICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRy
aWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgZm9ybS0+c3VibWl0KGZyYW1lKTsKLSAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaWRsCmluZGV4IGQ2MzljMzQxZDZlZTJiOWM5MzhkY2IxMzlkMzUzZGU2
MTVjNzcxM2QuLjA2NTRhN2QyMjg1MjI5MjU5N2Y5YjkxZmFjMmY1YzI1NTY1YjU5YjIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuaWRsCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSBodG1sIHsKICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3Ry
aW5nICAgICAgIG1ldGhvZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVs
bFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgIHRhcmdldDsKICAgICAgICAgCi0gICAgICAg
IFtDdXN0b21dIHZvaWQgc3VibWl0KCk7CisgICAgICAgIFtDYWxsV2l0aD1EeW5hbWljRnJhbWVd
IHZvaWQgc3VibWl0KCk7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKICAgICAgICAgYm9vbGVhbiAg
Y2hlY2tWYWxpZGl0eSgpOwogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54387</attachid>
            <date>2010-04-26 23:52:06 -0700</date>
            <delta_ts>2010-04-26 23:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38174-20100426235205.patch</filename>
            <type>text/plain</type>
            <size>29320</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTgzYzliY2EzNTcyZDNkY2NkYmYyODJlMjZhYzkzYzJlMjM4ZjdkMC4uZDk0YWJjNDhhYzJlNWRm
MGJkYzQ0MmQ2Mjc5ZjBiNjEyMDI5MThlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1MiBAQAogMjAxMC0wNC0yNiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIEFkZCBDYWxsV2l0aD1EeW5hbWljRnJhbWUgdG8gQ29kZUdlbmVy
YXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzgx
NzQKKworICAgICAgICBJJ3ZlIG9ubHkgdXNlZCB0aGlzIGluIG9uZSBpbnN0YW5jZSwgYnV0IHRo
aXMgaXMgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBJCisgICAgICAgIHRoaW5rIHdpbGwgaGVscCByZW1v
dmUgYSBidW5jaCBvZiBjdXN0b20gYmluZGluZ3MgY29kZS4gIEFsc28sIGFkZGVkIGEKKyAgICAg
ICAgZmV3IHRlc3RzIG9mIHRyaWNreSBhcmd1bWVudCBjYXNlcy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0
aF9keW5hbWljX2ZyYW1lKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5h
bWljX2ZyYW1lX2FuZF9hcmcpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5
bmFtaWNfZnJhbWVfYW5kX29wdGlvbmFsX2FyZyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlKToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVfYXNhZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxB
cmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRlc3RPYmog
d2l0aER5bmFtaWNGcmFtZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhEeW5hbWljRnJh
bWVBbmRBcmc6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aER5bmFtaWNGcmFtZUFuZE9w
dGlvbmFsQXJnOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhEeW5h
bWljRnJhbWVBbmRVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB3aXRoRHlu
YW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEOm9wdGlvbmFsQXJnOl0pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRl
cm5hbDo6d2l0aER5bmFtaWNGcmFtZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZEFyZ0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoRHluYW1pY0Zy
YW1lQW5kVXNlckdlc3R1cmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50
ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsOgor
CisyMDEwLTA0LTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAg
VW5yZXZpZXdlZC4gIFVwZGF0ZSBjb21tZW50IHRvIGJldHRlciByZWZsZWN0IHJlYWxpdHkuCiAK
ICAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDJlNzUyMmMz
NGM0ZTUyNTczMDMyZDEwZDc2M2FhMjgwMWZiMjI3N2EuLjRkZDBiODFiMzk0ZDlkMTY1NzE2NmU2
MTA3MzJjNzE5NDI0NTcwOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
Rm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwCkBAIC02MSwxMyArNjEsNCBAQCBKU1ZhbHVlIEpTSFRNTEZvcm1F
bGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29u
c3QgSQogICAgIHJldHVybiB0b0pTKGV4ZWMsIGpzRm9ybS0+Z2xvYmFsT2JqZWN0KCksIFN0YXRp
Y05vZGVMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5nZXQoKSk7CiB9CiAKLUpTVmFsdWUgSlNIVE1M
Rm9ybUVsZW1lbnQ6OnN1Ym1pdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmKQotewot
ICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2Jh
bE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRnJhbWUpCi0gICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVu
dCo+KGltcGwoKSktPnN1Ym1pdChhY3RpdmVGcmFtZSk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDNjYzNjYzVkMjMzNTAyNDZkNmI4M2E1OTJlZWViOTcxYmM4ZjI2MzYuLmE3ZTc5NWJl
ZDkyYjFiYjBlZTE1ZTQ2MDYwMzZjZmE5ZGE0OGZjNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTY5MSw2ICsxNjkxLDE2IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IlNj
cmlwdENhbGxTdGFjay5oIn0gPSAxOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
ICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICBpZiAoJGNhbGxXaXRoICYmICRjYWxs
V2l0aCBlcSAiRHluYW1pY0ZyYW1lIikgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFk
eW5hbWljRnJhbWUpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRwYXJhbUluZGV4OworICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImR5bmFtaWNGcmFtZSI7CisgICAgICAgICAgICAgICAg
ICAgICRwYXJhbUluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg
Zm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCEkaGFzT3B0aW9uYWxBcmd1bWVudHMgJiYgJHBhcmFtZXRlci0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9wdGlvbmFsIn0pIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4gICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6ZSgp
O1xuIik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCBmMmI5NjA0MDQyNmI5ZGNjNzBkZjBmMDBhOGNkMGUwY2FjNzM0OWFhLi4zZmM4ZTdjYjNmNGQ5
ZmM0ZDZiMTg0Y2I5YTcxZTRjM2Q5MTRjMDFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTIzMzIsMTUgKzIzMzIsMjQgQEAgc3ViIEdlbmVyYXRl
RnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gImxpc3RJbXAt
PiR7bmFtZX0oIjsKICAgICB9CiAKLSAgICBteSAkZmlyc3QgPSAxOwogICAgIG15ICRpbmRleCA9
IDA7CiAKKyAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgaWYgKCRjYWxsV2l0aCAmJiAkY2FsbFdpdGgg
ZXEgIkR5bmFtaWNGcmFtZSIpIHsKKyAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIkZyYW1l
KiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQo
KTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJpZiAoIWVudGVyZWRGcmFtZSlc
biI7CisgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTtcbiI7CisgICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRpbmRleDsKKyAg
ICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICJlbnRlcmVkRnJhbWUiOworICAgICAgICAkaW5kZXgr
KzsKKyAgICAgICAgJG51bWJlck9mUGFyYW1ldGVycysrCisgICAgfQorCiAgICAgZm9yZWFjaCBt
eSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgaWYgKCRp
bmRleCBlcSAkbnVtYmVyT2ZQYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICBsYXN0OwogICAgICAg
ICB9Ci0gICAgICAgIGlmICgkZmlyc3QpIHsgJGZpcnN0ID0gMDsgfQotICAgICAgICBlbHNlIHsg
JGZ1bmN0aW9uU3RyaW5nIC49ICIsICI7IH0KKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIs
ICIgaWYgJGluZGV4OwogICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtZXRlci0+bmFtZTsK
ICAgICAgICAgbXkgJHBhcmFtVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAKQEAgLTIzNTksMjEg
KzIzNjgsMTkgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICB9CiAKICAg
ICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21B
cmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYg
bm90ICRmaXJzdDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4Owog
ICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gImNhbGxTdGFjay5nZXQoKSI7Ci0gICAgICAgIGlm
ICgkZmlyc3QpIHsgJGZpcnN0ID0gMDsgfQogICAgIH0KIAogICAgIGlmICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5lZWRzVXNlckdlc3R1cmVDaGVjayJ9KSB7
Ci0gICAgICAgICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmIG5vdCAkZmlyc3Q7CisgICAgICAg
ICRmdW5jdGlvblN0cmluZyAuPSAiLCAiIGlmICRpbmRleDsKICAgICAgICAgIyBGSVhNRTogV2Ug
bmVlZCB0byBwYXNzIERPTVdyYXBwZXJXb3JsZCBhcyBhIHBhcmFtZXRlci4KICAgICAgICAgIyBT
ZWUgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTQxODIKICAgICAgICAgJGZ1bmN0
aW9uU3RyaW5nIC49ICJwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSI7Ci0gICAgICAgIGlmICgkZmly
c3QpIHsgJGZpcnN0ID0gMDsgfQogICAgIH0KIAogICAgIGlmIChAeyRmdW5jdGlvbi0+cmFpc2Vz
RXhjZXB0aW9uc30pIHsKLSAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgbm90ICRm
aXJzdDsKKyAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsICIgaWYgJGluZGV4OwogICAgICAg
ICAkZnVuY3Rpb25TdHJpbmcgLj0gImVjIjsKICAgICB9CiAgICAgJGZ1bmN0aW9uU3RyaW5nIC49
ICIpIjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IGUyNjRkYTY1NmU0MzM0ZDExNzI0ODEwNGIx
NzJlNzU5NTA3Y2M3ZjEuLjI2MDRkZGFlMWI4Nzk1MzQ0MTg3NTI2NWQ4MWVlZDFlNmFhMmZkYzUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMTM3LDYgKzEzNyw1MSBAQCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX21ldGhvZF93aXRoX2V4Y2VwdGlvbiAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgR0Vy
cm9yICoqZXJybwogfQogCiB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1pY19m
cmFtZSAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChz
ZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBpdGVtLT53aXRoRHluYW1pY0ZyYW1lKCk7CisKK30KKwordm9pZAord2Via2l0X2RvbV90
ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2Vs
ZiwgZ2xvbmcgaW50X2FyZykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBX
ZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53
aXRoRHluYW1pY0ZyYW1lQW5kQXJnKGludF9hcmcpOworCit9CisKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF9vcHRpb25hbF9hcmcgKFdlYktpdERPTVRl
c3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9wdGlvbmFsX2FyZykKK3sKKyAgICBn
X3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxB
cmcoaW50X2FyZywgb3B0aW9uYWxfYXJnKTsKKworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlIChXZWJLaXRET01UZXN0T2Jq
ICpzZWxmLCBnbG9uZyBpbnRfYXJnKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGYpOwor
ICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0
ZW0tPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShpbnRfYXJnKTsKKworfQorCit2b2lk
Cit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJl
X2FzYWQgKFdlYktpdERPTVRlc3RPYmogKnNlbGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9wdGlv
bmFsX2FyZykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsIChzZWxmKTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT53aXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGludF9hcmcsIG9wdGlvbmFsX2FyZyk7CisKK30KKwor
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmcgKFdlYktp
dERPTVRlc3RPYmogKnNlbGYsIGdsb25nIG9wdCkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsIChz
ZWxmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE9iai5oIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggYWViNTczYWQ2OTA0NmIwMDRkYjQ5NTkxMGNkYTE3
N2QxZmRiZWI1NC4uZTEzMjlhNmVmZmUxMWNiYmZhMjFiNTMxYzg5MDkzMTY4MmIwMGE1OCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmgKQEAgLTY4LDYgKzY4LDIxIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0
X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9leGNlcHRpb24gKFdlYktpdERPTVRlc3RPYmogKnNl
bGYsIEdFcnJvciAqKmVycm9yKTsKIAogV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3dpdGhfZHluYW1pY19mcmFtZSAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZik7CisKK1dFQktJ
VF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX2Fy
ZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZyk7CisKK1dFQktJVF9BUEkg
dm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX29wdGlvbmFs
X2FyZyAoV2ViS2l0RE9NVGVzdE9iaiAqc2VsZiwgZ2xvbmcgaW50X2FyZywgZ2xvbmcgb3B0aW9u
YWxfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHlu
YW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlIChXZWJLaXRET01UZXN0T2JqICpzZWxmLCBnbG9u
ZyBpbnRfYXJnKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhf
ZHluYW1pY19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlX2FzYWQgKFdlYktpdERPTVRlc3RPYmogKnNl
bGYsIGdsb25nIGludF9hcmcsIGdsb25nIG9wdGlvbmFsX2FyZyk7CisKK1dFQktJVF9BUEkgdm9p
ZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmcgKFdlYktpdERP
TVRlc3RPYmogKnNlbGYsIGdsb25nIG9wdCk7CiAKIFdFQktJVF9BUEkgdm9pZApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOGY4ZGE3ZDM0
OGNiYzg3NjAwMzA1NjNiZWQ4NWM3NzM3MzExZTAwZS4uODQ5OWNiZTRkNzQ2Njc1MzVlNjNiYzEy
ODFiYzM5MzQzNDZkYmJjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgYm9vbCBKU1Rlc3RPYmpDb25zdHJ1
Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnQKICNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikKICNlbmRpZgogCi1zdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbMTNdID0K
K3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVl
c1sxOF0gPQogewogICAgIHsgInZvaWRNZXRob2QiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSB9LAogICAgIHsg
InZvaWRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0
aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMyBUSFVOS19HRU5FUkFUT1IoMCkgfSwKQEAgLTEzNyw2
ICsxMzcsMTEgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlw
ZVRhYmxlVmFsdWVzWzEzXSA9CiAgICAgeyAibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIERvbnREZWxl
dGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKSwgKGludHB0cl90KTAgVEhV
TktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAiY3VzdG9tTWV0aG9kIiwgRG9udERlbGV0ZXxGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCksIChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigw
KSB9LAogICAgIHsgImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZXxGdW5jdGlvbiwg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKSwgKGludHB0cl90KTMgVEhVTktfR0VORVJBVE9S
KDApIH0sCisgICAgeyAid2l0aER5bmFtaWNGcmFtZSIsIERvbnREZWxldGV8RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoRHluYW1pY0ZyYW1lKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIH0s
CisgICAgeyAid2l0aER5bmFtaWNGcmFtZUFuZEFyZyIsIERvbnREZWxldGV8RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kQXJnKSwgKGludHB0cl90KTEgVEhVTktfR0VORVJBVE9S
KDApIH0sCisgICAgeyAid2l0aER5bmFtaWNGcmFtZUFuZE9wdGlvbmFsQXJnIiwgRG9udERlbGV0
ZXxGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyksIChpbnRw
dHJfdCkyIFRIVU5LX0dFTkVSQVRPUigwKSB9LAorICAgIHsgIndpdGhEeW5hbWljRnJhbWVBbmRV
c2VyR2VzdHVyZSIsIERvbnREZWxldGV8RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1l
QW5kVXNlckdlc3R1cmUpLCAoaW50cHRyX3QpMSBUSFVOS19HRU5FUkFUT1IoMCkgfSwKKyAgICB7
ICJ3aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEIiwgRG9udERlbGV0ZXxGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQpLCAoaW50cHRyX3Qp
MiBUSFVOS19HRU5FUkFUT1IoMCkgfSwKICAgICB7ICJtZXRob2RXaXRoT3B0aW9uYWxBcmciLCBE
b250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKSwgKGludHB0
cl90KTEgVEhVTktfR0VORVJBVE9SKDApIH0sCiAgICAgeyAibWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpMiBUSFVOS19HRU5FUkFU
T1IoMCkgfSwKICAgICB7ICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFy
Z3MiLCBEb250RGVsZXRlfEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVu
Y3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kVHdvT3B0aW9uYWxBcmdzKSwgKGludHB0cl90KTMgVEhVTktfR0VORVJBVE9SKDApIH0sCkBA
IC0xNDYsOSArMTUxLDkgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBy
b3RvdHlwZVRhYmxlVmFsdWVzWzEzXSA9CiAjdW5kZWYgVEhVTktfR0VORVJBVE9SCiBzdGF0aWMg
SlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUgPQog
I2lmIEVOQUJMRShQRVJGRUNUX0hBU0hfU0laRSkKLSAgICB7IDIwNDcsIEpTVGVzdE9ialByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAwIH07CisgICAgeyA4MTkxLCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJs
ZVZhbHVlcywgMCB9OwogI2Vsc2UKLSAgICB7IDM1LCAzMSwgSlNUZXN0T2JqUHJvdG90eXBlVGFi
bGVWYWx1ZXMsIDAgfTsKKyAgICB7IDY2LCA2MywgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1
ZXMsIDAgfTsKICNlbmRpZgogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJUZXN0T2JqUHJvdG90eXBlIiwgMCwgJkpTVGVzdE9ialByb3RvdHlwZVRhYmxl
LCAwIH07CkBAIC00NjIsNiArNDY3LDEwMSBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqCiAgICAg
cmV0dXJuIGNhc3RlZFRoaXNPYmotPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGV4ZWMsIGFyZ3MpOwog
fQogCitKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
RHluYW1pY0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBVTlVTRURfUEFSQU0oYXJncyk7CisgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAg
ICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpc09iai0+aW1w
bCgpKTsKKyAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0gdG9EeW5hbWljRnJhbWUoZXhlYyk7Cisg
ICAgaWYgKCFkeW5hbWljRnJhbWUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lKGR5bmFtaWNGcmFtZSk7CisgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRBcmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIFVOVVNFRF9Q
QVJBTShhcmdzKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2lu
Zm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOworICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzT2JqLT5pbXBsKCkpOworICAgIEZyYW1lKiBkeW5hbWljRnJhbWUgPSB0b0R5bmFt
aWNGcmFtZShleGVjKTsKKyAgICBpZiAoIWR5bmFtaWNGcmFtZSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgaW50IGludEFyZyA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsK
KworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZEFyZyhkeW5hbWljRnJhbWUsIGludEFyZyk7
CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCit7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvcik7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1w
ID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgRnJh
bWUqIGR5bmFtaWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworICAgIGlmICghZHluYW1p
Y0ZyYW1lKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQgaW50QXJnID0g
YXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworCisgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6
ZSgpOworICAgIGlmIChhcmdzQ291bnQgPCAzKSB7CisgICAgICAgIGltcC0+d2l0aER5bmFtaWNG
cmFtZUFuZE9wdGlvbmFsQXJnKGR5bmFtaWNGcmFtZSwgaW50QXJnKTsKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgaW50IG9wdGlvbmFsQXJnID0gYXJncy5hdCgy
KS50b0ludDMyKGV4ZWMpOworCisgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxB
cmcoZHluYW1pY0ZyYW1lLCBpbnRBcmcsIG9wdGlvbmFsQXJnKTsKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBV
TlVTRURfUEFSQU0oYXJncyk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9i
ajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsK
KyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXNPYmogPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTsKKyAgICBGcmFtZSogZHluYW1pY0ZyYW1lID0g
dG9EeW5hbWljRnJhbWUoZXhlYyk7CisgICAgaWYgKCFkeW5hbWljRnJhbWUpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIGludCBpbnRBcmcgPSBhcmdzLmF0KDEpLnRvSW50MzIo
ZXhlYyk7CisKKyAgICBpbXAtPndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZShkeW5hbWlj
RnJhbWUsIGludEFyZywgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKGV4ZWMpKTsKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5
cGVFcnJvcik7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgVGVzdE9iaiogaW1wID0gc3RhdGlj
X2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7CisgICAgRnJhbWUqIGR5bmFt
aWNGcmFtZSA9IHRvRHluYW1pY0ZyYW1lKGV4ZWMpOworICAgIGlmICghZHluYW1pY0ZyYW1lKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpbnQgaW50QXJnID0gYXJncy5hdCgx
KS50b0ludDMyKGV4ZWMpOworCisgICAgaW50IGFyZ3NDb3VudCA9IGFyZ3Muc2l6ZSgpOworICAg
IGlmIChhcmdzQ291bnQgPCAzKSB7CisgICAgICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZFVz
ZXJHZXN0dXJlQVNBRChkeW5hbWljRnJhbWUsIGludEFyZyk7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKworICAgIGludCBvcHRpb25hbEFyZyA9IGFyZ3MuYXQoMikudG9J
bnQzMihleGVjKTsKKworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNB
RChkeW5hbWljRnJhbWUsIGludEFyZywgb3B0aW9uYWxBcmcsIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZShleGVjKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBlNzQxNzhmOTc5YWE2MGIyZGE5ZGNl
OGI2Y2FkZTY0NGFkMmEwMmQxLi5iYmExYzI1OTEwZDllYjA5Y2QwZjk5ZjMwZjA0NDVjOGI2MWJh
NzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApA
QCAtOTQsNiArOTQsMTEgQEAgSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWMKIEpTQzo6SlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlv
bihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpT
Qzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2QoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0Kiwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpTQzo6SlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFy
Z0xpc3QmKTsKK0pTQzo6SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aER5bmFtaWNGcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBK
U0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworSlNDOjpKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1pY0ZyYW1lQW5kQXJnKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpB
cmdMaXN0Jik7CitKU0M6OkpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYpOworSlNDOjpK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRHluYW1p
Y0ZyYW1lQW5kVXNlckdlc3R1cmUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKK0pTQzo6SlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0
dXJlQVNBRChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUsIGNv
bnN0IEpTQzo6QXJnTGlzdCYpOwogSlNDOjpKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpTQzo6
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmKTsKIEpTQzo6SlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0Jik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDhiZTgwN2IwZGNiN2E0YzVk
ZmM5MDBmM2Y1MzdlMDhlOTA5YzZiODcuLjlkYjkyNWFiMDVhNTU0NGIzMDQ5YWM1ZDI3Mjg5N2U3
MmJmOTE3MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5oCkBAIC01OCw2ICs1OCwxMSBAQAogLSAodm9pZCltZXRob2RXaXRoRXhjZXB0aW9u
OwogLSAodm9pZCljdXN0b21NZXRob2Q7CiAtICh2b2lkKWN1c3RvbU1ldGhvZFdpdGhBcmdzOihp
bnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICop
b2JqQXJnOworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lOworLSAodm9pZCl3aXRoRHluYW1pY0Zy
YW1lQW5kQXJnOihpbnQpaW50QXJnOworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9u
YWxBcmc6KGludClpbnRBcmcgb3B0aW9uYWxBcmc6KGludClvcHRpb25hbEFyZzsKKy0gKHZvaWQp
d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlOihpbnQpaW50QXJnOworLSAodm9pZCl3aXRo
RHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEOihpbnQpaW50QXJnIG9wdGlvbmFsQXJnOihp
bnQpb3B0aW9uYWxBcmc7CiAtICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEFyZzooaW50KW9wdDsK
IC0gKHZvaWQpbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmc6KGludClub25P
cHQgb3B0OihpbnQpb3B0OwogLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3M6KGludClub25PcHQgb3B0MTooaW50KW9wdDEgb3B0MjooaW50KW9wdDI7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KaW5k
ZXggNTdhOWZmYWE0NTNjNGZhMTBjNTdkMmZkMDI5MjhmNGJjZTBkYWU5Zi4uNGM2MGQwOTUxMTk4
ZGIzNjkzMmJiMTI0NWJiNTM5NTUwNjc4ZjM5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtMTk5LDYgKzE5OSwzMSBAQAogICAg
IElNUEwtPmN1c3RvbU1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCBjb3JlKG9iakFyZykp
OwogfQogCistICh2b2lkKXdpdGhEeW5hbWljRnJhbWUKK3sKKyAgICBJTVBMLT53aXRoRHluYW1p
Y0ZyYW1lKCk7Cit9CisKKy0gKHZvaWQpd2l0aER5bmFtaWNGcmFtZUFuZEFyZzooaW50KWludEFy
ZworeworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWVBbmRBcmcoaW50QXJnKTsKK30KKworLSAo
dm9pZCl3aXRoRHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmc6KGludClpbnRBcmcgb3B0aW9uYWxB
cmc6KGludClvcHRpb25hbEFyZworeworICAgIElNUEwtPndpdGhEeW5hbWljRnJhbWVBbmRPcHRp
b25hbEFyZyhpbnRBcmcsIG9wdGlvbmFsQXJnKTsKK30KKworLSAodm9pZCl3aXRoRHluYW1pY0Zy
YW1lQW5kVXNlckdlc3R1cmU6KGludClpbnRBcmcKK3sKKyAgICBJTVBMLT53aXRoRHluYW1pY0Zy
YW1lQW5kVXNlckdlc3R1cmUoaW50QXJnKTsKK30KKworLSAodm9pZCl3aXRoRHluYW1pY0ZyYW1l
QW5kVXNlckdlc3R1cmVBU0FEOihpbnQpaW50QXJnIG9wdGlvbmFsQXJnOihpbnQpb3B0aW9uYWxB
cmcKK3sKKyAgICBJTVBMLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGludEFy
Zywgb3B0aW9uYWxBcmcpOworfQorCiAtICh2b2lkKW1ldGhvZFdpdGhPcHRpb25hbEFyZzooaW50
KW9wdAogewogICAgIElNUEwtPm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBkMmY0MDI3ZWVmMDllMTllMmQ2
ZjBhMjcyNmNlMzE5NDk1ZjhiOTgyLi41OWQ1MTRmNDZjZWE5ZGRjMzZiY2U3MDgzNWQ3YmRlNjI2
ZDI2YTAxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAt
NTcsNiArNTcsMTMgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIGN1c3Rv
bU1ldGhvZCgpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIGN1c3RvbU1ldGhvZFdpdGhBcmdzKGlu
IGxvbmcgaW50QXJnLCBpbiBET01TdHJpbmcgc3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZyk7CiAK
KyAgICAgICAgLy8gJ0NhbGxXaXRoJyBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgW0NhbGxX
aXRoPUR5bmFtaWNGcmFtZV0gdm9pZCB3aXRoRHluYW1pY0ZyYW1lKCk7CisgICAgICAgIFtDYWxs
V2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNGcmFtZUFuZEFyZyhpbiBsb25nIGlu
dEFyZyk7CisgICAgICAgIFtDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNG
cmFtZUFuZE9wdGlvbmFsQXJnKGluIGxvbmcgaW50QXJnLCBpbiBbT3B0aW9uYWxdIGxvbmcgb3B0
aW9uYWxBcmcpOworICAgICAgICBbTmVlZHNVc2VyR2VzdHVyZUNoZWNrLCBDYWxsV2l0aD1EeW5h
bWljRnJhbWVdIHZvaWQgd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlKGluIGxvbmcgaW50
QXJnKTsKKyAgICAgICAgW05lZWRzVXNlckdlc3R1cmVDaGVjaywgQ2FsbFdpdGg9RHluYW1pY0Zy
YW1lXSB2b2lkIHdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQUQoaW4gbG9uZyBpbnRB
cmcsIGluIFtPcHRpb25hbF0gbG9uZyBvcHRpb25hbEFyZyk7CisKICAgICAgICAgLy8gJ09wdGlv
bmFsJyBleHRlbmRlZCBhdHRyaWJ1dGUKICAgICAgICAgdm9pZCAgICBtZXRob2RXaXRoT3B0aW9u
YWxBcmcoaW4gW09wdGlvbmFsXSBsb25nIG9wdCk7CiAgICAgICAgIHZvaWQgICAgbWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoaW4gbG9uZyBub25PcHQsIGluIFtPcHRpb25h
bF0gbG9uZyBvcHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKaW5kZXggZDUxODg0ZTZmZTk1NjkwMTJjZTlkNmMxNmY4NWExNzkwOTk5Njk5MS4u
OGUzZWNmMzk3OGUxMzI5NGE5NmZjMzZiNzk4Njc1ZGFlYmU5Y2I5NSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0yMzMsNiArMjMzLDgx
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWljRnJh
bWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygi
RE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZSIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICghZW50
ZXJlZEZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIGltcC0+d2l0
aER5bmFtaWNGcmFtZShlbnRlcmVkRnJhbWUpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHluYW1pY0Zy
YW1lQW5kQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLndpdGhEeW5hbWljRnJhbWVBbmRBcmciKTsKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBpbnRB
cmcgPSB0b0ludDMyKGFyZ3NbMF0pOworICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5
OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBpZiAoIWVudGVyZWRGcmFt
ZSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpbXAtPndpdGhEeW5hbWlj
RnJhbWVBbmRBcmcoZW50ZXJlZEZyYW1lLCBpbnRBcmcpOworICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoRHlu
YW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZE9wdGlv
bmFsQXJnIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKKyAgICBpbnQgaW50QXJnID0gdG9JbnQzMihhcmdzWzBdKTsKKyAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8PSAxKSB7CisgICAgICAgIEZyYW1lKiBlbnRlcmVkRnJhbWUgPSBWOFByb3h5
OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICAgICAgaWYgKCFlbnRlcmVk
RnJhbWUpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICBpbXAt
PndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFyZyhlbnRlcmVkRnJhbWUsIGludEFyZyk7Cisg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9CisgICAgaW50IG9w
dGlvbmFsQXJnID0gdG9JbnQzMihhcmdzWzFdKTsKKyAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0g
VjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgaWYgKCFlbnRl
cmVkRnJhbWUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgaW1wLT53aXRo
RHluYW1pY0ZyYW1lQW5kT3B0aW9uYWxBcmcoZW50ZXJlZEZyYW1lLCBpbnRBcmcsIG9wdGlvbmFs
QXJnKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0
T2JqLndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSIpOworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFyZyA9IHRv
SW50MzIoYXJnc1swXSk7CisgICAgRnJhbWUqIGVudGVyZWRGcmFtZSA9IFY4UHJveHk6OnJldHJp
ZXZlRnJhbWVGb3JFbnRlcmVkQ29udGV4dCgpOworICAgIGlmICghZW50ZXJlZEZyYW1lKQorICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIGltcC0+d2l0aER5bmFtaWNGcmFtZUFu
ZFVzZXJHZXN0dXJlKGVudGVyZWRGcmFtZSwgaW50QXJnLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZUFTQURDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoud2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRCIpOworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IGludEFy
ZyA9IHRvSW50MzIoYXJnc1swXSk7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMSkgeworICAg
ICAgICBGcmFtZSogZW50ZXJlZEZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVy
ZWRDb250ZXh0KCk7CisgICAgICAgIGlmICghZW50ZXJlZEZyYW1lKQorICAgICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgaW1wLT53aXRoRHluYW1pY0ZyYW1lQW5kVXNl
ckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJnLCBwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSk7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICB9CisgICAg
aW50IG9wdGlvbmFsQXJnID0gdG9JbnQzMihhcmdzWzFdKTsKKyAgICBGcmFtZSogZW50ZXJlZEZy
YW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgaWYg
KCFlbnRlcmVkRnJhbWUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgaW1w
LT53aXRoRHluYW1pY0ZyYW1lQW5kVXNlckdlc3R1cmVBU0FEKGVudGVyZWRGcmFtZSwgaW50QXJn
LCBvcHRpb25hbEFyZywgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOworICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CkBA
IC0zNjMsNiArNDM4LDExIEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNh
bGxiYWNrc1tdID0gewogICAgIHsibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIFRlc3RPYmpJbnRlcm5h
bDo6bWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrfSwKICAgICB7ImN1c3RvbU1ldGhvZCIsIFY4
VGVzdE9iajo6Y3VzdG9tTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsiY3VzdG9tTWV0aG9kV2l0aEFy
Z3MiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2t9LAorICAgIHsid2l0
aER5bmFtaWNGcmFtZSIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUNhbGxiYWNr
fSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWVBbmRBcmciLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhE
eW5hbWljRnJhbWVBbmRBcmdDYWxsYmFja30sCisgICAgeyJ3aXRoRHluYW1pY0ZyYW1lQW5kT3B0
aW9uYWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhEeW5hbWljRnJhbWVBbmRPcHRpb25hbEFy
Z0NhbGxiYWNrfSwKKyAgICB7IndpdGhEeW5hbWljRnJhbWVBbmRVc2VyR2VzdHVyZSIsIFRlc3RP
YmpJbnRlcm5hbDo6d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQ2FsbGJhY2t9LAorICAg
IHsid2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRCIsIFRlc3RPYmpJbnRlcm5hbDo6
d2l0aER5bmFtaWNGcmFtZUFuZFVzZXJHZXN0dXJlQVNBRENhbGxiYWNrfSwKICAgICB7Im1ldGhv
ZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsQXJn
Q2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmci
LCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJn
Q2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxB
cmdzIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRp
b25hbEFyZ3NDYWxsYmFja30sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKaW5kZXggMGE5ZThkZGMyNGJiZTM4ZTQ2YzE1
ZmJhZDhlZjg2ZDBlMjBiOTFjMi4uNzg2YTk2YTllNWEwZmExMTFjNzQzOTY1ZWEzNDU2NTE0YTc2
YTM0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcApAQCAtODEsMTYgKzgxLDQgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW4KICAgICByZXR1cm4gdG9WOChjb2xsZWN0aW9uKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQotewotICAgIElOQ19TVEFUUygiRE9NLkhUTUxGb3JtRWxlbWVudC5zdWJtaXQo
KSIpOwotICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IFY4SFRNTEZvcm1FbGVtZW50Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2
ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgZm9ybS0+c3VibWl0KGZyYW1lKTsKLSAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuaWRsCmluZGV4IGQ2MzljMzQxZDZlZTJiOWM5MzhkY2IxMzlkMzUzZGU2MTVj
NzcxM2QuLjA2NTRhN2QyMjg1MjI5MjU5N2Y5YjkxZmFjMmY1YzI1NTY1YjU5YjIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaWRsCkBAIC0zNSw3ICszNSw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
ICAgICAgIG1ldGhvZDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRv
TnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgIHRhcmdldDsKICAgICAgICAgCi0gICAgICAgIFtD
dXN0b21dIHZvaWQgc3VibWl0KCk7CisgICAgICAgIFtDYWxsV2l0aD1EeW5hbWljRnJhbWVdIHZv
aWQgc3VibWl0KCk7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKICAgICAgICAgYm9vbGVhbiAgY2hl
Y2tWYWxpZGl0eSgpOwogICAgIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>