<?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>204880</bug_id>
          
          <creation_ts>2019-12-05 02:28:49 -0800</creation_ts>
          <short_desc>Automation: scripts are executed in the wrong js context after a history navigation</short_desc>
          <delta_ts>2020-01-10 00:42:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>204151</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595749</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-05 02:28:49 -0800</bug_when>
    <thetext>I noticed this while working on bug #204151. After implementing the promises based execute script, tests imported/w3c/webdriver/tests/back/user_prompts.py and imported/w3c/webdriver/tests/forward/user_prompts.py started to fail, but only when the page cache was enabled. After a lot of debugging I realized the problem was that we wee using the script object from the previous frame js context after loading a page from the cache, because didClearWindowObjectForFrame() is not called in that case. We are caching the script object for every frame ID, and after a history navigation the frame ID is the same, but the frame js context isn&apos;t. That also mean we might be leaking the script objects in those cases, because we end up calling JSValueUnprotect with the wrong context. It would be easier to set the script object as a property of the global object and let JSC handle the lifetime. Instead of caching the script object and protect/unprotect it, we just check if the global object of the current js context has the property or not to get or create it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595755</commentid>
    <comment_count>1</comment_count>
      <attachid>384891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-05 02:41:03 -0800</bug_when>
    <thetext>Created attachment 384891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603391</commentid>
    <comment_count>2</comment_count>
      <attachid>384891</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-06 17:21:36 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

The overall approach seems fine to me, but I&apos;m asking for a second review since I&apos;m not super familiar with JSOjectRef API. What tests progress with this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603423</commentid>
    <comment_count>3</comment_count>
      <attachid>384891</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-06 20:16:21 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

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

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:175
&gt; +    auto webkitAutomationName = OpaqueJSString::tryCreate(&quot;WebKitAutomation&quot;_s);

What about using `JSStringCreateWithUTF8CString` instead?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:179
&gt; +        return const_cast&lt;JSObjectRef&gt;(JSObjectGetProperty(context, const_cast&lt;JSObjectRef&gt;(webkitAutomation), OpaqueJSString::tryCreate(&quot;automationSessionProxy&quot;_s).get(), &amp;exception));

Ditto (175)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:183
&gt;      String script = StringImpl::createWithoutCopying(WebAutomationSessionProxyScriptSource, sizeof(WebAutomationSessionProxyScriptSource));
&gt; +    JSEvaluateScript(context, OpaqueJSString::tryCreate(script).get(), nullptr, nullptr, 0, &amp;exception);

Ditto (175) but with `JSStringCreateWithCharactersNoCopy` instead.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:192
&gt; +    JSValueRef automationSessionProxyConstructor = JSObjectGetProperty(context, const_cast&lt;JSObjectRef&gt;(webkitAutomation), OpaqueJSString::tryCreate(&quot;AutomationSessionProxy&quot;_s).get(), &amp;exception);

Ditto (175)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:195
&gt; +    JSObjectRef automationSessionProxy = JSObjectCallAsConstructor(context, const_cast&lt;JSObjectRef&gt;(automationSessionProxyConstructor), WTF_ARRAY_LENGTH(arguments), arguments, &amp;exception);

Why not do this in the script itself and avoid having to call all of this API?  That way, you could invert this entire function and make it such that if `if (!JSObjectHasProperty(context, globalObject, webkitAutomationName.get()))` all you have to do is just evaluate the script, and then the rest of the logic to get the `automationSessionProxy` instance could be the same.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:198
&gt; +    JSObjectSetProperty(context, const_cast&lt;JSObjectRef&gt;(webkitAutomation), OpaqueJSString::tryCreate(&quot;automationSessionProxy&quot;_s).get(), automationSessionProxy, kJSPropertyAttributeNone, &amp;exception);

Ditto (175)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:209
&gt; +    auto webkitAutomationName = OpaqueJSString::tryCreate(&quot;WebKitAutomation&quot;_s);

Ditto (175)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:215
&gt; +    auto* scriptObject = const_cast&lt;JSObjectRef&gt;(JSObjectGetProperty(context, const_cast&lt;JSObjectRef&gt;(webkitAutomation), OpaqueJSString::tryCreate(&quot;automationSessionProxy&quot;_s).get(), nullptr));

Ditto (175)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:28
&gt; +var WebKitAutomation = {};

Does this mean that `WebKitAutomation` is now visible as `window.WebKitAutomation` in the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603517</commentid>
    <comment_count>4</comment_count>
      <attachid>384891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-07 04:01:57 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:175
&gt;&gt; +    auto webkitAutomationName = OpaqueJSString::tryCreate(&quot;WebKitAutomation&quot;_s);
&gt; 
&gt; What about using `JSStringCreateWithUTF8CString` instead?

I&apos;m just following what the existing code does, I guess we use the internal API to avoid having to call JSStringRelease. I don&apos;t mind to change it, but it&apos;s probably unrelated to this patch.

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:28
&gt;&gt; +var WebKitAutomation = {};
&gt; 
&gt; Does this mean that `WebKitAutomation` is now visible as `window.WebKitAutomation` in the page?

Yes. We could use a document property instead like chromium does. Or we could even try to use an isolated world for automation. The other option would be to keep the lifetime of the automation object from C++ like we currently do, but we need a reliable way to release the object when the js context of the frame changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603518</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-07 04:03:57 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #2)
&gt; Comment on attachment 384891 [details]
&gt; Patch
&gt; 
&gt; The overall approach seems fine to me, but I&apos;m asking for a second review
&gt; since I&apos;m not super familiar with JSOjectRef API. What tests progress with
&gt; this change?

Tests imported/w3c/webdriver/tests/back/user_prompts.py and imported/w3c/webdriver/tests/forward/user_prompts.py fail when using promises in script execution, see the bug description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603575</commentid>
    <comment_count>6</comment_count>
      <attachid>384891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-07 08:35:49 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:195
&gt;&gt; +    JSObjectRef automationSessionProxy = JSObjectCallAsConstructor(context, const_cast&lt;JSObjectRef&gt;(automationSessionProxyConstructor), WTF_ARRAY_LENGTH(arguments), arguments, &amp;exception);
&gt; 
&gt; Why not do this in the script itself and avoid having to call all of this API?  That way, you could invert this entire function and make it such that if `if (!JSObjectHasProperty(context, globalObject, webkitAutomationName.get()))` all you have to do is just evaluate the script, and then the rest of the logic to get the `automationSessionProxy` instance could be the same.

The thing is that we need to provide the constructor arguments from C++ implementation. If we always call the script we would be creating the js values every time, but they are only needed the first time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603587</commentid>
    <comment_count>7</comment_count>
      <attachid>384891</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-07 08:49:57 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:28
&gt;&gt;&gt; +var WebKitAutomation = {};
&gt;&gt; 
&gt;&gt; Does this mean that `WebKitAutomation` is now visible as `window.WebKitAutomation` in the page?
&gt; 
&gt; Yes. We could use a document property instead like chromium does. Or we could even try to use an isolated world for automation. The other option would be to keep the lifetime of the automation object from C++ like we currently do, but we need a reliable way to release the object when the js context of the frame changes.

We can&apos;t use an isolated world, because we are expected to have access to global object properties from scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603621</commentid>
    <comment_count>8</comment_count>
      <attachid>384891</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-01-07 10:02:19 -0800</bug_when>
    <thetext>Comment on attachment 384891
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:28
&gt;&gt;&gt;&gt; +var WebKitAutomation = {};
&gt;&gt;&gt; 
&gt;&gt;&gt; Does this mean that `WebKitAutomation` is now visible as `window.WebKitAutomation` in the page?
&gt;&gt; 
&gt;&gt; Yes. We could use a document property instead like chromium does. Or we could even try to use an isolated world for automation. The other option would be to keep the lifetime of the automation object from C++ like we currently do, but we need a reliable way to release the object when the js context of the frame changes.
&gt; 
&gt; We can&apos;t use an isolated world, because we are expected to have access to global object properties from scripts.

You could probably use PrivateNames, like JavaScriptCore does for its built-in scripts. It would never be observable from user script but would exist in their world.

There are two such facilities:

   1. &lt;JavaScriptCore/JSObjectRefPrivate.h&gt;
    JS_EXPORT bool JSObjectSetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value);
    JS_EXPORT JSValueRef JSObjectGetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName);

   2. &lt;JavaScriptCore/PrivateName.h&gt;
    These PrivateNames are like symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603854</commentid>
    <comment_count>9</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-07 16:09:28 -0800</bug_when>
    <thetext>It definitely seems wrong for the automation property to be user visible. Carlos, can you try one of Joe&apos;s approaches which doesn&apos;t have this side-effect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604011</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-08 02:22:45 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #8)
&gt; Comment on attachment 384891 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384891&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.js:28
&gt; &gt;&gt;&gt;&gt; +var WebKitAutomation = {};
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Does this mean that `WebKitAutomation` is now visible as `window.WebKitAutomation` in the page?
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes. We could use a document property instead like chromium does. Or we could even try to use an isolated world for automation. The other option would be to keep the lifetime of the automation object from C++ like we currently do, but we need a reliable way to release the object when the js context of the frame changes.
&gt; &gt; 
&gt; &gt; We can&apos;t use an isolated world, because we are expected to have access to global object properties from scripts.
&gt; 
&gt; You could probably use PrivateNames, like JavaScriptCore does for its
&gt; built-in scripts. It would never be observable from user script but would
&gt; exist in their world.

Great idea!

&gt; There are two such facilities:
&gt; 
&gt;    1. &lt;JavaScriptCore/JSObjectRefPrivate.h&gt;
&gt;     JS_EXPORT bool JSObjectSetPrivateProperty(JSContextRef ctx, JSObjectRef
&gt; object, JSStringRef propertyName, JSValueRef value);
&gt;     JS_EXPORT JSValueRef JSObjectGetPrivateProperty(JSContextRef ctx,
&gt; JSObjectRef object, JSStringRef propertyName);

We can&apos;t use this, because the global object is not created with a JSClass definition.

&gt;    2. &lt;JavaScriptCore/PrivateName.h&gt;
&gt;     These PrivateNames are like symbols.

But we can definitely use this. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604015</commentid>
    <comment_count>11</comment_count>
      <attachid>387088</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-08 02:31:56 -0800</bug_when>
    <thetext>Created attachment 387088
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604019</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-08 02:47:37 -0800</bug_when>
    <thetext>In file included from /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/Release/JavaScriptCore.framework/Headers/JSContextRef.h:29:
/Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/Release/JavaScriptCore.framework/Headers/JSObjectRef.h:588:22: note: &apos;JSObjectGetPropertyForKey&apos; has been explicitly marked partial here
JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef object, JSValueRef propertyKey, JSValueRef* exception) API_AVAILABLE(macos(10.15), ios(13.0));
                     ^
In file included from /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource55.cpp:5:
/Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:227:40: note: enclose &apos;JSObjectGetPropertyForKey&apos; in a __builtin_available check to silence this warning
        return const_cast&lt;JSObjectRef&gt;(JSObjectGetPropertyForKey(context, globalObject, scriptObjectSymbol, nullptr));
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~

Any idea how to fix this? I don&apos;t see any other use of __builtin_available in the code, so I guess there&apos;s another way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604153</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 10:47:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/58413615&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604157</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-08 10:58:30 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; In file included from
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/JavaScriptCore.framework/Headers/JSContextRef.h:29:
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/JavaScriptCore.framework/Headers/JSObjectRef.h:588:22: note:
&gt; &apos;JSObjectGetPropertyForKey&apos; has been explicitly marked partial here
&gt; JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef
&gt; object, JSValueRef propertyKey, JSValueRef* exception)
&gt; API_AVAILABLE(macos(10.15), ios(13.0));
&gt;                      ^
&gt; In file included from
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/DerivedSources/WebKit2/unified-sources/UnifiedSource55.cpp:5:
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/Source/WebKit/
&gt; WebProcess/Automation/WebAutomationSessionProxy.cpp:227:40: note: enclose
&gt; &apos;JSObjectGetPropertyForKey&apos; in a __builtin_available check to silence this
&gt; warning
&gt;         return const_cast&lt;JSObjectRef&gt;(JSObjectGetPropertyForKey(context,
&gt; globalObject, scriptObjectSymbol, nullptr));
&gt;                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 
&gt; Any idea how to fix this? I don&apos;t see any other use of __builtin_available
&gt; in the code, so I guess there&apos;s another way?

I&apos;ll investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604283</commentid>
    <comment_count>15</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-08 14:14:47 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #14)
&gt; (In reply to Carlos Garcia Campos from comment #12)
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; &gt; Release/JavaScriptCore.framework/Headers/JSContextRef.h:29:
&gt; &gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; &gt; Release/JavaScriptCore.framework/Headers/JSObjectRef.h:588:22: note:
&gt; &gt; &apos;JSObjectGetPropertyForKey&apos; has been explicitly marked partial here
&gt; &gt; JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef
&gt; &gt; object, JSValueRef propertyKey, JSValueRef* exception)
&gt; &gt; API_AVAILABLE(macos(10.15), ios(13.0));
&gt; &gt;                      ^
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; &gt; Release/DerivedSources/WebKit2/unified-sources/UnifiedSource55.cpp:5:
&gt; &gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/Source/WebKit/
&gt; &gt; WebProcess/Automation/WebAutomationSessionProxy.cpp:227:40: note: enclose
&gt; &gt; &apos;JSObjectGetPropertyForKey&apos; in a __builtin_available check to silence this
&gt; &gt; warning
&gt; &gt;         return const_cast&lt;JSObjectRef&gt;(JSObjectGetPropertyForKey(context,
&gt; &gt; globalObject, scriptObjectSymbol, nullptr));
&gt; &gt;                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
&gt; &gt; 
&gt; &gt; Any idea how to fix this? I don&apos;t see any other use of __builtin_available
&gt; &gt; in the code, so I guess there&apos;s another way?
&gt; 
&gt; I&apos;ll investigate.

That API is marked as not available because High Sierra is less than min version of 10.15.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604296</commentid>
    <comment_count>16</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-08 14:40:30 -0800</bug_when>
    <thetext>The patch builds for me locally using macOS 10.15 SDK (Catalina).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604301</commentid>
    <comment_count>17</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-08 14:51:33 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; In file included from
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/JavaScriptCore.framework/Headers/JSContextRef.h:29:
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/JavaScriptCore.framework/Headers/JSObjectRef.h:588:22: note:
&gt; &apos;JSObjectGetPropertyForKey&apos; has been explicitly marked partial here
&gt; JS_EXPORT JSValueRef JSObjectGetPropertyForKey(JSContextRef ctx, JSObjectRef
&gt; object, JSValueRef propertyKey, JSValueRef* exception)
&gt; API_AVAILABLE(macos(10.15), ios(13.0));
&gt;                      ^
&gt; In file included from
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/WebKitBuild/
&gt; Release/DerivedSources/WebKit2/unified-sources/UnifiedSource55.cpp:5:
&gt; /Volumes/Data/worker/macOS-High-Sierra-Release-Build-EWS/build/Source/WebKit/
&gt; WebProcess/Automation/WebAutomationSessionProxy.cpp:227:40: note: enclose
&gt; &apos;JSObjectGetPropertyForKey&apos; in a __builtin_available check to silence this
&gt; warning
&gt;         return const_cast&lt;JSObjectRef&gt;(JSObjectGetPropertyForKey(context,
&gt; globalObject, scriptObjectSymbol, nullptr));
&gt;                                        ^~~~~~~~~~~~~~~~~~~~~~~~~
&gt; 
&gt; Any idea how to fix this? I don&apos;t see any other use of __builtin_available
&gt; in the code, so I guess there&apos;s another way?

I think using __builtin_available is the way to go. JSC gets around this in testapi.cpp by #defining JSC_API_AVAILABLE away. But by this point we will have rewritten the JSC API header to use the system API availability attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604545</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-09 01:07:13 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #17)
[...]
&gt; I think using __builtin_available is the way to go. JSC gets around this in
&gt; testapi.cpp by #defining JSC_API_AVAILABLE away. But by this point we will
&gt; have rewritten the JSC API header to use the system API availability
&gt; attributes.

If I understand __builtin_available correctly, that would use the API only when in newer version of macOS, but this is internal API that is available for sure when building WebKit, no? We don&apos;t have a fallback for previous versions. Another alternative would be to use the internal JSC API to get/set the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604552</commentid>
    <comment_count>19</comment_count>
      <attachid>387202</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-09 01:56:27 -0800</bug_when>
    <thetext>Created attachment 387202
Try to fix apple builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604734</commentid>
    <comment_count>20</comment_count>
      <attachid>387202</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-09 11:19:48 -0800</bug_when>
    <thetext>Comment on attachment 387202
Try to fix apple builds

r=me (with EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604740</commentid>
    <comment_count>21</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-01-09 11:23:59 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #18)
&gt; (In reply to Keith Miller from comment #17)
&gt; [...]
&gt; &gt; I think using __builtin_available is the way to go. JSC gets around this in
&gt; &gt; testapi.cpp by #defining JSC_API_AVAILABLE away. But by this point we will
&gt; &gt; have rewritten the JSC API header to use the system API availability
&gt; &gt; attributes.
&gt; 
&gt; If I understand __builtin_available correctly, that would use the API only
&gt; when in newer version of macOS, but this is internal API that is available
&gt; for sure when building WebKit, no? We don&apos;t have a fallback for previous
&gt; versions. Another alternative would be to use the internal JSC API to
&gt; get/set the property.

Oh, ok, I misunderstood the warning. If you really want to use the public API there&apos;s probably a pragma to disable availability warnings. Using internal JSC API seems fine, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605023</commentid>
    <comment_count>22</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-10 00:42:18 -0800</bug_when>
    <thetext>Committed r254328: &lt;https://trac.webkit.org/changeset/254328&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384891</attachid>
            <date>2019-12-05 02:41:03 -0800</date>
            <delta_ts>2020-01-08 02:31:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wd-script-object.diff</filename>
            <type>text/plain</type>
            <size>12654</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMGYzMmE1MzQ5NmQuLjNkYWQ0NDdjYmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDE5LTEyLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbiB0aGUg
d3JvbmcganMgY29udGV4dCBhZnRlciBhIGhpc3RvcnkgbmF2aWdhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgYSBoaXN0b3J5IG5hdmln
YXRpb24gd2UgdXNlIHRoZSBzY3JpcHQgb2JqZWN0IGZyb20gdGhlIHByZXZpb3VzIGZyYW1lIGpz
IGNvbnRleHQgYmVjYXVzZQorICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKCkg
aXMgbm90IGNhbGxlZCBpbiB0aGF0IGNhc2UuIFdlIGFyZSBjYWNoaW5nIHRoZSBzY3JpcHQgb2Jq
ZWN0IGZvciBldmVyeSBmcmFtZSBJRCwKKyAgICAgICAgYW5kIGFmdGVyIGEgaGlzdG9yeSBuYXZp
Z2F0aW9uIHRoZSBmcmFtZSBJRCBpcyB0aGUgc2FtZSwgYnV0IHRoZSBmcmFtZSBqcyBjb250ZXh0
IGlzbid0LiBUaGF0IGFsc28gbWVhbnMgd2UgbWlnaHQKKyAgICAgICAgYmUgbGVha2luZyB0aGUg
c2NyaXB0IG9iamVjdHMgaW4gdGhvc2UgY2FzZXMsIGJlY2F1c2Ugd2UgZW5kIHVwIGNhbGxpbmcg
SlNWYWx1ZVVucHJvdGVjdCB3aXRoIHRoZSB3cm9uZworICAgICAgICBjb250ZXh0LiBJdCB3b3Vs
ZCBiZSBlYXNpZXIgdG8gc2V0IHRoZSBzY3JpcHQgb2JqZWN0IGFzIGEgcHJvcGVydHkgb2YgdGhl
IGdsb2JhbCBvYmplY3QgYW5kIGxldCBKU0MgaGFuZGxlIHRoZQorICAgICAgICBsaWZldGltZS4g
SW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBzY3JpcHQgb2JqZWN0IGFuZCBwcm90ZWN0L3VucHJvdGVj
dCBpdCwgd2UganVzdCBjaGVjayBpZiB0aGUgZ2xvYmFsIG9iamVjdCBvZgorICAgICAgICB0aGUg
Y3VycmVudCBqcyBjb250ZXh0IGhhcyB0aGUgcHJvcGVydHkgb3Igbm90IHRvIGdldCBvciBjcmVh
dGUgaXQuIFdlIHVzZSBhIG5hbWVzcGFjZSBmb3IgdGhlIHNjcmlwdCBvYmplY3QgdG8KKyAgICAg
ICAgZW5zdXJlIHdlIGRvbid0IGNvbmZsaWN0IHdpdGggYW55IG90aGVyIHByb3BlcnR5IG9mIHRo
ZSBnbG9iYWwgb2JqZWN0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6IENoZWNrIGlmIFdlYktpdEF1dG9t
YXRpb24gbmFtZXNwYWNlIGV4aXN0cyBhbmQgZ2V0CisgICAgICAgIHRoZSBhdXRvbWF0aW9uU2Vz
c2lvblByb3h5IHByb3BlcnR5IG9yIGNyZWF0ZSBpdCBvdGhlcndpc2UuCisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKTogQ2hl
Y2sgaWYgV2ViS2l0QXV0b21hdGlvbiBuYW1lc3BhY2UgZXhpc3RzIGFuZCBnZXQKKyAgICAgICAg
dGhlIGF1dG9tYXRpb25TZXNzaW9uUHJveHkgcHJvcGVydHkuCisgICAgICAgIChXZWJLaXQ6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUpOiBS
ZW1vdmUgdGhlIGNvZGUgdG8gdW5wcm90ZWN0IHNjcmlwdCBvYmplY3RzCisgICAgICAgIG9mIHRo
ZSBmcmFtZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oOiBSZW1vdmUgdGhlIHNjcmlwdCBvYmplY3RzIG1hcC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qczogQWRkIFdl
YktpdEF1dG9tYXRpb24gbmFtZXNwYWNlIHRvIGRlZmluZQorICAgICAgICBBdXRvbWF0aW9uU2Vz
c2lvblByb3h5IGNsYXNzLgorICAgICAgICAoV2ViS2l0QXV0b21hdGlvbi5BdXRvbWF0aW9uU2Vz
c2lvblByb3h5KTogUmVjZWl2ZSBzZXNzaW9uSWRlbnRpZmllciwgZXZhbHVhdGUgYW5kIGNyZWF0
ZVVVSUQgZnVuY3Rpb25zIGFzCisgICAgICAgIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgYW5kIHN0
b3JlIHRoZW0gYXMgbWVtYmVycy4KKyAgICAgICAgKFdlYktpdEF1dG9tYXRpb24uQXV0b21hdGlv
blNlc3Npb25Qcm94eS5wcm90b3R5cGUuZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOiBVc2Ug
dGhpcy5fZXZhbHVhdGUuCisgICAgICAgIChXZWJLaXRBdXRvbWF0aW9uLkF1dG9tYXRpb25TZXNz
aW9uUHJveHkucHJvdG90eXBlLl9yZXZpdmVKU09OVmFsdWUpOiBVc2UgdGhpcy5fc2Vzc2lvbk5v
ZGVQcm9wZXJ0eU5hbWUuCisgICAgICAgIChXZWJLaXRBdXRvbWF0aW9uLkF1dG9tYXRpb25TZXNz
aW9uUHJveHkucHJvdG90eXBlLl9jcmVhdGVOb2RlSGFuZGxlKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXRBdXRvbWF0aW9uLkF1dG9tYXRpb25TZXNzaW9uUHJveHkucHJvdG90eXBlLl9pZGVudGlm
aWVyRm9yTm9kZSk6IFVzZSB0aGlzLl9jcmVhdGVVVUlELgorCiAyMDE5LTEyLTA0ICBKb29uZ2h1
biBQYXJrICA8amg3MTgucGFya0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBS
ZW1vdmUgYnVpbGQgd2FybmluZ3MgYmVsb3cgc2luY2UgcjI1MzAyNS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAKaW5kZXggMzRmZGVhNTcxNjkuLjc1MDFhMzIzZGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMTY5LDI5ICsxNjksMzQgQEAgc3RhdGlj
IEpTVmFsdWVSZWYgZXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGYKIAogSlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogewotICAgIGlmIChKU09i
amVjdFJlZiBzY3JpcHRPYmplY3QgPSBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmdldChmcmFt
ZS5mcmFtZUlEKCkpKQotICAgICAgICByZXR1cm4gc2NyaXB0T2JqZWN0OwotCiAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0
ID0gZnJhbWUuanNDb250ZXh0KCk7Ci0KLSAgICBKU1ZhbHVlUmVmIHNlc3Npb25JZGVudGlmaWVy
ID0gdG9KU1ZhbHVlKGNvbnRleHQsIG1fc2Vzc2lvbklkZW50aWZpZXIpOwotICAgIEpTT2JqZWN0
UmVmIGV2YWx1YXRlRnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhj
b250ZXh0LCBudWxscHRyLCBldmFsdWF0ZSk7Ci0gICAgSlNPYmplY3RSZWYgY3JlYXRlVVVJREZ1
bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgbnVsbHB0
ciwgY3JlYXRlVVVJRCk7CisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0
R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgIGF1dG8gd2Via2l0QXV0b21hdGlvbk5hbWUg
PSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJXZWJLaXRBdXRvbWF0aW9uIl9zKTsKKyAgICBp
ZiAoSlNPYmplY3RIYXNQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHdlYmtpdEF1dG9t
YXRpb25OYW1lLmdldCgpKSkgeworICAgICAgICBKU1ZhbHVlUmVmIHdlYmtpdEF1dG9tYXRpb24g
PSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgd2Via2l0QXV0b21h
dGlvbk5hbWUuZ2V0KCksICZleGNlcHRpb24pOworICAgICAgICBBU1NFUlQoSlNWYWx1ZUlzT2Jq
ZWN0KGNvbnRleHQsIHdlYmtpdEF1dG9tYXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8SlNPYmplY3RSZWY+KEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgY29uc3RfY2FzdDxK
U09iamVjdFJlZj4od2Via2l0QXV0b21hdGlvbiksIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
ImF1dG9tYXRpb25TZXNzaW9uUHJveHkiX3MpLmdldCgpLCAmZXhjZXB0aW9uKSk7CisgICAgfQog
CiAgICAgU3RyaW5nIHNjcmlwdCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UsIHNpemVvZihXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5U2NyaXB0U291cmNlKSk7CisgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0
LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIsIDAsICZleGNlcHRpb24pOwogCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rp
b24gPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwg
MCwgJmV4Y2VwdGlvbikpOwotICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2Ny
aXB0T2JqZWN0RnVuY3Rpb24pKTsKKyAgICBKU1ZhbHVlUmVmIHdlYmtpdEF1dG9tYXRpb24gPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgd2Via2l0QXV0b21hdGlv
bk5hbWUuZ2V0KCksICZleGNlcHRpb24pOworICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29u
dGV4dCwgd2Via2l0QXV0b21hdGlvbikpOwogCisgICAgSlNWYWx1ZVJlZiBzZXNzaW9uSWRlbnRp
ZmllciA9IHRvSlNWYWx1ZShjb250ZXh0LCBtX3Nlc3Npb25JZGVudGlmaWVyKTsKKyAgICBKU09i
amVjdFJlZiBldmFsdWF0ZUZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJh
Y2soY29udGV4dCwgbnVsbHB0ciwgZXZhbHVhdGUpOworICAgIEpTT2JqZWN0UmVmIGNyZWF0ZVVV
SURGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIG51
bGxwdHIsIGNyZWF0ZVVVSUQpOwogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IHNlc3Np
b25JZGVudGlmaWVyLCBldmFsdWF0ZUZ1bmN0aW9uLCBjcmVhdGVVVUlERnVuY3Rpb24gfTsKLSAg
ICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU09i
amVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1bmN0aW9uLCBudWxscHRy
LCBXVEZfQVJSQVlfTEVOR1RIKGFyZ3VtZW50cyksIGFyZ3VtZW50cywgJmV4Y2VwdGlvbikpOwot
ICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0KSk7Ci0KLSAg
ICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBzY3JpcHRPYmplY3QpOwotICAgIG1fd2ViRnJhbWVT
Y3JpcHRPYmplY3RNYXAuYWRkKGZyYW1lLmZyYW1lSUQoKSwgc2NyaXB0T2JqZWN0KTsKLQotICAg
IHJldHVybiBzY3JpcHRPYmplY3Q7CisgICAgSlNWYWx1ZVJlZiBhdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Q29uc3RydWN0b3IgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8
SlNPYmplY3RSZWY+KHdlYmtpdEF1dG9tYXRpb24pLCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KCJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Il9zKS5nZXQoKSwgJmV4Y2VwdGlvbik7CisgICAgQVNT
RVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBhdXRvbWF0aW9uU2Vzc2lvblByb3h5Q29uc3Ry
dWN0b3IpKTsKKyAgICBBU1NFUlQoSlNPYmplY3RJc0NvbnN0cnVjdG9yKGNvbnRleHQsIGNvbnN0
X2Nhc3Q8SlNPYmplY3RSZWY+KGF1dG9tYXRpb25TZXNzaW9uUHJveHlDb25zdHJ1Y3RvcikpKTsK
KyAgICBKU09iamVjdFJlZiBhdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0gSlNPYmplY3RDYWxsQXND
b25zdHJ1Y3Rvcihjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhdXRvbWF0aW9uU2Vz
c2lvblByb3h5Q29uc3RydWN0b3IpLCBXVEZfQVJSQVlfTEVOR1RIKGFyZ3VtZW50cyksIGFyZ3Vt
ZW50cywgJmV4Y2VwdGlvbik7CisgICAgQVNTRVJUKGF1dG9tYXRpb25TZXNzaW9uUHJveHkpOwor
CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVm
Pih3ZWJraXRBdXRvbWF0aW9uKSwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgiYXV0b21hdGlv
blNlc3Npb25Qcm94eSJfcykuZ2V0KCksIGF1dG9tYXRpb25TZXNzaW9uUHJveHksIGtKU1Byb3Bl
cnR5QXR0cmlidXRlTm9uZSwgJmV4Y2VwdGlvbik7CisgICAgcmV0dXJuIGF1dG9tYXRpb25TZXNz
aW9uUHJveHk7CiB9CiAKIFdlYkNvcmU6OkVsZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKFdlYkZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiBu
b2RlSGFuZGxlKQpAQCAtMTk5LDExICsyMDQsMTUgQEAgV2ViQ29yZTo6RWxlbWVudCogV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUmIGZyYW0K
ICAgICAvLyBEb24ndCB1c2Ugc2NyaXB0T2JqZWN0Rm9yRnJhbWUoKSBzaW5jZSB3ZSBjYW4gYXNz
dW1lIGlmIHRoZSBzY3JpcHQgb2JqZWN0CiAgICAgLy8gZG9lcyBub3QgZXhpc3QsIHRoZXJlIGFy
ZSBubyBub2RlcyBtYXBwZWQgdG8gaGFuZGxlcy4gVXNpbmcgc2NyaXB0T2JqZWN0Rm9yRnJhbWUo
KQogICAgIC8vIHdpbGwgbWFrZSBhIG5ldyBzY3JpcHQgb2JqZWN0IGlmIGl0IGNhbid0IGZpbmQg
b25lLCBwcmV2ZW50aW5nIHVzIGZyb20gcmV0dXJuaW5nIGZhc3QuCi0gICAgSlNPYmplY3RSZWYg
c2NyaXB0T2JqZWN0ID0gbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcC5nZXQoZnJhbWUuZnJhbWVJ
RCgpKTsKLSAgICBpZiAoIXNjcmlwdE9iamVjdCkKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29u
dGV4dCA9IGZyYW1lLmpzQ29udGV4dCgpOworICAgIEpTT2JqZWN0UmVmIGdsb2JhbE9iamVjdCA9
IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAgICBhdXRvIHdlYmtpdEF1dG9t
YXRpb25OYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSgiV2ViS2l0QXV0b21hdGlvbiJf
cyk7CisgICAgaWYgKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwg
d2Via2l0QXV0b21hdGlvbk5hbWUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gZnJhbWUuanNDb250ZXh0KCk7CisgICAg
SlNWYWx1ZVJlZiB3ZWJraXRBdXRvbWF0aW9uID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBnbG9iYWxPYmplY3QsIHdlYmtpdEF1dG9tYXRpb25OYW1lLmdldCgpLCBudWxscHRyKTsKKyAg
ICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIHdlYmtpdEF1dG9tYXRpb24pKTsKKyAg
ICBhdXRvKiBzY3JpcHRPYmplY3QgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihKU09iamVjdEdl
dFByb3BlcnR5KGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KHdlYmtpdEF1dG9tYXRp
b24pLCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCJhdXRvbWF0aW9uU2Vzc2lvblByb3h5Il9z
KS5nZXQoKSwgbnVsbHB0cikpOwogCiAgICAgSlNWYWx1ZVJlZiBmdW5jdGlvbkFyZ3VtZW50c1td
ID0gewogICAgICAgICB0b0pTVmFsdWUoY29udGV4dCwgbm9kZUhhbmRsZSkKQEAgLTIyMywxNCAr
MjMyLDEwIEBAIFdlYkNvcmU6OkVsZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVs
ZW1lbnRGb3JOb2RlSGFuZGxlKFdlYkZyYW1lJiBmcmFtCiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUp
CiB7Ci0gICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlE
KCk7Ci0gICAgaWYgKEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdCA9IG1fd2ViRnJhbWVTY3JpcHRP
YmplY3RNYXAudGFrZShmcmFtZUlEKSkKLSAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChmcmFtZS5q
c0NvbnRleHQoKSwgc2NyaXB0T2JqZWN0KTsKLQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAi
Q2FsbGJhY2sgd2FzIG5vdCBjYWxsZWQgYmVmb3JlIHRoZSB1bmxvYWQgZXZlbnQuIl9zOwogICAg
IFN0cmluZyBlcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpKYXZhU2NyaXB0RXJyb3IpOwogCi0gICAgYXV0byBwZW5kaW5nRnJhbWVD
YWxsYmFja3MgPSBtX3dlYkZyYW1lUGVuZGluZ0V2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrc01h
cC50YWtlKGZyYW1lSUQpOworICAgIGF1dG8gcGVuZGluZ0ZyYW1lQ2FsbGJhY2tzID0gbV93ZWJG
cmFtZVBlbmRpbmdFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja3NNYXAudGFrZShmcmFtZS5mcmFt
ZUlEKCkpOwogICAgIGZvciAodWludDY0X3QgY2FsbGJhY2tJRCA6IHBlbmRpbmdGcmFtZUNhbGxi
YWNrcykKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIGVycm9yTWVzc2FnZSwgZXJyb3JUeXBlKSwg
MCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggYWM3ZTQwNzEyMDYuLmRh
NjZhYWE4MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC03OCw3ICs3OCw2
IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIAotICAgIEhh
c2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBKU09iamVjdFJlZj4gbV93ZWJGcmFtZVNj
cmlwdE9iamVjdE1hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgVmVj
dG9yPHVpbnQ2NF90Pj4gbV93ZWJGcmFtZVBlbmRpbmdFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFj
a3NNYXA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmpzIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwppbmRleCAwYjJjMGZk
NzUyMi4uNmFjZTE1ZDkzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5qcwpAQCAt
MjUsMTQgKzI1LDE2IEBACiAKIC8vIyBzb3VyY2VVUkw9X19JbmplY3RlZFNjcmlwdF9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmpzCiAKLShmdW5jdGlvbiAoc2Vzc2lvbklkZW50aWZpZXIsIGV2
YWx1YXRlLCBjcmVhdGVVVUlEKSB7Cit2YXIgV2ViS2l0QXV0b21hdGlvbiA9IHt9OwogCi1jb25z
dCBzZXNzaW9uTm9kZVByb3BlcnR5TmFtZSA9ICJzZXNzaW9uLW5vZGUtIiArIHNlc3Npb25JZGVu
dGlmaWVyOwotCi1sZXQgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNsYXNzIEF1dG9tYXRpb25T
ZXNzaW9uUHJveHkKK1dlYktpdEF1dG9tYXRpb24uQXV0b21hdGlvblNlc3Npb25Qcm94eSA9IGNs
YXNzIEF1dG9tYXRpb25TZXNzaW9uUHJveHkKIHsKLSAgICBjb25zdHJ1Y3RvcigpCisgICAgY29u
c3RydWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIsIGV2YWx1YXRlLCBjcmVhdGVVVUlEKQogICAgIHsK
KyAgICAgICAgdGhpcy5fc2Vzc2lvbk5vZGVQcm9wZXJ0eU5hbWUgPSAic2Vzc2lvbi1ub2RlLSIg
KyBzZXNzaW9uSWRlbnRpZmllcjsKKyAgICAgICAgdGhpcy5fZXZhbHVhdGUgPSBldmFsdWF0ZTsK
KyAgICAgICAgdGhpcy5fY3JlYXRlVVVJRCA9IGNyZWF0ZVVVSUQ7CisKICAgICAgICAgdGhpcy5f
bm9kZVRvSWRNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9pZFRvTm9kZU1hcCA9IG5ldyBN
YXA7CiAgICAgfQpAQCAtNDIsNyArNDQsNyBAQCBsZXQgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9
IGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uUHJveHkKICAgICBldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihmdW5jdGlvblN0cmluZywgYXJndW1lbnRTdHJpbmdzLCBleHBlY3RzSW1wbGljaXRDYWxs
YmFja0FyZ3VtZW50LCBmcmFtZUlELCBjYWxsYmFja0lELCByZXN1bHRDYWxsYmFjaywgY2FsbGJh
Y2tUaW1lb3V0KQogICAgIHsKICAgICAgICAgLy8gVGhlIHNjcmlwdCBpcyBleHBlY3RlZCB0byBi
ZSBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiBFdmFsdWF0ZSBpdCBpbnNpZGUgcGFyZW50aGVzaXMg
dG8gZ2V0IHRoZSBmdW5jdGlvbiB2YWx1ZS4KLSAgICAgICAgbGV0IGZ1bmN0aW9uVmFsdWUgPSBl
dmFsdWF0ZSgiKCIgKyBmdW5jdGlvblN0cmluZyArICIpIik7CisgICAgICAgIGxldCBmdW5jdGlv
blZhbHVlID0gdGhpcy5fZXZhbHVhdGUoIigiICsgZnVuY3Rpb25TdHJpbmcgKyAiKSIpOwogICAg
ICAgICBpZiAodHlwZW9mIGZ1bmN0aW9uVmFsdWUgIT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTY3JpcHQgZGlkIG5vdCBldmFsdWF0ZSB0byBhIGZ1bmN0
aW9uLiIpOwogCkBAIC05Niw4ICs5OCw4IEBAIGxldCBBdXRvbWF0aW9uU2Vzc2lvblByb3h5ID0g
Y2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94eQogCiAgICAgX3Jldml2ZUpTT05WYWx1ZShrZXks
IHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gIm9i
amVjdCIgJiYgdmFsdWVbc2Vzc2lvbk5vZGVQcm9wZXJ0eU5hbWVdKQotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX25vZGVGb3JJZGVudGlmaWVyKHZhbHVlW3Nlc3Npb25Ob2RlUHJvcGVydHlOYW1l
XSk7CisgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICJvYmplY3QiICYmIHZh
bHVlW3RoaXMuX3Nlc3Npb25Ob2RlUHJvcGVydHlOYW1lXSkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9ub2RlRm9ySWRlbnRpZmllcih2YWx1ZVt0aGlzLl9zZXNzaW9uTm9kZVByb3BlcnR5TmFt
ZV0pOwogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogCkBAIC0xMTQsNyArMTE2LDcgQEAg
bGV0IEF1dG9tYXRpb25TZXNzaW9uUHJveHkgPSBjbGFzcyBBdXRvbWF0aW9uU2Vzc2lvblByb3h5
CiAKICAgICBfY3JlYXRlTm9kZUhhbmRsZShub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHtb
c2Vzc2lvbk5vZGVQcm9wZXJ0eU5hbWVdOiB0aGlzLl9pZGVudGlmaWVyRm9yTm9kZShub2RlKX07
CisgICAgICAgIHJldHVybiB7W3RoaXMuX3Nlc3Npb25Ob2RlUHJvcGVydHlOYW1lXTogdGhpcy5f
aWRlbnRpZmllckZvck5vZGUobm9kZSl9OwogICAgIH0KIAogICAgIF9ub2RlRm9ySWRlbnRpZmll
cihpZGVudGlmaWVyKQpAQCAtMTMxLDcgKzEzMyw3IEBAIGxldCBBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5ID0gY2xhc3MgQXV0b21hdGlvblNlc3Npb25Qcm94eQogICAgICAgICBpZiAoaWRlbnRpZmll
cikKICAgICAgICAgICAgIHJldHVybiBpZGVudGlmaWVyOwogCi0gICAgICAgIGlkZW50aWZpZXIg
PSAibm9kZS0iICsgY3JlYXRlVVVJRCgpOworICAgICAgICBpZGVudGlmaWVyID0gIm5vZGUtIiAr
IHRoaXMuX2NyZWF0ZVVVSUQoKTsKIAogICAgICAgICB0aGlzLl9ub2RlVG9JZE1hcC5zZXQobm9k
ZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHRoaXMuX2lkVG9Ob2RlTWFwLnNldChpZGVudGlmaWVy
LCBub2RlKTsKQEAgLTE0OCw4ICsxNTAsNCBAQCBsZXQgQXV0b21hdGlvblNlc3Npb25Qcm94eSA9
IGNsYXNzIEF1dG9tYXRpb25TZXNzaW9uUHJveHkKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KLX07Ci0KLXJldHVybiBuZXcgQXV0b21hdGlvblNlc3Npb25Qcm94eTsKLQotfSkKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387088</attachid>
            <date>2020-01-08 02:31:56 -0800</date>
            <delta_ts>2020-01-09 01:56:27 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wd-js-context.diff</filename>
            <type>text/plain</type>
            <size>9346</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOGVmODZkMjE3YWUuLmU3YjM0ZWUzOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDIwLTAxLTA4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbiB0aGUg
d3JvbmcganMgY29udGV4dCBhZnRlciBhIGhpc3RvcnkgbmF2aWdhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgYSBoaXN0b3J5IG5hdmln
YXRpb24gd2UgdXNlIHRoZSBzY3JpcHQgb2JqZWN0IGZyb20gdGhlIHByZXZpb3VzIGZyYW1lIGpz
IGNvbnRleHQgYmVjYXVzZQorICAgICAgICBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKCkg
aXMgbm90IGNhbGxlZCBpbiB0aGF0IGNhc2UuIFdlIGFyZSBjYWNoaW5nIHRoZSBzY3JpcHQgb2Jq
ZWN0IGZvciBldmVyeSBmcmFtZSBJRCwKKyAgICAgICAgYW5kIGFmdGVyIGEgaGlzdG9yeSBuYXZp
Z2F0aW9uIHRoZSBmcmFtZSBJRCBpcyB0aGUgc2FtZSwgYnV0IHRoZSBmcmFtZSBqcyBjb250ZXh0
IGlzbid0LiBUaGF0IGFsc28gbWVhbnMgd2UgbWlnaHQKKyAgICAgICAgYmUgbGVha2luZyB0aGUg
c2NyaXB0IG9iamVjdHMgaW4gdGhvc2UgY2FzZXMsIGJlY2F1c2Ugd2UgZW5kIHVwIGNhbGxpbmcg
SlNWYWx1ZVVucHJvdGVjdCB3aXRoIHRoZSB3cm9uZworICAgICAgICBjb250ZXh0LiBJdCB3b3Vs
ZCBiZSBlYXNpZXIgdG8gc2V0IHRoZSBzY3JpcHQgb2JqZWN0IGFzIGEgcHJvcGVydHkgb2YgdGhl
IGdsb2JhbCBvYmplY3QgYW5kIGxldCBKU0MgaGFuZGxlIHRoZQorICAgICAgICBsaWZldGltZS4g
SW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBzY3JpcHQgb2JqZWN0IGFuZCBwcm90ZWN0L3VucHJvdGVj
dCBpdCwgd2UganVzdCBjaGVjayBpZiB0aGUgZ2xvYmFsIG9iamVjdCBvZgorICAgICAgICB0aGUg
Y3VycmVudCBqcyBjb250ZXh0IGhhcyB0aGUgcHJvcGVydHkgb3Igbm90IHRvIGdldCBvciBjcmVh
dGUgaXQuIFdlIHVzZSBhIHByaXZhdGUgc3ltYm9sIGFzIHRoZSBrZXkgb2YgdGhlCisgICAgICAg
IGdsb2JhbCBvYmplY3QgcHJvcGVydHkgdG8gZW5zdXJlIGl0J3Mgbm90IHZpc2libGUuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkpOiBJbml0aWFsaXplIG1fc2NyaXB0T2JqZWN0SWRlbnRpZmllci4K
KyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0
U3ltYm9sRm9yRnJhbWUpOiBHZXQgYSBKU1ZhbHVlUmVmIGZvciB0aGUgc2NyaXB0CisgICAgICAg
IG9iamVjdCBpZGVudGlmaWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6IEdldCBvciBjcmVhdGUgdGhlIHNjcmlwdCBv
YmplY3QuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1l
bnRGb3JOb2RlSGFuZGxlKTogR2V0IHRoZSBzY3JpcHQgb2JqZWN0IGZyb20gZ2xvYmFsIG9iamVj
dC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3RGb3JGcmFtZSk6IFJlbW92ZSB0aGUgY29kZSB0byB1bnByb3RlY3Qgc2NyaXB0
IG9iamVjdHMKKyAgICAgICAgb2YgdGhlIGZyYW1lLgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6IEFkZCBtX3NjcmlwdE9iamVjdElk
ZW50aWZpZXIgYW5kIHJlbW92ZSBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLgorCiAyMDIwLTAx
LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gcmV0cmlldmUgYW5kIGRlbGV0ZSBzdXJyb3VuZGluZyB0
ZXh0IGZvciBpbnB1dCBtZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmlu
ZGV4IDk2Y2M4N2U5OGIwLi4xZmY0Y2Y0ZWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWVSZWYgY2Fs
bFByb3BlcnR5RnVuY3Rpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmCiAKIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKICAgICA6IG1fc2Vzc2lvbklkZW50aWZpZXIoc2Vz
c2lvbklkZW50aWZpZXIpCisgICAgLCBtX3NjcmlwdE9iamVjdElkZW50aWZpZXIoSlNDOjpQcml2
YXRlTmFtZTo6RGVzY3JpcHRpb24sICJhdXRvbWF0aW9uU2Vzc2lvblByb3h5Il9zKQogewogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9
CkBAIC0yMTEsMzEgKzIxMiwzNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBldmFsdWF0ZUphdmFTY3Jp
cHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZgogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorSlNWYWx1ZVJlZiBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RTeW1ib2xGb3JGcmFtZShXZWJGcmFtZSYg
ZnJhbWUpCit7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhmcmFtZS5qc0NvbnRleHQo
KSk7CisgICAgcmV0dXJuIHRvUmVmKGdsb2JhbE9iamVjdCwgU3ltYm9sOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT52bSgpLCBtX3NjcmlwdE9iamVjdElkZW50aWZpZXIudWlkKCkpKTsKK30KKwogSlNP
YmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0Rm9yRnJhbWUo
V2ViRnJhbWUmIGZyYW1lKQogewotICAgIGlmIChKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBt
X3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmdldChmcmFtZS5mcmFtZUlEKCkpKQotICAgICAgICBy
ZXR1cm4gc2NyaXB0T2JqZWN0OworICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gZnJh
bWUuanNDb250ZXh0KCk7CisgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0
R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgIEpTVmFsdWVSZWYgc2NyaXB0T2JqZWN0U3lt
Ym9sID0gc2NyaXB0T2JqZWN0U3ltYm9sRm9yRnJhbWUoZnJhbWUpOworICAgIGlmIChKU09iamVj
dEhhc1Byb3BlcnR5Rm9yS2V5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgc2NyaXB0T2JqZWN0U3lt
Ym9sLCBudWxscHRyKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpT
T2JqZWN0R2V0UHJvcGVydHlGb3JLZXkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBzY3JpcHRPYmpl
Y3RTeW1ib2wsIG51bGxwdHIpKTsKIAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0
cjsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLmpzQ29udGV4dCgpOwor
ICAgIFN0cmluZyBzY3JpcHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eVNjcmlwdFNvdXJjZSkpOworICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZ1
bmN0aW9uID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4oSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0
LCBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHNjcmlwdCkuZ2V0KCksIG51bGxwdHIsIG51bGxw
dHIsIDAsICZleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQs
IHNjcmlwdE9iamVjdEZ1bmN0aW9uKSk7CiAKICAgICBKU1ZhbHVlUmVmIHNlc3Npb25JZGVudGlm
aWVyID0gdG9KU1ZhbHVlKGNvbnRleHQsIG1fc2Vzc2lvbklkZW50aWZpZXIpOwogICAgIEpTT2Jq
ZWN0UmVmIGV2YWx1YXRlRnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFj
ayhjb250ZXh0LCBudWxscHRyLCBldmFsdWF0ZSk7CiAgICAgSlNPYmplY3RSZWYgY3JlYXRlVVVJ
REZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29udGV4dCwgbnVs
bHB0ciwgY3JlYXRlVVVJRCk7CiAgICAgSlNPYmplY3RSZWYgaXNWYWxpZE5vZGVJZGVudGlmaWVy
RnVuY3Rpb24gPSBKU09iamVjdE1ha2VGdW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBudWxs
cHRyLCBpc1ZhbGlkTm9kZUlkZW50aWZpZXIpOwotCi0gICAgU3RyaW5nIHNjcmlwdCA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3Jp
cHRTb3VyY2UsIHNpemVvZihXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5U2NyaXB0U291cmNlKSk7
Ci0KLSAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3RGdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNP
YmplY3RSZWY+KEpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShzY3JpcHQpLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKSk7Ci0g
ICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBzY3JpcHRPYmplY3RGdW5jdGlvbikp
OwotCiAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSA9IHsgc2Vzc2lvbklkZW50aWZpZXIsIGV2
YWx1YXRlRnVuY3Rpb24sIGNyZWF0ZVVVSURGdW5jdGlvbiwgaXNWYWxpZE5vZGVJZGVudGlmaWVy
RnVuY3Rpb24gfTsKICAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBjb25zdF9jYXN0PEpT
T2JqZWN0UmVmPihKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIHNjcmlwdE9iamVjdEZ1
bmN0aW9uLCBudWxscHRyLCBXVEZfQVJSQVlfTEVOR1RIKGFyZ3VtZW50cyksIGFyZ3VtZW50cywg
JmV4Y2VwdGlvbikpOwogICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2NyaXB0
T2JqZWN0KSk7CiAKLSAgICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCBzY3JpcHRPYmplY3QpOwot
ICAgIG1fd2ViRnJhbWVTY3JpcHRPYmplY3RNYXAuYWRkKGZyYW1lLmZyYW1lSUQoKSwgc2NyaXB0
T2JqZWN0KTsKLQorICAgIEpTT2JqZWN0U2V0UHJvcGVydHlGb3JLZXkoY29udGV4dCwgZ2xvYmFs
T2JqZWN0LCBzY3JpcHRPYmplY3RTeW1ib2wsIHNjcmlwdE9iamVjdCwgMCwgJmV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuIHNjcmlwdE9iamVjdDsKIH0KIApAQCAtMjQ0LDExICsyNDgsMTQgQEAgV2Vi
Q29yZTo6RWxlbWVudCogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVI
YW5kbGUoV2ViRnJhbWUmIGZyYW0KICAgICAvLyBEb24ndCB1c2Ugc2NyaXB0T2JqZWN0Rm9yRnJh
bWUoKSBzaW5jZSB3ZSBjYW4gYXNzdW1lIGlmIHRoZSBzY3JpcHQgb2JqZWN0CiAgICAgLy8gZG9l
cyBub3QgZXhpc3QsIHRoZXJlIGFyZSBubyBub2RlcyBtYXBwZWQgdG8gaGFuZGxlcy4gVXNpbmcg
c2NyaXB0T2JqZWN0Rm9yRnJhbWUoKQogICAgIC8vIHdpbGwgbWFrZSBhIG5ldyBzY3JpcHQgb2Jq
ZWN0IGlmIGl0IGNhbid0IGZpbmQgb25lLCBwcmV2ZW50aW5nIHVzIGZyb20gcmV0dXJuaW5nIGZh
c3QuCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gbV93ZWJGcmFtZVNjcmlwdE9iamVj
dE1hcC5nZXQoZnJhbWUuZnJhbWVJRCgpKTsKLSAgICBpZiAoIXNjcmlwdE9iamVjdCkKKyAgICBK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLmpzQ29udGV4dCgpOworICAgIEpTT2Jq
ZWN0UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsK
KyAgICBKU1ZhbHVlUmVmIHNjcmlwdE9iamVjdFN5bWJvbCA9IHNjcmlwdE9iamVjdFN5bWJvbEZv
ckZyYW1lKGZyYW1lKTsKKyAgICBpZiAoIUpTT2JqZWN0SGFzUHJvcGVydHlGb3JLZXkoY29udGV4
dCwgZ2xvYmFsT2JqZWN0LCBzY3JpcHRPYmplY3RTeW1ib2wsIG51bGxwdHIpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0gZnJhbWUu
anNDb250ZXh0KCk7CisgICAgYXV0byogc2NyaXB0T2JqZWN0ID0gY29uc3RfY2FzdDxKU09iamVj
dFJlZj4oSlNPYmplY3RHZXRQcm9wZXJ0eUZvcktleShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHNj
cmlwdE9iamVjdFN5bWJvbCwgbnVsbHB0cikpOworICAgIEFTU0VSVChzY3JpcHRPYmplY3QpOwog
CiAgICAgSlNWYWx1ZVJlZiBmdW5jdGlvbkFyZ3VtZW50c1tdID0gewogICAgICAgICB0b0pTVmFs
dWUoY29udGV4dCwgbm9kZUhhbmRsZSkKQEAgLTI2OCwxNCArMjc1LDEwIEBAIFdlYkNvcmU6OkVs
ZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKFdl
YkZyYW1lJiBmcmFtCiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJX
aW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiB7Ci0gICAgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQgPSBmcmFtZS5mcmFtZUlEKCk7Ci0gICAgaWYgKEpTT2JqZWN0
UmVmIHNjcmlwdE9iamVjdCA9IG1fd2ViRnJhbWVTY3JpcHRPYmplY3RNYXAudGFrZShmcmFtZUlE
KSkKLSAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChmcmFtZS5qc0NvbnRleHQoKSwgc2NyaXB0T2Jq
ZWN0KTsKLQogICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiQ2FsbGJhY2sgd2FzIG5vdCBjYWxs
ZWQgYmVmb3JlIHRoZSB1bmxvYWQgZXZlbnQuIl9zOwogICAgIFN0cmluZyBlcnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpKYXZhU2Ny
aXB0RXJyb3IpOwogCi0gICAgYXV0byBwZW5kaW5nRnJhbWVDYWxsYmFja3MgPSBtX3dlYkZyYW1l
UGVuZGluZ0V2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrc01hcC50YWtlKGZyYW1lSUQpOworICAg
IGF1dG8gcGVuZGluZ0ZyYW1lQ2FsbGJhY2tzID0gbV93ZWJGcmFtZVBlbmRpbmdFdmFsdWF0ZUph
dmFTY3JpcHRDYWxsYmFja3NNYXAudGFrZShmcmFtZS5mcmFtZUlEKCkpOwogICAgIGZvciAodWlu
dDY0X3QgY2FsbGJhY2tJRCA6IHBlbmRpbmdGcmFtZUNhbGxiYWNrcykKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNh
bGxiYWNrSUQsIGVycm9yTWVzc2FnZSwgZXJyb3JUeXBlKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmgKaW5kZXggMmU2N2ExNDIzZmYuLjgxYTBjODQzMjMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcml2YXRlTmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgpAQCAtNTYs
NiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7CiAKIHByaXZhdGU6CisgICAg
SlNWYWx1ZVJlZiBzY3JpcHRPYmplY3RTeW1ib2xGb3JGcmFtZShXZWJGcmFtZSYpOwogICAgIEpT
T2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7CiAgICAgV2ViQ29yZTo6
RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUmLCBjb25zdCBTdHJpbmcmKTsK
IApAQCAtNzcsOCArNzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBT
dHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
KT4mJik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKKyAgICBKU0M6OlByaXZh
dGVOYW1lIG1fc2NyaXB0T2JqZWN0SWRlbnRpZmllcjsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBKU09iamVjdFJlZj4gbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcDsK
ICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgVmVjdG9yPHVpbnQ2NF90Pj4g
bV93ZWJGcmFtZVBlbmRpbmdFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja3NNYXA7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387202</attachid>
            <date>2020-01-09 01:56:27 -0800</date>
            <delta_ts>2020-01-09 11:19:48 -0800</delta_ts>
            <desc>Try to fix apple builds</desc>
            <filename>wd-js-context.diff</filename>
            <type>text/plain</type>
            <size>9658</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNDEwMTE3ODk1OWMuLjI4N2EyMjg1OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMyIEBACisyMDIwLTAxLTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBBdXRvbWF0aW9uOiBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbiB0aGUg
d3JvbmcganMgY29udGV4dCBhZnRlciBhIGhpc3RvcnkgbmF2aWdhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0ODgwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81ODQxMzYxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZnRlciBhIGhpc3RvcnkgbmF2aWdhdGlvbiB3ZSB1c2UgdGhlIHNjcmlw
dCBvYmplY3QgZnJvbSB0aGUgcHJldmlvdXMgZnJhbWUganMgY29udGV4dCBiZWNhdXNlCisgICAg
ICAgIGRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoKSBpcyBub3QgY2FsbGVkIGluIHRoYXQg
Y2FzZS4gV2UgYXJlIGNhY2hpbmcgdGhlIHNjcmlwdCBvYmplY3QgZm9yIGV2ZXJ5IGZyYW1lIElE
LAorICAgICAgICBhbmQgYWZ0ZXIgYSBoaXN0b3J5IG5hdmlnYXRpb24gdGhlIGZyYW1lIElEIGlz
IHRoZSBzYW1lLCBidXQgdGhlIGZyYW1lIGpzIGNvbnRleHQgaXNuJ3QuIFRoYXQgYWxzbyBtZWFu
cyB3ZSBtaWdodAorICAgICAgICBiZSBsZWFraW5nIHRoZSBzY3JpcHQgb2JqZWN0cyBpbiB0aG9z
ZSBjYXNlcywgYmVjYXVzZSB3ZSBlbmQgdXAgY2FsbGluZyBKU1ZhbHVlVW5wcm90ZWN0IHdpdGgg
dGhlIHdyb25nCisgICAgICAgIGNvbnRleHQuIEl0IHdvdWxkIGJlIGVhc2llciB0byBzZXQgdGhl
IHNjcmlwdCBvYmplY3QgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgZ2xvYmFsIG9iamVjdCBhbmQgbGV0
IEpTQyBoYW5kbGUgdGhlCisgICAgICAgIGxpZmV0aW1lLiBJbnN0ZWFkIG9mIGNhY2hpbmcgdGhl
IHNjcmlwdCBvYmplY3QgYW5kIHByb3RlY3QvdW5wcm90ZWN0IGl0LCB3ZSBqdXN0IGNoZWNrIGlm
IHRoZSBnbG9iYWwgb2JqZWN0IG9mCisgICAgICAgIHRoZSBjdXJyZW50IGpzIGNvbnRleHQgaGFz
IHRoZSBwcm9wZXJ0eSBvciBub3QgdG8gZ2V0IG9yIGNyZWF0ZSBpdC4gV2UgdXNlIGEgcHJpdmF0
ZSBzeW1ib2wgYXMgdGhlIGtleSBvZiB0aGUKKyAgICAgICAgZ2xvYmFsIG9iamVjdCBwcm9wZXJ0
eSB0byBlbnN1cmUgaXQncyBub3QgdmlzaWJsZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSk6IElu
aXRpYWxpemUgbV9zY3JpcHRPYmplY3RJZGVudGlmaWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3QpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
Z2V0IHRoZSBzY3JpcHQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4KKyAgICAgICAgSmF2YVNjcmlwdCBj
b250ZXh0LgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZXRT
Y3JpcHRPYmplY3QpOiBIZWxwZXIgZnVuY3Rpb24gdG8gc2V0IHRoZSBzY3JpcHQgb2JqZWN0IGZv
ciB0aGUgZ2l2ZW4KKyAgICAgICAgSmF2YVNjcmlwdCBjb250ZXh0LgorICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzY3JpcHRPYmplY3RGb3JGcmFtZSk6IEdldCBv
ciBjcmVhdGUgdGhlIHNjcmlwdCBvYmplY3QuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmVsZW1lbnRGb3JOb2RlSGFuZGxlKTogR2V0IHRoZSBzY3JpcHQgb2Jq
ZWN0IGZyb20gZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSk6IFJlbW92ZSB0aGUgY29k
ZSB0byB1bnByb3RlY3Qgc2NyaXB0IG9iamVjdHMKKyAgICAgICAgb2YgdGhlIGZyYW1lLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6
IEFkZCBtX3NjcmlwdE9iamVjdElkZW50aWZpZXIgYW5kIHJlbW92ZSBtX3dlYkZyYW1lU2NyaXB0
T2JqZWN0TWFwLgorCiAyMDIwLTAxLTA4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVkdWNlIGJpbmFyeSBzaXplIGJ5IHB1cmdpbmcgQysrIHR5cGUgaW5m
b3JtYXRpb24gaW4gT2JqZWN0aXZlLUMgZmllbGRzIGFuZCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IDk2Y2M4N2U5OGIwLi40MTczMDBkMzA4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWVSZWYgY2FsbFByb3BlcnR5RnVuY3Rpb24oSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmCiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKICAgICA6
IG1fc2Vzc2lvbklkZW50aWZpZXIoc2Vzc2lvbklkZW50aWZpZXIpCisgICAgLCBtX3NjcmlwdE9i
amVjdElkZW50aWZpZXIoSlNDOjpQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJhdXRvbWF0aW9u
U2Vzc2lvblByb3h5Il9zKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCAqdGhpcyk7CiB9CkBAIC0yMTEsMzEgKzIxMiw0OCBAQCBzdGF0aWMgSlNW
YWx1ZVJlZiBldmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorSlNPYmplY3RSZWYgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2NyaXB0T2JqZWN0
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHRvSlMoY29udGV4dCk7CisgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRv
IHNjcmlwdE9iamVjdElEID0gSlNDOjpJZGVudGlmaWVyOjpmcm9tVWlkKG1fc2NyaXB0T2JqZWN0
SWRlbnRpZmllcik7CisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9i
amVjdCwgc2NyaXB0T2JqZWN0SUQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPih0b1JlZihnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgc2NyaXB0T2JqZWN0SUQpKSk7Cit9CisKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0U2NyaXB0T2JqZWN0KEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QpCit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjb250ZXh0KTsKKyAgICBKU0M6OlZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1
dG8gc2NyaXB0T2JqZWN0SUQgPSBKU0M6OklkZW50aWZpZXI6OmZyb21VaWQobV9zY3JpcHRPYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwor
ICAgIGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQoZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHNjcmlwdE9iamVjdElELCB0b0pTKGdsb2JhbE9iamVjdCwgb2JqZWN0KSwgc2xv
dCk7Cit9CisKIEpTT2JqZWN0UmVmIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNjcmlwdE9i
amVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSlNPYmplY3RSZWYgc2Ny
aXB0T2JqZWN0ID0gbV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcC5nZXQoZnJhbWUuZnJhbWVJRCgp
KSkKKyAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IGZyYW1lLmpzQ29udGV4dCgpOwor
ICAgIGlmIChhdXRvKiBzY3JpcHRPYmplY3QgPSB0aGlzLT5zY3JpcHRPYmplY3QoY29udGV4dCkp
CiAgICAgICAgIHJldHVybiBzY3JpcHRPYmplY3Q7CiAKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IG51bGxwdHI7Ci0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBmcmFtZS5qc0Nv
bnRleHQoKTsKKyAgICBTdHJpbmcgc2NyaXB0ID0gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENv
cHlpbmcoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlwdFNvdXJjZSwgc2l6ZW9mKFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UpKTsKKyAgICBKU09iamVjdFJlZiBzY3Jp
cHRPYmplY3RGdW5jdGlvbiA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KEpTRXZhbHVhdGVTY3Jp
cHQoY29udGV4dCwgT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShzY3JpcHQpLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLCAwLCAmZXhjZXB0aW9uKSk7CisgICAgQVNTRVJUKEpTVmFsdWVJc09iamVj
dChjb250ZXh0LCBzY3JpcHRPYmplY3RGdW5jdGlvbikpOwogCiAgICAgSlNWYWx1ZVJlZiBzZXNz
aW9uSWRlbnRpZmllciA9IHRvSlNWYWx1ZShjb250ZXh0LCBtX3Nlc3Npb25JZGVudGlmaWVyKTsK
ICAgICBKU09iamVjdFJlZiBldmFsdWF0ZUZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25X
aXRoQ2FsbGJhY2soY29udGV4dCwgbnVsbHB0ciwgZXZhbHVhdGUpOwogICAgIEpTT2JqZWN0UmVm
IGNyZWF0ZVVVSURGdW5jdGlvbiA9IEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNv
bnRleHQsIG51bGxwdHIsIGNyZWF0ZVVVSUQpOwogICAgIEpTT2JqZWN0UmVmIGlzVmFsaWROb2Rl
SWRlbnRpZmllckZ1bmN0aW9uID0gSlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soY29u
dGV4dCwgbnVsbHB0ciwgaXNWYWxpZE5vZGVJZGVudGlmaWVyKTsKLQotICAgIFN0cmluZyBzY3Jp
cHQgPSBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWluZyhXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5U2NyaXB0U291cmNlLCBzaXplb2YoV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNjcmlw
dFNvdXJjZSkpOwotCi0gICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0RnVuY3Rpb24gPSBjb25z
dF9jYXN0PEpTT2JqZWN0UmVmPihKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoc2NyaXB0KS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgJmV4Y2Vw
dGlvbikpOwotICAgIEFTU0VSVChKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgc2NyaXB0T2JqZWN0
RnVuY3Rpb24pKTsKLQogICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzW10gPSB7IHNlc3Npb25JZGVu
dGlmaWVyLCBldmFsdWF0ZUZ1bmN0aW9uLCBjcmVhdGVVVUlERnVuY3Rpb24sIGlzVmFsaWROb2Rl
SWRlbnRpZmllckZ1bmN0aW9uIH07CiAgICAgSlNPYmplY3RSZWYgc2NyaXB0T2JqZWN0ID0gY29u
c3RfY2FzdDxKU09iamVjdFJlZj4oSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBzY3Jp
cHRPYmplY3RGdW5jdGlvbiwgbnVsbHB0ciwgV1RGX0FSUkFZX0xFTkdUSChhcmd1bWVudHMpLCBh
cmd1bWVudHMsICZleGNlcHRpb24pKTsKICAgICBBU1NFUlQoSlNWYWx1ZUlzT2JqZWN0KGNvbnRl
eHQsIHNjcmlwdE9iamVjdCkpOwogCi0gICAgSlNWYWx1ZVByb3RlY3QoY29udGV4dCwgc2NyaXB0
T2JqZWN0KTsKLSAgICBtX3dlYkZyYW1lU2NyaXB0T2JqZWN0TWFwLmFkZChmcmFtZS5mcmFtZUlE
KCksIHNjcmlwdE9iamVjdCk7Ci0KKyAgICBzZXRTY3JpcHRPYmplY3QoY29udGV4dCwgc2NyaXB0
T2JqZWN0KTsKICAgICByZXR1cm4gc2NyaXB0T2JqZWN0OwogfQogCkBAIC0yNDQsMTIgKzI2Miwx
MSBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjplbGVtZW50
Rm9yTm9kZUhhbmRsZShXZWJGcmFtZSYgZnJhbQogICAgIC8vIERvbid0IHVzZSBzY3JpcHRPYmpl
Y3RGb3JGcmFtZSgpIHNpbmNlIHdlIGNhbiBhc3N1bWUgaWYgdGhlIHNjcmlwdCBvYmplY3QKICAg
ICAvLyBkb2VzIG5vdCBleGlzdCwgdGhlcmUgYXJlIG5vIG5vZGVzIG1hcHBlZCB0byBoYW5kbGVz
LiBVc2luZyBzY3JpcHRPYmplY3RGb3JGcmFtZSgpCiAgICAgLy8gd2lsbCBtYWtlIGEgbmV3IHNj
cmlwdCBvYmplY3QgaWYgaXQgY2FuJ3QgZmluZCBvbmUsIHByZXZlbnRpbmcgdXMgZnJvbSByZXR1
cm5pbmcgZmFzdC4KLSAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBtX3dlYkZyYW1lU2Ny
aXB0T2JqZWN0TWFwLmdldChmcmFtZS5mcmFtZUlEKCkpOworICAgIEpTR2xvYmFsQ29udGV4dFJl
ZiBjb250ZXh0ID0gZnJhbWUuanNDb250ZXh0KCk7CisgICAgYXV0byogc2NyaXB0T2JqZWN0ID0g
dGhpcy0+c2NyaXB0T2JqZWN0KGNvbnRleHQpOwogICAgIGlmICghc2NyaXB0T2JqZWN0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0ID0g
ZnJhbWUuanNDb250ZXh0KCk7Ci0KICAgICBKU1ZhbHVlUmVmIGZ1bmN0aW9uQXJndW1lbnRzW10g
PSB7CiAgICAgICAgIHRvSlNWYWx1ZShjb250ZXh0LCBub2RlSGFuZGxlKQogICAgIH07CkBAIC0y
NjgsMTQgKzI4NSwxMCBAQCBXZWJDb3JlOjpFbGVtZW50KiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjplbGVtZW50Rm9yTm9kZUhhbmRsZShXZWJGcmFtZSYgZnJhbQogCiB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUm
IGZyYW1lKQogewotICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEID0gZnJhbWUu
ZnJhbWVJRCgpOwotICAgIGlmIChKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBtX3dlYkZyYW1l
U2NyaXB0T2JqZWN0TWFwLnRha2UoZnJhbWVJRCkpCi0gICAgICAgIEpTVmFsdWVVbnByb3RlY3Qo
ZnJhbWUuanNDb250ZXh0KCksIHNjcmlwdE9iamVjdCk7Ci0KICAgICBTdHJpbmcgZXJyb3JNZXNz
YWdlID0gIkNhbGxiYWNrIHdhcyBub3QgY2FsbGVkIGJlZm9yZSB0aGUgdW5sb2FkIGV2ZW50LiJf
czsKICAgICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6SmF2YVNjcmlwdEVycm9yKTsKIAotICAgIGF1dG8gcGVuZGlu
Z0ZyYW1lQ2FsbGJhY2tzID0gbV93ZWJGcmFtZVBlbmRpbmdFdmFsdWF0ZUphdmFTY3JpcHRDYWxs
YmFja3NNYXAudGFrZShmcmFtZUlEKTsKKyAgICBhdXRvIHBlbmRpbmdGcmFtZUNhbGxiYWNrcyA9
IG1fd2ViRnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tzTWFwLnRha2UoZnJh
bWUuZnJhbWVJRCgpKTsKICAgICBmb3IgKHVpbnQ2NF90IGNhbGxiYWNrSUQgOiBwZW5kaW5nRnJh
bWVDYWxsYmFja3MpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9y
VHlwZSksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDJlNjdhMTQy
M2ZmLi43ZmQwZTdlZGM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRl
U3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUHJpdmF0ZU5hbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KQEAgLTU2LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1
aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBl
cnJvclR5cGUpOwogCiBwcml2YXRlOgorICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdChKU0ds
b2JhbENvbnRleHRSZWYpOworICAgIHZvaWQgc2V0U2NyaXB0T2JqZWN0KEpTR2xvYmFsQ29udGV4
dFJlZiwgSlNPYmplY3RSZWYpOwogICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1l
KFdlYkZyYW1lJik7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5kbGUo
V2ViRnJhbWUmLCBjb25zdCBTdHJpbmcmKTsKIApAQCAtNzcsOCArODAsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9u
SWRlbnRpZmllcjsKKyAgICBKU0M6OlByaXZhdGVOYW1lIG1fc2NyaXB0T2JqZWN0SWRlbnRpZmll
cjsKIAotICAgIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBKU09iamVjdFJlZj4g
bV93ZWJGcmFtZVNjcmlwdE9iamVjdE1hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgVmVjdG9yPHVpbnQ2NF90Pj4gbV93ZWJGcmFtZVBlbmRpbmdFdmFsdWF0ZUphdmFT
Y3JpcHRDYWxsYmFja3NNYXA7CiB9OwogCg==
</data>
<flag name="review"
          id="402981"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>