<?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>106506</bug_id>
          
          <creation_ts>2013-01-09 16:59:43 -0800</creation_ts>
          <short_desc>Bindings: Remove special cases for DOMString[]</short_desc>
          <delta_ts>2013-01-14 12:26:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>803843</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-09 16:59:43 -0800</bug_when>
    <thetext>Bindings: Remove special cases for DOMString[]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803847</commentid>
    <comment_count>1</comment_count>
      <attachid>182017</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-09 17:05:00 -0800</bug_when>
    <thetext>Created attachment 182017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803848</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-09 17:05:50 -0800</bug_when>
    <thetext>I&apos;m expecting some bot failures here, since I ran only some of the tests locally and they didn&apos;t exercise everything in Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803868</commentid>
    <comment_count>3</comment_count>
      <attachid>182017</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-09 17:22:02 -0800</bug_when>
    <thetext>Comment on attachment 182017
Patch

LGTM. Thanks for the clean up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803879</commentid>
    <comment_count>4</comment_count>
      <attachid>182017</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 17:35:33 -0800</bug_when>
    <thetext>Comment on attachment 182017
Patch

Attachment 182017 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15771734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803938</commentid>
    <comment_count>5</comment_count>
      <attachid>182017</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 19:00:33 -0800</bug_when>
    <thetext>Comment on attachment 182017
Patch

Attachment 182017 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15760700

New failing tests:
fast/forms/state-restore-broken-state.html
fast/forms/file/selected-files-from-history-state.html
fast/forms/state-restore-skip-stateless.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804039</commentid>
    <comment_count>6</comment_count>
      <attachid>182017</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 21:36:28 -0800</bug_when>
    <thetext>Comment on attachment 182017
Patch

Attachment 182017 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15761745

New failing tests:
fast/forms/state-restore-broken-state.html
fast/forms/file/selected-files-from-history-state.html
fast/forms/state-restore-skip-stateless.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804075</commentid>
    <comment_count>7</comment_count>
      <attachid>182017</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 22:33:50 -0800</bug_when>
    <thetext>Comment on attachment 182017
Patch

Attachment 182017 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15771807

New failing tests:
fast/forms/state-restore-broken-state.html
fast/forms/file/selected-files-from-history-state.html
fast/forms/state-restore-skip-stateless.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804517</commentid>
    <comment_count>8</comment_count>
      <attachid>182166</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-10 10:33:49 -0800</bug_when>
    <thetext>Created attachment 182166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804518</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-10 10:36:25 -0800</bug_when>
    <thetext>Latest patch &quot;should&quot; work, but doesn&apos;t - V8Binding&apos;s toDOMStringList is failing its IsArray() test for reasons I can&apos;t figure out right now. Also, the changes to the generated code are a little greater than I would have expected. Tabling this for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805622</commentid>
    <comment_count>10</comment_count>
      <attachid>182417</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-11 14:27:27 -0800</bug_when>
    <thetext>Created attachment 182417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805624</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-11 14:30:14 -0800</bug_when>
    <thetext>Did this over from scratch; turns out we had better T[] support than I thought so the correct fix was:

* removing special DOMString[] cases in code gen
* patching a few places where T[] wasn&apos;t handled quite right in code gen
* update Internals.idl/h/cpp to match the test usage: arrays of strings; so replaced DOMStringList with DOMString[] / sequence&lt;DOMString&gt;

Let&apos;s see what the bots have to say...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805666</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-11 15:18:07 -0800</bug_when>
    <thetext>Does this have any impact on binding&apos;s performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805674</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-01-11 15:20:59 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Does this have any impact on binding&apos;s performance?

The only places using DOMString[] were Source/WebCore/bindings/scripts/test/TestObj.idl and Source/WebCore/testing/Internals.idl

Nothing else should be affected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805675</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-11 15:21:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Does this have any impact on binding&apos;s performance?
&gt; 
&gt; The only places using DOMString[] were Source/WebCore/bindings/scripts/test/TestObj.idl and Source/WebCore/testing/Internals.idl
&gt; 
&gt; Nothing else should be affected.

Oh ok, never mind :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805758</commentid>
    <comment_count>15</comment_count>
      <attachid>182417</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 16:56:52 -0800</bug_when>
    <thetext>Comment on attachment 182417
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=182417&amp;action=review

This is great!  I think we added DOMString[] before we knew what we were doing with sequence and [].

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3963
&gt; +    # FIXME: Should this return false for Sequence and Array types?

In principle, it looks like &quot;yes&quot;, but there looks like one caller (the first one in the caller textually) who seems to expect array types to return true here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806519</commentid>
    <comment_count>16</comment_count>
      <attachid>182417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 12:26:53 -0800</bug_when>
    <thetext>Comment on attachment 182417
Patch

Clearing flags on attachment: 182417

Committed r139641: &lt;http://trac.webkit.org/changeset/139641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806520</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 12:26:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182017</attachid>
            <date>2013-01-09 17:05:00 -0800</date>
            <delta_ts>2013-01-10 10:33:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106506-20130109170203.patch</filename>
            <type>text/plain</type>
            <size>16592</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyNTc5OWZjNTBiNDFh
NGQ0NzAwNDA3MjJiM2I1NDZjMjE2YTU5Zi4uMzVjYWEwMTBlNWJkOTkzZDI3YzFjYTI4ZDRhMjYx
ZDU2OTdjZTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAxLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQmluZGluZ3M6IFJlbW92
ZSBzcGVjaWFsIGNhc2VzIGZvciBET01TdHJpbmdbXQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTA2CisKKyAgICAgICAgU3VwcG9ydCBmb3IgRE9N
U3RyaW5nW10gaW4gV2ViS2l0SURMIGFzIGFuIGFsaWFzIGZvciBET01TdHJpbmdMaXN0IHdhcyBh
ZGRlZCBpbiBhIGhhY2t5CisgICAgICAgIGZhc2hpb24uIFRoZSBvbmx5IHJlbWFpbmluZyB1c2Ug
d2FzIEludGVybmFsczsgdXBkYXRlIHRoZSBJREwgdG8gdXNlIHNlcXVlbmNlPERPTVN0cmluZz4K
KyAgICAgICAgb3IgRE9NU3RyaW5nTGlzdCwgd2hpY2ggdGhlIGltcGxlbWVudGF0aW9uIHdhcyBh
bHJlYWR5IGRvaW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEluZGV4R2V0dGVy
UmV0dXJuc1N0cmluZ3MpOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAgICAg
KEdldE5hdGl2ZVR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcyk6Cisg
ICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChKU1Zh
bHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0VjhIZWFkZXJOYW1lKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kOUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1
bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDEzLTAxLTA4ICBCcmFuZG9uIEpvbmVzICA8YmFqb25lc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTWFrZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgaW5oZXJpdCBmcm9tIEFjdGl2
ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBmOTdkMDkyYjA4YmNmMmQ5YTBiNTY3OWI4OTVhNDc2ZjI5Mjhj
Y2IxLi40Y2U4M2EzMzMxYjk1YTEzN2YyNGNjN2Q1ODllNDU3ZWJmZTJjMWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MTg1LDcgKzE4NSw3IEBAIHN1YiBJbmRleEdldHRlclJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkg
JHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xh
cmF0aW9uIiBvciAkdHlwZSBlcSAiTWVkaWFMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlz
dCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIiAgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIg
b3IgJHR5cGUgZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAkdHlw
ZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3IgJHR5
cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0eXBl
IGVxICJET01TZXR0YWJsZVRva2VuTGlzdCI7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0MSw5
ICsyNDEsNiBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfSBlbHNpZiAoJHR5cGUgZXEg
IlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTWFBhdGhOU1Jl
c29sdmVyLmgifSA9IDE7CiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlci5oIn0gPSAxOwotICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsK
LSAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBE
T01TdHJpbmdbXSBvciBzZXF1ZW5jZTxET01TdHJpbmc+LgotICAgICAgICAkaW5jbHVkZXNSZWYt
PnsiSlNET01TdHJpbmdMaXN0LmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIn0gPSAxOwogICAgIH0gZWxzaWYgKCRpc0NhbGxiYWNrKSB7CkBAIC0zMDQ1
LDggKzMwNDIsNiBAQCBzdWIgR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUKIG15ICVuYXRpdmVU
eXBlID0gKAogICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAogICAgICJE
T01TdHJpbmciID0+ICJjb25zdCBTdHJpbmcmIiwKLSAgICAjIEZJWE1FOiBDb25zaWRlciByZXBs
YWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmlu
Zz4uCi0gICAgIkRPTVN0cmluZ1tdIiA9PiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiwKICAgICAi
RE9NT2JqZWN0IiA9PiAiU2NyaXB0VmFsdWUiLAogICAgICJOb2RlRmlsdGVyIiA9PiAiUmVmUHRy
PE5vZGVGaWx0ZXI+IiwKICAgICAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiA9PiAiUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLApAQCAtMzA3Miw3ICszMDY3LDcgQEAgc3ViIEdldE5hdGl2
ZVR5cGUKIAogICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5
cGVOZWVkaW5nVGVhck9mZigkdHlwZSk7CiAgICAgcmV0dXJuICIke3N2Z05hdGl2ZVR5cGV9KiIg
aWYgJHN2Z05hdGl2ZVR5cGU7Ci0gICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlm
ICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOworICAg
IHJldHVybiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlz
dCI7CiAgICAgcmV0dXJuICRuYXRpdmVUeXBleyR0eXBlfSBpZiBleGlzdHMgJG5hdGl2ZVR5cGV7
JHR5cGV9OwogCiAgICAgbXkgJGFycmF5VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRBcnJheVR5
cGUoJHR5cGUpOwpAQCAtMzA5OCw3ICszMDkzLDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JDYWxs
YmFja3MKIHsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogICAgIHJldHVybiAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlKiIgaWYgJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7Ci0gICAgcmV0
dXJuICJQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlz
dCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKKyAgICByZXR1cm4gIlBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKIAogICAgIHJldHVybiBH
ZXROYXRpdmVUeXBlKCR0eXBlKTsKIH0KQEAgLTMyMTAsNyArMzIwNSw3IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICAgICAgcmV0dXJuICJleGVjLCAkdmFsdWUiOwogICAgIH0KIAotICAgIGlm
ICgkdHlwZSBlcSAiRE9NU3RyaW5nW10iIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IiApIHsK
KyAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiICkgewogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlNET01TdHJpbmdMaXN0LmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICByZXR1
cm4gInRvRE9NU3RyaW5nTGlzdChleGVjLCAkdmFsdWUpIjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDA3Y2Iy
ZGQ4NTU3NmQyNGVkMzQ3MTY2M2Q5YTRhYWI3MWY3YTY1OGEuLjI1NjIxYjY3YTc1MWY3MjMyODg5
NjExNzY2Y2QyMTliODk2ZjcxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNjk0LDkgKzM2OTQsNyBAQCBzdWIgR2V0
TmF0aXZlVHlwZQogICAgIHJldHVybiAiU2NyaXB0VmFsdWUiIGlmICR0eXBlIGVxICJET01PYmpl
Y3QiIG9yICR0eXBlIGVxICJhbnkiOwogICAgIHJldHVybiAiRGljdGlvbmFyeSIgaWYgJHR5cGUg
ZXEgIkRpY3Rpb25hcnkiOwogCi0gICAgIyBGSVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0
cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5jZTxET01TdHJpbmc+LgotICAgIHJl
dHVybiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nW10iIG9y
ICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLQorICAgIHJldHVybiAiUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7CiAgICAgcmV0dXJuICJSZWZQdHI8
SURCS2V5PiIgaWYgJHR5cGUgZXEgIklEQktleSI7CiAgICAgcmV0dXJuICJSZWZQdHI8TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIjsK
ICAgICByZXR1cm4gIlJlZlB0cjxOb2RlRmlsdGVyPiIgaWYgJHR5cGUgZXEgIk5vZGVGaWx0ZXIi
OwpAQCAtMzc2Niw4ICszNzY0LDYgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIHJldHVybiAi
c3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KCR2YWx1ZS0+SW50MzJWYWx1ZSgpKSIgaWYg
JHR5cGUgZXEgIkNvbXBhcmVIb3ciOwogICAgIHJldHVybiAidG9XZWJDb3JlRGF0ZSgkdmFsdWUp
IiBpZiAkdHlwZSBlcSAiRGF0ZSI7CiAgICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVl
LCAkZ2V0SXNvbGF0ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLSAgICAjIEZJWE1F
OiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmluZ1tdIG9yIHNl
cXVlbmNlPERPTVN0cmluZz4uCi0gICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoJHZhbHVlLCAk
Z2V0SXNvbGF0ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAKICAgICBpZiAoJHR5cGUg
ZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgcmV0dXJuICR2YWx1ZTsKQEAgLTM4NDIsNyArMzgz
OCw2IEBAIHN1YiBHZXRWOEhlYWRlck5hbWUKICAgICByZXR1cm4gIkV2ZW50TGlzdGVuZXIuaCIg
aWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOwogICAgIHJldHVybiAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiIGlmICR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwogICAgIHJldHVy
biAiU2NyaXB0VmFsdWUuaCIgaWYgJHR5cGUgZXEgIkRPTU9iamVjdCIgb3IgJHR5cGUgZXEgImFu
eSI7Ci0gICAgcmV0dXJuICJWOERPTVN0cmluZ0xpc3QuaCIgaWYgJHR5cGUgZXEgIkRPTVN0cmlu
Z1tdIjsKICAgICByZXR1cm4gIlY4JHt0eXBlfS5oIjsKIH0KIApAQCAtMzkzNSw3ICszOTMwLDYg
QEAgbXkgJW5vbl93cmFwcGVyX3R5cGVzID0gKAogICAgICdDb21wYXJlSG93JyA9PiAxLAogICAg
ICdET01PYmplY3QnID0+IDEsCiAgICAgJ0RPTVN0cmluZycgPT4gMSwKLSAgICAnRE9NU3RyaW5n
W10nID0+IDEsCiAgICAgJ0RPTVRpbWVTdGFtcCcgPT4gMSwKICAgICAnRGF0ZScgPT4gMSwKICAg
ICAnRGljdGlvbmFyeScgPT4gMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNmIwNTQ4Y2IwMDJjYzliYTM4MGE2
YjQzMjFiNDdkMTg5MDIzMTkwNC4uZjFiMWZiNjNlOTM4NmYxYzdiOWI3NWMzYzUyMzgxOTYwYzU0
NjE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIyMDMsNyArMjIwMyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDcoCiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gYXJyYXlBcmcodG9ET01TdHJpbmdM
aXN0KGV4ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVm
aW5lZCkpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9k
KGFycmF5QXJnKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDko
CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMp
KTsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gYXJyYXlBcmcodG9ET01TdHJpbmdMaXN0KGV4
ZWMsIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PFN0cmluZz4oZXhl
YywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLT5vdmVybG9hZGVkTWV0aG9kKGFycmF5
QXJnKTsKQEAgLTI0NDAsMTEgKzI0NDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAg
ICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlcyh0b0RP
TVN0cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVs
dElzVW5kZWZpbmVkKSkpOworICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlcyh0b05hdGl2ZUFycmF5
PFN0cmluZz4oZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSBqc0FycmF5KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLT5z
dHJpbmdBcnJheUZ1bmN0aW9uKHZhbHVlcywgZWMpKTsKKyAgICBKU0M6OkpTVmFsdWUgcmVzdWx0
ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1w
bC0+c3RyaW5nQXJyYXlGdW5jdGlvbih2YWx1ZXMsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4
IGY5ZDA2NWZhMTg2ZWUxODViZjQ2OWU5NjAyOGZlZTY1MWY0YjE2YzYuLjBiYjVlYWZiMjJjYjVj
NTllNjgxNjIzMDEwMzNjMTlkNTg3MjE4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTE3Nyw5ICsxNzcsOSBAQAogICAgIHZv
aWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBsb25nIGxvbmdBcmcpOwogICAgIHZvaWQgICAgb3Zl
cmxvYWRlZE1ldGhvZChpbiBbQ2FsbGJhY2tdIFRlc3RDYWxsYmFjayBjYWxsYmFjayk7CiAgICAg
dm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIERPTVN0cmluZ0xpc3Q/IGxpc3RBcmcpOwotICAg
IHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBET01TdHJpbmdbXT8gYXJyYXlBcmcpOworICAg
IHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBzZXF1ZW5jZTxET01TdHJpbmc+PyBhcnJheUFy
Zyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIFRlc3RPYmogb2JqQXJnKTsKLSAg
ICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gRE9NU3RyaW5nW10gYXJyYXlBcmcpOworICAg
IHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBzZXF1ZW5jZTxET01TdHJpbmc+IGFycmF5QXJn
KTsKICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gc2VxdWVuY2U8dW5zaWduZWQgbG9u
Zz4gYXJyYXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBET01TdHJpbmcg
c3RyQXJnKTsKICNlbmRpZgpAQCAtMjE4LDcgKzIxOCw3IEBACiAgICAgdm9pZCBtZXRob2RXaXRo
VW5zaWduZWRMb25nU2VxdWVuY2UoaW4gc2VxdWVuY2U8dW5zaWduZWQgbG9uZz4gdW5zaWduZWRM
b25nU2VxdWVuY2UpOwogI2VuZGlmCiAjaWYgZGVmaW5lZChURVNUSU5HX1Y4KSB8fCBkZWZpbmVk
KFRFU1RJTkdfSlMpCi0gICAgRE9NU3RyaW5nW10gc3RyaW5nQXJyYXlGdW5jdGlvbihpbiBET01T
dHJpbmdbXSB2YWx1ZXMpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIERPTVN0cmluZ0xpc3Qg
c3RyaW5nQXJyYXlGdW5jdGlvbihpbiBzZXF1ZW5jZTxET01TdHJpbmc+IHZhbHVlcykgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKIAogICAgIFtDaGVja1NlY3VyaXR5Rm9yTm9kZV0gcmVh
ZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGNvbnRlbnREb2N1bWVudDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXgg
M2ZjMjhiZGZlMmE3MjczNmZlMDc3NTZlMmY5NzJmN2Q1NzZmYWVkOS4uMjMxNzI1Zjg5YWZlMTRk
ZTM4ODU4OGJiYzBmMWQ1ZmZjYWI4ZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIzLDcgKzIzLDYgQEAK
IAogI2luY2x1ZGUgIkJpbmRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5o
IgotI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZlYXR1cmVPYnNlcnZlci5oIgpA
QCAtMTQ3MSw3ICsxNDcwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kN0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goUmVmUHRyPERPTVN0cmluZ0xp
c3Q+LCBhcnJheUFyZywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFy
Z3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CisgICAgVjhU
UllDQVRDSChWZWN0b3I8U3RyaW5nPiwgYXJyYXlBcmcsIHRvTmF0aXZlQXJyYXk8U3RyaW5nPihN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7CiAg
ICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGFycmF5QXJnKTsKICAgICByZXR1cm4gdjhVbmRlZmlu
ZWQoKTsKIH0KQEAgLTE0OTEsNyArMTQ5MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gb3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENIKFJlZlB0cjxE
T01TdHJpbmdMaXN0PiwgYXJyYXlBcmcsIHRvRE9NU3RyaW5nTGlzdChNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLCBhcmdzLkdldElzb2xhdGUoKSkp
OworICAgIFY4VFJZQ0FUQ0goVmVjdG9yPFN0cmluZz4sIGFycmF5QXJnLCB0b05hdGl2ZUFycmF5
PFN0cmluZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CiAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjY1LDExICsxNjY0LDExIEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7Ci0gICAgVjhUUllDQVRD
SChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIHZhbHVlcywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01J
U1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKSk7CisgICAgVjhUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgdmFsdWVzLCB0b05hdGl2
ZUFycmF5PFN0cmluZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOwogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiByZXN1bHQgPSBpbXAtPnN0
cmluZ0FycmF5RnVuY3Rpb24odmFsdWVzLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAg
ICAgICAgZ290byBmYWlsOwotICAgIHJldHVybiB2OEFycmF5KHJlc3VsdC5yZWxlYXNlKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdz
LkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogICAgIGZhaWw6CiAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTk4Miw3ICsx
OTgxLDYgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
IFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewogI2VuZGlmCiAgICAgeyJvdmVybG9hZGVkTWV0aG9k
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2RDYWxsYmFja30sCiAgICAgeyJj
bGFzc01ldGhvZFdpdGhDbGFtcCIsIFRlc3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZFdpdGhD
bGFtcENhbGxiYWNrfSwKLSAgICB7InN0cmluZ0FycmF5RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNrfSwKICAgICB7ImdldFNWR0RvY3VtZW50
IiwgVGVzdE9ialY4SW50ZXJuYWw6OmdldFNWR0RvY3VtZW50Q2FsbGJhY2t9LAogICAgIHsibXV0
YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50RnVuY3Rp
b25DYWxsYmFja30sCiAgICAgeyJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50
ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rpb25DYWxsYmFja30sCkBAIC0yMTE2LDYgKzIxMTQs
MTIgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKCkpCiAgICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMkNhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKSk7CiAKKyAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJworICAgIGNvbnN0IGludCBzdHJpbmdBcnJh
eUZ1bmN0aW9uQXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6U2ln
bmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7
CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rp
b24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5n
QXJyYXlGdW5jdGlvbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9u
U2lnbmF0dXJlKSk7CisKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBj
b25zdCBpbnQgY29udmVydDFBcmdjID0gMTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhhOjpHZXRSYXdUZW1wbGF0
ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYzYyNTE3YTZlOGYw
NTFhMWI1MGRiOWFmODAzNGI5YWY1OTEzM2YzOC4uMzQzMjdjZWQ5ZTc3YzlmZGM1MGJmYTQ4MTQ3
MmVlNTcwNjhmMWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODAs
OCArODAsOCBAQAogI2lmIGRlZmluZWQoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IpICYmIEVOQUJM
RV9JTlBVVF9UWVBFX0NPTE9SCiAgICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyKGlu
IEVsZW1lbnQgZWxlbWVudCwgaW4gRE9NU3RyaW5nIGNvbG9yVmFsdWUpOwogI2VuZGlmCi0gICAg
RE9NU3RyaW5nW10gZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgIHZvaWQgc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNI
aXN0b3J5SXRlbShpbiBET01TdHJpbmdbXSB2YWx1ZXMpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgIERPTVN0cmluZ0xpc3QgZm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSgp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQgc2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJl
dmlvdXNIaXN0b3J5SXRlbShpbiBET01TdHJpbmdMaXN0IHZhbHVlcykgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgdm9pZCBzZXRFbmFibGVNb2NrUGFnZVBvcHVwKGluIGJvb2xlYW4gZW5hYmxl
ZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjaWYgZGVmaW5lZChFTkFCTEVfUEFHRV9QT1BVUCkg
JiYgRU5BQkxFX1BBR0VfUE9QVVAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUGFnZVBvcHVwQ29u
dHJvbGxlciBwYWdlUG9wdXBDb250cm9sbGVyOwpAQCAtMjA3LDcgKzIwNyw3IEBACiAKICAgICBE
T01TdHJpbmcgY291bnRlclZhbHVlKGluIEVsZW1lbnQgZWxlbWVudCk7CiAgICAgbG9uZyBwYWdl
TnVtYmVyKGluIEVsZW1lbnQgZWxlbWVudCwgaW4gW09wdGlvbmFsXSBmbG9hdCBwYWdlV2lkdGgs
IGluIFtPcHRpb25hbF0gZmxvYXQgcGFnZUhlaWdodCk7Ci0gICAgRE9NU3RyaW5nW10gaWNvblVS
THMoaW4gRG9jdW1lbnQgZG9jdW1lbnQpOworICAgIERPTVN0cmluZ0xpc3QgaWNvblVSTHMoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpOwogICAgIGxvbmcgbnVtYmVyT2ZQYWdlcyhpbiBbT3B0aW9uYWxd
IGRvdWJsZSBwYWdlV2lkdGhJblBpeGVscywgaW4gW09wdGlvbmFsXSBkb3VibGUgcGFnZUhlaWdo
dEluUGl4ZWxzKTsKICAgICBET01TdHJpbmcgcGFnZVByb3BlcnR5KGluIERPTVN0cmluZyBwcm9w
ZXJ0eU5hbWUsIGluIGxvbmcgcGFnZU51bWJlcikgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAg
IERPTVN0cmluZyBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbiBsb25nIHBhZ2VJbmRleCwg
aW4gbG9uZyB3aWR0aCwgaW4gbG9uZyBoZWlnaHQsIGluIGxvbmcgbWFyZ2luVG9wLCBpbiBsb25n
IG1hcmdpblJpZ2h0LCBpbiBsb25nIG1hcmdpbkJvdHRvbSwgaW4gbG9uZyBtYXJnaW5MZWZ0KSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICBNYWxsb2NTdGF0
aXN0aWNzIG1hbGxvY1N0YXRpc3RpY3MoKTsKICAgICBUeXBlQ29udmVyc2lvbnMgdHlwZUNvbnZl
cnNpb25zKCk7CiAKLSAgICBET01TdHJpbmdbXSBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7Cisg
ICAgRE9NU3RyaW5nTGlzdCBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCk7CiAKICAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgYm90aCByZXNldCB0aGUgdHJhY2tlZCByZXBhaW50IHJlY3RzLiBUaGV5IGFy
ZSBpbnRlZGVkIHRvIGJlIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKICAgICAvLyAgc3Rh
cnRUcmFja2luZ1JlcGFpbnRzLCByZXBhaW50UmVjdHNBc1RleHQsIHN0b3BUcmFja2luZ1JlcGFp
bnRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182166</attachid>
            <date>2013-01-10 10:33:49 -0800</date>
            <delta_ts>2013-01-11 14:27:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106506-20130110103052.patch</filename>
            <type>text/plain</type>
            <size>19263</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyNTc5OWZjNTBiNDFh
NGQ0NzAwNDA3MjJiM2I1NDZjMjE2YTU5Zi4uMzVjYWEwMTBlNWJkOTkzZDI3YzFjYTI4ZDRhMjYx
ZDU2OTdjZTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAxLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQmluZGluZ3M6IFJlbW92
ZSBzcGVjaWFsIGNhc2VzIGZvciBET01TdHJpbmdbXQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTA2CisKKyAgICAgICAgU3VwcG9ydCBmb3IgRE9N
U3RyaW5nW10gaW4gV2ViS2l0SURMIGFzIGFuIGFsaWFzIGZvciBET01TdHJpbmdMaXN0IHdhcyBh
ZGRlZCBpbiBhIGhhY2t5CisgICAgICAgIGZhc2hpb24uIFRoZSBvbmx5IHJlbWFpbmluZyB1c2Ug
d2FzIEludGVybmFsczsgdXBkYXRlIHRoZSBJREwgdG8gdXNlIHNlcXVlbmNlPERPTVN0cmluZz4K
KyAgICAgICAgb3IgRE9NU3RyaW5nTGlzdCwgd2hpY2ggdGhlIGltcGxlbWVudGF0aW9uIHdhcyBh
bHJlYWR5IGRvaW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgcnVuLWJpbmRpbmdzLXRlc3RzIHJlc3VsdHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEluZGV4R2V0dGVy
UmV0dXJuc1N0cmluZ3MpOgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKToKKyAgICAgICAg
KEdldE5hdGl2ZVR5cGUpOgorICAgICAgICAoR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcyk6Cisg
ICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2V0TmF0aXZlVHlwZSk6CisgICAgICAgIChKU1Zh
bHVlVG9OYXRpdmUpOgorICAgICAgICAoR2V0VjhIZWFkZXJOYW1lKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kOUNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1
bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aWRsOgorCiAyMDEzLTAxLTA4ICBCcmFuZG9uIEpvbmVzICA8YmFqb25lc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTWFrZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgaW5oZXJpdCBmcm9tIEFjdGl2
ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBmOTdkMDkyYjA4YmNmMmQ5YTBiNTY3OWI4OTVhNDc2ZjI5Mjhj
Y2IxLi45NWNjY2I3ZTIzNTlmMzg3NGVmMjY4OWI2ODQ0NWE5MjJjNmRlZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
MTg1LDcgKzE4NSw3IEBAIHN1YiBJbmRleEdldHRlclJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkg
JHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xh
cmF0aW9uIiBvciAkdHlwZSBlcSAiTWVkaWFMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlz
dCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIiAgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIg
b3IgJHR5cGUgZXEgIkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAkdHlw
ZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3IgJHR5
cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0eXBl
IGVxICJET01TZXR0YWJsZVRva2VuTGlzdCI7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0MSw4
ICsyNDEsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfSBlbHNpZiAoJHR5cGUgZXEg
IlhQYXRoTlNSZXNvbHZlciIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTWFBhdGhOU1Jl
c29sdmVyLmgifSA9IDE7CiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0N1c3RvbVhQYXRoTlNS
ZXNvbHZlci5oIn0gPSAxOwotICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsK
LSAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBE
T01TdHJpbmdbXSBvciBzZXF1ZW5jZTxET01TdHJpbmc+LgorICAgIH0gZWxzaWYgKCR0eXBlIGVx
ICJET01TdHJpbmdMaXN0IikgewogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01TdHJpbmdM
aXN0LmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIn0g
PSAxOwpAQCAtMzA0NSw4ICszMDQ0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJl
CiBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdlOjpDb21wYXJl
SG93IiwKICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCi0gICAgIyBGSVhNRTog
Q29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1
ZW5jZTxET01TdHJpbmc+LgotICAgICJET01TdHJpbmdbXSIgPT4gIlJlZlB0cjxET01TdHJpbmdM
aXN0PiIsCisgICAgIkRPTVN0cmluZ0xpc3QiID0+ICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iLAog
ICAgICJET01PYmplY3QiID0+ICJTY3JpcHRWYWx1ZSIsCiAgICAgIk5vZGVGaWx0ZXIiID0+ICJS
ZWZQdHI8Tm9kZUZpbHRlcj4iLAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiID0+ICJSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCkBAIC0zMDcyLDcgKzMwNzAsNyBAQCBzdWIgR2V0
TmF0aXZlVHlwZQogCiAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0
U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCR0eXBlKTsKICAgICByZXR1cm4gIiR7c3ZnTmF0aXZlVHlw
ZX0qIiBpZiAkc3ZnTmF0aXZlVHlwZTsKLSAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0
PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdbXSI7
CisgICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJp
bmdMaXN0IjsKICAgICByZXR1cm4gJG5hdGl2ZVR5cGV7JHR5cGV9IGlmIGV4aXN0cyAkbmF0aXZl
VHlwZXskdHlwZX07CiAKICAgICBteSAkYXJyYXlUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldEFy
cmF5VHlwZSgkdHlwZSk7CkBAIC0zMDk4LDcgKzMwOTYsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZUZv
ckNhbGxiYWNrcwogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIiBpZiAkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKLSAg
ICByZXR1cm4gIlBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJp
bmdMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nW10iOworICAgIHJldHVybiAiUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwogCiAgICAgcmV0
dXJuIEdldE5hdGl2ZVR5cGUoJHR5cGUpOwogfQpAQCAtMzIxMCw3ICszMjA4LDcgQEAgc3ViIEpT
VmFsdWVUb05hdGl2ZQogICAgICAgICByZXR1cm4gImV4ZWMsICR2YWx1ZSI7CiAgICAgfQogCi0g
ICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3Qi
ICkgeworICAgIGlmICgkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgKSB7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJKU0RPTVN0cmluZ0xpc3QuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAg
IHJldHVybiAidG9ET01TdHJpbmdMaXN0KGV4ZWMsICR2YWx1ZSkiOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
MDdjYjJkZDg1NTc2ZDI0ZWQzNDcxNjYzZDlhNGFhYjcxZjdhNjU4YS4uMjU2MjFiNjdhNzUxZjcy
MzI4ODk2MTE3NjZjZDIxOWI4OTZmNzFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM2OTQsOSArMzY5NCw3IEBAIHN1
YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJTY3JpcHRWYWx1ZSIgaWYgJHR5cGUgZXEgIkRP
TU9iamVjdCIgb3IgJHR5cGUgZXEgImFueSI7CiAgICAgcmV0dXJuICJEaWN0aW9uYXJ5IiBpZiAk
dHlwZSBlcSAiRGljdGlvbmFyeSI7CiAKLSAgICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcg
RE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCi0g
ICAgcmV0dXJuICJSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdb
XSIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwotCisgICAgcmV0dXJuICJSZWZQdHI8RE9N
U3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKICAgICByZXR1cm4gIlJl
ZlB0cjxJREJLZXk+IiBpZiAkdHlwZSBlcSAiSURCS2V5IjsKICAgICByZXR1cm4gIlJlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiIgaWYgJHR5cGUgZXEgIk1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiOwogICAgIHJldHVybiAiUmVmUHRyPE5vZGVGaWx0ZXI+IiBpZiAkdHlwZSBlcSAiTm9kZUZp
bHRlciI7CkBAIC0zNzY2LDggKzM3NjQsNiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0
dXJuICJzdGF0aWNfY2FzdDxSYW5nZTo6Q29tcGFyZUhvdz4oJHZhbHVlLT5JbnQzMlZhbHVlKCkp
IiBpZiAkdHlwZSBlcSAiQ29tcGFyZUhvdyI7CiAgICAgcmV0dXJuICJ0b1dlYkNvcmVEYXRlKCR2
YWx1ZSkiIGlmICR0eXBlIGVxICJEYXRlIjsKICAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdCgk
dmFsdWUsICRnZXRJc29sYXRlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ0xpc3QiOwotICAgICMg
RklYTUU6IENvbnNpZGVyIHJlcGxhY2luZyBET01TdHJpbmdMaXN0IHdpdGggRE9NU3RyaW5nW10g
b3Igc2VxdWVuY2U8RE9NU3RyaW5nPi4KLSAgICByZXR1cm4gInRvRE9NU3RyaW5nTGlzdCgkdmFs
dWUsICRnZXRJc29sYXRlKSIgaWYgJHR5cGUgZXEgIkRPTVN0cmluZ1tdIjsKIAogICAgIGlmICgk
dHlwZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICByZXR1cm4gJHZhbHVlOwpAQCAtMzg0Miw3
ICszODM4LDYgQEAgc3ViIEdldFY4SGVhZGVyTmFtZQogICAgIHJldHVybiAiRXZlbnRMaXN0ZW5l
ci5oIiBpZiAkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciI7CiAgICAgcmV0dXJuICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIgaWYgJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSI7CiAgICAg
cmV0dXJuICJTY3JpcHRWYWx1ZS5oIiBpZiAkdHlwZSBlcSAiRE9NT2JqZWN0IiBvciAkdHlwZSBl
cSAiYW55IjsKLSAgICByZXR1cm4gIlY4RE9NU3RyaW5nTGlzdC5oIiBpZiAkdHlwZSBlcSAiRE9N
U3RyaW5nW10iOwogICAgIHJldHVybiAiVjgke3R5cGV9LmgiOwogfQogCkBAIC0zOTM1LDcgKzM5
MzAsNiBAQCBteSAlbm9uX3dyYXBwZXJfdHlwZXMgPSAoCiAgICAgJ0NvbXBhcmVIb3cnID0+IDEs
CiAgICAgJ0RPTU9iamVjdCcgPT4gMSwKICAgICAnRE9NU3RyaW5nJyA9PiAxLAotICAgICdET01T
dHJpbmdbXScgPT4gMSwKICAgICAnRE9NVGltZVN0YW1wJyA9PiAxLAogICAgICdEYXRlJyA9PiAx
LAogICAgICdEaWN0aW9uYXJ5JyA9PiAxLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2YjA1NDhjYjAwMmNjOWJh
MzgwYTZiNDMyMWI0N2QxODkwMjMxOTA0Li5mMWIxZmI2M2U5Mzg2ZjFjN2I5Yjc1YzNjNTIzODE5
NjBjNTQ2MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMjIwMyw3ICsyMjAzLDcgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kNygKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNh
c3RlZFRoaXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoZXhlYykpOwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RPTVN0
cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8
U3RyaW5nPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRN
ZXRob2QoYXJyYXlBcmcpOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOSgKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RPTVN0cmluZ0xp
c3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8U3RyaW5n
PihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qo
YXJyYXlBcmcpOwpAQCAtMjQ0MCwxMSArMjQ0MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVj
UwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdmFsdWVz
KHRvRE9NU3RyaW5nTGlzdChleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBE
ZWZhdWx0SXNVbmRlZmluZWQpKSk7CisgICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzKHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgSlNDOjpKU1Zh
bHVlIHJlc3VsdCA9IGpzQXJyYXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGlt
cGwtPnN0cmluZ0FycmF5RnVuY3Rpb24odmFsdWVzLCBlYykpOworICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLT5zdHJpbmdBcnJheUZ1bmN0aW9uKHZhbHVlcywgZWMpKSk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggZjlkMDY1ZmExODZlZTE4NWJmNDY5ZTk2MDI4ZmVlNjUxZjRiMTZjNi4uMGJiNWVhZmIy
MmNiNWM1OWU2ODE2MjMwMTAzM2MxOWQ1ODcyMTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTc3LDkgKzE3Nyw5IEBACiAg
ICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIGxvbmcgbG9uZ0FyZyk7CiAgICAgdm9pZCAg
ICBvdmVybG9hZGVkTWV0aG9kKGluIFtDYWxsYmFja10gVGVzdENhbGxiYWNrIGNhbGxiYWNrKTsK
ICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gRE9NU3RyaW5nTGlzdD8gbGlzdEFyZyk7
Ci0gICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIERPTVN0cmluZ1tdPyBhcnJheUFyZyk7
CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIHNlcXVlbmNlPERPTVN0cmluZz4/IGFy
cmF5QXJnKTsKICAgICB2b2lkICAgIG92ZXJsb2FkZWRNZXRob2QoaW4gVGVzdE9iaiBvYmpBcmcp
OwotICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBET01TdHJpbmdbXSBhcnJheUFyZyk7
CisgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIHNlcXVlbmNlPERPTVN0cmluZz4gYXJy
YXlBcmcpOwogICAgIHZvaWQgICAgb3ZlcmxvYWRlZE1ldGhvZChpbiBzZXF1ZW5jZTx1bnNpZ25l
ZCBsb25nPiBhcnJheUFyZyk7CiAgICAgdm9pZCAgICBvdmVybG9hZGVkTWV0aG9kKGluIERPTVN0
cmluZyBzdHJBcmcpOwogI2VuZGlmCkBAIC0yMTgsNyArMjE4LDcgQEAKICAgICB2b2lkIG1ldGhv
ZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShpbiBzZXF1ZW5jZTx1bnNpZ25lZCBsb25nPiB1bnNp
Z25lZExvbmdTZXF1ZW5jZSk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFRFU1RJTkdfVjgpIHx8IGRl
ZmluZWQoVEVTVElOR19KUykKLSAgICBET01TdHJpbmdbXSBzdHJpbmdBcnJheUZ1bmN0aW9uKGlu
IERPTVN0cmluZ1tdIHZhbHVlcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgRE9NU3RyaW5n
TGlzdCBzdHJpbmdBcnJheUZ1bmN0aW9uKGluIHNlcXVlbmNlPERPTVN0cmluZz4gdmFsdWVzKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgogCiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2Rl
XSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgY29udGVudERvY3VtZW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApp
bmRleCAzZmMyOGJkZmUyYTcyNzM2ZmUwNzc1NmUyZjk3MmY3ZDU3NmZhZWQ5Li4yMzE3MjVmODlh
ZmUxNGRlMzg4NTg4YmJjMGYxZDVmZmNhYjhkYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjMsNyArMjMs
NiBAQAogCiAjaW5jbHVkZSAiQmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiQ29udGV4dEZlYXR1
cmVzLmgiCi0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnku
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmVhdHVyZU9ic2VydmVy
LmgiCkBAIC0xNDcxLDcgKzE0NzAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92
ZXJsb2FkZWRNZXRob2Q3Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4sIGFycmF5QXJnLCB0b0RPTVN0cmluZ0xpc3QoTUFZQkVfTUlTU0lOR19QQVJBTUVU
RVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKKyAg
ICBWOFRSWUNBVENIKFZlY3RvcjxTdHJpbmc+LCBhcnJheUFyZywgdG9OYXRpdmVBcnJheTxTdHJp
bmc+KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkp
KTsKICAgICBpbXAtPm92ZXJsb2FkZWRNZXRob2QoYXJyYXlBcmcpOwogICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogfQpAQCAtMTQ5MSw3ICsxNDkwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goUmVm
UHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFyZywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKSk7CisgICAgVjhUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgYXJyYXlBcmcsIHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGFycmF5QXJnKTsKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE2NjUsMTEgKzE2NjQsMTEgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXIKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKLSAgICBWOFRS
WUNBVENIKFJlZlB0cjxET01TdHJpbmdMaXN0PiwgdmFsdWVzLCB0b0RPTVN0cmluZ0xpc3QoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSwgYXJncy5H
ZXRJc29sYXRlKCkpKTsKKyAgICBWOFRSWUNBVENIKFZlY3RvcjxTdHJpbmc+LCB2YWx1ZXMsIHRv
TmF0aXZlQXJyYXk8U3RyaW5nPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHJlc3VsdCA9IGlt
cC0+c3RyaW5nQXJyYXlGdW5jdGlvbih2YWx1ZXMsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMp
KQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmV0dXJuIHY4QXJyYXkocmVzdWx0LnJlbGVhc2Uo
KSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCks
IGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICB9CiAgICAgZmFpbDoKICAg
ICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xOTgy
LDcgKzE5ODEsNiBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2Fs
bGJhY2sgVjhUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAjZW5kaWYKICAgICB7Im92ZXJsb2FkZWRN
ZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZENhbGxiYWNrfSwKICAg
ICB7ImNsYXNzTWV0aG9kV2l0aENsYW1wIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9k
V2l0aENsYW1wQ2FsbGJhY2t9LAotICAgIHsic3RyaW5nQXJyYXlGdW5jdGlvbiIsIFRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2t9LAogICAgIHsiZ2V0U1ZHRG9j
dW1lbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Z2V0U1ZHRG9jdW1lbnRDYWxsYmFja30sCiAgICAg
eyJtdXRhYmxlUG9pbnRGdW5jdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRG
dW5jdGlvbkNhbGxiYWNrfSwKICAgICB7ImltbXV0YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNrfSwKQEAgLTIxMTYsNiAr
MjExNCwxMiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoKSkKICAgICAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2Qy
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUpKTsKIAorICAgIC8vIEN1
c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCisgICAgY29uc3QgaW50IHN0cmlu
Z0FycmF5RnVuY3Rpb25BcmdjID0gMTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJl
OjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25B
cmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlG
dW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpz
dHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVu
Y3Rpb25TaWduYXR1cmUpKTsKKwogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQxJwog
ICAgIGNvbnN0IGludCBjb252ZXJ0MUFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOGE6OkdldFJhd1Rl
bXBsYXRlKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjNjI1MTdh
NmU4ZjA1MWExYjUwZGI5YWY4MDM0YjlhZjU5MTMzZjM4Li4zNDMyN2NlZDllNzdjOWZkYzUwYmZh
NDgxNDcyZWU1NzA2OGYxYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC04MCw4ICs4MCw4IEBACiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUikgJiYg
RU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IKICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29z
ZXIoaW4gRWxlbWVudCBlbGVtZW50LCBpbiBET01TdHJpbmcgY29sb3JWYWx1ZSk7CiAjZW5kaWYK
LSAgICBET01TdHJpbmdbXSBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgdm9pZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2
aW91c0hpc3RvcnlJdGVtKGluIERPTVN0cmluZ1tdIHZhbHVlcykgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgRE9NU3RyaW5nTGlzdCBmb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJ
dGVtKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZXRGb3JtQ29udHJvbFN0YXRl
T2ZQcmV2aW91c0hpc3RvcnlJdGVtKGluIERPTVN0cmluZ0xpc3QgdmFsdWVzKSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEVuYWJsZU1vY2tQYWdlUG9wdXAoaW4gYm9vbGVhbiBl
bmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9QQUdFX1BP
UFVQKSAmJiBFTkFCTEVfUEFHRV9QT1BVUAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQYWdlUG9w
dXBDb250cm9sbGVyIHBhZ2VQb3B1cENvbnRyb2xsZXI7CkBAIC0yMDcsNyArMjA3LDcgQEAKIAog
ICAgIERPTVN0cmluZyBjb3VudGVyVmFsdWUoaW4gRWxlbWVudCBlbGVtZW50KTsKICAgICBsb25n
IHBhZ2VOdW1iZXIoaW4gRWxlbWVudCBlbGVtZW50LCBpbiBbT3B0aW9uYWxdIGZsb2F0IHBhZ2VX
aWR0aCwgaW4gW09wdGlvbmFsXSBmbG9hdCBwYWdlSGVpZ2h0KTsKLSAgICBET01TdHJpbmdbXSBp
Y29uVVJMcyhpbiBEb2N1bWVudCBkb2N1bWVudCk7CisgICAgRE9NU3RyaW5nTGlzdCBpY29uVVJM
cyhpbiBEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgbG9uZyBudW1iZXJPZlBhZ2VzKGluIFtPcHRp
b25hbF0gZG91YmxlIHBhZ2VXaWR0aEluUGl4ZWxzLCBpbiBbT3B0aW9uYWxdIGRvdWJsZSBwYWdl
SGVpZ2h0SW5QaXhlbHMpOwogICAgIERPTVN0cmluZyBwYWdlUHJvcGVydHkoaW4gRE9NU3RyaW5n
IHByb3BlcnR5TmFtZSwgaW4gbG9uZyBwYWdlTnVtYmVyKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAgICAgRE9NU3RyaW5nIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGluIGxvbmcgcGFnZUlu
ZGV4LCBpbiBsb25nIHdpZHRoLCBpbiBsb25nIGhlaWdodCwgaW4gbG9uZyBtYXJnaW5Ub3AsIGlu
IGxvbmcgbWFyZ2luUmlnaHQsIGluIGxvbmcgbWFyZ2luQm90dG9tLCBpbiBsb25nIG1hcmdpbkxl
ZnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgIE1hbGxv
Y1N0YXRpc3RpY3MgbWFsbG9jU3RhdGlzdGljcygpOwogICAgIFR5cGVDb252ZXJzaW9ucyB0eXBl
Q29udmVyc2lvbnMoKTsKIAotICAgIERPTVN0cmluZ1tdIGdldFJlZmVyZW5jZWRGaWxlUGF0aHMo
KTsKKyAgICBET01TdHJpbmdMaXN0IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKTsKIAogICAgIC8v
IFRoZXNlIGZ1bmN0aW9ucyBib3RoIHJlc2V0IHRoZSB0cmFja2VkIHJlcGFpbnQgcmVjdHMuIFRo
ZXkgYXJlIGludGVkZWQgdG8gYmUgdXNlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgogICAgIC8v
ICBzdGFydFRyYWNraW5nUmVwYWludHMsIHJlcGFpbnRSZWN0c0FzVGV4dCwgc3RvcFRyYWNraW5n
UmVwYWludHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ZpbGUvc2VsZWN0
ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ZpbGUvc2VsZWN0ZWQtZmlsZXMtZnJvbS1oaXN0b3J5LXN0YXRlLmh0bWwKaW5kZXggNTlhOTQ3
YmYwYzBhZDk0ZDRjYWZiYjc5MTg4YjhlMjk4NjdiYzIxYy4uNWU4NDEyMDc5YTAxYWI4ZTQ3NzE1
N2U1OGE2M2NmNGQ0MjE5ZWZkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9m
aWxlL3NlbGVjdGVkLWZpbGVzLWZyb20taGlzdG9yeS1zdGF0ZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRt
bApAQCAtNDAsNyArNDAsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICB0ZXN0RmFp
bGVkKCdvbmNoYW5nZSBmaXJlZCB1bmV4cGVjdGVkIHRpbWVzOiAnICsgb25DaGFuZ2VGaXJlZCk7
CiAgICAgfQogCi0gICAgdmFyIGZpbGVzID0gaW50ZXJuYWxzLmdldFJlZmVyZW5jZWRGaWxlUGF0
aHMoKTsKKyAgICB2YXIgZmlsZXMgPSBbXS5zbGljZS5jYWxsKGludGVybmFscy5nZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKCkpOwogICAgIGZpbGVzLnNvcnQoKTsKICAgICBpZiAoZmlsZXMubGVuZ3Ro
ID09IDIgJiYKICAgICAgICAgZmlsZXNbMF0uaW5kZXhPZigndGVzdGZpbGUxLnR4dCcpICE9IC0x
ICYmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9zdGF0ZS1y
ZXN0b3JlLWJyb2tlbi1zdGF0ZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291
cmNlcy9zdGF0ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS0yLmh0bWwKaW5kZXggMmRiNmFiMmQwZTY3
ZTdiNzU3MDcxMmY4YWVhNGUwN2UxZGM2YTk3YS4uNDZjMTgyZTMxZDBjNjAzMzY3NDk0MjczZTc5
ZjQ1NzgyM2FlM2ZkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtMi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVzb3VyY2VzL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLTIuaHRtbApAQCAt
MSw2ICsxLDYgQEAKIDxzY3JpcHQ+CiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIHZhciBz
dGF0ZUFycmF5ID0gaW50ZXJuYWxzLmZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0
ZW0oKTsKKyAgICB2YXIgc3RhdGVBcnJheSA9IFtdLnNsaWNlLmNhbGwoaW50ZXJuYWxzLmZvcm1D
b250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oKSk7CiAgICAgLy8gT21pdCB0aGUgc2ln
bmF0dXJlIHN0cmluZyBiZWNhdXNlIGl0IGlzIHZvbGF0aWxlLgogICAgIGNvbnNvbGUubG9nKCdH
ZW5lcmF0ZWQgc3RhdGU6IFsnICsgc3RhdGVBcnJheS5zbGljZSgxKSArICddJyk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3N0YXRlLXJlc3RvcmUtc2tp
cC1zdGF0ZWxlc3MtZHVtcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMv
c3RhdGUtcmVzdG9yZS1za2lwLXN0YXRlbGVzcy1kdW1wLmh0bWwKaW5kZXggY2Q0ODc3NmQ3Mzg0
Y2FjMDQ0OTRkYTU3NGZiMzlhNzg1ZDRjY2UyMi4uMmI5Yjk0NDZhNDRlYjYwYTJhNzYyODkwMGVk
ZDhkZjIzNjM0YWEzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvc3RhdGUtcmVzdG9yZS1za2lwLXN0YXRlbGVzcy1kdW1wLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc3RhdGUtcmVzdG9yZS1za2lwLXN0YXRlbGVzcy1kdW1w
Lmh0bWwKQEAgLTEsMTEgKzEsMTIgQEAKIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KKwogaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKICAgICB2YXIgc3RhdGVmdWxUeXBlcyA9IFsnaGlkZGVuJywgJ3RleHQnLCAndGVsJywg
J3VybCcsICdlbWFpbCcsICdudW1iZXInLCAncmFuZ2UnLCAnY2hlY2tib3gnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICdyYWRpbycsICdmaWxlJywgJ3NlbGVjdC1vbmUnLCAnc2VsZWN0LW11
bHRpcGxlJywgJ3RleHRhcmVhJ107CiAgICAgdmFyIHN0YXRlbGVzc1R5cGVzID0gWydmaWVsZHNl
dCcsICdwYXNzd29yZCcsICdzdWJtaXQnLCAncmVzZXQnLCAnYnV0dG9uJywgJ2tleWdlbicsICdv
dXRwdXQnXTsKIAotICAgIHZhciBzdGF0ZXMgPSBpbnRlcm5hbHMuZm9ybUNvbnRyb2xTdGF0ZU9m
UHJldmlvdXNIaXN0b3J5SXRlbSgpOworICAgIHZhciBzdGF0ZXMgPSBbXS5zbGljZS5jYWxsKGlu
dGVybmFscy5mb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCkpOwogICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc3RhdGVmdWxUeXBlcy5sZW5ndGg7ICsraSkgewogICAgICAgICBp
ZiAoc3RhdGVzLmluZGV4T2Yoc3RhdGVmdWxUeXBlc1tpXSkgPj0gMCkKICAgICAgICAgICAgIHRl
c3RQYXNzZWQoJ1RoZXJlIGlzIGEgc3RhdGUgZm9yICcgKyBzdGF0ZWZ1bFR5cGVzW2ldKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182417</attachid>
            <date>2013-01-11 14:27:27 -0800</date>
            <delta_ts>2013-01-14 12:26:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106506-20130111142430.patch</filename>
            <type>text/plain</type>
            <size>28837</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzNhNjY5ZWY0NGYxNDcw
ZTNmZGZhNjU0MjY5NzYzMzBhMDdkMzM3Ni4uMTk1Nzg1ZjgxZjA1NjAxMzk1MzA4MTlmMWVjMGYx
YjlmYzkxNjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTExICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQmluZGluZ3M6IFJlbW92
ZSBzcGVjaWFsIGNhc2VzIGZvciBET01TdHJpbmdbXQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NTA2CisKKyAgICAgICAgUmVtb3ZlIHNwZWNpYWwg
aW4gYmluZGluZyBjb2RlIGdlbmVyYXRvcnMgdGhhdCBtYXAgRE9NU3RyaW5nW10gdG8gRE9NU3Ry
aW5nTGlzdC4KKyAgICAgICAgQXJyYXkgKFRbXSkgYW5kIHNlcXVlbmNlIChzZXF1ZW5jZTxUPikg
YXJlIHN1cHBvcnRlZCBlbm91Z2ggbm93IHRoYXQgdG8gYmUgdXNlZAorICAgICAgICBmb3IgSW50
ZXJuYWxzLCB3aGljaCBpcyB0aGUgb25seSBJREwgdGhhdCBuZWVkZWQgdXBkYXRpbmcuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
Zm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtc2tpcC1zdGF0ZWxlc3MuaHRtbAor
CisgICAgICAgIEJpbmRpbmdzIHRlc3QgcmVzdWx0cyB1cGRhdGVkIGZvciBKUy9WOC4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTogUmVtb3ZlIHJlZHVuZGFu
dCBJc0FycmF5VHlwZSAodXNlIEdldEFycmF5VHlwZSBpbnN0ZWFkKQorICAgICAgICAoSXNSZWZQ
dHJUeXBlKTogQXJyYXkgYW5kIFNlcXVlbmNlIHR5cGVzIGFyZSBub3QgUmVmUHRyIHR5cGVzLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
SW5kZXhHZXR0ZXJSZXR1cm5zU3RyaW5ncyk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIERPTVN0
cmluZ1tdLgorICAgICAgICAoQWRkSW5jbHVkZXNGb3JUeXBlKTogU2tpcCBBcnJheSB0eXBlcywg
anVzdCBsaWtlIFNlcXVlbmNlIHR5cGVzLiAoU2hvdWxkIHByb2JhYmx5IHJlY3Vyc2UKKyAgICAg
ICAgZm9yIHRoZSBiYXNlIHR5cGUsIGJ1dCBub3QgbmVlZGVkIGZvciBub3cuKQorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uKTogcy9Jc0FycmF5VHlwZS9HZXRBcnJh
eVR5cGUvCisgICAgICAgIChHZXROYXRpdmVUeXBlKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb3Ig
RE9NU3RyaW5nW10uCisgICAgICAgIChHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzKTogRGl0dG8u
CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrRXhwcmVzc2lvbik6IHMvSXNBcnJheVR5cGUvR2V0QXJyYXlUeXBlLworICAgICAgICAoR2V0
TmF0aXZlVHlwZSk6IFJlbW92ZSBzcGVjaWFsIGNhc2UgZm9yIERPTVN0cmluZ1tdLgorICAgICAg
ICAoSlNWYWx1ZVRvTmF0aXZlKTogRGl0dG8uCisgICAgICAgIChHZXRWOEhlYWRlck5hbWUpOiBE
aXR0by4KKyAgICAgICAgKElzV3JhcHBlclR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFkZGVkIGV4cGxpY2l0IG5ldyBjYXNlcyBmb3Ig
RE9NU3RyaW5nTGlzdAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRN
ZXRob2Q3Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92
ZXJsb2FkZWRNZXRob2Q5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIChUZXN0T2JqVjhJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmb3JtQ29udHJvbFN0YXRl
T2ZQcmV2aW91c0hpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0
Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6Omljb25VUkxzKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Z2V0
UmVmZXJlbmNlZEZpbGVQYXRocyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAg
ICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBQcm9k
dWNlIERPTVN0cmluZ1tdLCBjb25zdW1lIHNlcXVlbmNlPERPTVN0cmluZz4gdG8gbWF0Y2ggdGVz
dHMuCisKIDIwMTMtMDEtMTAgIERhbiBCZWFtICA8ZGJlYW1AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEltcGxlbWVudCBBdXRvY29tcGxldGVFcnJvckV2ZW50I3JlYXNvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDg2ZDgwMTI1
ZWY5NzcwNzczNWVlY2I3YzRlMzM4MmEwMzJhYWY0NzAuLjRhNGIyNWZjNDg0ZjkwMGMwNmEwYThl
YTJkOGU1ZGJiOTI3ZjZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KQEAgLTMyMiwxNCArMzIyLDYgQEAgc3ViIFNraXBJbmNsdWRl
SGVhZGVyCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBJc0FycmF5VHlwZQotewotICAgIG15ICRv
YmplY3QgPSBzaGlmdDsKLSAgICBteSAkdHlwZSA9IHNoaWZ0OwotICAgICMgRklYTUU6IEFkZCBw
cm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBUW10/LCBzZXF1ZW5jZTxUPi4KLSAgICByZXR1cm4gJHR5
cGUgPX4gbS9cW1xdJC87Ci19Ci0KIHN1YiBJc0NvbnN0cnVjdG9yVGVtcGxhdGUKIHsKICAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CkBAIC00MDIsNiArMzk0LDggQEAgc3ViIElzUmVmUHRyVHlwZQog
ICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKICAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1ByaW1p
dGl2ZVR5cGUoJHR5cGUpOworICAgIHJldHVybiAwIGlmICRvYmplY3QtPkdldEFycmF5VHlwZSgk
dHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+R2V0U2VxdWVuY2VUeXBlKCR0eXBlKTsK
ICAgICByZXR1cm4gMCBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nIjsKIAogICAgIHJldHVybiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQppbmRleCBlMjk0OGRmMzNmMmJkZjM3NGQ0MTY1NzA5MjM0YjY0YjUzYTkyZjU5Li4wMmY0ODFh
ZWY5YjQ1ODg0NzYzNjlmNWNiNThmNzEwN2Y5OTA4OTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHN1YiBJbmRleEdldHRlclJldHVybnNTdHJpbmdzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlm
dDsKIAotICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJDU1NTdHlsZURlY2xhcmF0aW9uIiBvciAk
dHlwZSBlcSAiTWVkaWFMaXN0IiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUg
ZXEgIkRPTVN0cmluZ1tdIiAgb3IgJHR5cGUgZXEgIkRPTVRva2VuTGlzdCIgb3IgJHR5cGUgZXEg
IkRPTVNldHRhYmxlVG9rZW5MaXN0IjsKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQ1NTU3R5
bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUgZXEgIk1lZGlhTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVN0
cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01Ub2tlbkxpc3QiIG9yICR0eXBlIGVxICJET01TZXR0
YWJsZVRva2VuTGlzdCI7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI0MSw5ICsyNDEsNiBAQCBz
dWIgQWRkSW5jbHVkZXNGb3JUeXBlCiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlhQYXRoTlNSZXNv
bHZlciIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IkpTWFBhdGhOU1Jlc29sdmVyLmgifSA9
IDE7CiAgICAgICAgICRpbmNsdWRlc1JlZi0+eyJKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5oIn0g
PSAxOwotICAgIH0gZWxzaWYgKCR0eXBlIGVxICJET01TdHJpbmdbXSIpIHsKLSAgICAgICAgIyBG
SVhNRTogQ29uc2lkZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBv
ciBzZXF1ZW5jZTxET01TdHJpbmc+LgotICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01TdHJp
bmdMaXN0LmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSIpIHsKICAgICAgICAgJGluY2x1ZGVzUmVmLT57IlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
In0gPSAxOwogICAgIH0gZWxzaWYgKCRpc0NhbGxiYWNrKSB7CkBAIC0yNTEsNiArMjQ4LDcgQEAg
c3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1R5
cGVkQXJyYXlUeXBlKCR0eXBlKSkgewogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiPHd0Zi8ke3R5
cGV9Lmg+In0gPSAxOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5HZXRTZXF1ZW5jZVR5
cGUoJHR5cGUpKSB7CisgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkdldEFycmF5VHlwZSgk
dHlwZSkpIHsKICAgICB9IGVsc2UgewogICAgICAgICAjIGRlZmF1bHQsIGluY2x1ZGUgdGhlIHNh
bWUgbmFtZWQgZmlsZQogICAgICAgICAkaW5jbHVkZXNSZWYtPnsiJHt0eXBlfS5oIn0gPSAxOwpA
QCAtMTMwMSw3ICsxMjk5LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lv
bgogICAgICAgICAgICAgIyBGb3IgQ2FsbGJhY2tzIG9ubHkgY2hlY2tzIGlmIHRoZSB2YWx1ZSBp
cyBudWxsIG9yIG9iamVjdC4KICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2
YWx1ZX0uaXNOdWxsKCkgfHwgJHt2YWx1ZX0uaXNGdW5jdGlvbigpKSIpOwogICAgICAgICAgICAg
JHVzZWRBcmd1bWVudHN7JHBhcmFtZXRlckluZGV4fSA9IDE7Ci0gICAgICAgIH0gZWxzaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0FycmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNl
cXVlbmNlVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkdl
dEFycmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlw
ZSkpIHsKICAgICAgICAgICAgICMgRklYTUU6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgVFtdLCBU
W10/LCBzZXF1ZW5jZTxUPgogICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlzTnVsbGFibGUp
IHsKICAgICAgICAgICAgICAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiKCR7dmFsdWV9LmlzTnVs
bCgpIHx8ICgke3ZhbHVlfS5pc09iamVjdCgpICYmIGlzSlNBcnJheSgke3ZhbHVlfSkpKSIpOwpA
QCAtMzA0NSw4ICszMDQzLDYgQEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiBteSAl
bmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFyZUhvdyIgPT4gIlJhbmdlOjpDb21wYXJlSG93IiwK
ICAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3QgU3RyaW5nJiIsCi0gICAgIyBGSVhNRTogQ29uc2lk
ZXIgcmVwbGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5jZTxE
T01TdHJpbmc+LgotICAgICJET01TdHJpbmdbXSIgPT4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIs
CiAgICAgIkRPTU9iamVjdCIgPT4gIlNjcmlwdFZhbHVlIiwKICAgICAiTm9kZUZpbHRlciIgPT4g
IlJlZlB0cjxOb2RlRmlsdGVyPiIsCiAgICAgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgPT4gIlJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IiwKQEAgLTMwNzIsNyArMzA2OCw3IEBAIHN1YiBH
ZXROYXRpdmVUeXBlCiAKICAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5H
ZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpOwogICAgIHJldHVybiAiJHtzdmdOYXRpdmVU
eXBlfSoiIGlmICRzdmdOYXRpdmVUeXBlOwotICAgIHJldHVybiAiUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCIgb3IgJHR5cGUgZXEgIkRPTVN0cmluZ1td
IjsKKyAgICByZXR1cm4gIlJlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0
cmluZ0xpc3QiOwogICAgIHJldHVybiAkbmF0aXZlVHlwZXskdHlwZX0gaWYgZXhpc3RzICRuYXRp
dmVUeXBleyR0eXBlfTsKIAogICAgIG15ICRhcnJheVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0
QXJyYXlUeXBlKCR0eXBlKTsKQEAgLTMwOTgsNyArMzA5NCw3IEBAIHN1YiBHZXROYXRpdmVUeXBl
Rm9yQ2FsbGJhY2tzCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICByZXR1cm4gIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSoiIGlmICR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiOwot
ICAgIHJldHVybiAiUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiIgaWYgJHR5cGUgZXEgIkRPTVN0
cmluZ0xpc3QiIG9yICR0eXBlIGVxICJET01TdHJpbmdbXSI7CisgICAgcmV0dXJuICJQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7CiAKICAgICBy
ZXR1cm4gR2V0TmF0aXZlVHlwZSgkdHlwZSk7CiB9CkBAIC0zMjEwLDcgKzMyMDYsNyBAQCBzdWIg
SlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgIHJldHVybiAiZXhlYywgJHZhbHVlIjsKICAgICB9CiAK
LSAgICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZ1tdIiBvciAkdHlwZSBlcSAiRE9NU3RyaW5nTGlz
dCIgKSB7CisgICAgaWYgKCR0eXBlIGVxICJET01TdHJpbmdMaXN0IiApIHsKICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkpTRE9NU3RyaW5nTGlzdC5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAg
ICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xpc3QoZXhlYywgJHZhbHVlKSI7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCAwN2NiMmRkODU1NzZkMjRlZDM0NzE2NjNkOWE0YWFiNzFmN2E2NThhLi4zMmRjMmJlZmJiOWM0
OGI0NGUwZmYyOWJhOGU2OTNlMmNjNGQ2ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTQwMSw3ICsxNDAxLDcgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrRXhwcmVzc2lvbgogICAgICAgICB9IGVsc2lmICgk
cGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAgICAg
ICAgIyBGb3IgQ2FsbGJhY2tzIG9ubHkgY2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIG9i
amVjdC4KICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVs
bCgpIHx8ICR7dmFsdWV9LT5Jc0Z1bmN0aW9uKCkpIik7Ci0gICAgICAgIH0gZWxzaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc0FycmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVl
bmNlVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkdldEFy
cmF5VHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3ItPkdldFNlcXVlbmNlVHlwZSgkdHlwZSkp
IHsKICAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc051bGxhYmxlKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS0+SXNOdWxsKCkgfHwgJHt2YWx1
ZX0tPklzQXJyYXkoKSkiKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjk0LDkgKzM2OTQs
NyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVybiAiU2NyaXB0VmFsdWUiIGlmICR0eXBl
IGVxICJET01PYmplY3QiIG9yICR0eXBlIGVxICJhbnkiOwogICAgIHJldHVybiAiRGljdGlvbmFy
eSIgaWYgJHR5cGUgZXEgIkRpY3Rpb25hcnkiOwogCi0gICAgIyBGSVhNRTogQ29uc2lkZXIgcmVw
bGFjaW5nIERPTVN0cmluZ0xpc3Qgd2l0aCBET01TdHJpbmdbXSBvciBzZXF1ZW5jZTxET01TdHJp
bmc+LgotICAgIHJldHVybiAiUmVmUHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9N
U3RyaW5nW10iIG9yICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsKLQorICAgIHJldHVybiAiUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IiBpZiAkdHlwZSBlcSAiRE9NU3RyaW5nTGlzdCI7CiAgICAgcmV0
dXJuICJSZWZQdHI8SURCS2V5PiIgaWYgJHR5cGUgZXEgIklEQktleSI7CiAgICAgcmV0dXJuICJS
ZWZQdHI8TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4iIGlmICR0eXBlIGVxICJNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIjsKICAgICByZXR1cm4gIlJlZlB0cjxOb2RlRmlsdGVyPiIgaWYgJHR5cGUgZXEg
Ik5vZGVGaWx0ZXIiOwpAQCAtMzc2Niw4ICszNzY0LDYgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQog
ICAgIHJldHVybiAic3RhdGljX2Nhc3Q8UmFuZ2U6OkNvbXBhcmVIb3c+KCR2YWx1ZS0+SW50MzJW
YWx1ZSgpKSIgaWYgJHR5cGUgZXEgIkNvbXBhcmVIb3ciOwogICAgIHJldHVybiAidG9XZWJDb3Jl
RGF0ZSgkdmFsdWUpIiBpZiAkdHlwZSBlcSAiRGF0ZSI7CiAgICAgcmV0dXJuICJ0b0RPTVN0cmlu
Z0xpc3QoJHZhbHVlLCAkZ2V0SXNvbGF0ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdMaXN0IjsK
LSAgICAjIEZJWE1FOiBDb25zaWRlciByZXBsYWNpbmcgRE9NU3RyaW5nTGlzdCB3aXRoIERPTVN0
cmluZ1tdIG9yIHNlcXVlbmNlPERPTVN0cmluZz4uCi0gICAgcmV0dXJuICJ0b0RPTVN0cmluZ0xp
c3QoJHZhbHVlLCAkZ2V0SXNvbGF0ZSkiIGlmICR0eXBlIGVxICJET01TdHJpbmdbXSI7CiAKICAg
ICBpZiAoJHR5cGUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgcmV0dXJuICR2YWx1ZTsKQEAg
LTM4NDIsNyArMzgzOCw2IEBAIHN1YiBHZXRWOEhlYWRlck5hbWUKICAgICByZXR1cm4gIkV2ZW50
TGlzdGVuZXIuaCIgaWYgJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiOwogICAgIHJldHVybiAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiIGlmICR0eXBlIGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUi
OwogICAgIHJldHVybiAiU2NyaXB0VmFsdWUuaCIgaWYgJHR5cGUgZXEgIkRPTU9iamVjdCIgb3Ig
JHR5cGUgZXEgImFueSI7Ci0gICAgcmV0dXJuICJWOERPTVN0cmluZ0xpc3QuaCIgaWYgJHR5cGUg
ZXEgIkRPTVN0cmluZ1tdIjsKICAgICByZXR1cm4gIlY4JHt0eXBlfS5oIjsKIH0KIApAQCAtMzkz
NSw3ICszOTMwLDYgQEAgbXkgJW5vbl93cmFwcGVyX3R5cGVzID0gKAogICAgICdDb21wYXJlSG93
JyA9PiAxLAogICAgICdET01PYmplY3QnID0+IDEsCiAgICAgJ0RPTVN0cmluZycgPT4gMSwKLSAg
ICAnRE9NU3RyaW5nW10nID0+IDEsCiAgICAgJ0RPTVRpbWVTdGFtcCcgPT4gMSwKICAgICAnRGF0
ZScgPT4gMSwKICAgICAnRGljdGlvbmFyeScgPT4gMSwKQEAgLTM5NjYsNiArMzk2MCw3IEBAIG15
ICVub25fd3JhcHBlcl90eXBlcyA9ICgKIHN1YiBJc1dyYXBwZXJUeXBlCiB7CiAgICAgbXkgJHR5
cGUgPSBzaGlmdDsKKyAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyByZXR1cm4gZmFsc2UgZm9yIFNl
cXVlbmNlIGFuZCBBcnJheSB0eXBlcz8KICAgICByZXR1cm4gISgkbm9uX3dyYXBwZXJfdHlwZXN7
JHR5cGV9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2YjA1NDhjYjAwMmNjOWJhMzgwYTZiNDMyMWI0
N2QxODkwMjMxOTA0Li5hYWJkN2NmZTZmNTBiODkzMmNkMWE3ZDI1NmRmNWFjODE3NGViOTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtMzA5LDYgKzMwOSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJjbGFzc01ldGhvZFdp
dGhDbGFtcCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoQ2xhbXApLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJtZXRob2RXaXRo
VW5zaWduZWRMb25nU2VxdWVuY2UiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNp
YyB9LAogICAgIHsgInN0cmluZ0FycmF5RnVuY3Rpb24iLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24pLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5z
aWMgfSwKKyAgICB7ICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbiksIChpbnRwdHJfdCkxLCBOb0lu
dHJpbnNpYyB9LAogICAgIHsgImdldFNWR0RvY3VtZW50IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVu
Y3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9
LAogICAgIHsgImNvbnZlcnQxIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b252ZXJ0MSksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImNvbnZlcnQyIiwg
RG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MiksIChpbnRwdHJfdCkx
LCBOb0ludHJpbnNpYyB9LApAQCAtMjIwMyw3ICsyMjA0LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kNygKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
ZXhlYykpOwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RPTVN0cmluZ0xp
c3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8U3RyaW5n
PihleGVjLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmlu
ZWQpKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2Qo
YXJyYXlBcmcpOwpAQCAtMjIzNyw3ICsyMjM4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOSgK
ICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBhcnJheUFyZyh0b0RPTVN0cmluZ0xpc3QoZXhl
YywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkp
OworICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8U3RyaW5nPihleGVj
LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwtPm92ZXJsb2FkZWRNZXRob2QoYXJyYXlB
cmcpOwpAQCAtMjQ0MCw3ICsyNDQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlcyh0b0RPTVN0
cmluZ0xpc3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElz
VW5kZWZpbmVkKSkpOworICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlcyh0b05hdGl2ZUFycmF5PFN0
cmluZz4oZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMjQ0OSw2ICsyNDUwLDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlcyh0b0RPTVN0cmluZ0xp
c3QoZXhlYywgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZp
bmVkKSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LT5kb21TdHJpbmdMaXN0RnVuY3Rpb24odmFsdWVzLCBlYykpKTsKKyAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCA4YTAxMWM5NGJkOWY3ZTU0ZDQ5ZGNl
OGQyMDdjMGEwZmJhMDAzZWUwLi40MThlMDUyOTJmMDM0YzUxMTBmNmZmMGNmODY2MmVlM2JjZDYy
YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCkBAIC0yMDcsNiArMjA3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSgK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
VW5zaWduZWRMb25nU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQxKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihKU0M6OkV4ZWNTdGF0ZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4
IGY5ZDA2NWZhMTg2ZWUxODViZjQ2OWU5NjAyOGZlZTY1MWY0YjE2YzYuLmY4ODMxMDVkZThhNGUx
ZjZmNmQ1NTJhNmU0MzY4MGQwYzhmZDQ2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTIxOSw2ICsyMTksNyBAQAogI2VuZGlm
CiAjaWYgZGVmaW5lZChURVNUSU5HX1Y4KSB8fCBkZWZpbmVkKFRFU1RJTkdfSlMpCiAgICAgRE9N
U3RyaW5nW10gc3RyaW5nQXJyYXlGdW5jdGlvbihpbiBET01TdHJpbmdbXSB2YWx1ZXMpIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIERPTVN0cmluZ0xpc3QgZG9tU3RyaW5nTGlzdEZ1bmN0aW9u
KGluIERPTVN0cmluZ0xpc3QgdmFsdWVzKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNlbmRpZgog
CiAgICAgW0NoZWNrU2VjdXJpdHlGb3JOb2RlXSByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQg
Y29udGVudERvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAzZmMyOGJkZmUyYTcyNzM2ZmUwNzc1NmUy
Zjk3MmY3ZDU3NmZhZWQ5Li44ZTFiZjcyZDdhMzU5ODkyZDhjYTgyZWFiNmIzMTA2NDM2NDJmMTdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcApAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goUmVm
UHRyPERPTVN0cmluZ0xpc3Q+LCBhcnJheUFyZywgdG9ET01TdHJpbmdMaXN0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKSk7CisgICAgVjhUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgYXJyYXlBcmcsIHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpKSk7CiAgICAgaW1wLT5vdmVybG9hZGVkTWV0aG9kKGFycmF5QXJnKTsKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTE0OTEsNyArMTQ5MSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRS
WUNBVENIKFJlZlB0cjxET01TdHJpbmdMaXN0PiwgYXJyYXlBcmcsIHRvRE9NU3RyaW5nTGlzdChN
QVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpLCBhcmdz
LkdldElzb2xhdGUoKSkpOworICAgIFY4VFJZQ0FUQ0goVmVjdG9yPFN0cmluZz4sIGFycmF5QXJn
LCB0b05hdGl2ZUFycmF5PFN0cmluZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChhcnJheUFy
Zyk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CkBAIC0xNjY1LDExICsxNjY1LDI4IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB7
CisgICAgVjhUUllDQVRDSChWZWN0b3I8U3RyaW5nPiwgdmFsdWVzLCB0b05hdGl2ZUFycmF5PFN0
cmluZz4oTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KSkpOworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdCA9IGltcC0+c3RyaW5nQXJyYXlGdW5jdGlv
bih2YWx1ZXMsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBnb3RvIGZhaWw7
CisgICAgcmV0dXJuIHY4QXJyYXkocmVzdWx0LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgfQor
ICAgIGZhaWw6CisgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRl
KCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRvbVN0cmluZ0xpc3RGdW5j
dGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB7CiAg
ICAgVjhUUllDQVRDSChSZWZQdHI8RE9NU3RyaW5nTGlzdD4sIHZhbHVlcywgdG9ET01TdHJpbmdM
aXN0KE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKSk7Ci0gICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHJlc3VsdCA9
IGltcC0+c3RyaW5nQXJyYXlGdW5jdGlvbih2YWx1ZXMsIGVjKTsKKyAgICBSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gcmVzdWx0ID0gaW1wLT5kb21TdHJpbmdMaXN0RnVuY3Rpb24odmFsdWVzLCBlYyk7
CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgZ290byBmYWlsOwotICAgIHJldHVybiB2
OEFycmF5KHJlc3VsdC5yZWxlYXNlKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4g
dG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgfQogICAgIGZhaWw6CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5H
ZXRJc29sYXRlKCkpOwpAQCAtMTk4Miw3ICsxOTk5LDYgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29u
ZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewogI2Vu
ZGlmCiAgICAgeyJvdmVybG9hZGVkTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2Fk
ZWRNZXRob2RDYWxsYmFja30sCiAgICAgeyJjbGFzc01ldGhvZFdpdGhDbGFtcCIsIFRlc3RPYmpW
OEludGVybmFsOjpjbGFzc01ldGhvZFdpdGhDbGFtcENhbGxiYWNrfSwKLSAgICB7InN0cmluZ0Fy
cmF5RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxi
YWNrfSwKICAgICB7ImdldFNWR0RvY3VtZW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmdldFNWR0Rv
Y3VtZW50Q2FsbGJhY2t9LAogICAgIHsibXV0YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6bXV0YWJsZVBvaW50RnVuY3Rpb25DYWxsYmFja30sCiAgICAgeyJpbW11dGFibGVQ
b2ludEZ1bmN0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rpb25D
YWxsYmFja30sCkBAIC0yMTE2LDYgKzIxMzIsMTggQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kK
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKCkpCiAg
ICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1l
TWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpl
bmFibGVkQXRSdW50aW1lTWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2ln
bmF0dXJlKSk7CiAKKyAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9u
JworICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5n
QXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOERPTVN0cmluZ1tdOjpHZXRSYXdUZW1wbGF0ZSgpIH07
CisgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBz
dHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7CisKKyAgICAvLyBDdXN0b20gU2ln
bmF0dXJlICdkb21TdHJpbmdMaXN0RnVuY3Rpb24nCisgICAgY29uc3QgaW50IGRvbVN0cmluZ0xp
c3RGdW5jdGlvbkFyZ2MgPSAxOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7
IFY4RE9NU3RyaW5nTGlzdDo6R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGRlc2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MsIGRvbVN0cmluZ0xpc3RGdW5j
dGlvbkFyZ3YpOworICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkb21TdHJp
bmdMaXN0RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRl
cm5hbDo6ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0
cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSkpOworCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
Y29udmVydDEnCiAgICAgY29uc3QgaW50IGNvbnZlcnQxQXJnYyA9IDE7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4
YTo6R2V0UmF3VGVtcGxhdGUoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDlhNDM3OWYzNTE3ZDYzMDdiNTcwOTEyMWE2NWEwYmU3Y2JjMTgyMzEuLjIwODNiZjRlNmY2
ODM5MTExMDI4M2U2ZjRlYmVjZTJjM2NhODVjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTY5NSwzNyArNjk1LDMzIEBAIHZvaWQgSW50ZXJuYWxzOjpzZWxlY3RDb2xv
ckluQ29sb3JDaG9vc2VyKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgY29sb3JWCiB9
CiAjZW5kaWYKIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJbnRlcm5hbHM6OmZvcm1Db250
cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oRXhjZXB0aW9uQ29kZSYgZWMpCitWZWN0b3I8
U3RyaW5nPiBJbnRlcm5hbHM6OmZvcm1Db250cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0o
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSGlzdG9yeUl0ZW0qIG1haW5JdGVtID0gZnJhbWUo
KS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+cHJldmlvdXNJdGVtKCk7CiAgICAgaWYgKCFtYWluSXRl
bSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogICAgIH0KICAgICBTdHJpbmcgdW5p
cXVlTmFtZSA9IGZyYW1lKCktPnRyZWUoKS0+dW5pcXVlTmFtZSgpOwogICAgIGlmIChtYWluSXRl
bS0+dGFyZ2V0KCkgIT0gdW5pcXVlTmFtZSAmJiAhbWFpbkl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJn
ZXQodW5pcXVlTmFtZSkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICB9Ci0g
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlID0gbWFpbkl0ZW0tPnRhcmdldCgpID09IHVu
aXF1ZU5hbWUgPyBtYWluSXRlbS0+ZG9jdW1lbnRTdGF0ZSgpIDogbWFpbkl0ZW0tPmNoaWxkSXRl
bVdpdGhUYXJnZXQodW5pcXVlTmFtZSktPmRvY3VtZW50U3RhdGUoKTsKLSAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gc3RyaW5nTGlzdCA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdGF0ZS5zaXplKCk7ICsraSkKLSAgICAgICAgc3RyaW5n
TGlzdC0+YXBwZW5kKHN0YXRlW2ldKTsKLSAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIG1haW5JdGVtLT50YXJnZXQoKSA9PSB1bmlxdWVOYW1lID8gbWFpbkl0ZW0t
PmRvY3VtZW50U3RhdGUoKSA6IG1haW5JdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KHVuaXF1ZU5h
bWUpLT5kb2N1bWVudFN0YXRlKCk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRGb3JtQ29udHJv
bFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gc3Rh
dGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBJbnRlcm5hbHM6OnNldEZvcm1Db250cm9sU3Rh
dGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBIaXN0b3J5SXRlbSogbWFpbkl0ZW0gPSBmcmFtZSgpLT5s
b2FkZXIoKS0+aGlzdG9yeSgpLT5wcmV2aW91c0l0ZW0oKTsKLSAgICBpZiAoIXN0YXRlIHx8ICFt
YWluSXRlbSkgeworICAgIGlmICghbWFpbkl0ZW0pIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgU3RyaW5nIHVuaXF1ZU5hbWUg
PSBmcmFtZSgpLT50cmVlKCktPnVuaXF1ZU5hbWUoKTsKICAgICBpZiAobWFpbkl0ZW0tPnRhcmdl
dCgpID09IHVuaXF1ZU5hbWUpCi0gICAgICAgIG1haW5JdGVtLT5zZXREb2N1bWVudFN0YXRlKCpz
dGF0ZS5nZXQoKSk7CisgICAgICAgIG1haW5JdGVtLT5zZXREb2N1bWVudFN0YXRlKHN0YXRlKTsK
ICAgICBlbHNlIGlmIChIaXN0b3J5SXRlbSogc3ViSXRlbSA9IG1haW5JdGVtLT5jaGlsZEl0ZW1X
aXRoVGFyZ2V0KHVuaXF1ZU5hbWUpKQotICAgICAgICBzdWJJdGVtLT5zZXREb2N1bWVudFN0YXRl
KCpzdGF0ZS5nZXQoKSk7CisgICAgICAgIHN1Ykl0ZW0tPnNldERvY3VtZW50U3RhdGUoc3RhdGUp
OwogICAgIGVsc2UKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiB9CkBAIC0xNjQw
LDE2ICsxNjM2LDE2IEBAIGludCBJbnRlcm5hbHM6OnBhZ2VOdW1iZXIoRWxlbWVudCogZWxlbWVu
dCwgZmxvYXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQogICAgIHJldHVybiBQcmludENv
bnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgs
IHBhZ2VIZWlnaHQpKTsKIH0KIAotUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJbnRlcm5hbHM6
Omljb25VUkxzKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3QKK1ZlY3RvcjxTdHJpbmc+IEludGVy
bmFsczo6aWNvblVSTHMoRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAogewogICAgIFZlY3RvcjxJ
Y29uVVJMPiBpY29uVVJMcyA9IGRvY3VtZW50LT5pY29uVVJMcygpOwotICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBzdHJpbmdMaXN0ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgVmVj
dG9yPFN0cmluZz4gYXJyYXk7CiAKICAgICBWZWN0b3I8SWNvblVSTD46OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIoaWNvblVSTHMuYmVnaW4oKSk7CiAgICAgZm9yICg7IGl0ZXIgIT0gaWNvblVSTHMuZW5k
KCk7ICsraXRlcikKLSAgICAgICAgc3RyaW5nTGlzdC0+YXBwZW5kKGl0ZXItPm1faWNvblVSTC5z
dHJpbmcoKSk7CisgICAgICAgIGFycmF5LmFwcGVuZChpdGVyLT5tX2ljb25VUkwuc3RyaW5nKCkp
OwogCi0gICAgcmV0dXJuIHN0cmluZ0xpc3QucmVsZWFzZSgpOworICAgIHJldHVybiBhcnJheTsK
IH0KIAogaW50IEludGVybmFsczo6bnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGgsIGZsb2F0
IHBhZ2VIZWlnaHQpCkBAIC0xNzQxLDE0ICsxNzM3LDEwIEBAIFBhc3NSZWZQdHI8VHlwZUNvbnZl
cnNpb25zPiBJbnRlcm5hbHM6OnR5cGVDb252ZXJzaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIFR5
cGVDb252ZXJzaW9uczo6Y3JlYXRlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
SW50ZXJuYWxzOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3QKK1ZlY3RvcjxTdHJpbmc+
IEludGVybmFsczo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocygpIGNvbnN0CiB7Ci0gICAgUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IHN0cmluZ0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKICAg
ICBmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0
ZSgpOwotICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlUGF0aHMgPSBGb3JtQ29udHJvbGxl
cjo6Z2V0UmVmZXJlbmNlZEZpbGVQYXRocyhmcmFtZSgpLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5j
dXJyZW50SXRlbSgpLT5kb2N1bWVudFN0YXRlKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZmlsZVBhdGhzLnNpemUoKTsgKytpKQotICAgICAgICBzdHJpbmdMaXN0LT5hcHBlbmQoZmls
ZVBhdGhzW2ldKTsKLSAgICByZXR1cm4gc3RyaW5nTGlzdC5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IEZvcm1Db250cm9sbGVyOjpnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKGZyYW1lKCktPmxvYWRlcigp
LT5oaXN0b3J5KCktPmN1cnJlbnRJdGVtKCktPmRvY3VtZW50U3RhdGUoKSk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxzOjpzdGFydFRyYWNraW5nUmVwYWludHMoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNl
cHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDRjNDQxZWU0
ZjRkMjc5ZGQ0ZDA2NTM0ODZhODM1NzEzYTNkYTk5NzAuLjRmZmQ3MDZjMGJlMzA0ZjdhMWI2Mjg0
MzA0YjU3MTEzOWUzMWY4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTIw
LDggKzEyMCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICAgICB2
b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgY29s
b3JWYWx1ZSk7CiAjZW5kaWYKLSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGZvcm1Db250
cm9sU3RhdGVPZlByZXZpb3VzSGlzdG9yeUl0ZW0oRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
c2V0Rm9ybUNvbnRyb2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+LCBFeGNlcHRpb25Db2RlJik7CisgICAgVmVjdG9yPFN0cmluZz4gZm9ybUNvbnRy
b2xTdGF0ZU9mUHJldmlvdXNIaXN0b3J5SXRlbShFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0RW5hYmxlTW9ja1BhZ2VQb3B1cChi
b29sLCBFeGNlcHRpb25Db2RlJik7CiAjaWYgRU5BQkxFKFBBR0VfUE9QVVApCiAgICAgUGFzc1Jl
ZlB0cjxQYWdlUG9wdXBDb250cm9sbGVyPiBwYWdlUG9wdXBDb250cm9sbGVyKCk7CkBAIC0yNDAs
NyArMjQwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjb3VudGVyVmFsdWUoRWxlbWVudCopOwog
CiAgICAgaW50IHBhZ2VOdW1iZXIoRWxlbWVudCosIGZsb2F0IHBhZ2VXaWR0aCA9IDgwMCwgZmxv
YXQgcGFnZUhlaWdodCA9IDYwMCk7Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpY29u
VVJMcyhEb2N1bWVudCopIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IGljb25VUkxzKERvY3Vt
ZW50KikgY29uc3Q7CiAKICAgICBpbnQgbnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGhJblBp
eGVscyA9IDgwMCwgZmxvYXQgcGFnZUhlaWdodEluUGl4ZWxzID0gNjAwKTsKICAgICBTdHJpbmcg
cGFnZVByb3BlcnR5KFN0cmluZywgaW50LCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENF
UFRJT04pIGNvbnN0OwpAQCAtMjYxLDcgKzI2MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PE1hbGxvY1N0YXRpc3RpY3M+IG1hbGxvY1N0YXRpc3RpY3MoKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPFR5cGVDb252ZXJzaW9ucz4gdHlwZUNvbnZlcnNpb25zKCkgY29uc3Q7CiAKLSAgICBQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGdldFJlZmVyZW5jZWRGaWxlUGF0aHMoKSBjb25zdDsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVuY2VkRmlsZVBhdGhzKCkgY29uc3Q7CiAKICAgICB2
b2lkIHN0YXJ0VHJhY2tpbmdSZXBhaW50cyhEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIHN0b3BUcmFja2luZ1JlcGFpbnRzKERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGM2MjUxN2E2ZThmMDUxYTFiNTBk
YjlhZjgwMzRiOWFmNTkxMzNmMzguLmRhMWU0MDNkOTg3ZDkyYTUyMWEzMjZlYTQxMTljMjMwMGJh
ODZmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTgxLDcgKzgxLDcg
QEAKICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoaW4gRWxlbWVudCBlbGVtZW50
LCBpbiBET01TdHJpbmcgY29sb3JWYWx1ZSk7CiAjZW5kaWYKICAgICBET01TdHJpbmdbXSBmb3Jt
Q29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgdm9pZCBzZXRGb3JtQ29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKGluIERP
TVN0cmluZ1tdIHZhbHVlcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCBzZXRGb3Jt
Q29udHJvbFN0YXRlT2ZQcmV2aW91c0hpc3RvcnlJdGVtKGluIHNlcXVlbmNlPERPTVN0cmluZz4g
dmFsdWVzKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB2b2lkIHNldEVuYWJsZU1vY2tQYWdl
UG9wdXAoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNpZiBkZWZp
bmVkKEVOQUJMRV9QQUdFX1BPUFVQKSAmJiBFTkFCTEVfUEFHRV9QT1BVUAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBQYWdlUG9wdXBDb250cm9sbGVyIHBhZ2VQb3B1cENvbnRyb2xsZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>