<?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>93198</bug_id>
          
          <creation_ts>2012-08-05 02:41:50 -0700</creation_ts>
          <short_desc>When `eval` is blocked by CSP, the error message should make that clear.</short_desc>
          <delta_ts>2012-10-22 07:47:58 -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>WebCore Misc.</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>
          <dependson>94331</dependson>
    
    <dependson>94332</dependson>
          <blocked>93197</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>tbreisacher</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687578</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-05 02:41:50 -0700</bug_when>
    <thetext>&quot;Code generation from strings disallowed for this context&quot; doesn&apos;t provide enough context for developers whose `eval()`-like code is blocked by CSP.

Ideally, we&apos;d have something more like &quot;Refused to execute `eval()` because it violates the following Content Security Policy Directive: &apos;script-src &apos;self&apos;&apos;&quot; to match the rest of the logged warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697149</commentid>
    <comment_count>1</comment_count>
      <attachid>158824</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-16 08:13:11 -0700</bug_when>
    <thetext>Created attachment 158824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697150</commentid>
    <comment_count>2</comment_count>
      <attachid>158824</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-16 08:13:43 -0700</bug_when>
    <thetext>Comment on attachment 158824
Patch

Dropping the r?. This is nowhere near ready to land. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697154</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-16 08:15:13 -0700</bug_when>
    <thetext>Hey Jochen! This is a very much WIP patch that I&apos;d appreciate some help with. Can you recommend someone who knows things about JSC to help me evaluate an approach that they might accept? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697174</commentid>
    <comment_count>4</comment_count>
      <attachid>158824</attachid>
    <who name="">jochen</who>
    <bug_when>2012-08-16 08:34:26 -0700</bug_when>
    <thetext>Comment on attachment 158824
Patch

ggaren is your man

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        When `eval` is blocked by CSP, the error message should make that clear.

&apos;eval&apos; :)

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:300
&gt; +        void setEvalEnabled(bool enabled, const String&amp; reason);

I&apos;d pick a more descriptive name instead of reason. Something that indicates that this will be included in the error message if eval is disabled and something tries to eval

&gt; Source/WebCore/page/ContentSecurityPolicy.cpp:643
&gt; +    String m_allowEvalReason;

it&apos;s more a disallow reason, isn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697178</commentid>
    <comment_count>5</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-16 08:44:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hey Jochen! This is a very much WIP patch that I&apos;d appreciate some help with. Can you recommend someone who knows things about JSC to help me evaluate an approach that they might accept? :)

(In reply to comment #4)
&gt; (From update of attachment 158824 [details])
&gt; ggaren is your man

Thanks Jochen! Hi Geoffrey! :)

Would you mind helping me work out a mechanism for passing information down into JSC to improve the experience for developers who unexpectedly run into Content Security Policy&apos;s ability to disable &apos;eval&apos; and its friends?

I&apos;d like on the one hand to pass in a more detailed string to be used as the error message, and on the other to generate a console warning (as we&apos;re seeing reports from developers using libraries that swallow the exception in a try/catch block). To make that possible, V8 has a callback mechanism (see http://code.google.com/searchframe#OAMlx_jo-ck/src/v8/src/runtime.cc&amp;exact_package=chromium&amp;q=allow_code_gen_callback&amp;type=cs&amp;l=9406) that I&apos;d like to implement in JSC as well.

The current patch is an attempt at the former. I&apos;d like to talk about the latter.

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697179</commentid>
    <comment_count>6</comment_count>
      <attachid>158824</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-16 08:44:31 -0700</bug_when>
    <thetext>Comment on attachment 158824
Patch

Attachment 158824 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13511598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697188</commentid>
    <comment_count>7</comment_count>
      <attachid>158824</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-16 08:57:35 -0700</bug_when>
    <thetext>Comment on attachment 158824
Patch

Attachment 158824 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13512509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697565</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-16 15:10:16 -0700</bug_when>
    <thetext>&gt; I&apos;d like on the one hand to pass in a more detailed string to be used as the error message

Current patch looks good for that. I agree that you should use something more descriptive than &quot;reason&quot;, which denotes an error message.

&gt; and on the other to generate a console warning

The Web Inspector already gets callbacks when exceptions are thrown. Does that mechanism work for you? Does it need to be expanded in some way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698184</commentid>
    <comment_count>9</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-08-17 04:13:42 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I&apos;d like on the one hand to pass in a more detailed string to be used as the error message
&gt; 
&gt; Current patch looks good for that. I agree that you should use something more descriptive than &quot;reason&quot;, which denotes an error message.

Ok. Then I&apos;m closer than I expected. :)

I&apos;ll split this bug into two: one for JSC and one for V8. The latter&apos;s going to be a bit more work. *cough*

&gt; &gt; and on the other to generate a console warning
&gt; 
&gt; The Web Inspector already gets callbacks when exceptions are thrown. Does that mechanism work for you? Does it need to be expanded in some way?

The goal is to provide developers who use libraries that swallow exceptions some idea of what&apos;s going on. Many libraries parse JSON with &apos;eval&apos;, wrap it in try/catch, and assume that an exception means &quot;Invalid JSON!&quot; It would be nice if we generated a console warning in addition to throwing an exception at the point where &apos;eval&apos; is called.

I&apos;ll take a look at the throwError implementation to see if there&apos;s a simple way of hooking into the preexisting Web Inspector code. Thanks for the tip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747534</commentid>
    <comment_count>10</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2012-10-22 07:47:58 -0700</bug_when>
    <thetext>Both V8 and JSC landed. Closing this out.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158824</attachid>
            <date>2012-08-16 08:13:11 -0700</date>
            <delta_ts>2012-08-16 08:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93198-20120816171235.patch</filename>
            <type>text/plain</type>
            <size>23520</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjE1MTllYmRlYmE4MmQ1OGJhMDc0MDE3YzMzNDVhYTA0MmFiNjUwLi4wNzFkODdmYzU5MDk5OTdl
NGU0NzQyM2U5MjFmZjEzZmNhZTE2MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxMi0wOC0xNiAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdoZW4gYGV2YWxgIGlzIGJsb2NrZWQgYnkgQ1NQLCB0aGUgZXJyb3IgbWVzc2Fn
ZSBzaG91bGQgbWFrZSB0aGF0IGNsZWFyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTMxOTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOb3QgYXQgYWxsIHJlYWR5IGZvciBsYW5kaW5nIChPT1BTISkuCisK
KyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpFdmFsRXhl
Y3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldEV2YWxFbmFibGVkKToK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXZh
bEVuYWJsZWQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZXZhbEVuYWJsZWRSZWFz
b24pOgorCiAyMDEyLTA4LTE1ICBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5vLmFi
aW5hZGVyQGJhc3lza29tLmNvbT4KIAogICAgICAgICBbY3NzMy10ZXh0XSBBZGQgQ1NTMyBUZXh0
IGRlY29yYXRpb24gY29tcGlsZSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY5NjRkMTQ2YzI5YTQzZWQw
ZGVhZjU3MmQyZWUyNmYzMzgxMDhjNy4uOWJlYTQ1YmQwNDU5OTM1OTY0YzJkODA5NTE3NjcwODhl
ZmRiZGRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTE2ICBNaWtlIFdl
c3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2hlbiBgZXZhbGAgaXMgYmxvY2tl
ZCBieSBDU1AsIHRoZSBlcnJvciBtZXNzYWdlIHNob3VsZCBtYWtlIHRoYXQgY2xlYXIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdCBhdCBhbGwgcmVh
ZHkgZm9yIGxhbmRpbmcgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6aW5pdFNj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjplbmFibGVFdmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChTY3JpcHRDb250
cm9sbGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzZXRFdmFsRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAoV29ya2VyU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAoU2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV29ya2VyU2NyaXB0Q29u
dHJvbGxlcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkaXNhYmxlRXZhbCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoK
KyAgICAgICAgKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAqIHBhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93RXZhbFJlYXNvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0Ojpz
ZXRBbGxvd0V2YWxSZWFzb24pOgorICAgICAgICAoQ1NQRGlyZWN0aXZlTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsUmVhc29uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNv
bnRleHQ6OmRpc2FibGVFdmFsKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoK
KyAgICAgICAgKFdvcmtlckNvbnRleHQpOgorCiAyMDEyLTA4LTE2ICBZdXJ5IFNlbWlraGF0c2t5
ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1lbW9yeSBp
bnN0cnVtZW50YXRpb24gZm9yIFJlc291cmNle1JlcXVlc3QvUmVzcG9uc2V9QmFzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA3M2I0YjZjNGYz
MTc1ZmY4ZTc5NWRjYzJiNzA2MzA3NDExNmJkMmVhLi4xYWNkMmVkMWY1MGM1YjdjYjkyNjg4ZTdl
MmUyZGNmZDAxYTk3NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlCiAg
ICAgICAgIG1fZXZhbENvZGVCbG9jayA9IG5ld0NvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKCFsZXhpY2FsR2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMs
ICJFdmFsIGlzIGRpc2FibGVkIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGxleGljYWxHbG9iYWxPYmplY3QtPmV2YWxFbmFibGVk
UmVhc29uKCkpKTsKICAgICAgICAgUmVmUHRyPEV2YWxOb2RlPiBldmFsTm9kZSA9IHBhcnNlPEV2
YWxOb2RlPihnbG9iYWxEYXRhLCBsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX3NvdXJjZSwgMCwgaXNT
dHJpY3RNb2RlKCkgPyBKU1BhcnNlU3RyaWN0IDogSlNQYXJzZU5vcm1hbCwgRXZhbE5vZGU6Omlz
RnVuY3Rpb25Ob2RlID8gSlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwg
bGV4aWNhbEdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKSwgZXhlYywgJmV4Y2VwdGlvbik7CiAgICAg
ICAgIGlmICghZXZhbE5vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDBlZGMwYThhOTMyNWFiMGRkZDUwOTZiNzkwNjFlZjRlMDQ3MDRkNDQuLmEyYWJlMjdjNTg1NzIy
YWFlNWIxM2IxOTgxNzQ0OWQyOTZmMmZjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ0MSw2ICs0NDEsMTMgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbGwqIGNlbGwpCiAgICAganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oY2VsbCktPm1fcmFyZURhdGEuY2xlYXIoKTsKIH0KIAordm9pZCBKU0ds
b2JhbE9iamVjdDo6c2V0RXZhbEVuYWJsZWQoYm9vbCBlbmFibGVkLCBjb25zdCBTdHJpbmcmIHJl
YXNvbikKK3sKKyAgICBtX2V2YWxFbmFibGVkID0gZW5hYmxlZDsKKyAgICBpZiAoIXJlYXNvbi5p
c0VtcHR5KCkpCisgICAgICAgIG1fZXZhbEVuYWJsZWRSZWFzb24gPSBVU3RyaW5nKHJlYXNvbi5j
aGFyYWN0ZXJzKCkpOworfQorCiBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGU6OkR5bmFtaWNHbG9i
YWxPYmplY3RTY29wZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBk
eW5hbWljR2xvYmFsT2JqZWN0KQogICAgIDogbV9keW5hbWljR2xvYmFsT2JqZWN0U2xvdChnbG9i
YWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgLCBtX3NhdmVkRHluYW1pY0dsb2JhbE9i
amVjdChtX2R5bmFtaWNHbG9iYWxPYmplY3RTbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYWYwM2YzMmU2OWZjYWY1NjM2NTE5OWRj
YjI4MjdjNmE0ZGIwY2ExMC4uMjdkMTU0YTgxZWMzYWI3YWZiMTA4YmY3YjY2NDUwZWM0YTBmY2M2
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0xNDksNiArMTQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN5bWJvbFRhYmxl
IG1fc3ltYm9sVGFibGU7CiAKICAgICAgICAgYm9vbCBtX2V2YWxFbmFibGVkOworICAgICAgICBV
U3RyaW5nIG1fZXZhbEVuYWJsZWRSZWFzb247CiAgICAgICAgIGJvb2wgbV9leHBlcmltZW50c0Vu
YWJsZWQ7CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgR2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZTsKQEAgLTI5Niw4ICsyOTcsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlKGJvb2wmIHJl
cXVpcmVzRHluYW1pY0NoZWNrcykgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBzZXRFdmFsRW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9ldmFsRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgYm9v
bCBldmFsRW5hYmxlZCgpIHsgcmV0dXJuIG1fZXZhbEVuYWJsZWQ7IH0KKyAgICAgICAgdm9pZCBz
ZXRFdmFsRW5hYmxlZChib29sIGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKKyAgICAg
ICAgYm9vbCBldmFsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbEVuYWJsZWQ7IH0KKyAg
ICAgICAgY29uc3QgVVN0cmluZyYgZXZhbEVuYWJsZWRSZWFzb24oKSBjb25zdCB7IHJldHVybiBt
X2V2YWxFbmFibGVkUmVhc29uOyB9CiAKICAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU0ds
b2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZGE5Mzk4NGVkNzZjMDQ4MjAzNWQ3
NDk4YWU3ZjAyNzFmOTY3OWY4My4uNzQ3N2MzNzE5MGIwY2EzYWMxZThhNTgyNTVjYWZiODNmODA5
MWQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9s
bGVyOjppbml0U2NyaXB0KERPTVdyYXBwZXJXb3JsZCogd29ybGQpCiAgICAgd2luZG93U2hlbGwt
PndpbmRvdygpLT51cGRhdGVEb2N1bWVudCgpOwogCiAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50
KCkpCi0gICAgICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbCgwLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHByZXNzUmVwb3J0KSk7ICAgCisgICAgICAgIHdpbmRvd1No
ZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbCgwLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1
cHByZXNzUmVwb3J0KSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPmFsbG93RXZhbFJlYXNvbigpKTsgICAKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgIGF0dGFjaERlYnVnZ2VyKHdpbmRvd1NoZWxsLCBwYWdlLT5k
ZWJ1Z2dlcigpKTsKQEAgLTI0NywxNSArMjQ3LDE1IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6
ZW5hYmxlRXZhbCgpCiAgICAgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwgPSBleGlzdGlu
Z1dpbmRvd1NoZWxsKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKICAgICBpZiAoIXdpbmRvd1No
ZWxsKQogICAgICAgICByZXR1cm47Ci0gICAgd2luZG93U2hlbGwtPndpbmRvdygpLT5zZXRFdmFs
RW5hYmxlZCh0cnVlKTsKKyAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnNldEV2YWxFbmFibGVk
KHRydWUsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9sbGVyOjpkaXNhYmxlRXZh
bCgpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgcmVh
c29uKQogewogICAgIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsID0gZXhpc3RpbmdXaW5k
b3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgaWYgKCF3aW5kb3dTaGVsbCkK
ICAgICAgICAgcmV0dXJuOwotICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJs
ZWQoZmFsc2UpOworICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQoZmFs
c2UsIHJlYXNvbik7CiB9CiAKIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAppbmRleCBmNzZmZGU4ZmM3MmY2ODA1ZWY0OGMwM2FmYzFkMDZhM2ExNTRjYTg3Li41NzdkYTVh
NGY1OGQ0YTM0ZjcyNGZkN2Q5NjA1ODllYjJkNmZkNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGlj
OgogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGVuYWJsZUV2YWwoKTsKLSAgICB2b2lkIGRpc2FibGVFdmFsKCk7CisgICAgdm9p
ZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBzdGF0aWMgYm9vbCBw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0U3RhdGUuY3BwCmluZGV4IDc4MGNhNGQ5ZDIzYzg3ZTQ0ODdkNTJhZDc1N2NlZWVmZTU2YTFl
YmMuLjVkNTE0OTg0Y2Y4ZmQ1ZGZhMzRhMDQ5MTdhOGQyMmY2OTBkYjQ4OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgYm9v
bCBldmFsRW5hYmxlZChTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpCiB2b2lkIHNldEV2YWxFbmFi
bGVkKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgYm9vbCBlbmFibGVkKQogewogICAgIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c2V0RXZhbEVuYWJsZWQoZW5hYmxl
ZCk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+c2V0RXZhbEVuYWJsZWQoZW5hYmxlZCwgU3Ry
aW5nKCkpOwogfQogCiBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3RhdGUoRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA5YmZkZThmMmFiMmUxZGUzZDUzYjFjYmUyMmIzM2NkZjU1Yzc2
NjQ1Li5mZDY5NjIxNmFlNjIzNzQ1ZmQ5N2U2NWY5OTNkZWE5ZjNlY2U2ODcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtMTg4LDEyICsxODgsMTIgQEAgYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppc0V4
ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVu
OwogfQogCi12b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRpc2FibGVFdmFsKCkKK3ZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiByZWFzb24p
CiB7CiAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZ2xv
YmFsRGF0YSgpKTsKIAotICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPnNldEV2YWxFbmFibGVk
KGZhbHNlKTsKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5zZXRFdmFsRW5hYmxlZChmYWxz
ZSwgcmVhc29uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDNiMmFj
ZDRiNjRkNzAzOTlmYzM3ODhhZmQ4YjdjODYxZGZmMTYyZWMuLjJlZDEwY2ZkMmIyZDVlMWVkYzBh
MTdlODAyNzhlYmZiOGJjNjIyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAgICBib29s
IGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCBkaXNhYmxlRXZh
bCgpOworICAgICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKIAog
ICAgICAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fZ2xvYmFs
RGF0YS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDA2OTJlM2QyYjliODJkMzg5NmM5NTkyNjI5ZjM1Mjc0OWE3M2Mw
ZWYuLjk4NmFmMDlkODM2NjNmMjc3MTRiNWQ4ZWM1MjdhMmZiNzhjZGY1M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMzYsNyAr
MzM2LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVFdmFsKCkKICAgICB2OENvbnRl
eHQtPkFsbG93Q29kZUdlbmVyYXRpb25Gcm9tU3RyaW5ncyh0cnVlKTsKIH0KIAotdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpkaXNhYmxlRXZhbCgpCit2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmRpc2Fi
bGVFdmFsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSBwcm94eSgp
LT53aW5kb3dTaGVsbCgpLT5jb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZDE4OWRjMWM0N2Y5MThlMzk0ZjU4ZDZkODUxZjA2
MTgyYTYyNjQ3Ni4uMDI4NTUxMjRmNjk1NzQ4NjNkZmFhYjk4MGIyNjc2ZDlkYjAxZjBhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTI1
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhdmVJbnRlcnByZXRlcigpIGNvbnN0Owog
CiAgICAgdm9pZCBlbmFibGVFdmFsKCk7Ci0gICAgdm9pZCBkaXNhYmxlRXZhbCgpOworICAgIHZv
aWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAgICAgc3RhdGljIGJvb2wg
Y2FuQWNjZXNzRnJvbUN1cnJlbnRPcmlnaW4oRnJhbWUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkNjc4
OTUxMjk2NzMwOTBmNWI4YjBiYTZhMzdhMmRkMzVmMjBjZDYxLi44M2UxODk3MGJkYmY4YjBkZDAw
ZGVjZmQ2ZDIxNzY4NjZhNGNjYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIGJv
b2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdAog
ICAgIHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjpkaXNhYmxlRXZhbCgpCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNjFlZDdh
YmMxMWM5ZDMzYmE2YjY3YjkxNmM3YTIxNjc5OWRhNzIzMi4uMmNmM2UyY2QyOTA5NTg0N2Y4OTYw
NjExNGY2MDE1MmU2OGMwOWE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIGJvb2wg
aXNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdDsKIAotICAgICAgICB2b2lkIGRpc2FibGVFdmFs
KCk7CisgICAgICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogCiAg
ICAgICAgIC8vIFJldHVybnMgV29ya2VyU2NyaXB0Q29udHJvbGxlciBmb3IgdGhlIGN1cnJlbnRs
eSBleGVjdXRpbmcgY29udGV4dC4gMCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBjdXJyZW50IGV4
ZWN1dGluZyBjb250ZXh0IGlzIG5vdCB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAgICAgIHN0YXRp
YyBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBjb250cm9sbGVyRm9yQ29udGV4dCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggYWY5ZmM0ODYzM2IyN2Y5OWU1NzY5NjQzN2EzNWQ2ODEwZTNh
MjNhMi4uOWQ0YjBhNGVjNWM3ZTliYWJkZmJmNDdmYjMyZmM4MDdmOGZlMzM2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0yODA4LDEyICsyODA4LDEyIEBAIFN0cmluZyBEb2N1bWVudDo6
dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKSA/IGZy
YW1lKCktPmxvYWRlcigpLT51c2VyQWdlbnQodXJsKSA6IFN0cmluZygpOwogfQogCi12b2lkIERv
Y3VtZW50OjpkaXNhYmxlRXZhbCgpCit2b2lkIERvY3VtZW50OjpkaXNhYmxlRXZhbChjb25zdCBT
dHJpbmcmIHJlYXNvbikKIHsKICAgICBpZiAoIWZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGZyYW1lKCktPnNjcmlwdCgpLT5kaXNhYmxlRXZhbCgpOworICAgIGZyYW1lKCktPnNjcmlw
dCgpLT5kaXNhYmxlRXZhbChyZWFzb24pOwogfQogCiBib29sIERvY3VtZW50OjpjYW5OYXZpZ2F0
ZShGcmFtZSogdGFyZ2V0RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGNiNDcwY2ZmNDFj
ZjE0N2VhMTNlOTQ5ODE3NThjNjFhYzAzMjI4NmMuLmVkMWU3OGY2MGE3NTljODBhMDkyOTBhNmM0
M2IwY2E3NzNiYTI1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02MzAsNyArNjMwLDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKICAgICBib29sIGNhbk5hdmlnYXRl
KEZyYW1lKiB0YXJnZXRGcmFtZSk7CiAgICAgRnJhbWUqIGZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQ
cm9wYWdhdGlvbkJvdW5kYXJ5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCBlNzQ2ODAzOGM2YTM4NWI4ODE2ZjlmYzFiNDczNTA2YWMyNmNhMTEw
Li44MTUzYjQ0MWM5ZmE3Y2FlOGEwNjVjYTY0ZjgyYWM0ZDI2Mjk0YjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUV2YWwoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAKICAgICBib29sIHNh
bml0aXplU2NyaXB0RXJyb3IoU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCYgbGluZU51bWJlciwg
U3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggZTgwOWQ3Y2RhMDRjMDUxZDBlYjNlOGYwOTY1
ZjM4ODNiODliYTRlOS4uZWEwYTAzYjRmMzgxOGQ5MTM5MjlmNzRiNGM4MGUwODdlMGYyZmNhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAt
NTg0LDYgKzU4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNv
bnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7
CiAKICAgICB2b2lkIGdhdGhlclJlcG9ydFVSSXMoRE9NU3RyaW5nTGlzdCYpIGNvbnN0OworICAg
IGNvbnN0IFN0cmluZyYgYWxsb3dFdmFsUmVhc29uKCkgeyByZXR1cm4gbV9hbGxvd0V2YWxSZWFz
b247IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1BEaXJlY3RpdmVMaXN0KENvbnRlbnRT
ZWN1cml0eVBvbGljeSopOwpAQCAtNjAyLDYgKzYwMyw4IEBAIHByaXZhdGU6CiAgICAgQ1NQRGly
ZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUoQ1NQRGlyZWN0aXZlKikgY29uc3Q7CiAgICAgdm9p
ZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMID0gS1VSTCgpLCBjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgUGFzc1Jl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+ID0gMCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldEFsbG93RXZh
bFJlYXNvbihjb25zdCBTdHJpbmcmIHJlYXNvbikgeyBtX2FsbG93RXZhbFJlYXNvbiA9IHJlYXNv
bjsgfQorCiAgICAgYm9vbCBjaGVja0V2YWwoQ1NQRGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9v
bCBjaGVja0lubGluZShDU1BEaXJlY3RpdmUqKSBjb25zdDsKICAgICBib29sIGNoZWNrTm9uY2Uo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CkBAIC02MTcsNiArNjIwLDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0T25seTsg
fQogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBtX3BvbGljeTsKKwogICAgIFN0cmluZyBt
X2hlYWRlcjsKIAogICAgIGJvb2wgbV9yZXBvcnRPbmx5OwpAQCAtNjM2LDYgKzY0MCw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGx1Z2luVHlwZXM7CiAgICAgU3RyaW5nIG1f
cGx1Z2luVHlwZXNEaXJlY3RpdmU7CiAgICAgU3RyaW5nIG1fc2NyaXB0Tm9uY2U7CisgICAgU3Ry
aW5nIG1fYWxsb3dFdmFsUmVhc29uOwogfTsKIAogQ1NQRGlyZWN0aXZlTGlzdDo6Q1NQRGlyZWN0
aXZlTGlzdChDb250ZW50U2VjdXJpdHlQb2xpY3kqIHBvbGljeSkKQEAgLTY2MCw2ICs2NjUsMTEg
QEAgUGFzc093blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUo
Q29udGVudFNlY3VyaXR5UG9saWN5KiBwb2wKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
aWYgKCFkaXJlY3RpdmVzLT5jaGVja0V2YWwoZGlyZWN0aXZlcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KGRpcmVjdGl2ZXMtPm1fc2NyaXB0U3JjLmdldCgpKSkpIHsKKyAgICAgICAgU3RyaW5nIHJlYXNv
biA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlw
dCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xp
Y3kgZGlyZWN0aXZlOiBcIiIsIGRpcmVjdGl2ZXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShkaXJlY3Rp
dmVzLT5tX3NjcmlwdFNyYy5nZXQoKSktPnRleHQoKSwgIlwiLlxuIik7CisgICAgICAgIGRpcmVj
dGl2ZXMtPnNldEFsbG93RXZhbFJlYXNvbihyZWFzb24pOworICAgIH0KKwogICAgIHJldHVybiBk
aXJlY3RpdmVzLnJlbGVhc2UoKTsKIH0KIApAQCAtMTE5Myw3ICsxMjAzLDcgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIs
IEhlYWRlclR5cGUgdHkKICAgICB9CiAKICAgICBpZiAoIWFsbG93RXZhbCgwLCBTdXBwcmVzc1Jl
cG9ydCkpCi0gICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGlzYWJsZUV2YWwoKTsK
KyAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5kaXNhYmxlRXZhbChhbGxvd0V2YWxS
ZWFzb24oKSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpzZXRPdmVycmlkZUFs
bG93SW5saW5lU3R5bGUoYm9vbCB2YWx1ZSkKQEAgLTEyODEsNiArMTI5MSwxNSBAQCBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2ssIENvbgogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhDYWxsU3RhY2s8
JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbD4obV9wb2xpY2llcywgY2FsbFN0YWNrLCByZXBv
cnRpbmdTdGF0dXMpOwogfQogCitTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2
YWxSZWFzb24oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb2xpY2ll
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIW1fcG9saWNpZXNbaV0uZ2V0KCktPmFsbG93
RXZhbCgwLCBTdXBwcmVzc1JlcG9ydCkpCisgICAgICAgICAgICByZXR1cm4gbV9wb2xpY2llc1tp
XS5nZXQoKS0+YWxsb3dFdmFsUmVhc29uKCk7CisgICAgfQorICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKwogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3Qg
U3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGlu
YWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aE5vbmNlPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1Njcmlw
dE5vbmNlPihtX3BvbGljaWVzLCBub25jZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHVybCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA3MmEx
MDZlYWUzODcxODY4ZmY5ZjZjYTg3ZDExMTQ5ZWY4Y2E0OTQ4Li4yYmU5ODFmYWEyNzM3NDkxNzdi
Y2MxYzgyOWUyOWVhMzI1MDRiZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgS1VSTCBjb21w
bGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4oKSBjb25zdDsKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZs
YWdzKSBjb25zdDsKKyAgICBTdHJpbmcgYWxsb3dFdmFsUmVhc29uKCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgQ29udGVudFNlY3VyaXR5UG9saWN5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGU1
YmQxNWVhNmFlY2I2NWMzNmVkNDYyYmY3ZmYzYzY4N2ZlYWM3MmEuLjZhZTAzZDExNmU4YTI5MWZm
MzgyYzQwZDFjNTQ0M2IzMjkyMDNkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcApAQCAtMTQ3LDkgKzE0Nyw5IEBAIFN0cmluZyBXb3JrZXJDb250ZXh0Ojp1c2Vy
QWdlbnQoY29uc3QgS1VSTCYpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXNlckFnZW50OwogfQogCi12
b2lkIFdvcmtlckNvbnRleHQ6OmRpc2FibGVFdmFsKCkKK3ZvaWQgV29ya2VyQ29udGV4dDo6ZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgbV9zY3JpcHQtPmRpc2FibGVF
dmFsKCk7CisgICAgbV9zY3JpcHQtPmRpc2FibGVFdmFsKHJlYXNvbik7CiB9CiAKIFdvcmtlckxv
Y2F0aW9uKiBXb3JrZXJDb250ZXh0Ojpsb2NhdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5oCmluZGV4IDM0ODE5ZDA3Y2RiYTZiNDk1ZjY4NTBjMDNiOTc2MTE2
ZGQ1Mjg0NDEuLjJhZTdkZDlkMzJhNDgyNDA0ZWYxMjc0ZmI5Mjg4MzcwZGI0YzI2NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5n
cygpIHsgcmV0dXJuIG1fZ3JvdXBTZXR0aW5ncy5nZXQoKTsgfQogICAgICAgICB2aXJ0dWFsIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlRXZhbCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUV2YWwoY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogCiAgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlw
dCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CiAgICAgICAgIHZvaWQgY2xlYXJTY3JpcHQo
KSB7IG1fc2NyaXB0LmNsZWFyKCk7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjliNzc2ZWVhZDA3NDM0Njg1MThlZWYy
YjEzNGFlMDg5OGVkNzc2Li43Yjk5MDVmM2YwNzQwYjY4MWRjNjllYTA2NjAwNGI5YjA4NDk5NWE5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMTYgIE1pa2UgV2VzdCAgPG1rd3N0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXaGVuIGBldmFsYCBpcyBibG9ja2VkIGJ5IENTUCwgdGhl
IGVycm9yIG1lc3NhZ2Ugc2hvdWxkIG1ha2UgdGhhdCBjbGVhci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMTk4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm90IGF0IGFsbCByZWFkeSBmb3IgbGFuZGlu
ZyAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvZXZhbC1ibG9ja2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ldmFsLWJsb2NrZWQtaW4tYWJvdXQtYmxh
bmstaWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9mdW5jdGlvbi1jb25zdHJ1Y3Rvci1ibG9ja2VkLWV4cGVjdGVk
LnR4dDoKKwogMjAxMi0wOC0xNiAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRm9ybUNvbnRyb2xsZXI6IEVuYWJsZSByZWFkaW5nIHNlbGVjdGVkIGZpbGUg
bmFtZXMgZnJvbSBkb2N1bWVudCBzdGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZXZhbC1ibG9ja2VkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2V2YWwtYmxvY2tlZC1leHBlY3RlZC50eHQKaW5kZXggNjk4NTU4YTg5Yjg3NjIyOWVkYTky
YTNjNWE3OWFlMTZmZTQzNjg5ZS4uZGRiY2U2NzNmNWZkNjI2Y2FiMjc2YjY4N2UxZmMwNWE3Yzlj
OTk4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvZXZhbC1ibG9ja2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ldmFsLWJsb2NrZWQt
ZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBF
dmFsRXJyb3I6IEV2YWwgaXMgZGlzYWJsZWQKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNTogRXZh
bEVycm9yOiBFdmFsIGlzIGRpc2FibGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IEV2YWxF
cnJvcjogUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJlY2F1c2Ug
aXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3Rp
dmU6ICJzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5lJyIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
NTogRXZhbEVycm9yOiBSZWZ1c2VkIHRvIGV2YWx1YXRlIGEgc3RyaW5nIGFzIEphdmFTY3JpcHQg
YmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IGRpcmVjdGl2ZTogInNjcmlwdC1zcmMgJ3Vuc2FmZS1pbmxpbmUnIgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ldmFs
LWJsb2NrZWQtaW4tYWJvdXQtYmxhbmstaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2V2YWwtYmxvY2tlZC1p
bi1hYm91dC1ibGFuay1pZnJhbWUtZXhwZWN0ZWQudHh0CmluZGV4IGI4MDczYjc4NmQzZDdmOWEy
YWM3NzZjODc4NTczMmMyZmRmZjg3MWUuLjlmZWUwNzdiZmIxYzFiYzY5MTE4ZGM0NGQxMjhjYmZk
M2Q2YjQ0NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L2V2YWwtYmxvY2tlZC1pbi1hYm91dC1ibGFuay1pZnJhbWUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2V2YWwtYmxvY2tlZC1pbi1hYm91dC1ibGFuay1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsMyBAQAogQUxFUlQ6IC9QQVNTLwotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE6IEV2YWxFcnJvcjogRXZhbCBpcyBkaXNhYmxlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IEV2YWxFcnJvcjogUmVmdXNlZCB0byBldmFsdWF0ZSBhIHN0cmluZyBhcyBKYXZhU2NyaXB0IGJl
Y2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBk
aXJlY3RpdmU6ICJzY3JpcHQtc3JjICd1bnNhZmUtaW5saW5lJyIKICBFdmFsIHNob3VsZCBiZSBi
bG9ja2VkIGluIHRoZSBpZnJhbWUsIGJ1dCBpbmxpbmUgc2NyaXB0IHNob3VsZCBiZSBhbGxvd2Vk
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvZnVuY3Rpb24tY29uc3RydWN0b3ItYmxvY2tlZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9mdW5j
dGlvbi1jb25zdHJ1Y3Rvci1ibG9ja2VkLWV4cGVjdGVkLnR4dAppbmRleCA4Y2M4M2NhMWZiMWUy
YTA0OWNmMTQ0NzdlNDVmNjQxNWY0Zjc2MDUzLi4yOTIxZmZmMmI1NjY0MWY4MWIyNGMxMzMzNmEy
YjZjN2Y0YjM3ZWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9mdW5jdGlvbi1jb25zdHJ1Y3Rvci1ibG9ja2VkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9mdW5jdGlvbi1jb25zdHJ1Y3Rvci1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAt
MSwyICsxLDIgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogRXZhbEVycm9yOiBGdW5jdGlv
biBjb25zdHJ1Y3RvciBpcyBkaXNhYmxlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBFdmFs
RXJyb3I6IFJlZnVzZWQgdG8gZXZhbHVhdGUgYSBzdHJpbmcgYXMgSmF2YVNjcmlwdCBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlOiAic2NyaXB0LXNyYyAndW5zYWZlLWlubGluZSciCiAK
</data>
<flag name="commit-queue"
          id="169023"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>