<?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>114854</bug_id>
          
          <creation_ts>2013-04-18 23:15:38 -0700</creation_ts>
          <short_desc>Web Inspector: Backend should detect sourceMappingURLs in CSS Resources</short_desc>
          <delta_ts>2013-04-19 16:01:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>878253</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-18 23:15:38 -0700</bug_when>
    <thetext>The backend already detects sourceMappingURLs in Script evaluations. It should do the same for CSS Stylesheet resources. Detecting sourceMappingURL in Stylesheets, the frontend doesn&apos;t need to automatically request and parse the contents of every CSS file loaded by the page.

Note, this doesn&apos;t handle &lt;style&gt; blocks, just Stylesheets resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878257</commentid>
    <comment_count>1</comment_count>
      <attachid>198808</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-18 23:26:35 -0700</bug_when>
    <thetext>Created attachment 198808
[PATCH] Stylesheet sourceMapURL proposed fix

I decided to add an ExtraResourceInfo object which could include all kinds of different optional info after the backend has processed a resource. Right now there is just this sourceMapURL field, but I could imagine more in the future. Since there are multiple paths that would want the same info I made an object they can share.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878258</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-18 23:27:19 -0700</bug_when>
    <thetext>Attachment 198808 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http/tests/inspector/network/css-source-mapping-url-expected.txt&apos;, u&apos;LayoutTests/http/tests/inspector/network/css-source-mapping-url.html&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.css&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.css.map&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.scss&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/Inspector.json&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;]&quot; exit_code: 1
Source/WebCore/inspector/InspectorPageAgent.cpp:270:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878411</commentid>
    <comment_count>3</comment_count>
      <attachid>198808</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-19 06:41:33 -0700</bug_when>
    <thetext>Comment on attachment 198808
[PATCH] Stylesheet sourceMapURL proposed fix

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

Looks good otherwise.

&gt; Source/WebCore/inspector/Inspector.json:947
&gt;              {
&gt; +                &quot;id&quot;: &quot;ExtraResourceInfo&quot;,
&gt; +                &quot;type&quot;: &quot;object&quot;,
&gt; +                &quot;description&quot;: &quot;Extra data extracted from a resource after it has completed loading.&quot;,
&gt; +                &quot;properties&quot;: [
&gt; +                    { &quot;name&quot;: &quot;sourceMapURL&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;URL of source map associated with this resource (if any).&quot; }
&gt; +                ]
&gt; +            },

I&apos;m not sure ExtraResourceInfo helps much. What might we use it for later? If we keep it then FrameResourceTree should likely use it too. Otherwise everyone should just report sourceMapURL directly.

I suspect you want this to make it more compatible in the future to collect optional parameters. Instead maybe we should start using Safari&apos;s InspectorBackend &quot;expectsResultObject&quot; flag for more/all callbacks, which is good when there are a lot of optional parameters and for compatibility reasons.

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:270
&gt;&gt; +//static
&gt; 
&gt; Should have a space between // and comment  [whitespace/comments] [4]

I&apos;d just drop the comment.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:273
&gt; +    DEFINE_STATIC_LOCAL(String, sourceMapHttpHeader, (ASCIILiteral(&quot;X-SourceMap&quot;)));

HTTP

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:280
&gt; +    // Scripts are handled in a separate path.
&gt; +
&gt; +    if (cachedResource-&gt;type() != CachedResource::CSSStyleSheet)

Remove blank line.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:292
&gt; +        String sourceMapURL = ContentSearchUtils::findStylesheetSourceMapURL(content);
&gt; +        if (!sourceMapURL.isEmpty())
&gt; +            return sourceMapURL;

Can&apos;t you just return ContentSearchUtils::findStylesheetSourceMapURL(content)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878423</commentid>
    <comment_count>4</comment_count>
      <attachid>198808</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-04-19 06:59:57 -0700</bug_when>
    <thetext>Comment on attachment 198808
[PATCH] Stylesheet sourceMapURL proposed fix

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

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:280
&gt;&gt; +    if (cachedResource-&gt;type() != CachedResource::CSSStyleSheet)
&gt; 
&gt; Remove blank line.

Maybe scripts should be reported here to to be consistent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878631</commentid>
    <comment_count>5</comment_count>
      <attachid>198912</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-19 13:34:47 -0700</bug_when>
    <thetext>Created attachment 198912
[PATCH] Stylesheet sourceMapURL proposed fix - 2

Dropped the ExtraResourceInfo and addressed other review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878633</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-19 13:37:09 -0700</bug_when>
    <thetext>Attachment 198912 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http/tests/inspector/network/css-source-mapping-url-expected.txt&apos;, u&apos;LayoutTests/http/tests/inspector/network/css-source-mapping-url.html&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.css&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.css.map&apos;, u&apos;LayoutTests/http/tests/inspector/network/resources/source-map-test-style.scss&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/Inspector.json&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.cpp&apos;]&quot; exit_code: 1
Source/WebCore/inspector/InspectorPageAgent.cpp:270:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878638</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-19 13:53:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 198808 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=198808&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:280
&gt; &gt;&gt; +    if (cachedResource-&gt;type() != CachedResource::CSSStyleSheet)
&gt; &gt; 
&gt; &gt; Remove blank line.
&gt; 
&gt; Maybe scripts should be reported here to to be consistent?

I thought about that. I&apos;d like to handle that later, if we do decide to go that route. An advantage of the Debugger path handling Scripts is that it handles inline &lt;script&gt;s, and I wanted to avoid duplicating the ContentSearch for large JS resources right now. I certainly want to make this more consistent in the future though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878666</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-04-19 16:01:22 -0700</bug_when>
    <thetext>Committed r148768
&lt;http://trac.webkit.org/changeset/148768&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198808</attachid>
            <date>2013-04-18 23:26:35 -0700</date>
            <delta_ts>2013-04-19 13:34:47 -0700</delta_ts>
            <desc>[PATCH] Stylesheet sourceMapURL proposed fix</desc>
            <filename>sourceMapURL-1.patch</filename>
            <type>text/plain</type>
            <size>24361</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NjAwMTQyLi5mODYwMzBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDQt
MTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBCYWNrZW5kIHNob3VsZCBkZXRlY3Qgc291cmNlTWFwcGluZ1VSTHMgaW4gQ1NT
IFJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE0ODU0CisKKyAgICAgICAgVGVzdCBhIGRpZmZlcmVudCB3YXlzIHdlIHdvdWxkIGV4cGVj
dCB0byBzZWUgYSBzb3VyY2VNYXBVUkwgZm9yCisgICAgICAgIHN0eWxlc2hlZXQgcmVzb3VyY2Vz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mt
c291cmNlLW1hcHBpbmctdXJsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3M6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJj
ZS1tYXAtdGVzdC1zdHlsZS5jc3MubWFwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuc2NzczogQWRk
ZWQuCisKIDIwMTMtMDQtMTYgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRmxha3kgVGVzdDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJk
LXBhcnR5LWNvb2tpZS1ibG9ja2luZy11c2VyLWFjdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nzcy1zb3VyY2UtbWFwcGluZy11
cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lZDQ2N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK1Rlc3RzIHRoYXQgdGhlIGV4dHJhUmVzb3VyY2VJbmZv
IGluIE5ldHdvcmsubG9hZGluZ0ZpbmlzaGVkIGNvbnRhaW5zIGEgc291cmNlTWFwVVJMIGZvciBh
IFN0eWxlc2hlZXQgY29udGFpbmluZyBhIHNvdXJjZU1hcHBpbmdVUkwuCisKK1Jlc3BvbnNlIHJl
Y2VpdmVkIGZvciBzdHlsZS5jc3MKK1Jlc3BvbnNlIGNvbnRhaW5zIGEgc291cmNlTWFwVVJMOiBz
b3VyY2UtbWFwLXRlc3Qtc3R5bGUuY3NzLm1hcAorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Nzcy1zb3VyY2UtbWFwcGluZy11
cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY3NzLXNv
dXJjZS1tYXBwaW5nLXVybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU2ZjI2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2Nzcy1zb3VyY2UtbWFwcGluZy11cmwuaHRtbApAQCAtMCwwICsxLDg4IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkU3R5bGVzaGVldFdpdGhTb3VyY2VNYXBwaW5n
VVJMKCkKK3sKKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsK
KyAgICBsaW5rLnJlbCA9ICJzdHlsZXNoZWV0IjsKKyAgICBsaW5rLnR5cGUgPSAidGV4dC9jc3Mi
OworICAgIGxpbmsuaHJlZiA9ICJyZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcyI7
CisgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsaW5rKTsKK30KKworZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5OZXR3b3Jr
RGlzcGF0Y2hlci5wcm90b3R5cGUsICJsb2FkaW5nRmluaXNoZWQiLCBsb2FkaW5nRmluaXNoZWQp
OworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3Bh
dGNoZXIucHJvdG90eXBlLCAibG9hZGluZ0ZhaWxlZCIsIGxvYWRpbmdGYWlsZWQpOworCisgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZFN0eWxlc2hlZXRXaXRoU291cmNlTWFw
cGluZ1VSTCgpIik7CisKKyAgICBmdW5jdGlvbiBsb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCB0
aW1lc3RhbXAsIGV4dHJhUmVzb3VyY2VJbmZvKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3Qg
PSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0Rm9ySWQocmVxdWVzdElkKTsKKyAgICAg
ICAgaWYgKC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4ZWMocmVxdWVzdC51cmwpKSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVzcG9uc2UgcmVjZWl2ZWQg
Zm9yIHN0eWxlLmNzcyIpOworICAgICAgICAgICAgaWYgKGV4dHJhUmVzb3VyY2VJbmZvLnNvdXJj
ZU1hcFVSTCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOZXR3
b3JrLmxvYWRpbmdGYWlsZWQgZXh0cmFSZXNvdXJjZUluZm8gY29udGFpbnMgYSBzb3VyY2VNYXBV
Ukw6ICIgKyBleHRyYVJlc291cmNlSW5mby5zb3VyY2VNYXBVUkwpOworICAgICAgICAgICAgICAg
IGFmdGVyTG9hZGluZ1Jlc291cmNlKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOZXR3b3JrLmxvYWRpbmdGYWlsZWQgZXh0
cmFSZXNvdXJjZUluZm8gbWlzc2luZyBzb3VyY2VNYXBVUkwiKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTFVSRSIpOworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiBsb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgdGltZSwgbG9jYWxpemVk
RGVzY3JpcHRpb24sIGNhbmNlbGVkKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBXZWJJ
bnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0Rm9ySWQocmVxdWVzdElkKTsKKyAgICAgICAgaWYg
KC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4ZWMocmVxdWVzdC51cmwpKSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmFpbGVkIHRvIGxvYWQgc291cmNlLW1h
cC10ZXN0LXN0eWxlLmNzcyIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IkZBSUxVUkUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZnRlckxvYWRpbmdSZXNvdXJjZSgpCisg
ICAgeworICAgICAgICBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVlKHByb2Nlc3NSZXNvdXJjZVRy
ZWUpOworCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NSZXNvdXJjZVRyZWUoZXJyb3IsIG1haW5G
cmFtZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlLmdldFJlc291cmNlVHJlZSBl
cnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiRkFJTFVSRSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgcmVzb3VyY2VzID0gbWFpbkZyYW1lUGF5bG9hZC5yZXNvdXJjZXM7CisgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgICAgIHZhciByZXNvdXJjZVBheWxvYWQgPSByZXNvdXJjZXNbaV07CisgICAgICAgICAgICAg
ICAgaWYgKC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4ZWMocmVzb3VyY2VQYXlsb2Fk
LnVybCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNlUGF5bG9hZC5zb3VyY2VN
YXBVUkwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJQYWdlLmdldFJlc291cmNlVHJlZSByZXNvdXJjZVBheWxvYWQgY29udGFpbnMgc291cmNlTWFw
VVJMOiAiICsgcmVzb3VyY2VQYXlsb2FkLnNvdXJjZU1hcFVSTCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU1VDQ0VTUyIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJQYWdlLmdldFJlc291cmNlVHJlZSByZXNvdXJjZVBheWxvYWQgbWlzc2luZyBzb3Vy
Y2VNYXBVUkwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJGQUlMVVJFIik7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlLmdldFJlc291cmNlVHJlZSBtaXNzaW5nIHNv
dXJjZS1tYXAtdGVzdC1zdHlsZS5jc3MiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJGQUlMVVJFIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0IHRoZSBleHRyYVJlc291cmNlSW5mbyBpbiBO
ZXR3b3JrLmxvYWRpbmdGaW5pc2hlZCBjb250YWlucyBhIHNvdXJjZU1hcFVSTCBmb3IgYSBTdHls
ZXNoZWV0IGNvbnRhaW5pbmcgYSBzb3VyY2VNYXBwaW5nVVJMLiBBbHNvIHRoZW4gdGVzdHMgdGhh
dCBQYWdlLmdldFJlc291cmNlVHJlZSBjb250YWlucyB0aGUgc291cmNlTWFwVVJMIGZvciB0aGUg
cmVzb3VyY2UgYXMgd2VsbC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zb3VyY2UtbWFw
LXRlc3Qtc3R5bGUuY3NzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi41ODMyZGUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0
eWxlLmNzcwpAQCAtMCwwICsxLDYgQEAKKyNjb250YWluZXIgeworICBiYWNrZ3JvdW5kOiBwYXBh
eWF3aGlwOyB9CisgICNjb250YWluZXIgI2luc3BlY3RlZCB7CisgICAgY29sb3I6IGdyZWVuOyB9
CisKKy8qQCBzb3VyY2VNYXBwaW5nVVJMPXNvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3MubWFwICov
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxl
LmNzcy5tYXAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuY3NzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wYTExMzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxl
LmNzcy5tYXAKQEAgLTAsMCArMSw2IEBACit7CisidmVyc2lvbiI6ICIzIiwKKyJtYXBwaW5ncyI6
ICJBQUFBLFVBQVc7RUFDUCxVQUFVLEVBQUUsVUFBVTtFQUV0QixxQkFBVztJQUNQLEtBQUssRUFB
RSxLQUFLIiwKKyJzb3VyY2VzIjogWyJzdHlsZS5zY3NzIl0sCisiZmlsZSI6ICJzdHlsZS5jc3Mi
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuc2NzcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAtdGVzdC1zdHlsZS5z
Y3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzRkMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuc2NzcwpAQCAtMCwwICsxLDcgQEAKKyNjb250YWlu
ZXIgeworICAgIGJhY2tncm91bmQ6IHBhcGF5YXdoaXA7CisKKyAgICAjaW5zcGVjdGVkIHsKKyAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NzFjOGYxLi5lMDQ0
ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTMtMDQtMTggIEpvc2VwaCBQZWNv
cmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBCYWNr
ZW5kIHNob3VsZCBkZXRlY3Qgc291cmNlTWFwcGluZ1VSTHMgaW4gQ1NTIFJlc291cmNlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODU0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLmh0bWwKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgLSBQYWdlLmdldFJlc291
cmNlVHJlZSAtIGFkZCBzb3VyY2VNYXBVUkwgdG8gcmVzb3VyY2UgcGF5bG9hZHMKKyAgICAgICAg
LSBOZXR3b3JrLmxvYWRpbmdGaW5pc2hlZCBhbmQgTmV0d29yay5yZXF1ZXN0U2VydmVkRnJvbU1l
bW9yeUNhY2hlLAorICAgICAgICAgIGluY2x1ZGUgZXh0cmEgcmVzb3VyY2UgaW5mbyBvYmplY3Qg
d2l0aCBwb3NzaWJsZSBzb3VyY2VNYXBVUkwuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVu
dFNlYXJjaFV0aWxzLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OnNjcmlwdENvbW1lbnRQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6c3R5bGVzaGVl
dENvbW1lbnRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6
ZmluZE1hZ2ljQ29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6
OmZpbmRTY3JpcHRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0
aWxzOjpmaW5kU2NyaXB0U291cmNlTWFwVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWFyY2hVdGlsczo6ZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwpOgorICAgICAgICBTZXBhcmF0
ZSBTY3JpcHQgYW5kIFN0eWxlc2hlZXQgcmVnZXggcGF0dGVybiBjcmVhdGlvbiwgYnV0CisgICAg
ICAgIHNoYXJlIHRoZSBzZWFyY2ggZnVuY3Rpb24gdXNpbmcgdGhlIHBhdHRlcm4uCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgor
ICAgICAgICBVcGRhdGUgZnVuY3Rpb24gbmFtZXMuIENoZWNrIGZvciB0aGUgU291cmNlTWFwIGhl
YWRlciBiZWZvcmUKKyAgICAgICAgY2hlY2tpbmcgZm9yIGEgc291cmNlTWFwcGluZ1VSTCBjb21t
ZW50LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAg
ICAgICAgUHJvdmlkZSB0aGUgc291cmNlTWFwVVJMIGZvciBQYWdlLmdldFJlc291cmNlVHJlZS4K
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRXh0cmFSZXNvdXJjZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZSk6CisgICAgICAgIEluY2x1ZGUgRXh0cmFSZXNvdXJjZUluZm8gb2JqZWN0cyBpbiBmaW5p
c2ggbG9hZGluZyBhbmQKKyAgICAgICAgcmVxdWVzdCBzZXJ2ZWQgZnJvbSBjYWNoZS4KKwogMjAx
My0wNC0xNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBldmVuIHlldCBzdGlsbCBtb3JlIHRyYWNlcyBvZiB2OApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCA1M2Y3MTJhLi4yYTBlZmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNw
cApAQCAtMTY4LDkgKzE2OCwyMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+ID4gc2VhcmNoSW5UZXh0QnlMaQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJp
bmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBTdHJpbmcgc2NyaXB0Q29t
bWVudFBhdHRlcm4oY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8vICIvL0AgPG5hbWU+PTx2
YWx1ZT4iCisgICAgcmV0dXJuICIvL0BbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15c
XHNcJ1wiXSopW1wwNDBcdF0qJCI7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3R5bGVzaGVldENvbW1l
bnRQYXR0ZXJuKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICAvLyAiLypAIDxuYW1lPj08dmFs
dWU+ICovIgorICAgIHJldHVybiAiL1xcKkBbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSoo
W15cXHNcJ1wiXSopW1wwNDBcdF0qXFwqLyI7Cit9CisKK3N0YXRpYyBTdHJpbmcgZmluZE1hZ2lj
Q29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmlu
ZykKIHsKLSAgICBTdHJpbmcgcGF0dGVyblN0cmluZyA9ICIvL0BbXDA0MFx0XSIgKyBuYW1lICsg
Ij1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1wwNDBcdF0qJCI7CiAgICAgY29uc3QgY2hhciogZXJy
b3IgPSAwOwogICAgIEpTQzo6WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5n
LCBmYWxzZSwgdHJ1ZSwgJmVycm9yKTsKICAgICBBU1NFUlQoIWVycm9yKTsKQEAgLTE4OCwxNCAr
MTk5LDE5IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gY29udGVudC5zdWJzdHJpbmco
bWF0Y2hlc1syXSwgbWF0Y2hlc1szXSAtIG1hdGNoZXNbMl0pOwogfQogCi1TdHJpbmcgZmluZFNv
dXJjZVVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCitTdHJpbmcgZmluZFNjcmlwdFNvdXJjZVVS
TChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIGZpbmRNYWdpY0NvbW1lbnQo
Y29udGVudCwgInNvdXJjZVVSTCIpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRl
bnQsIHNjcmlwdENvbW1lbnRQYXR0ZXJuKCJzb3VyY2VVUkwiKSk7CiB9CiAKLVN0cmluZyBmaW5k
U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCkKK1N0cmluZyBmaW5kU2NyaXB0U291
cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4gZmluZE1hZ2lj
Q29tbWVudChjb250ZW50LCAic291cmNlTWFwcGluZ1VSTCIpOworICAgIHJldHVybiBmaW5kTWFn
aWNDb21tZW50KGNvbnRlbnQsIHNjcmlwdENvbW1lbnRQYXR0ZXJuKCJzb3VyY2VNYXBwaW5nVVJM
IikpOworfQorCitTdHJpbmcgZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5n
JiBjb250ZW50KQoreworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIHN0eWxl
c2hlZXRDb21tZW50UGF0dGVybigic291cmNlTWFwcGluZ1VSTCIpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgQ29udGVudFNlYXJjaFV0aWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmgKaW5kZXggM2M4NzczZS4uZDBiY2I5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaApAQCAtNDksOCArNDksOSBAQCBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0
Y2g+ID4gc2VhcmNoSW5UZXh0QnlMaQogVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZz
ZXQoc2l6ZV90IG9mZnNldCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKIFBh
c3NPd25QdHI8VmVjdG9yPHNpemVfdD4gPiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIAot
U3RyaW5nIGZpbmRTb3VyY2VVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKLVN0cmluZyBmaW5k
U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCk7CitTdHJpbmcgZmluZFNjcmlwdFNv
dXJjZVVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworU3RyaW5nIGZpbmRTY3JpcHRTb3VyY2VN
YXBVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKK1N0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJj
ZU1hcFVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50
U2VhcmNoVXRpbHMKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA5ZDMxNGQ0Li44M2NlNWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xMzUsNyArMTM1LDggQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgIiRyZWYiOiAiUmVzb3VyY2VU
eXBlIiwgImRlc2NyaXB0aW9uIjogIlR5cGUgb2YgdGhpcyByZXNvdXJjZS4iIH0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUmVzb3VyY2UgbWltZVR5cGUgYXMgZGV0ZXJtaW5lZCBi
eSB0aGUgYnJvd3Nlci4iIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZmFpbGVkIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJUcnVlIGlmIHRoZSByZXNvdXJjZSBmYWlsZWQgdG8gbG9hZC4iIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FuY2VsZWQiLCAidHlwZSI6
ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgdGhl
IHJlc291cmNlIHdhcyBjYW5jZWxlZCBkdXJpbmcgbG9hZGluZy4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYW5jZWxlZCIsICJ0eXBlIjogImJvb2xlYW4i
LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiB0aGUgcmVzb3VyY2Ug
d2FzIGNhbmNlbGVkIGR1cmluZyBsb2FkaW5nLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VNYXBVUkwiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVVJMIG9mIHNvdXJjZSBtYXAgYXNzb2NpYXRl
ZCB3aXRoIHRoaXMgcmVzb3VyY2UgKGlmIGFueSkuIiB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBmcmFtZSByZXNvdXJjZXMuIgpA
QCAtOTM3LDYgKzkzOCwxNCBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIkV4dHJhUmVzb3VyY2VJbmZvIiwK
KyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJFeHRyYSBkYXRhIGV4dHJhY3RlZCBmcm9tIGEgcmVzb3VyY2UgYWZ0ZXIgaXQg
aGFzIGNvbXBsZXRlZCBsb2FkaW5nLiIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlTWFwVVJMIiwgInR5cGUiOiAi
c3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiBzb3VyY2Ug
bWFwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIChpZiBhbnkpLiIgfQorICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ImlkIjogIldlYlNvY2tldFJlcXVlc3QiLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldlYlNvY2tldCByZXF1ZXN0IGRh
dGEuIiwKQEAgLTk3NSw3ICs5ODQsOCBAQAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InVybCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSZXNvdXJjZSBVUkwuIFRo
aXMgaXMgdGhlIHVybCBvZiB0aGUgb3JpZ2luYWwgbmV0d29yayByZXF1ZXN0LiIgfSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgIiRyZWYiOiAiUGFnZS5SZXNvdXJjZVR5
cGUiLCAiZGVzY3JpcHRpb24iOiAiVHlwZSBvZiB0aGlzIHJlc291cmNlLiIgfSwKICAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJyZXNwb25zZSIsICIkcmVmIjogIlJlc3BvbnNlIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNhY2hlZCByZXNwb25zZSBkYXRhLiIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib2R5U2l6ZSIsICJ0eXBlIjogIm51bWJl
ciIsICJkZXNjcmlwdGlvbiI6ICJDYWNoZWQgcmVzcG9uc2UgYm9keSBzaXplLiIgfQorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvZHlTaXplIiwgInR5cGUiOiAibnVtYmVyIiwgImRl
c2NyaXB0aW9uIjogIkNhY2hlZCByZXNwb25zZSBib2R5IHNpemUuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImV4dHJhUmVzb3VyY2VJbmZvIiwgIiRyZWYiOiAiRXh0cmFSZXNv
dXJjZUluZm8iLCAiZGVzY3JpcHRpb24iOiAiRXh0cmEgaW5mb3JtYXRpb24gZXh0cmFjdGVkIGZy
b20gdGhpcyByZXNvdXJjZS4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgewpAQCAtMTExMSw3ICsxMTIxLDggQEAKICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZWQgd2hlbiBIVFRQIHJlcXVlc3QgaGFzIGZpbmlzaGVkIGxvYWRpbmcu
IiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24i
OiAiUmVxdWVzdCBpZGVudGlmaWVyLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJ0aW1lc3RhbXAiLCAiJHJlZiI6ICJUaW1lc3RhbXAiLCAiZGVzY3JpcHRpb24iOiAiVGltZXN0
YW1wLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWVzdGFtcCIsICIkcmVm
IjogIlRpbWVzdGFtcCIsICJkZXNjcmlwdGlvbiI6ICJUaW1lc3RhbXAuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImV4dHJhUmVzb3VyY2VJbmZvIiwgIiRyZWYiOiAiRXh0cmFS
ZXNvdXJjZUluZm8iLCAiZGVzY3JpcHRpb24iOiAiRXh0cmEgaW5mb3JtYXRpb24gZXh0cmFjdGVk
IGZyb20gdGhpcyByZXNvdXJjZS4iIH0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDQwN2U2NjEuLjg4YWVjZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTYzNCwyMCArNjM0LDIxIEBAIFN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VN
YXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEh0dHBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgtU291
cmNlTWFwIikpKTsKIAotICAgIFN0cmluZyBzb3VyY2VNYXBVUkwgPSBDb250ZW50U2VhcmNoVXRp
bHM6OmZpbmRTb3VyY2VNYXBVUkwoc2NyaXB0LnNvdXJjZSk7CisgICAgaWYgKCFzY3JpcHQudXJs
LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKSB7CisgICAgICAg
ICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdlQWdlbnQtPmNhY2hlZFJlc291cmNl
KHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJs
KSk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
c291cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNv
dXJjZU1hcEh0dHBIZWFkZXIpOworICAgICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZU1hcEhlYWRlcjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZyBzb3VyY2VNYXBV
UkwgPSBDb250ZW50U2VhcmNoVXRpbHM6OmZpbmRTY3JpcHRTb3VyY2VNYXBVUkwoc2NyaXB0LnNv
dXJjZSk7CiAgICAgaWYgKCFzb3VyY2VNYXBVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
c291cmNlTWFwVVJMOwogCi0gICAgaWYgKHNjcmlwdC51cmwuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUGFnZUFnZW50KCk7Ci0gICAgaWYgKCFwYWdl
QWdlbnQpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IHBhZ2VBZ2VudC0+Y2FjaGVkUmVzb3VyY2UocGFnZUFnZW50LT5tYWluRnJhbWUo
KSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKLSAgICBpZiAocmVzb3VyY2Up
Ci0gICAgICAgIHJldHVybiByZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoc291
cmNlTWFwSHR0cEhlYWRlcik7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkBAIC02NjEsNyAr
NjYyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShjb25z
dCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTY3JpcHQKICAgICBTdHJpbmcqIHNvdXJjZU1hcFVS
TFBhcmFtID0gc291cmNlTWFwVVJMLmlzTnVsbCgpID8gMCA6ICZzb3VyY2VNYXBVUkw7CiAgICAg
U3RyaW5nIHNvdXJjZVVSTDsKICAgICBpZiAoIXNjcmlwdC5zdGFydExpbmUgJiYgIXNjcmlwdC5z
dGFydENvbHVtbikKLSAgICAgICAgc291cmNlVVJMID0gQ29udGVudFNlYXJjaFV0aWxzOjpmaW5k
U291cmNlVVJMKHNjcmlwdC5zb3VyY2UpOworICAgICAgICBzb3VyY2VVUkwgPSBDb250ZW50U2Vh
cmNoVXRpbHM6OmZpbmRTY3JpcHRTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZSk7CiAgICAgYm9vbCBo
YXNTb3VyY2VVUkwgPSAhc291cmNlVVJMLmlzRW1wdHkoKTsKICAgICBTdHJpbmcgc2NyaXB0VVJM
ID0gaGFzU291cmNlVVJMID8gc291cmNlVVJMIDogc2NyaXB0LnVybDsKICAgICBib29sKiBoYXNT
b3VyY2VVUkxQYXJhbSA9IGhhc1NvdXJjZVVSTCA/ICZoYXNTb3VyY2VVUkwgOiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAwOTQw
NWM0Li5iM2FmY2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcApAQCAtMjY3LDYgKzI2NywzNCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6cmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1l
LAogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gcmVzb3VyY2Ugd2l0aCBnaXZlbiBVUkwgZm91
bmQiOwogfQogCisvL3N0YXRpYworU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFw
VVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIdHRwSGVhZGVyLCAoQVNDSUlMaXRl
cmFsKCJYLVNvdXJjZU1hcCIpKSk7CisKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBTY3JpcHRzIGFyZSBoYW5kbGVkIGluIGEgc2Vw
YXJhdGUgcGF0aC4KKworICAgIGlmIChjYWNoZWRSZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBT
dHJpbmcgc291cmNlTWFwSGVhZGVyID0gY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhl
YWRlckZpZWxkKHNvdXJjZU1hcEh0dHBIZWFkZXIpOworICAgIGlmICghc291cmNlTWFwSGVhZGVy
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHNvdXJjZU1hcEhlYWRlcjsKKworICAgIFN0cmlu
ZyBjb250ZW50OworICAgIGJvb2wgYmFzZTY0RW5jb2RlZDsKKyAgICBpZiAoSW5zcGVjdG9yUGFn
ZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2FjaGVkUmVzb3VyY2UsICZjb250ZW50LCAm
YmFzZTY0RW5jb2RlZCkgJiYgIWJhc2U2NEVuY29kZWQpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJj
ZU1hcFVSTCA9IENvbnRlbnRTZWFyY2hVdGlsczo6ZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwo
Y29udGVudCk7CisgICAgICAgIGlmICghc291cmNlTWFwVVJMLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiBzb3VyY2VNYXBVUkw7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCiBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FjaGVkUmVzb3VyY2UodXJsKTsKQEAgLTExMTQsNiArMTE0Miw5IEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWN0CiAgICAgICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0Q2FuY2VsZWQodHJ1ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGNhY2hlZFJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRSZXNv
dXJjZTo6TG9hZEVycm9yKQogICAgICAgICAgICAgcmVzb3VyY2VPYmplY3QtPnNldEZhaWxlZCh0
cnVlKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKKyAgICAgICAgaWYg
KCFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc291cmNlT2JqZWN0
LT5zZXRTb3VyY2VNYXBVUkwoc291cmNlTWFwcGluZ1VSTCk7CiAgICAgICAgIHN1YnJlc291cmNl
cy0+YWRkSXRlbShyZXNvdXJjZU9iamVjdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggOWUyM2Y5Mi4uYmVjZTEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtODUs
NiArODUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50
KENhY2hlZFJlc291cmNlKiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwog
ICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZSwgU3RyaW5nKiByZXN1bHQpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyosIEZyYW1lKiwgY29uc3QgS1VSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNl
NjRFbmNvZGVkKTsKKyAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENh
Y2hlZFJlc291cmNlKik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
c291cmNlRGF0YShGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUp
OwogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25z
dCBLVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAKaW5kZXggMGI5YTRmNy4uNmNjOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMTY3LDE1
ICsxNjcsMjkgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3Bv
bnNlPiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UKICAgICByZXR1cm4gcmVzcG9uc2VP
YmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNo
ZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNv
dXJjZSYgY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6RXh0cmFSZXNvdXJjZUluZm8+IGJ1aWxkT2Jq
ZWN0Rm9yRXh0cmFSZXNvdXJjZUluZm8oQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQor
eworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6RXh0cmFSZXNvdXJjZUluZm8+IGV4
dHJhUmVzb3VyY2VJbmZvID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkV4dHJhUmVzb3VyY2VJbmZv
OjpjcmVhdGUoKTsKKworICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMID0gSW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CisgICAgaWYg
KCFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgZXh0cmFSZXNvdXJjZUluZm8t
PnNldFNvdXJjZU1hcFVSTChzb3VyY2VNYXBwaW5nVVJMKTsKKworICAgIHJldHVybiBleHRyYVJl
c291cmNlSW5mbzsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OkNhY2hlZFJlc291cmNlPiBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlPiByZXNvdXJjZU9iamVjdCA9
IFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZTo6Y3JlYXRlKCkKLSAgICAgICAg
LnNldFVybChjYWNoZWRSZXNvdXJjZS51cmwoKSkKLSAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9y
UGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNhY2hlZFJlc291cmNlKSkKLSAgICAg
ICAgLnNldEJvZHlTaXplKGNhY2hlZFJlc291cmNlLmVuY29kZWRTaXplKCkpOwotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNlUmVzcG9uc2UgPSBidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2UucmVzcG9uc2UoKSwgbG9h
ZGVyKTsKKyAgICAgICAgLnNldFVybChjYWNoZWRSZXNvdXJjZS0+dXJsKCkpCisgICAgICAgIC5z
ZXRUeXBlKEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlSnNvbigqY2FjaGVk
UmVzb3VyY2UpKQorICAgICAgICAuc2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UtPmVuY29kZWRT
aXplKCkpCisgICAgICAgIC5zZXRFeHRyYVJlc291cmNlSW5mbyhidWlsZE9iamVjdEZvckV4dHJh
UmVzb3VyY2VJbmZvKGNhY2hlZFJlc291cmNlKSk7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNv
dXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAgIGlm
IChyZXNvdXJjZVJlc3BvbnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2Uo
cmVzb3VyY2VSZXNwb25zZSk7CisKICAgICByZXR1cm4gcmVzb3VyY2VPYmplY3Q7CiB9CiAKQEAg
LTI4NywxMiArMzAxLDE3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNo
TG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLCBidWZmZXIgPyBi
dWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogMCwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5p
bnB1dEVuY29kaW5nKCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29y
azo6RXh0cmFSZXNvdXJjZUluZm8+IGV4dHJhUmVzb3VyY2VJbmZvOworICAgIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2Vz
RGF0YS0+ZGF0YShyZXF1ZXN0SWQpOworICAgIGlmIChyZXNvdXJjZURhdGEgJiYgcmVzb3VyY2VE
YXRhLT5jYWNoZWRSZXNvdXJjZSgpKQorICAgICAgICBleHRyYVJlc291cmNlSW5mbyA9IGJ1aWxk
T2JqZWN0Rm9yRXh0cmFSZXNvdXJjZUluZm8ocmVzb3VyY2VEYXRhLT5jYWNoZWRSZXNvdXJjZSgp
KTsKKwogICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KHJlcXVl
c3RJZCk7CiAKICAgICBpZiAoIWZpbmlzaFRpbWUpCiAgICAgICAgIGZpbmlzaFRpbWUgPSBjdXJy
ZW50VGltZSgpOwogCi0gICAgbV9mcm9udGVuZC0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwg
ZmluaXNoVGltZSk7CisgICAgbV9mcm9udGVuZC0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwg
ZmluaXNoVGltZSwgZXh0cmFSZXNvdXJjZUluZm8pOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zMjcsNyAr
MzQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9t
TWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9i
amVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsK
IAotICAgIG1fZnJvbnRlbmQtPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElk
LCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUo
KSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJj
ZSwgbG9hZGVyKSk7CisgICAgbV9mcm9udGVuZC0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNo
ZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBj
dXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3Vy
Y2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198912</attachid>
            <date>2013-04-19 13:34:47 -0700</date>
            <delta_ts>2013-04-19 13:41:06 -0700</delta_ts>
            <desc>[PATCH] Stylesheet sourceMapURL proposed fix - 2</desc>
            <filename>sourceMappingURL-2.patch</filename>
            <type>text/plain</type>
            <size>23305</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjEzMDMxLi4xNzAwNWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDQt
MTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBCYWNrZW5kIHNob3VsZCBkZXRlY3Qgc291cmNlTWFwcGluZ1VSTHMgaW4gQ1NT
IFJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE0ODU0CisKKyAgICAgICAgVGVzdCBhIGRpZmZlcmVudCB3YXlzIHdlIHdvdWxkIGV4cGVj
dCB0byBzZWUgYSBzb3VyY2VNYXBVUkwgZm9yCisgICAgICAgIHN0eWxlc2hlZXQgcmVzb3VyY2Vz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mt
c291cmNlLW1hcHBpbmctdXJsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3M6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJj
ZS1tYXAtdGVzdC1zdHlsZS5jc3MubWFwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuc2NzczogQWRk
ZWQuCisKIDIwMTMtMDQtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBDU1Muc2V0U3R5bGVUZXh0IHRvIHRoZSBXZWIgSW5zcGVjdG9yIHByb3Rv
Y29sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9jc3Mtc291cmNlLW1hcHBpbmctdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY3NzLXNvdXJjZS1tYXBwaW5nLXVybC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwMmQ5MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY3NzLXNv
dXJjZS1tYXBwaW5nLXVybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0
IHRoZSBleHRyYVJlc291cmNlSW5mbyBpbiBOZXR3b3JrLmxvYWRpbmdGaW5pc2hlZCBjb250YWlu
cyBhIHNvdXJjZU1hcFVSTCBmb3IgYSBTdHlsZXNoZWV0IGNvbnRhaW5pbmcgYSBzb3VyY2VNYXBw
aW5nVVJMLiBBbHNvIHRoZW4gdGVzdHMgdGhhdCBQYWdlLmdldFJlc291cmNlVHJlZSBjb250YWlu
cyB0aGUgc291cmNlTWFwVVJMIGZvciB0aGUgcmVzb3VyY2UuCisKK1Jlc3BvbnNlIHJlY2VpdmVk
IGZvciBzdHlsZS5jc3MKK05ldHdvcmsubG9hZGluZ0ZhaWxlZCBleHRyYVJlc291cmNlSW5mbyBj
b250YWlucyBhIHNvdXJjZU1hcFVSTDogc291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcy5tYXAKK1Bh
Z2UuZ2V0UmVzb3VyY2VUcmVlIHJlc291cmNlUGF5bG9hZCBjb250YWlucyBzb3VyY2VNYXBVUkw6
IHNvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3MubWFwCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY3NzLXNvdXJjZS1tYXBwaW5n
LXVybC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9jc3Mt
c291cmNlLW1hcHBpbmctdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNDAwMGI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvY3NzLXNvdXJjZS1tYXBwaW5nLXVybC5odG1sCkBAIC0wLDAgKzEsODgg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRTdHlsZXNoZWV0V2l0aFNvdXJjZU1hcHBp
bmdVUkwoKQoreworICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIp
OworICAgIGxpbmsucmVsID0gInN0eWxlc2hlZXQiOworICAgIGxpbmsudHlwZSA9ICJ0ZXh0L2Nz
cyI7CisgICAgbGluay5ocmVmID0gInJlc291cmNlcy9zb3VyY2UtbWFwLXRlc3Qtc3R5bGUuY3Nz
IjsKKyAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLk5ldHdv
cmtEaXNwYXRjaGVyLnByb3RvdHlwZSwgImxvYWRpbmdGaW5pc2hlZCIsIGxvYWRpbmdGaW5pc2hl
ZCk7CisgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlz
cGF0Y2hlci5wcm90b3R5cGUsICJsb2FkaW5nRmFpbGVkIiwgbG9hZGluZ0ZhaWxlZCk7CisKKyAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkU3R5bGVzaGVldFdpdGhTb3VyY2VN
YXBwaW5nVVJMKCkiKTsKKworICAgIGZ1bmN0aW9uIGxvYWRpbmdGaW5pc2hlZChyZXF1ZXN0SWQs
IHRpbWVzdGFtcCwgc291cmNlTWFwVVJMKQorICAgIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBX
ZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0Rm9ySWQocmVxdWVzdElkKTsKKyAgICAgICAg
aWYgKC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4ZWMocmVxdWVzdC51cmwpKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVzcG9uc2UgcmVjZWl2ZWQgZm9y
IHN0eWxlLmNzcyIpOworICAgICAgICAgICAgaWYgKHNvdXJjZU1hcFVSTCkgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOZXR3b3JrLmxvYWRpbmdGYWlsZWQgZXh0
cmFSZXNvdXJjZUluZm8gY29udGFpbnMgYSBzb3VyY2VNYXBVUkw6ICIgKyBzb3VyY2VNYXBVUkwp
OworICAgICAgICAgICAgICAgIGFmdGVyTG9hZGluZ1Jlc291cmNlKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOZXR3b3Jr
LmxvYWRpbmdGYWlsZWQgZXh0cmFSZXNvdXJjZUluZm8gbWlzc2luZyBzb3VyY2VNYXBVUkwiKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTFVSRSIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkaW5nRmFpbGVkKHJlcXVlc3RJ
ZCwgdGltZSwgbG9jYWxpemVkRGVzY3JpcHRpb24sIGNhbmNlbGVkKQorICAgIHsKKyAgICAgICAg
dmFyIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0Rm9ySWQocmVxdWVz
dElkKTsKKyAgICAgICAgaWYgKC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4ZWMocmVx
dWVzdC51cmwpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRmFpbGVk
IHRvIGxvYWQgc291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcyIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkZBSUxVUkUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZnRlckxv
YWRpbmdSZXNvdXJjZSgpCisgICAgeworICAgICAgICBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VUcmVl
KHByb2Nlc3NSZXNvdXJjZVRyZWUpOworCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NSZXNvdXJj
ZVRyZWUoZXJyb3IsIG1haW5GcmFtZVBheWxvYWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdl
LmdldFJlc291cmNlVHJlZSBlcnJvcjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiRkFJTFVSRSIpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgcmVzb3VyY2VzID0gbWFpbkZyYW1lUGF5bG9hZC5yZXNv
dXJjZXM7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlcy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZVBheWxvYWQgPSByZXNvdXJjZXNb
aV07CisgICAgICAgICAgICAgICAgaWYgKC9zb3VyY2UtbWFwLXRlc3Qtc3R5bGVcLmNzcyQvLmV4
ZWMocmVzb3VyY2VQYXlsb2FkLnVybCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc291
cmNlUGF5bG9hZC5zb3VyY2VNYXBVUkwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlLmdldFJlc291cmNlVHJlZSByZXNvdXJjZVBheWxvYWQg
Y29udGFpbnMgc291cmNlTWFwVVJMOiAiICsgcmVzb3VyY2VQYXlsb2FkLnNvdXJjZU1hcFVSTCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU1VDQ0VT
UyIpOworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlLmdldFJlc291cmNlVHJlZSByZXNvdXJjZVBh
eWxvYWQgbWlzc2luZyBzb3VyY2VNYXBVUkwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMVVJFIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJQYWdlLmdldFJlc291
cmNlVHJlZSBtaXNzaW5nIHNvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3MiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGQUlMVVJFIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyB0aGF0IHRoZSBleHRy
YVJlc291cmNlSW5mbyBpbiBOZXR3b3JrLmxvYWRpbmdGaW5pc2hlZCBjb250YWlucyBhIHNvdXJj
ZU1hcFVSTCBmb3IgYSBTdHlsZXNoZWV0IGNvbnRhaW5pbmcgYSBzb3VyY2VNYXBwaW5nVVJMLiBB
bHNvIHRoZW4gdGVzdHMgdGhhdCBQYWdlLmdldFJlc291cmNlVHJlZSBjb250YWlucyB0aGUgc291
cmNlTWFwVVJMIGZvciB0aGUgcmVzb3VyY2UuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
c291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAtdGVzdC1zdHlsZS5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgzMmRlMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1t
YXAtdGVzdC1zdHlsZS5jc3MKQEAgLTAsMCArMSw2IEBACisjY29udGFpbmVyIHsKKyAgYmFja2dy
b3VuZDogcGFwYXlhd2hpcDsgfQorICAjY29udGFpbmVyICNpbnNwZWN0ZWQgeworICAgIGNvbG9y
OiBncmVlbjsgfQorCisvKkAgc291cmNlTWFwcGluZ1VSTD1zb3VyY2UtbWFwLXRlc3Qtc3R5bGUu
Y3NzLm1hcCAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAt
dGVzdC1zdHlsZS5jc3MubWFwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxlLmNzcy5tYXAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExMTMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3NvdXJjZS1tYXAt
dGVzdC1zdHlsZS5jc3MubWFwCkBAIC0wLDAgKzEsNiBAQAoreworInZlcnNpb24iOiAiMyIsCisi
bWFwcGluZ3MiOiAiQUFBQSxVQUFXO0VBQ1AsVUFBVSxFQUFFLFVBQVU7RUFFdEIscUJBQVc7SUFD
UCxLQUFLLEVBQUUsS0FBSyIsCisic291cmNlcyI6IFsic3R5bGUuc2NzcyJdLAorImZpbGUiOiAi
c3R5bGUuY3NzIgorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxlLnNjc3MgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9zb3VyY2UtbWFwLXRl
c3Qtc3R5bGUuc2NzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc0ZDM1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvc291cmNlLW1hcC10ZXN0LXN0eWxlLnNjc3MKQEAgLTAsMCArMSw3IEBA
CisjY29udGFpbmVyIHsKKyAgICBiYWNrZ3JvdW5kOiBwYXBheWF3aGlwOworCisgICAgI2luc3Bl
Y3RlZCB7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIz
ZTAxNi4uYzkxZGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTA0LTE5ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQmFja2VuZCBzaG91bGQgZGV0ZWN0IHNvdXJjZU1hcHBpbmdVUkxzIGluIENTUyBSZXNv
dXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NDg1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvY3NzLXNvdXJjZS1tYXBwaW5nLXVybC5o
dG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgIC0gUGFn
ZS5nZXRSZXNvdXJjZVRyZWUgLSBhZGQgc291cmNlTWFwVVJMIHRvIHJlc291cmNlIHBheWxvYWRz
CisgICAgICAgIC0gTmV0d29yay5sb2FkaW5nRmluaXNoZWQgYW5kIE5ldHdvcmsucmVxdWVzdFNl
cnZlZEZyb21NZW1vcnlDYWNoZSwKKyAgICAgICAgICBpbmNsdWRlIHRoZSBzb3VyY2VNYXBVUkwg
aW4gdGhlIHJlc3VsdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxz
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OnNjcmlwdENvbW1lbnRQYXR0ZXJuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6c3R5bGVzaGVldENvbW1lbnRQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6ZmluZE1hZ2ljQ29t
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRpbHM6OmZpbmRTY3JpcHRT
b3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlYXJjaFV0aWxzOjpmaW5kU2Ny
aXB0U291cmNlTWFwVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWFyY2hVdGlsczo6
ZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwpOgorICAgICAgICBTZXBhcmF0ZSBTY3JpcHQgYW5k
IFN0eWxlc2hlZXQgcmVnZXggcGF0dGVybiBjcmVhdGlvbiwgYnV0CisgICAgICAgIHNoYXJlIHRo
ZSBzZWFyY2ggZnVuY3Rpb24gdXNpbmcgdGhlIHBhdHRlcm4uCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICBVcGRh
dGUgZnVuY3Rpb24gbmFtZXMuIENoZWNrIGZvciB0aGUgU291cmNlTWFwIGhlYWRlciBiZWZvcmUK
KyAgICAgICAgY2hlY2tpbmcgZm9yIGEgc291cmNlTWFwcGluZ1VSTCBjb21tZW50LgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgUHJvdmlk
ZSB0aGUgc291cmNlTWFwVVJMIGZvciBQYWdlLmdldFJlc291cmNlVHJlZS4KKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgor
ICAgICAgICBJbmNsdWRlIHNvdXJjZU1hcFVSTHMgaW4gZmluaXNoIGxvYWRpbmcgYW5kIHJlcXVl
c3Qgc2VydmVkIGZyb20gY2FjaGUuCisKIDIwMTMtMDQtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBDU1Muc2V0U3R5bGVUZXh0IHRvIHRoZSBX
ZWIgSW5zcGVjdG9yIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCA1M2Y3MTJhLi4yYTBlZmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApAQCAtMTY4LDkgKzE2
OCwyMCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6
U2VhcmNoTWF0Y2g+ID4gc2VhcmNoSW5UZXh0QnlMaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXN0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNv
bnN0IFN0cmluZyYgbmFtZSkKK3N0YXRpYyBTdHJpbmcgc2NyaXB0Q29tbWVudFBhdHRlcm4oY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIC8vICIvL0AgPG5hbWU+PTx2YWx1ZT4iCisgICAgcmV0
dXJuICIvL0BbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1wwNDBc
dF0qJCI7Cit9CisKK3N0YXRpYyBTdHJpbmcgc3R5bGVzaGVldENvbW1lbnRQYXR0ZXJuKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyAgICAvLyAiLypAIDxuYW1lPj08dmFsdWU+ICovIgorICAgIHJl
dHVybiAiL1xcKkBbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1ww
NDBcdF0qXFwqLyI7Cit9CisKK3N0YXRpYyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBT
dHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0cmluZykKIHsKLSAgICBTdHJp
bmcgcGF0dGVyblN0cmluZyA9ICIvL0BbXDA0MFx0XSIgKyBuYW1lICsgIj1bXDA0MFx0XSooW15c
XHNcJ1wiXSopW1wwNDBcdF0qJCI7CiAgICAgY29uc3QgY2hhciogZXJyb3IgPSAwOwogICAgIEpT
Qzo6WWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBmYWxzZSwgdHJ1ZSwg
JmVycm9yKTsKICAgICBBU1NFUlQoIWVycm9yKTsKQEAgLTE4OCwxNCArMTk5LDE5IEBAIHN0YXRp
YyBTdHJpbmcgZmluZE1hZ2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICByZXR1cm4gY29udGVudC5zdWJzdHJpbmcobWF0Y2hlc1syXSwgbWF0
Y2hlc1szXSAtIG1hdGNoZXNbMl0pOwogfQogCi1TdHJpbmcgZmluZFNvdXJjZVVSTChjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCitTdHJpbmcgZmluZFNjcmlwdFNvdXJjZVVSTChjb25zdCBTdHJpbmcm
IGNvbnRlbnQpCiB7Ci0gICAgcmV0dXJuIGZpbmRNYWdpY0NvbW1lbnQoY29udGVudCwgInNvdXJj
ZVVSTCIpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIHNjcmlwdENvbW1l
bnRQYXR0ZXJuKCJzb3VyY2VVUkwiKSk7CiB9CiAKLVN0cmluZyBmaW5kU291cmNlTWFwVVJMKGNv
bnN0IFN0cmluZyYgY29udGVudCkKK1N0cmluZyBmaW5kU2NyaXB0U291cmNlTWFwVVJMKGNvbnN0
IFN0cmluZyYgY29udGVudCkKIHsKLSAgICByZXR1cm4gZmluZE1hZ2ljQ29tbWVudChjb250ZW50
LCAic291cmNlTWFwcGluZ1VSTCIpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRl
bnQsIHNjcmlwdENvbW1lbnRQYXR0ZXJuKCJzb3VyY2VNYXBwaW5nVVJMIikpOworfQorCitTdHJp
bmcgZmluZFN0eWxlc2hlZXRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KQorewor
ICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsIHN0eWxlc2hlZXRDb21tZW50UGF0
dGVybigic291cmNlTWFwcGluZ1VSTCIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudFNl
YXJjaFV0aWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNl
YXJjaFV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxz
LmgKaW5kZXggM2M4NzczZS4uZDBiY2I5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbHMuaApAQCAtNDksOCArNDksOSBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+ID4gc2VhcmNoSW5U
ZXh0QnlMaQogVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZzZXQoc2l6ZV90IG9mZnNl
dCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKIFBhc3NPd25QdHI8VmVjdG9y
PHNpemVfdD4gPiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIAotU3RyaW5nIGZpbmRTb3Vy
Y2VVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKLVN0cmluZyBmaW5kU291cmNlTWFwVVJMKGNv
bnN0IFN0cmluZyYgY29udGVudCk7CitTdHJpbmcgZmluZFNjcmlwdFNvdXJjZVVSTChjb25zdCBT
dHJpbmcmIGNvbnRlbnQpOworU3RyaW5nIGZpbmRTY3JpcHRTb3VyY2VNYXBVUkwoY29uc3QgU3Ry
aW5nJiBjb250ZW50KTsKK1N0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJjZU1hcFVSTChjb25zdCBT
dHJpbmcmIGNvbnRlbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbHMKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgppbmRleCA1NDk4ZmZkLi5lNzk2MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC0xMzUsNyArMTM1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ0eXBlIiwgIiRyZWYiOiAiUmVzb3VyY2VUeXBlIiwgImRlc2NyaXB0
aW9uIjogIlR5cGUgb2YgdGhpcyByZXNvdXJjZS4iIH0sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibWltZVR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiUmVzb3VyY2UgbWltZVR5cGUgYXMgZGV0ZXJtaW5lZCBieSB0aGUgYnJvd3Nlci4i
IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZmFpbGVkIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUcnVl
IGlmIHRoZSByZXNvdXJjZSBmYWlsZWQgdG8gbG9hZC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FuY2VsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgdGhlIHJlc291cmNlIHdhcyBj
YW5jZWxlZCBkdXJpbmcgbG9hZGluZy4iIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJjYW5jZWxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiB0aGUgcmVzb3VyY2Ugd2FzIGNhbmNlbGVkIGR1
cmluZyBsb2FkaW5nLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzb3VyY2VNYXBVUkwiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAi
ZGVzY3JpcHRpb24iOiAiVVJMIG9mIHNvdXJjZSBtYXAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz
b3VyY2UgKGlmIGFueSkuIiB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJJbmZvcm1hdGlvbiBhYm91dCBmcmFtZSByZXNvdXJjZXMuIgpAQCAtOTc1LDcgKzk3Niw4
IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIFVSTC4gVGhpcyBpcyB0aGUgdXJsIG9mIHRoZSBv
cmlnaW5hbCBuZXR3b3JrIHJlcXVlc3QuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInR5cGUiLCAiJHJlZiI6ICJQYWdlLlJlc291cmNlVHlwZSIsICJkZXNjcmlwdGlvbiI6ICJU
eXBlIG9mIHRoaXMgcmVzb3VyY2UuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlc3BvbnNlIiwgIiRyZWYiOiAiUmVzcG9uc2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3Jp
cHRpb24iOiAiQ2FjaGVkIHJlc3BvbnNlIGRhdGEuIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImJvZHlTaXplIiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9uIjogIkNh
Y2hlZCByZXNwb25zZSBib2R5IHNpemUuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm9keVNpemUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGVkIHJl
c3BvbnNlIGJvZHkgc2l6ZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291
cmNlTWFwVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIlVSTCBvZiBzb3VyY2UgbWFwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIChp
ZiBhbnkpLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICB7CkBAIC0xMTExLDcgKzExMTMsOCBAQAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJGaXJlZCB3aGVuIEhUVFAgcmVxdWVzdCBoYXMgZmluaXNoZWQgbG9hZGluZy4iLAogICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0
IGlkZW50aWZpZXIuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWVzdGFt
cCIsICIkcmVmIjogIlRpbWVzdGFtcCIsICJkZXNjcmlwdGlvbiI6ICJUaW1lc3RhbXAuIiB9Cisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZXN0YW1wIiwgIiRyZWYiOiAiVGltZXN0
YW1wIiwgImRlc2NyaXB0aW9uIjogIlRpbWVzdGFtcC4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAic291cmNlTWFwVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiBzb3VyY2UgbWFwIGFzc29jaWF0ZWQgd2l0aCB0
aGlzIHJlc291cmNlIChpZiBhbnkpLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNDA3ZTY2MS4uYWUwODMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApA
QCAtNjMyLDIzICs2MzIsMjAgQEAgUGFzc1JlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT4gPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXIKIAogU3RyaW5nIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQm
IHNjcmlwdCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc291cmNlTWFwSHR0
cEhlYWRlciwgKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkpOwotCi0gICAgU3RyaW5nIHNv
dXJjZU1hcFVSTCA9IENvbnRlbnRTZWFyY2hVdGlsczo6ZmluZFNvdXJjZU1hcFVSTChzY3JpcHQu
c291cmNlKTsKLSAgICBpZiAoIXNvdXJjZU1hcFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzb3VyY2VNYXBVUkw7Ci0KLSAgICBpZiAoc2NyaXB0LnVybC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0g
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKLSAgICBpZiAoIXBh
Z2VBZ2VudCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShwYWdlQWdlbnQtPm1haW5GcmFt
ZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOwotICAgIGlmIChyZXNvdXJj
ZSkKLSAgICAgICAgcmV0dXJuIHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChz
b3VyY2VNYXBIdHRwSGVhZGVyKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgt
U291cmNlTWFwIikpKTsKKworICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkgeworICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShwYWdlQWdlbnQtPm1haW5GcmFt
ZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOworICAgICAgICAgICAgaWYg
KHJlc291cmNlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZU1hcEhlYWRlciA9IHJl
c291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3VyY2VNYXBIVFRQSGVhZGVyKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZU1hcEhlYWRlci5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXBIZWFkZXI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxzOjpmaW5kU2NyaXB0
U291cmNlTWFwVVJMKHNjcmlwdC5zb3VyY2UpOwogfQogCiAvLyBKYXZhU2NyaXB0RGVidWdMaXN0
ZW5lciBmdW5jdGlvbnMKQEAgLTY2MSw3ICs2NTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFNjcmlw
dAogICAgIFN0cmluZyogc291cmNlTWFwVVJMUGFyYW0gPSBzb3VyY2VNYXBVUkwuaXNOdWxsKCkg
PyAwIDogJnNvdXJjZU1hcFVSTDsKICAgICBTdHJpbmcgc291cmNlVVJMOwogICAgIGlmICghc2Ny
aXB0LnN0YXJ0TGluZSAmJiAhc2NyaXB0LnN0YXJ0Q29sdW1uKQotICAgICAgICBzb3VyY2VVUkwg
PSBDb250ZW50U2VhcmNoVXRpbHM6OmZpbmRTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZSk7CisgICAg
ICAgIHNvdXJjZVVSTCA9IENvbnRlbnRTZWFyY2hVdGlsczo6ZmluZFNjcmlwdFNvdXJjZVVSTChz
Y3JpcHQuc291cmNlKTsKICAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzb3VyY2VVUkwuaXNFbXB0
eSgpOwogICAgIFN0cmluZyBzY3JpcHRVUkwgPSBoYXNTb3VyY2VVUkwgPyBzb3VyY2VVUkwgOiBz
Y3JpcHQudXJsOwogICAgIGJvb2wqIGhhc1NvdXJjZVVSTFBhcmFtID0gaGFzU291cmNlVVJMID8g
Jmhhc1NvdXJjZVVSTCA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCmluZGV4IDA5NDA1YzQuLjFjN2E5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yNjcsNiArMjY3LDMw
IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsCiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyBy
ZXNvdXJjZSB3aXRoIGdpdmVuIFVSTCBmb3VuZCI7CiB9CiAKKy8vc3RhdGljCitTdHJpbmcgSW5z
cGVjdG9yUGFnZUFnZW50Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJj
ZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlgtU291cmNlTWFwIikpKTsKKworICAgIGlm
ICghY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFNj
cmlwdHMgYXJlIGhhbmRsZWQgaW4gYSBzZXBhcmF0ZSBwYXRoLgorICAgIGlmIChjYWNoZWRSZXNv
dXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgc291cmNlTWFwSGVhZGVyID0gY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1hcEhUVFBIZWFkZXIpOwor
ICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHNvdXJj
ZU1hcEhlYWRlcjsKKworICAgIFN0cmluZyBjb250ZW50OworICAgIGJvb2wgYmFzZTY0RW5jb2Rl
ZDsKKyAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoY2Fj
aGVkUmVzb3VyY2UsICZjb250ZW50LCAmYmFzZTY0RW5jb2RlZCkgJiYgIWJhc2U2NEVuY29kZWQp
CisgICAgICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbHM6OmZpbmRTdHlsZXNoZWV0U291cmNl
TWFwVVJMKGNvbnRlbnQpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBDYWNoZWRSZXNv
dXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2Uo
dXJsKTsKQEAgLTExMTQsNiArMTEzOCw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6
OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0CiAgICAg
ICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0Q2FuY2VsZWQodHJ1ZSk7CiAgICAgICAgIGVsc2Ug
aWYgKGNhY2hlZFJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9y
KQogICAgICAgICAgICAgcmVzb3VyY2VPYmplY3QtPnNldEZhaWxlZCh0cnVlKTsKKyAgICAgICAg
U3RyaW5nIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKKyAgICAgICAgaWYgKCFzb3VyY2VNYXBwaW5n
VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRTb3VyY2VNYXBV
Ukwoc291cmNlTWFwcGluZ1VSTCk7CiAgICAgICAgIHN1YnJlc291cmNlcy0+YWRkSXRlbShyZXNv
dXJjZU9iamVjdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmgKaW5kZXggNTgzY2Q1OS4uYWQ5YTI2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtODYsNiArODYsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNl
KiwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBib29s
IHNoYXJlZEJ1ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1
bHQpOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1l
KiwgY29uc3QgS1VSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7
CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFt
ZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwogICAgIHN0YXRpYyBD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBLVVJMJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAK
aW5kZXggMGI5YTRmNy4uNWNmNWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMTY3LDE1ICsxNjcsMjEgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OlJlc3BvbnNlPiBidWlsZE9iamVj
dEZvclJlc291cmNlUmVzcG9uc2UKICAgICByZXR1cm4gcmVzcG9uc2VPYmplY3Q7CiB9CiAKLXN0
YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpDYWNoZWRSZXNvdXJjZT4gYnVp
bGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVkUmVz
b3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBEb2N1bWVudExvYWRlciogbG9hZGVy
KQogewogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkNhY2hlZFJlc291cmNlOjpjcmVh
dGUoKQotICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLnVybCgpKQotICAgICAgICAuc2V0
VHlwZShJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlVHlwZUpzb24oY2FjaGVkUmVz
b3VyY2UpKQotICAgICAgICAuc2V0Qm9keVNpemUoY2FjaGVkUmVzb3VyY2UuZW5jb2RlZFNpemUo
KSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VS
ZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5y
ZXNwb25zZSgpLCBsb2FkZXIpOworICAgICAgICAuc2V0VXJsKGNhY2hlZFJlc291cmNlLT51cmwo
KSkKKyAgICAgICAgLnNldFR5cGUoSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZVR5
cGVKc29uKCpjYWNoZWRSZXNvdXJjZSkpCisgICAgICAgIC5zZXRCb2R5U2l6ZShjYWNoZWRSZXNv
dXJjZS0+ZW5jb2RlZFNpemUoKSk7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6
OlJlc3BvbnNlPiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLCBsb2FkZXIpOwogICAgIGlmIChyZXNvdXJj
ZVJlc3BvbnNlKQogICAgICAgICByZXNvdXJjZU9iamVjdC0+c2V0UmVzcG9uc2UocmVzb3VyY2VS
ZXNwb25zZSk7CisKKyAgICBTdHJpbmcgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOworICAgIGlmICgh
c291cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkpCisgICAgICAgIHJlc291cmNlT2JqZWN0LT5zZXRT
b3VyY2VNYXBVUkwoc291cmNlTWFwcGluZ1VSTCk7CisKICAgICByZXR1cm4gcmVzb3VyY2VPYmpl
Y3Q7CiB9CiAKQEAgLTI5Miw3ICsyOTgsMTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQKICAg
ICBpZiAoIWZpbmlzaFRpbWUpCiAgICAgICAgIGZpbmlzaFRpbWUgPSBjdXJyZW50VGltZSgpOwog
Ci0gICAgbV9mcm9udGVuZC0+bG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgZmluaXNoVGltZSk7
CisgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRh
KHJlcXVlc3RJZCk7CisgICAgaWYgKHJlc291cmNlRGF0YSAmJiByZXNvdXJjZURhdGEtPmNhY2hl
ZFJlc291cmNlKCkpCisgICAgICAgIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKHJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2Uo
KSk7CisKKyAgICBtX2Zyb250ZW5kLT5sb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCBmaW5pc2hU
aW1lLCAhc291cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkgPyAmc291cmNlTWFwcGluZ1VSTCA6IDAp
OwogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCkBAIC0zMjcsNyArMzM4LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxv
YWQKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0
b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAotICAgIG1fZnJvbnRlbmQtPnJlcXVlc3RTZXJ2
ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51
cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVj
dEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7CisgICAgbV9mcm9udGVuZC0+
cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklk
LCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3Qs
IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQogCiB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCg==
</data>
<flag name="review"
          id="220590"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>