<?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>198694</bug_id>
          
          <creation_ts>2019-06-08 17:46:20 -0700</creation_ts>
          <short_desc>Add mechanism and test case to check if ITP is active</short_desc>
          <delta_ts>2019-06-12 13:19:05 -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>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=198692</see_also>
          <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>
          <dependson>198692</dependson>
          <blocked>198797</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mjs</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1543156</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-08 17:46:20 -0700</bug_when>
    <thetext>We need a way to confirm that the NetworkProcess knows that ITP is on (or off) for testing (and perhaps other purposes).

This patch adds new infrastructure to support testing this status.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543189</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-06-08 22:47:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/51557704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543190</commentid>
    <comment_count>2</comment_count>
      <attachid>371703</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-08 22:50:46 -0700</bug_when>
    <thetext>Created attachment 371703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543205</commentid>
    <comment_count>3</comment_count>
      <attachid>371703</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-06-09 06:37:45 -0700</bug_when>
    <thetext>Comment on attachment 371703
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:656
&gt; +void NetworkProcess::resourceLoadStatisticsEnabled(PAL::SessionID sessionID, CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

At least for getters which return a boolean, we lead with an auxiliary verb. In this case, isResourceLoadStatisticsEnabled(). I don’t know if we have a rule for async boolean getters but I’d prefer a leading “is.”

Ditto for the rest of the functions with the same name.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1886
&gt; +        processPool-&gt;ensureNetworkProcess().resourceLoadStatisticsEnabled(m_sessionID, WTFMove(completionHandler));

It’s a little weird to create a new network process only to check if ITP is on. We could also return that ITP is off if we don’t have a network process, but it’s probably best to do it the way you have to be able to catch race conditions where ITP was enabled before the network process existed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543227</commentid>
    <comment_count>4</comment_count>
      <attachid>371703</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2019-06-09 16:28:08 -0700</bug_when>
    <thetext>Comment on attachment 371703
Patch

It would be even better if this test could verify that ITP still does its thing when enabled this way, instead of just relying on a network process check. I realize this makes the test even more complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543230</commentid>
    <comment_count>5</comment_count>
      <attachid>371703</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-09 16:45:34 -0700</bug_when>
    <thetext>Comment on attachment 371703
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:483
&gt; +- (void)_resourceLoadStatisticsEnabled:(void (^)(BOOL))completionHandler

I&apos;ve always been confused by what &quot;resourceLoadStatistics&quot; statics mean in our codebase. It seems to be a synonym for &quot;Intelligent Tracking Prevention&quot;, but it doesn&apos;t seem like that name is used much in WebKit (I only found it in WebPreferences.yaml). Before committing this to SPI, can try to find a name that encapsulates what this feature does in a clear way and standardize on it.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:72
&gt; +- (void)_resourceLoadStatisticsEnabled:(void (^)(BOOL))completionHandler;

Is this SPI you expect to be used outside of testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543256</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2019-06-09 22:55:34 -0700</bug_when>
    <thetext>I think this is indeed test$only SPI, so if there is a better way to do this, we should. That would make the name less important, but I tend to agree we should call it ITP in the code instead of the “resource load statistics” fig leaf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543358</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-10 09:27:25 -0700</bug_when>
    <thetext>(In reply to Maciej Stachowiak from comment #6)
&gt; I think this is indeed test$only SPI, so if there is a better way to do
&gt; this, we should. That would make the name less important, but I tend to
&gt; agree we should call it ITP in the code instead of the “resource load
&gt; statistics” fig leaf.

If this is really testing only, I think it would be much better to test that ITP is actually doing something (e.g. blocking / giving out the right cookies, etc). In which case, I don&apos;t think the new SPI is needed. Hopefully we have existing tests that of ITP functionality that could be used before and after enabling/disabling the feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543396</commentid>
    <comment_count>8</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-10 11:29:03 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 371703 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=371703&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:72
&gt; &gt; +- (void)_resourceLoadStatisticsEnabled:(void (^)(BOOL))completionHandler;
&gt; 
&gt; Is this SPI you expect to be used outside of testing?

No -- this is really an implementation detail that the API/SPI user shouldn&apos;t have to worry about. But we do want to test that things are staying in sync between the UIProcess and the NetworkPorcess.

Maybe this would be better named &quot;isITPEnabledInNetworkProcess&quot; or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543474</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-10 14:47:14 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; Comment on attachment 371703 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=371703&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:72
&gt; &gt; &gt; +- (void)_resourceLoadStatisticsEnabled:(void (^)(BOOL))completionHandler;
&gt; &gt; 
&gt; &gt; Is this SPI you expect to be used outside of testing?
&gt; 
&gt; No -- this is really an implementation detail that the API/SPI user
&gt; shouldn&apos;t have to worry about. But we do want to test that things are
&gt; staying in sync between the UIProcess and the NetworkPorcess.
&gt; 
&gt; Maybe this would be better named &quot;isITPEnabledInNetworkProcess&quot; or something?

Our usual strategy for this kind of thing is to ensure that side effects are working. e.g. if ITP is enabled in the NetworkProcess, I see X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543846</commentid>
    <comment_count>10</comment_count>
      <attachid>371884</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-11 15:10:21 -0700</bug_when>
    <thetext>Created attachment 371884
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1543853</commentid>
    <comment_count>11</comment_count>
      <attachid>371886</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-11 15:36:12 -0700</bug_when>
    <thetext>Created attachment 371886
patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544148</commentid>
    <comment_count>12</comment_count>
      <attachid>371886</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-06-12 09:58:33 -0700</bug_when>
    <thetext>Comment on attachment 371886
patch v3

Rejecting attachment 371886 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 371886, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Traceback (most recent call last):
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&quot;, line 84, in &lt;module&gt;
    main()
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&quot;, line 79, in main
    WebKitPatch(os.path.abspath(__file__)).main()
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 305, in main
    result = command.check_arguments_and_execute(options, args, self)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 123, in check_arguments_and_execute
    return self.execute(options, args, tool) or 0
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py&quot;, line 55, in execute
    self._sequence.run_and_handle_errors(tool, options, state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 73, in run_and_handle_errors
    self._run(tool, options, state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 67, in _run
    step(tool, options).run(state)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py&quot;, line 54, in run
    if changelog_entry.has_valid_reviewer():
AttributeError: &apos;NoneType&apos; object has no attribute &apos;has_valid_reviewer&apos;

Full output: https://webkit-queues.webkit.org/results/12455955</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544151</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-12 10:19:46 -0700</bug_when>
    <thetext>Committed r246360: &lt;https://trac.webkit.org/changeset/246360/webkit&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544192</commentid>
    <comment_count>14</comment_count>
      <attachid>371886</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-06-12 12:14:38 -0700</bug_when>
    <thetext>Comment on attachment 371886
patch v3

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:491
&gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; +    _websiteDataStore-&gt;websiteDataStore().setPrevalentResource(URL(domain), [completionHandler = makeBlockPtr(completionHandler)]() {
&gt; +        completionHandler();
&gt; +    });
&gt; +#endif
&gt; +    completionHandler();
&gt; +}

This calls the completionHandler handler twice. Once right away, once when the async function&apos;s completion handler is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544198</commentid>
    <comment_count>15</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-12 12:53:56 -0700</bug_when>
    <thetext>Unreviewed fix landed in r246370: &lt;https://trac.webkit.org/changeset/246370/webkit&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1544208</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-06-12 13:18:46 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; Comment on attachment 371886 [details]
&gt; patch v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=371886&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:491
&gt; &gt; +#if ENABLE(RESOURCE_LOAD_STATISTICS)
&gt; &gt; +    _websiteDataStore-&gt;websiteDataStore().setPrevalentResource(URL(domain), [completionHandler = makeBlockPtr(completionHandler)]() {
&gt; &gt; +        completionHandler();
&gt; &gt; +    });
&gt; &gt; +#endif
&gt; &gt; +    completionHandler();
&gt; &gt; +}
&gt; 
&gt; This calls the completionHandler handler twice. Once right away, once when
&gt; the async function&apos;s completion handler is called.

Doh! !@$#$#!@#</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371703</attachid>
            <date>2019-06-08 22:50:46 -0700</date>
            <delta_ts>2019-06-11 15:10:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198694-20190608225045.patch</filename>
            <type>text/plain</type>
            <size>13960</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI1NGNmYmU0OGMwNjQzODQz
ZGIxNjdjNGM1MDY5MWFiMGUwNmEwZDEuLjMwNmY3MGY1OGQzZmJkYTVhY2QzZWU0NWNjNzllOTRl
M2Q2MDgwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTktMDYtMDggIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1lY2hhbmlzbSBhbmQg
dGVzdCBjYXNlIHRvIGNoZWNrIGlmIElUUCBpcyBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODY5NAorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTE1NTc3MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGEgbmV3IHByaXZhdGUgU1BJIGNhbGwgb24gdGhlIFdlYnNpdGVEYXRhU3RvcmUg
b2JqZWN0IHRoYXQgcmVwb3J0cworICAgICAgICB0aGUgY3VycmVudCBzdGF0ZSBvZiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzIChJVFApIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAg
Tm90ZTogVGhlIG5ldyBBUEkgdGVzdCB3aWxsIGZhaWwgdW50aWwgQnVnIDE5ODY5MiBpcyBsYW5k
ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tX
ZWJzaXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorCiAyMDE5LTA2LTA4ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQXBwbGUgUGF5XSBJZiB3ZSBoYXZlIGEgYm91bmQgaW50ZXJmYWNlIGlkZW50aWZp
ZXIsIHNldCBpdCBvbiBuZXcgUEtQYXltZW50UmVxdWVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZGQ5YTFlM2E4YzVkNzZkMmRk
NDM1MzAzYjdiODM2NWNjYWUwOTJlMi4uOGEzNGUzNjFhNTEyNzUyNmZiMzcyMTYzODdiYmM1NDg2
YzU4ZmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTY1Myw2ICs2NTMsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aXNWZXJ5
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWcKICAg
ICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKKyAg
ICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICBlbmFibGVkID0gISFuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoZW5hYmxlZCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uYWw8U2Vjb25kcz4gc2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDBlMWRhYmQwMGVlNGNhOTRlMjJiMmQyNWUwYzMyZmJi
YzQwNTRmZGQuLmQ5OTNjZjEyNWVhNmFhNGY3ODcwZWRkMTg3YjZjODM1YmI3ZWFjYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTIyMiw2
ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBpc1JlZ2lzdGVyZWRBc1N1YkZyYW1lVW5kZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzU3VicmVzb3VyY2VVbmRlcihQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCA2ZDA2MjQwODNmNzVmMzMyNzI2YWIzZmIyMWRjMWQyY2Zm
OTBjMjFjLi5mMDI1ZTM0YjYyN2VjMmJkZTIxNjBjZmFjZjMwZjZjYmZjOGEzOWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTEwNyw2ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+ICgp
IEFzeW5jCiAgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhJbnRlcmFj
dGlvbikKICAgICBSZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgQXN5bmMKICAgICBT
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIGVudW06Ym9vbCBXZWJLaXQ6OlNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlcikgLT4gKCkgQXN5bmMK
ICAgICBTY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICAgICBTY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nl
c3NpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
aW5kZXggM2RiMjZjMWQ5ODg4MjhkNjIxMmJlZmJiYTQ4NTA5MGQ3MDE0Nzg2MS4uODdhYmIyYmJm
ZWVmMTI3ZDExZjQzN2Y5YTFiMGNkZWE0NWQ3OTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00ODAs
NiArNDgwLDE3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dl
YlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2CiAjZW5kaWYKIH0KIAorLSAodm9p
ZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVk
KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworI2VuZGlmCit9
CisKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7CiAgICAgcmV0dXJuIFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3Jr
ZXJzKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDJm
OGY0NjI4MDY4YzY3YmY1NjAxNzBjNWY4NzM4MDkzNDczNTJjM2IuLjNmZTdhNjc0NzhmZDYyMjUx
M2EwNGU5YWNlYTc0NjVlZjhlNmNmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAt
NjksNiArNjksOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogCiBAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMs
IHdlYWspIGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IF9kZWxlZ2F0ZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lk
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXI7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAzNDZhYzY3MjBhNjU4ODFmZDA5OGI1YzM0ZjFiZDhhZGQ5Y2NlMDllLi4zMDQyNjRlMTUx
MmEwNjdhMjNlMmNlODliZDQwZWVlMmJhNDVmM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTc0Nyw2
ICs3NDcsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW4KICAgICBwYWdlLT5yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluLCBmcmFtZUlE
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorICAgIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDk3MDg4ZTlhNGVlZGM5MDc0NTk4N2Y3N2MzNDM4MzQ4
NTQwNWI5OTAuLjljOTQ4ZDNlOGM3Mjg3MTE3M2M4MDNlNDVhMTIyNjVlMmZlMjdmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0xMTEsNiArMTExLDcgQEAgcHVibGljOgogICAgIHZvaWQgaXNSZWdpc3RlcmVk
QXNTdWJyZXNvdXJjZVVuZGVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdWJSZXNvdXJjZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAgICAgdm9pZCBpc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklELCBPcHRpb25h
bDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggM2JhMjliMzFlMGYzZTg5YmExNTQ1ODdjMTUyMWE4YWVhNzg2OWE0Zi4uZjRkOTc4YzE2
NDNkNjA4Y2MyYWVjYTAxZTg2ZDAyNzE1YTg5MDVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4
ODAsNiArMTg4MCwxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKICNlbmRpZgogfQogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKG1fc2Vzc2lvbklE
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlKGJvb2wgZW5hYmxlZCkKIHsKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlKGVuYWJsZWQsIFtdKCkgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA4MjJjM2ZjNzYzN2Q3YzVl
YjAwM2M2OWNlOTQ3NDViZDM4MjU5M2YyLi4zNjM2YTkzNzFjMDVhMTE4ZTNhM2U0YTNkZmVlN2I0
NjdhN2Y0MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMTAsNiArMTEwLDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShib29sKTsKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAorICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7IC8vIENoZWNrcyBzdGF0ZSBhdCB0aGUg
bmV0d29yayBwcm9jZXNzIGxldmVsCisKICAgICB1aW50NjRfdCBwZXJPcmlnaW5TdG9yYWdlUXVv
dGEoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+cGVyT3JpZ2luU3Rv
cmFnZVF1b3RhKCk7IH0KICAgICB1aW50NjRfdCBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1
b3RhKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQZXJPcmlnaW5TdG9yYWdlUXVvdGEodWludDY0X3Qg
cXVvdGEpIHsgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFBlck9yaWdpblN0b3JhZ2VRdW90
YShxdW90YSk7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1MGUwODhmZTBlNjIyODFkOTgyNDdlYjdkMTQ1NWZkMjBhZDBhZTNhLi5jN2YzNTJi
NzBkNDc3ZGZkOWM0MGE5OTcwZmE3OGY4YzRjN2QxNDc2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDYtMDgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1lY2hh
bmlzbSBhbmQgdGVzdCBjYXNlIHRvIGNoZWNrIGlmIElUUCBpcyBhY3RpdmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODY5NAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTE1NTc3MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChURVNUKToKKwogMjAxOS0wNi0wOCAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIFVucmV2aWV3ZWQgdGVz
dCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MubW0KaW5kZXggODNiMjgxOTZh
MmZiOWFiYTAyZjE4ZjEzZDU4ZDYxNGQ4MWEzY2ZhNS4uNmMzMWY5YTEwOWVjOGZkNzJlOTZiM2Fi
MmIwZGRjNGMxZGZjMTVlZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KQEAg
LTIwNCwzICsyMDUsNTkgQEAgVEVTVChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBJUENBZnRlclN0
b3JlRGVzdHJ1Y3Rpb24pCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVk
TmF2aWdhdGlvbik7CiB9CisKK1RFU1QoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgRW5hYmxlRGlz
YWJsZUlUUCkKK3sKKyAgICAvLyBFbnN1cmUgdGhlIHNoYXJlZCBwcm9jZXNzIHBvb2wgZXhpc3Rz
IHNvIHRoZSBkYXRhIHN0b3JlIG9wZXJhdGlvbnMgd2UncmUgYWJvdXQgdG8gZG8gd29yayB3aXRo
IGl0LgorICAgIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bv
b2wgX3NoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBhdXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogc2hhcmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisgICAgCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIC8vIElUUCBzaG91
bGQgYmUgb2ZmOgorICAgIHN0YXRpYyBib29sIGRvbmVGbGFnOworICAgIFtkYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl4oQk9PTCBlbmFibGVkKSB7CisgICAgICAgIEVY
UEVDVF9GQUxTRShlbmFibGVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBUdXJu
IGl0IG9uCisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6
WUVTXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgLy8gSVRQ
IHNob3VsZCBiZSBvbjoKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl4oQk9PTCBlbmFibGVkKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGVuYWJsZWQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsKKworICAgIC8vIFR1cm4g
aXQgb2ZmCisgICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6
Tk9dOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAKKyAgICAvLyBJVFAg
c2hvdWxkIGJlIG9mZjoKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl4oQk9PTCBlbmFibGVkKSB7CisgICAgICAgIEVY
UEVDVF9GQUxTRShlbmFibGVkKTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOwor
ICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371884</attachid>
            <date>2019-06-11 15:10:21 -0700</date>
            <delta_ts>2019-06-11 15:36:12 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>test_itp.patch</filename>
            <type>text/plain</type>
            <size>7529</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggY2FkYjk2NzU2NTguLjE2MGNhYzIxZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE5LTA2LTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBtZWNoYW5pc20gYW5kIHRlc3QgY2FzZSB0byBjaGVjayBpZiBJVFAgaXMg
YWN0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTg2OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUxNTU3NzA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBwcml2YXRlIFNQSSBj
YWxsIG9uIHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdCB0aGF0IGFsbG93cyB0ZXN0IGNvZGUK
KyAgICAgICAgdG8gbWFyayBhIGRvbWFpbiBhcyBwcmV2YWxlbnQsIGFuZCBjaGVjayB0aGUgcHJl
dmFsYW5jZSBvZiBhIHJlc291cmNlLiBUaGlzCisgICAgICAgIGlzIHRoZW4gdXNlZCB0byBidWls
ZCBhIHRlc3QgdG8gY29uZmlybSBJVFAgaXMgYWN0aXZlIGFuZCB3b3JraW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJldmFsZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldElzUHJldmFsZW50RG9tYWlu
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCiAyMDE5LTA2LTExICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIHdh
cm5pbmcgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDNkYjI2YzFkOTg4Li4xYjEyMTEwOWVmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC00ODAsNiArNDgwLDI3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVy
Oih2CiAjZW5kaWYKIH0KIAorLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoKSljb21wbGV0aW9uSGFuZGxlcgorewor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgX3dlYnNpdGVEYXRhU3Rv
cmUtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXRQcmV2YWxlbnRSZXNvdXJjZShVUkwoZG9tYWluKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSk7CisjZW5kaWYKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworfQorCistICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNV
UkwgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLmlzUHJldmFsZW50UmVzb3VyY2UoVVJM
KGRvbWFpbiksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGJvb2wgZW5hYmxlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbmFibGVk
KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOworI2VuZGlmCit9
CisKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyCiB7CiAgICAgcmV0dXJuIFdl
YktpdDo6U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6aGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3Jr
ZXJzKF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDJm
OGY0NjI4MDY4Li43ZmRiNGIzMTY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC02
Nyw2ICs2Nyw5IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0
YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0Zv
ckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
IC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCistICh2b2lkKV9zZXRQcmV2YWxlbnREb21haW46KE5T
VVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CistICh2b2lkKV9nZXRJc1ByZXZhbGVudERvbWFpbjooTlNVUkwgKilkb21haW4gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9wZXJ0eSAobnVs
bGFibGUsIG5vbmF0b21pYywgd2VhaykgaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4g
X2RlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAwNzczMjEwOGFmZS4uZTg3MzM2MzYxNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjIwMTktMDYt
MTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIG1l
Y2hhbmlzbSBhbmQgdGVzdCBjYXNlIHRvIGNoZWNrIGlmIElUUCBpcyBhY3RpdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODY5NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTE1NTc3MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MubW06CisgICAgICAgIChURVNUKToKKwogMjAxOS0wNi0xMSAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgT3BlbiB1cCB4Y2ZpbGVs
aXN0IHByb2Nlc3NpbmcgdG8gbW9yZSBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5tbQppbmRleCA4M2IyODE5NmEyZi4uZTE1MDk1ODVjZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmg+CkBAIC0yMDQsMyArMjA1LDc5IEBAIFRFU1QoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgSVBDQWZ0ZXJTdG9yZURlc3RydWN0aW9uKQogCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZE5hdmlnYXRpb24pOwogfQorCitURVNUKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsIEVuYWJsZURpc2FibGVJVFApCit7CisgICAgLy8gRW5zdXJlIHRoZSBzaGFyZWQg
cHJvY2VzcyBwb29sIGV4aXN0cyBzbyB0aGUgZGF0YSBzdG9yZSBvcGVyYXRpb25zIHdlJ3JlIGFi
b3V0IHRvIGRvIHdvcmsgd2l0aCBpdC4KKyAgICBXS1Byb2Nlc3NQb29sICpzaGFyZWRQcm9jZXNz
UG9vbCA9IFtXS1Byb2Nlc3NQb29sIF9zaGFyZWRQcm9jZXNzUG9vbF07CisgICAgYXV0byAqZGF0
YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKKworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IHNoYXJlZFByb2Nl
c3NQb29sXTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRh
U3RvcmU7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIAorICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAi
V2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0
Lm9yZyJdXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisKKyAgICAvLyBJVFAgc2hvdWxkIGJlIG9mZiwgbm8gVVJMcyBhcmUgcHJldmFsZW50LgorICAg
IHN0YXRpYyBib29sIGRvbmVGbGFnOworICAgIFtkYXRhU3RvcmUgX2dldElzUHJldmFsZW50RG9t
YWluOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0gY29tcGxldGlvbkhh
bmRsZXI6IF4oQk9PTCBwcmV2YWxlbnQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHByZXZhbGVu
dCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gVHVybiBpdCBvbgorICAgIFtkYXRh
U3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisKKyAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIAorICAgIC8vIElUUCBzaG91bGQgYmUgb24sIGJ1
dCBub3RoaW5nIHdhcyByZWdpc3RlcmVkIGFzIHByZXZhbGVudCB5ZXQuCisgICAgZG9uZUZsYWcg
PSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9nZXRJc1ByZXZhbGVudERvbWFpbjpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsLmNvbSJdIGNvbXBsZXRpb25IYW5kbGVyOiBeKEJPT0wg
cHJldmFsZW50KSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShwcmV2YWxlbnQpOworICAgICAgICBk
b25lRmxhZyA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmVGbGFnKTsKKworICAgIC8vIFRlYWNoIElUUCBhYm91dCBhIGJhZCBvcmlnaW46CisgICAg
ZG9uZUZsYWcgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9zZXRQcmV2YWxlbnREb21haW46W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjog
Xih2b2lkKSB7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKworICAgIC8vIElUUCBzaG91bGQgYmUgb24sIGFuZCBrbm93IGFib3V0ICdldmls
LmNvbScKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2dldElzUHJldmFs
ZW50RG9tYWluOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0gY29tcGxl
dGlvbkhhbmRsZXI6IF4oQk9PTCBwcmV2YWxlbnQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocHJl
dmFsZW50KTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworICAgIAorICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gVHVybiBpdCBvZmYK
KyAgICBbZGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpOT107CisK
KyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgLy8gSVRQIHNob3VsZCBiZSBv
ZmYsIG5vIFVSTHMgYXJlIHByZXZhbGVudC4KKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtk
YXRhU3RvcmUgX2dldElzUHJldmFsZW50RG9tYWluOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL2V2aWwuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6IF4oQk9PTCBwcmV2YWxlbnQpIHsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKHByZXZhbGVudCk7CisgICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVGbGFnKTsK
K30KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>371886</attachid>
            <date>2019-06-11 15:36:12 -0700</date>
            <delta_ts>2019-06-12 09:58:33 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>itp_test.patch</filename>
            <type>text/plain</type>
            <size>7537</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggY2FkYjk2NzU2NTguLjE2MGNhYzIxZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE5LTA2LTExICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBtZWNoYW5pc20gYW5kIHRlc3QgY2FzZSB0byBjaGVjayBpZiBJVFAgaXMg
YWN0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTg2OTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUxNTU3NzA0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBwcml2YXRlIFNQSSBj
YWxsIG9uIHRoZSBXZWJzaXRlRGF0YVN0b3JlIG9iamVjdCB0aGF0IGFsbG93cyB0ZXN0IGNvZGUK
KyAgICAgICAgdG8gbWFyayBhIGRvbWFpbiBhcyBwcmV2YWxlbnQsIGFuZCBjaGVjayB0aGUgcHJl
dmFsYW5jZSBvZiBhIHJlc291cmNlLiBUaGlzCisgICAgICAgIGlzIHRoZW4gdXNlZCB0byBidWls
ZCBhIHRlc3QgdG8gY29uZmlybSBJVFAgaXMgYWN0aXZlIGFuZCB3b3JraW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgt
W1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJldmFsZW50RG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldElzUHJldmFsZW50RG9tYWlu
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCiAyMDE5LTA2LTExICBNaWNoYWVsIENhdGFuemFy
byAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIHdh
cm5pbmcgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDNkYjI2YzFkOTg4Li42ZDAyMDk3MjA1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC00ODAsNiArNDgwLDI3IEBAIC0gKHZvaWQpX2dldEFsbFN0b3Jh
Z2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVy
Oih2CiAjZW5kaWYKIH0KIAorLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRv
bWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2V0UHJldmFsZW50UmVzb3VyY2UoVVJMKGRvbWFp
biksIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOworI2VuZGlmCisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworLSAodm9pZClfZ2V0SXNQcmV2YWxlbnREb21haW46
KE5TVVJMICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5pc1ByZXZhbGVudFJlc291cmNl
KFVSTChkb21haW4pLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGVuYWJsZWQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW5h
YmxlZCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsKKyNlbmRp
ZgorfQorCiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcgogewogICAgIHJldHVy
biBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6Omhhc1JlZ2lzdGVyZWRTZXJ2aWNl
V29ya2Vycyhfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRl
eCAyZjhmNDYyODA2OC4uMjM3YTM3MDRlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApA
QCAtNjcsNiArNjcsOSBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0
ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogKyAodm9pZClfYWxsb3dXZWJzaXRlRGF0YVJlY29y
ZHNGb3JBbGxPcmlnaW5zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4z
KSk7CiAtIChib29sKV9oYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAorLSAodm9pZClfc2V0UHJldmFsZW50RG9tYWlu
OihOU1VSTCAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKy0gKHZvaWQpX2dldElzUHJldmFsZW50RG9tYWluOihOU1VSTCAqKWRvbWFpbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3Bl
cnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiBfZGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA3NzMyMTA4YWZlLi5lODczMzYzNjE2YiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MjAxOS0wNi0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgbWVjaGFuaXNtIGFuZCB0ZXN0IGNhc2UgdG8gY2hlY2sgaWYgSVRQIGlzIGFjdGl2ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4Njk0Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MTU1NzcwND4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA2
LTExICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBPcGVuIHVw
IHhjZmlsZWxpc3QgcHJvY2Vzc2luZyB0byBtb3JlIHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLm1tCmluZGV4IDgzYjI4MTk2YTJmLi5lMTUwOTU4NWNlOCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KQEAgLTIwNCwzICsyMDUsNzkgQEAgVEVTVChSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCBJUENBZnRlclN0b3JlRGVzdHJ1Y3Rpb24pCiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CiB9CisKK1RFU1QoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcywgRW5hYmxlRGlzYWJsZUlUUCkKK3sKKyAgICAvLyBFbnN1cmUgdGhl
IHNoYXJlZCBwcm9jZXNzIHBvb2wgZXhpc3RzIHNvIHRoZSBkYXRhIHN0b3JlIG9wZXJhdGlvbnMg
d2UncmUgYWJvdXQgdG8gZG8gd29yayB3aXRoIGl0LgorICAgIFdLUHJvY2Vzc1Bvb2wgKnNoYXJl
ZFByb2Nlc3NQb29sID0gW1dLUHJvY2Vzc1Bvb2wgX3NoYXJlZFByb2Nlc3NQb29sXTsKKyAgICBh
dXRvICpkYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogc2hh
cmVkUHJvY2Vzc1Bvb2xdOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9y
ZSA9IGRhdGFTdG9yZTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgCisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCJXZWJLaXQgVGVzdCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly93ZWJraXQub3JnIl1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKworICAgIC8vIElUUCBzaG91bGQgYmUgb2ZmLCBubyBVUkxzIGFyZSBwcmV2YWxl
bnQuCisgICAgc3RhdGljIGJvb2wgZG9uZUZsYWc7CisgICAgW2RhdGFTdG9yZSBfZ2V0SXNQcmV2
YWxlbnREb21haW46W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21w
bGV0aW9uSGFuZGxlcjogXihCT09MIHByZXZhbGVudCkgeworICAgICAgICBFWFBFQ1RfRkFMU0Uo
cHJldmFsZW50KTsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBUdXJuIGl0IG9uCisg
ICAgW2RhdGFTdG9yZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgLy8gSVRQIHNob3VsZCBi
ZSBvbiwgYnV0IG5vdGhpbmcgd2FzIHJlZ2lzdGVyZWQgYXMgcHJldmFsZW50IHlldC4KKyAgICBk
b25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2dldElzUHJldmFsZW50RG9tYWluOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V2aWwuY29tIl0gY29tcGxldGlvbkhhbmRsZXI6
IF4oQk9PTCBwcmV2YWxlbnQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHByZXZhbGVudCk7Cisg
ICAgICAgIGRvbmVGbGFnID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUZsYWcpOworCisgICAgLy8gVGVhY2ggSVRQIGFib3V0IGEgYmFkIG9yaWdp
bjoKKyAgICBkb25lRmxhZyA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX3NldFByZXZhbGVudERv
bWFpbjpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9ldmlsLmNvbSJdIGNvbXBsZXRpb25I
YW5kbGVyOiBeKHZvaWQpIHsKKyAgICAgICAgZG9uZUZsYWcgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIldlYktpdCBUZXN0IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL3dlYmtpdC5vcmciXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworCisgICAgLy8gSVRQIHNob3VsZCBiZSBvbiwgYW5kIGtub3cgYWJv
dXQgJ2V2aWwuY29tJworICAgIGRvbmVGbGFnID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfZ2V0
SXNQcmV2YWxlbnREb21haW46W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXZpbC5jb20i
XSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09MIHByZXZhbGVudCkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShwcmV2YWxlbnQpOworICAgICAgICBkb25lRmxhZyA9IHRydWU7CisgICAgfV07CisgICAg
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRmxhZyk7CisKKyAgICAvLyBUdXJu
IGl0IG9mZgorICAgIFtkYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
Ok5PXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiV2ViS2l0IFRlc3QiIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZyJdXTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICAvLyBJVFAgc2hv
dWxkIGJlIG9mZiwgbm8gVVJMcyBhcmUgcHJldmFsZW50LgorICAgIGRvbmVGbGFnID0gZmFsc2U7
CisgICAgW2RhdGFTdG9yZSBfZ2V0SXNQcmV2YWxlbnREb21haW46W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXZpbC5jb20iXSBjb21wbGV0aW9uSGFuZGxlcjogXihCT09MIHByZXZhbGVu
dCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UocHJldmFsZW50KTsKKyAgICAgICAgZG9uZUZsYWcg
PSB0cnVlOworICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZUZsYWcpOworfQorCg==
</data>
<flag name="review"
          id="387684"
          type_id="1"
          status="+"
          setter="youennf"
    />
    <flag name="commit-queue"
          id="387685"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>